From 7a6e5cf66a68d05cbbcd8d71c70fa6ae0cd2f5a0895b0a789764d1825db17c16 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Thu, 25 Jul 2024 17:29:00 +0300 Subject: [PATCH] Ability to build Go with GOST TLS 1.3 --- build/distfiles/.gitignore | 3 +- build/distfiles/gogost-6.0.0.tar.zst.meta4 | 40 +++++++++++++++++++ ...ar.zst.do => gostls13-1.22.5.patch.zst.do} | 4 +- build/skel/lang/go1.22.5.do | 22 +++++++--- 4 files changed, 61 insertions(+), 8 deletions(-) create mode 100644 build/distfiles/gogost-6.0.0.tar.zst.meta4 rename build/distfiles/{gostls13-debash-1.22.5.tar.zst.do => gostls13-1.22.5.patch.zst.do} (83%) diff --git a/build/distfiles/.gitignore b/build/distfiles/.gitignore index 691968f..3ebbc49 100644 --- a/build/distfiles/.gitignore +++ b/build/distfiles/.gitignore @@ -70,12 +70,13 @@ /go1.22.5.tar.gz /go1.4.3.tar.gz /gocheese-4.2.0.tar.zst +/gogost-6.0.0.tar.zst /gogost-v6.0.0-modcache /golang.org-x-tools-0.18.0-modcache /gomodcache/ /goredo-2.6.2.tar.zst /gosha3-v1.0.0-modcache -/gostls13-debash-1.22.5.tar.zst +/gostls13-1.22.5.patch.zst /gostls13.git/ /gpgme-1.23.2.tar.bz2 /graphviz-11.0.0.tar.xz diff --git a/build/distfiles/gogost-6.0.0.tar.zst.meta4 b/build/distfiles/gogost-6.0.0.tar.zst.meta4 new file mode 100644 index 0000000..49cf880 --- /dev/null +++ b/build/distfiles/gogost-6.0.0.tar.zst.meta4 @@ -0,0 +1,40 @@ + + + + 5c9f875df0189aa79f43435e80820b8f3b6fd4950948429fe5fba70e5989d7f7 + 44c5dca0c2d47004d7ce3aa3942c820097a4ecc94ced560b2621e1d4b0154365a5d51ac49c97d7e4440b761d9ea964456f3ad77abd7c278aaab43394b6294428 + 3ee79481531966f5b9c4f79eea78a375a7f67fb4a97bae5b7ebef1b1fa34f9b5 + 23ee7f71a5415ff916a29c8204a5621132f9f3daff46e54a51228d595572d58815ff354649193062c55ab3c7ef5d50f2ea0ba547f882f383dd2e4631f90751c5 + 123c3cc93c5c9abf6d0e0c146c5a2d323da2848844a228d9bf2cbb330ec719b8 + 962ec5fba0f1f17fb597c70bd5f8b22e1f40aa7e89651c3cce148abfb3af4f0c5e2e81a688fc1c39132e2932706f2417fc5fa16484f5e950663d5e4821765ea8 + 27a0965faee507d429074ea6dad57357754aa30e6890aeb5db567fb3c281c8bc5aa917a68a134b8d5f11772d08b380b1c48a62909f72e8a46fb2c92e73c20ed1 + a6e9037809e2fcf84d65885d621b3d94a70b8538272675c067c2d922724dfb04 + 5967e8ab58eb4f28cd8e4b60279468aa7b1bdd2bc775853fd3bae6c22becdb7cb2e9ab908f1a918f132567cbc83d611c29e0f6b0c942cb4ed3c58a9a51ef673a + fd782282ec7f72ffc921437276e4075cc35c03dc1c85f5e3eee5f4d6dfb0e0d4 + 176aaeeec2c6446c6329f5b3857bfe20 + + + 87756 + http://www.gogost.cypherpunks.su/gogost-6.0.0.tar.zst + http://y.www.gogost.cypherpunks.su/gogost-6.0.0.tar.zst + + diff --git a/build/distfiles/gostls13-debash-1.22.5.tar.zst.do b/build/distfiles/gostls13-1.22.5.patch.zst.do similarity index 83% rename from build/distfiles/gostls13-debash-1.22.5.tar.zst.do rename to build/distfiles/gostls13-1.22.5.patch.zst.do index 54345ef..0fe055b 100644 --- a/build/distfiles/gostls13-debash-1.22.5.tar.zst.do +++ b/build/distfiles/gostls13-1.22.5.patch.zst.do @@ -3,8 +3,8 @@ sname=$1.do . "$BASS_ROOT"/lib/rc [ -d gostls13.git ] || git clone --depth 1 --bare git://git.cypherpunks.su/gostls13.git >&2 cd gostls13.git tag=go1.22.5-gost -git fetch origin tag $tag >&2 +git fetch origin tag $tag ${tag%-gost} >&2 echo gostls13@cypherpunks.su ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILuX3gTqrFb3G2oW/osn3LIa7X5spo0MTsEIRLKVfJrq >allowed-signers git config gpg.ssh.allowedSignersFile "$(realpath allowed-signers)" git tag --verify $tag >&2 -git archive --prefix=${1%.tar.zst}/ $tag debash | $COMPRESSOR +git diff ${tag%-gost}..$tag | $COMPRESSOR diff --git a/build/skel/lang/go1.22.5.do b/build/skel/lang/go1.22.5.do index 6b9683a..9f55293 100644 --- a/build/skel/lang/go1.22.5.do +++ b/build/skel/lang/go1.22.5.do @@ -5,21 +5,33 @@ sname=$1.do . "$BASS_ROOT"/lib/rc bdeps="rc-paths stow archivers/zstd" command -v bash >/dev/null 2>/dev/null || bdeps="$bdeps lang/perl-5.32.1" goprev=go1.20.14 -debash=gostls13-debash-1.22.5 -redo-ifchange $bdeps "$DISTFILES"/$NAME.tar.gz \ - "$DISTFILES"/$debash.tar.zst lang/$goprev +redo-ifchange $bdeps "$DISTFILES"/$NAME.tar.gz lang/$goprev +[ -z "$GOSTLS13_ENABLED" ] || + redo-ifchange "$DISTFILES"/gostls13-1.22.5.patch.zst "$DISTFILES"/gogost-6.0.0.tar.zst hsh=$("$BASS_ROOT"/build/bin/cksum $BASS_REV $SPATH) . "$BASS_ROOT"/build/lib/create-tmp-for-build.rc "$BASS_ROOT"/build/bin/pkg-inst $bdeps lang/$goprev . ./rc bootstrap="$(realpath local/$goprev)" -$TAR xf "$DISTFILES"/$debash.tar.zst $TAR xf "$DISTFILES"/$NAME.tar.gz "$BASS_ROOT"/bin/rm-r "$SKELBINS"/$ARCH/$NAME-$hsh cd go -command -v bash >/dev/null 2>/dev/null || ../$debash/debash +if [ -n "$GOSTLS13_ENABLED" ] ; then + zstd -d <"$DISTFILES"/gostls13-1.22.5.patch.zst | patch >&2 + cp "$DISTFILES"/gogost-6.0.0.tar.zst . + chmod +x debash gogost-install + ./gogost-install >&2 + command -v bash >/dev/null 2>/dev/null || ./debash + cat >>src/crypto/tls/gost.go </dev/null 2>/dev/null || "$BASS_ROOT"/contrib/go-debash/v1 +fi cd src GOROOT_BOOTSTRAP=$bootstrap ./make.bash >&2 cd ../.. -- 2.48.1