macOS Sequoia で Subclipse + JavaHL による SVN操作を有効化する方法
Mac + Eclipse + Subclipse + JavaHL という組みあわせについて調べると、ヒットするネット知見がどうにも古い。
ただ古いだけなら良いが、手順に再現性がなくなっているため、試行錯誤して正解を探してみることにした。
発端は?
Homebrew でインストールした svn に JavaHL のライブラリが付属されない。
(昔はbrew install subversionを叩けば勝手に付属されていたであろう記述が散見される)
JavaHLは、Subclipse を利用する際に通すIFとして、デフォルトのSVNKitの代替としての選択肢なのだが、現状は(おそらく)MacPortsを使わない限りJavaHLを簡潔に入手できない状況になっているようである。
じゃあ単純にMacPorts入れれば良いじゃんと思うが、HomebrewとMacPortsの共存は昔からずっと修羅の道とされているため、それは避けたい。
また、「SVNKitじゃダメなの?」とも思うが、歴史的に紆余曲折した問題があるためSVNKitで利用できない(したくない)環境の人間が存在する。今の私もそう(私のせいではない)。
ということで、仕方なくソースコードからビルドしていくことで何とかしようと思い至った。
環境
- Mac Studio / M2 Max
- MEM : 32GB
- macOS Sequoia
- Homebrew
- 既にいくつかインストール済のため、それらが今回のビルド時に参照されたかまでみてない。
- Eclipse 2024-09
- 2024-12 版は Gradle プラグインのアップデートが追いついておらず、すごい微妙だったので消し去った。
- Eclipseの普及率を考えると、定期アップデートして存在感を示すことは大事かもしれないが、プラグイン周りをないがしろにしてまで無理にバージョンアップしなくてよくね?
- Subclipse (スナップショット版)
- JavaHL のSVN最新向けオプションを有効にすること。忘れてしまったり、違うJavaHLのバージョンを入れてしまうと、「違うよ?」ってエラーを返してくる。
- Subversion V1.14.5 LTS
- 執筆時点の最新。
免責事項
手順上でsubversionをビルドするが、そのビルド環境や実装についての詳細を存じていない(ちゃんとREADMEやスクリプトのソースコード読んでない)ため、ビルドのリトライを繰り返す際に「この引数を与えて」という指示に従いつづけた結果、ビルドが通ったパターンを以下に掲載する。
そのため、必要なライブラリの記述が足りてないとか、全く違う引数を求められる場合があるため要注意。
作業
ビルドとインストール
MEMO: もしかしたら事前に JDK (Java 8 or later) を入れておかないと javahl のビルドに失敗するかも?
brew install svn # svn を入れる際に一緒にインストールされる一部のライブラリが重要らしい?要検証
brew install gcc
brew install apr
brew install apr-util
curl -LO https://archive.apache.org/dist/subversion/subversion-1.14.5.tar.bz2
tar -xvjf subversion-1.14.5.tar.bz2
cd subversion-1.14.5
chmod -R 755 .
# 私の環境ではこの引数パターンで通過した。 --enable-plaintext-password-storage は不要な人は削除する
./configure --prefix=/usr/local --enable-javahl --enable-optimize \
--enable-plaintext-password-storage \
--with-apr=/opt/Homebrew/opt/apr/ --with-apr-util=/opt/Homebrew/opt/apr-util/ \
--with-lz4=internal --with-utf8proc=internal
make
make install
brew uninstall svn # 用が済んだので消す。
svn --version
#svn, version 1.14.5 (r1922182)
# compiled ${ビルド日時!} on arm-apple-darwin24.3.0
make javahl
make install-javahl
もし、Homebrew とかで svn がインストール済のままだと Nov 2024, など昔の日付になってるはず。ビルドした日になってれば成功.
テスト
マシン上にローカルSVNリポジトリを建てて繋いでみる。
cd ~/
mkdir testA
cd testA
svnadmin create --fs-type fsfs A
cd ..
svn co [./testtest/A の絶対パス] testB
チェックアウトされれば動作OK。
JavaHL を Eclipse が認識できるようにする
mkdir /Library/Java/Extensions
cd /Library/Java/Extensions
sudo ln -s /usr/local/lib/libsvnjavahl-1.dylib
sudo ln -s /usr/local/lib/libsvnjavahl-1.dylib libsvnjavahl.dylib
[opt.] Subclipse を入れる
まだSubclipseを入れてなければここでEclipseを立ち上げてインストールする。
https://subclipse.github.io/snapshots/ をターゲットにプラグインを直接インストールする。
その際、次のオプションを有効にするのを絶対に忘れないこと
- JavaHL for SVN 1.12-1.14+
Eclipse からSVNを操作してみる
設定画面のSVN項目にある「SVNインターフェース」に次の表記が出ていれば成功
JavaHL (JNI) 1.14.5 (rXXXXXXXXXX)
あとは、テキトーにSVNを操作してエラーが出なければOK.
お疲れ様でした。
終わりに
だれか Homebrew のパッケージ管理や更新に詳しい人、 subversion周りのビルドスクリプトに手を入れて、JavaHLをデフォルトで付属させるようにしてほしいんだが・・
(他力本願)
あと、実を言えば、いつもは IDEA 使ってSVN操作しています。基本的に(栄えている限りは) JetBrains を信じろって思っている自分がいる。
JetBrains が Eclipse RCP とかの特殊な環境にも完全対応してくれたら、こんなことにはならないんですよ!!!(他力本願)
Discussion