Zenn
🌑

macOS Sequoia で Subclipse + JavaHL による SVN操作を有効化する方法

2025/02/08に公開

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

ログインするとコメントできます