Skip to content

Gitian Buildの方法

Yuto Ashida edited this page Apr 26, 2021 · 8 revisions

WSL2(Ubuntu 18.04)とDockerを用いたGitian Build

とりあえず、現状Gitian Buildは可能だが、ちょっと癖があったのでメモ書き。 特に、Dockerを使う場合。(個人的には一番簡単だけど)
Dockerはセットアップ済みとする。
このページを参考にした。

GPG鍵の用意

gpg --gen-key

中で設定させられる(real name)はGitHubの名前でOK。パスワードとかはいい感じに設定する。

gpg -a --export

この結果をコピーして、GitHubのSSH and GPG Keysを開き、New GPG keyとして登録する。

gpg -k

この結果の2EFE4D7016E2577A23A6B70975A7652FD83DD675みたいな感じの16進数の結果をコピーしておく

git config --global gpg.program gpg
git config --global user.signingKey <2EFE4D7016E2577A23A6B70975A7652FD83DD675みたいな感じの奴で置き換える>
git config --global commit.gpgSign true

~/.bashrcの中に

export GPG_TTY=$(tty)

と書いておく。

前準備

本来ならばapt-cacher-ng./gitian-build.py -d --setup実行時に自動的にインストールされるが、残念ながらWSLではインストールしたものがdeamonとして自動起動しない設定になっているので、あらかじめインストールしておき、sudo service apt-cacher-ng startで起動させる

sudo apt install python3-dev git cpio apt-cacher-ng
sudo service apt-cacher-ng start
cd ~
git clone https://github.com/vipstar-dev/VIPSTARCOIN
cp VIPSTARCOIN/contrib/gitian-build.py .
./gitian-build.py -d --setup
export NAME=<GitHub Name>
cd gitian.sigs
git remote add $NAME [email protected]:$NAME/gitian.sigs.git

これにプラスで vipstar-dev/gitian.sigs をフォークしておく

MacOS向けビルドの準備

cd ~
git clone https://github.com/bitcoin-core/apple-sdk-tools.git

Windows側でいいのでApple IDを用意して、Developer規約に同意してXcode SDKをダウンロード

WSL側で

cp /mnt/c/Users/<Win User Name>/Downloads/Xcode_10.2.1.zip .

とするか、Windows側からGUIでやるかでWSLのホームディレクトリに投げる

python3 apple-sdk-tools/extract_xcode.py -f Xcode_10.2.1.xip | cpio -d -i
find Xcode.app -type d -name MacOSX.sdk -exec sh -c 'tar --transform="s/MacOSX.sdk/MacOSX10.14.sdk/" -c -C$(dirname {}) MacOSX.sdk/ | gzip -9n > MacOSX10.14.sdk.tar.gz' \;
mkdir -p gitian-builder/inputs
cp MacOSX10.14.sdk.tar.gz gitian-builder/inputs

Gitian Build開始

今回はmaster-1.2ブランチをビルドするので

export VERSION=master-1.2

とセットする。
それ以外にtag指定する場合は

export VERSION=1.2.3-beta

のようにvを抜いて指定する。(ちなみに、v1.2.3-betaを指定しても、Gitianビルドの設定がまともにできていないのでビルドできない)

次に、ビルドコマンド。ブランチをビルドする場合は

./gitian-build.py -j 3 -m 5000 -d --detach-sign --no-commit -c -b $NAME $VERSION

として、tag指定する場合は

./gitian-build.py -j 3 -m 5000 -d --detach-sign --no-commit -b $NAME $VERSION

とする。 -j 3の部分も適当にCPUのコア数+1ぐらいにしておくとちょっと早く終わるかも

GPG署名

gpg --output ${VERSION}-linux/${NAME}/VIPSTARCOIN-core-linux-0.20-build.assert.sig --detach-sign ${VERSION}-linux/$NAME/VIPSTARCOIN-core-linux-0.20-build.assert
gpg --output ${VERSION}-win-unsigned/${NAME}/VIPSTARCOIN-core-win-0.20-build.assert.sig --detach-sign ${VERSION}-win-unsigned/$NAME/VIPSTARCOIN-core-win-0.20-build.assert
gpg --output ${VERSION}-osx-unsigned/${NAME}/VIPSTARCOIN-core-osx-0.20-build.assert.sig --detach-sign ${VERSION}-osx-unsigned/$NAME/VIPSTARCOIN-core-osx-0.20-build.assert

Gitにコミット

git checkout -b ${VERSION}-not-codesigned
git commit -S -a -m "Add $NAME $VERSION non-code signed signatures"
git push --set-upstream $NAME $VERSION-not-codesigned

あとは、GitHub上でgitian.sigsの内容をvipstar-devにPR送れば大体OK

おわり