Gauche:BuildAndInstallSnapshot

Gauche:BuildAndInstallSnapshot

Shiro(2018/02/14 10:10:15 UTC): Gaucheのリリース間隔がのびのびになっていて、新しい機能を使いたければHEADからビルドしないとならないんだけど、HEADのコンパイルは最新リリース版でしか保証されない (最新リリースより新しい版ではビルドに失敗する可能性がある)という縛りがある。普段HEADを常用しててこれに引っかかった場合、最新リリース版を入れ直さなければならず、面倒。

この手順を若干楽にする仕組みを入れてみた。(2018/2現在)

get-gauche.sh によるスナップショットの取得

適切なtarballをダウンロードしてインストールするシェルスクリプトを作った。https://github.com/shirok/get-gauche

0.9.5以降にもいくつか不定期にスナップショットリリースを作っている。 最新のHEADとは限らないが、比較的新しい状態のものを手軽に試してみたい場合は それをインストールするのが手軽だ。 既にtarballになっているので最新リリース版Gaucheは必要ない。

一番手軽なやり方は次のとおり。 (--sudoはインストール先の書き込みに特権が必要な場合にのみつける。 ビルド後、インストール前にsudoがパスワードを聞いてくる。)

git clone https://github.com/shirok/get-gauche.git
cd get-gauche
./get-gauche.sh --sudo --version snapshot

インストール先を聞いてくるが、既に以前のGaucheがインストール済みならそれがデフォルトになる。

インストールプレフィクスを指定したい場合は--prefixフラグで。例えば:

./get-gauche.sh --prefix /opt/gauche --sudo --version snapshot

現在ダウンロード可能なバージョンの一覧は--listフラグで取得できる。

./get-gauche.sh --list

スナップショットリリースは、

という緩い運用でやっている。が、正規リリースにあまり時間がかかるようなら monthlyとかに決めるかもしれない。 正式なリリースではないので、入れた機能を後でやめにしたり、(スナップショットリリース間で)非互換な変更を入れる可能性もあるので注意。

get-gauche.shは指定バージョンが既にインストールされている Gaucheのバージョンより新しくないとダウンロードしないのだが、 同じバージョン番号で再リリースがあった場合などで強制的に再ダウンロード・インストールしたい 場合は--forceオプションをつける。

./get-gauche.sh --sudo --force --version snapshot

gosh -vによるバージョン指定

Gaucheは別バージョンをインストールしても、 実はバイナリはバージョンごとに分かれたディレクトリにもインストールされているので、 完全に上書きされるわけではない。ただ、0.9.5まではリンクする共有ライブラリが上書きされる 場合があり、自由に以前のバージョンを起動するのが難しかった。

2017/9くらいから、gosh -vVERSION とするとVERSIONのGaucheがインストールされていた場合はそちらを起動するようになっている (Gauche:複数バージョンの共存参照)。

あいにく0.9.5はそれに対応していないのでgosh -v0.9.5で0.9.5を起動するわけにはいかない…はずなのだが、実はLinuxなど一部のプラットフォームでは(0.9.5もインストール済みなら)この方法で0.9.5が起動可能だ。OSXはだめ。

なのでそれらのプラットフォームでは、0.9.5の後に0.9.6_preXをインストールしても、 ビルド時のプリコンパイルに-v0.9.5を指定してやれば0.9.5でのビルドができる。 わざわざ0.9.5を入れ直す必要がないわけだ。

そのためにMakefileがBUILD_GOSH_FLAGSという変数を参照するようにしているので、 「0.9.5と0.9.6_preXをインストールした状態で」GaucheのHEADは次の方法でビルドできる。

./DIST gen
gauche-config --reconfigure | sh
make BUILD_GOSH_FLAGS=-v0.9.5

(0.9.6リリース以降は、OSXでもHEADのビルドは make BUILD_GOSH_FLAGS=-v0.9.6でできるようになる)

More ...