From bd25487a136225d821f2599db878bc2036168429 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Thu, 2 Sep 2021 01:42:30 +0300 Subject: [PATCH 1/8] Merge #14325: [gitian] use versioned unsigned tarballs instead of generically named ones d813266db1f23f49465aa2aca3c3c80a95cf63d9 [gitian] use versioned unsigned tarballs instead of generically named ones (Andrew Chow) Pull request description: Instead of re-naming the tarballs used for the code signing step to the generically named tarball that is used, keep the versioned naming. Only copy them to the correct filename when they are needed at build time. This makes it easier to handle situations when multiple different releases are being built simultaneously as the version that the code signatures are applied to will actually be the correct version and not require a rebuild to get the correct tarball. Tree-SHA512: 434f721485521c6f7487038705a5d2e48ac2eb79cfad5f92a93b7ea9c91e1fb33702ce7aeed4d840c61ec43e808af5cc15a553b6e16e2ed1d7ac697485019204 --- contrib/gitian-build.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/contrib/gitian-build.py b/contrib/gitian-build.py index f299e6fa7816..8fcff3cbfae9 100755 --- a/contrib/gitian-build.py +++ b/contrib/gitian-build.py @@ -65,7 +65,7 @@ def build(): print('\nCompiling ' + args.version + ' Windows') subprocess.check_call(['bin/gbuild', '-j', args.jobs, '-m', args.memory, '--commit', 'dash='+args.commit, '--url', 'dash='+args.url, '../dash/contrib/gitian-descriptors/gitian-win.yml']) subprocess.check_call(['bin/gsign', '-p', args.sign_prog, '--signer', args.signer, '--release', args.version+'-win-unsigned', '--destination', '../gitian.sigs/', '../dash/contrib/gitian-descriptors/gitian-win.yml']) - subprocess.check_call('mv build/out/dashcore-*-win-unsigned.tar.gz inputs/dashcore-win-unsigned.tar.gz', shell=True) + subprocess.check_call('mv build/out/dashcore-*-win-unsigned.tar.gz inputs/', shell=True) subprocess.check_call('mv build/out/dashcore-*.zip build/out/dashcore-*.exe ../dashcore-binaries/'+args.version, shell=True) if args.macos: @@ -74,7 +74,7 @@ def build(): subprocess.check_output(["echo '328aff47e28c17093d59a72712a9b2e62cd8a8b87bbe03f91abb32960b413f0f inputs/MacOSX10.14.sdk.tar.gz' | sha256sum -c"], shell=True) subprocess.check_call(['bin/gbuild', '-j', args.jobs, '-m', args.memory, '--commit', 'dash='+args.commit, '--url', 'dash='+args.url, '../dash/contrib/gitian-descriptors/gitian-osx.yml']) subprocess.check_call(['bin/gsign', '-p', args.sign_prog, '--signer', args.signer, '--release', args.version+'-osx-unsigned', '--destination', '../gitian.sigs/', '../dash/contrib/gitian-descriptors/gitian-osx.yml']) - subprocess.check_call('mv build/out/dashcore-*-osx-unsigned.tar.gz inputs/dashcore-osx-unsigned.tar.gz', shell=True) + subprocess.check_call('mv build/out/dashcore-*-osx-unsigned.tar.gz inputs/', shell=True) subprocess.check_call('mv build/out/dashcore-*.tar.gz build/out/dashcore-*.dmg ../dashcore-binaries/'+args.version, shell=True) os.chdir(workdir) @@ -94,6 +94,7 @@ def sign(): if args.windows: print('\nSigning ' + args.version + ' Windows') + subprocess.check_call('cp inputs/dashcore-' + args.version + '-win-unsigned.tar.gz inputs/dashcore-win-unsigned.tar.gz', shell=True) subprocess.check_call(['bin/gbuild', '-i', '--commit', 'signature='+args.commit, '../dash/contrib/gitian-descriptors/gitian-win-signer.yml']) subprocess.check_call(['bin/gsign', '-p', args.sign_prog, '--signer', args.signer, '--release', args.version+'-win-signed', '--destination', '../gitian.sigs/', '../dash/contrib/gitian-descriptors/gitian-win-signer.yml']) subprocess.check_call('mv build/out/dashcore-*win64-setup.exe ../dashcore-binaries/'+args.version, shell=True) @@ -101,6 +102,7 @@ def sign(): if args.macos: print('\nSigning ' + args.version + ' MacOS') + subprocess.check_call('cp inputs/dashcore-' + args.version + '-osx-unsigned.tar.gz inputs/dashcore-osx-unsigned.tar.gz', shell=True) subprocess.check_call(['bin/gbuild', '-i', '--commit', 'signature='+args.commit, '../dash/contrib/gitian-descriptors/gitian-osx-signer.yml']) subprocess.check_call(['bin/gsign', '-p', args.sign_prog, '--signer', args.signer, '--release', args.version+'-osx-signed', '--destination', '../gitian.sigs/', '../dash/contrib/gitian-descriptors/gitian-osx-signer.yml']) subprocess.check_call('mv build/out/dashcore-osx-signed.dmg ../dashcore-binaries/'+args.version+'/dashcore-'+args.version+'-osx.dmg', shell=True) From 1e781c016f3dfd5b0b7454d7e6f0ad5b5adc6446 Mon Sep 17 00:00:00 2001 From: MarcoFalke Date: Fri, 10 May 2019 07:58:55 -0400 Subject: [PATCH 2/8] Merge #15239: scripts and tools: Move non-linux build source tarballs to "bitcoin-binaries/version" directory 5c04814b2d Move non-linux source tarball to bitcoin-binaries (Hennadii Stepanov) Pull request description: Currently, if a user makes a non-linux (`--os=w`, `--os=m` or `--os=wm`) gitian building with the `gitian-build.py` script, source tarballs are not moved to the `bitcoin-binaries/${VERSION}` directory. This PR fixes this bug. ~~In addition, the `src` subdirectory in the `gitian-builder/build/out` directory is no longer used as unnecessary.~~ ACKs for commit 5c0481: fanquake: utACK 5c04814 ken2812221: utACK 5c04814b2de179fd03ca18c19049f035a2454f81 Tree-SHA512: 8648b6cbf502c012b12642783870e37aea385bd5f4cba5cb577fee924c09685e9a117676be502e4d4783c7a8ab31a2bd495970eec42a42d78e86ac5d39323091 --- contrib/gitian-build.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contrib/gitian-build.py b/contrib/gitian-build.py index 8fcff3cbfae9..c3213acbe5c3 100755 --- a/contrib/gitian-build.py +++ b/contrib/gitian-build.py @@ -66,7 +66,7 @@ def build(): subprocess.check_call(['bin/gbuild', '-j', args.jobs, '-m', args.memory, '--commit', 'dash='+args.commit, '--url', 'dash='+args.url, '../dash/contrib/gitian-descriptors/gitian-win.yml']) subprocess.check_call(['bin/gsign', '-p', args.sign_prog, '--signer', args.signer, '--release', args.version+'-win-unsigned', '--destination', '../gitian.sigs/', '../dash/contrib/gitian-descriptors/gitian-win.yml']) subprocess.check_call('mv build/out/dashcore-*-win-unsigned.tar.gz inputs/', shell=True) - subprocess.check_call('mv build/out/dashcore-*.zip build/out/dashcore-*.exe ../dashcore-binaries/'+args.version, shell=True) + subprocess.check_call('mv build/out/dashcore-*.zip build/out/dashcore-*.exe build/out/src/dashcore-*.tar.gz ../dashcore-binaries/'+args.version, shell=True) if args.macos: print('\nCompiling ' + args.version + ' MacOS') @@ -75,7 +75,7 @@ def build(): subprocess.check_call(['bin/gbuild', '-j', args.jobs, '-m', args.memory, '--commit', 'dash='+args.commit, '--url', 'dash='+args.url, '../dash/contrib/gitian-descriptors/gitian-osx.yml']) subprocess.check_call(['bin/gsign', '-p', args.sign_prog, '--signer', args.signer, '--release', args.version+'-osx-unsigned', '--destination', '../gitian.sigs/', '../dash/contrib/gitian-descriptors/gitian-osx.yml']) subprocess.check_call('mv build/out/dashcore-*-osx-unsigned.tar.gz inputs/', shell=True) - subprocess.check_call('mv build/out/dashcore-*.tar.gz build/out/dashcore-*.dmg ../dashcore-binaries/'+args.version, shell=True) + subprocess.check_call('mv build/out/dashcore-*.tar.gz build/out/dashcore-*.dmg build/out/src/dashcore-*.tar.gz ../dashcore-binaries/'+args.version, shell=True) os.chdir(workdir) From 01a6b2334e376330e39e8f4c3ff7363fe601a378 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Thu, 9 May 2019 17:22:24 +0200 Subject: [PATCH 3/8] Merge #15766: scripts and tools: Upgrade gitian image before signing beda0dae953aa125e08302713d2c7b214eddbe5a Upgrade gitian image before signing (Hennadii Stepanov) Pull request description: The package upgrade in the Ubuntu repositories in the period between the building and the signing causes (particularly, using LXC) an error: ``` Creating package manifest Could not download some packages, please run gbuild --upgrade ``` For example, the [`busybox-initramfs`](https://packages.ubuntu.com/bionic/busybox-initramfs) package was [upgraded](http://changelogs.ubuntu.com/changelogs/pool/main/b/busybox/busybox_1.27.2-2ubuntu3.2/changelog) from `1:1.27.2-2ubuntu3.1` to `1:1.27.2-2ubuntu3.2` on 2019-03-06. This PR forces gitian image upgrade for the `--sign` command. Ref: [devrandom/gitian-builder/target-bin/grab-packages.sh](https://github.com/devrandom/gitian-builder/blob/04ab7c121842be8c5848b3de5076c8ded7761314/target-bin/grab-packages.sh) ``` #!/bin/sh # Get an installed package manifest set -e cd /var/cache/apt/archives # make sure all packages with installed versions are downloaded # (except for held packages, which may not be available for download) dpkg-query -W -f '${Status}\t${Package}=${Version}\n' | grep -v ^hold | cut -f2- | xargs -n 50 apt-get install -q --reinstall -y -d > /tmp/download.log grep "cannot be downloaded" /tmp/download.log && { echo Could not download some packages, please run gbuild --upgrade 1>&2 ; exit 1 ; } sha256sum *.deb | sort --key 2 ``` ACKs for commit beda0d: laanwj: utACK beda0dae953aa125e08302713d2c7b214eddbe5a fanquake: utACK beda0da Tree-SHA512: e2e3b3e3719e098d266ceec39bd69b950344a4eb2f43ae6ad3e696add70f743b363cc83676e339f7caa207d6478029869a8af01fe1f6d5690d2857003f7d8ce8 --- contrib/gitian-build.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contrib/gitian-build.py b/contrib/gitian-build.py index c3213acbe5c3..ec07114417e9 100755 --- a/contrib/gitian-build.py +++ b/contrib/gitian-build.py @@ -95,7 +95,7 @@ def sign(): if args.windows: print('\nSigning ' + args.version + ' Windows') subprocess.check_call('cp inputs/dashcore-' + args.version + '-win-unsigned.tar.gz inputs/dashcore-win-unsigned.tar.gz', shell=True) - subprocess.check_call(['bin/gbuild', '-i', '--commit', 'signature='+args.commit, '../dash/contrib/gitian-descriptors/gitian-win-signer.yml']) + subprocess.check_call(['bin/gbuild', '--skip-image', '--upgrade', '--commit', 'signature='+args.commit, '../dash/contrib/gitian-descriptors/gitian-win-signer.yml']) subprocess.check_call(['bin/gsign', '-p', args.sign_prog, '--signer', args.signer, '--release', args.version+'-win-signed', '--destination', '../gitian.sigs/', '../dash/contrib/gitian-descriptors/gitian-win-signer.yml']) subprocess.check_call('mv build/out/dashcore-*win64-setup.exe ../dashcore-binaries/'+args.version, shell=True) subprocess.check_call('mv build/out/dashcore-*win32-setup.exe ../dashcore-binaries/'+args.version, shell=True) @@ -103,7 +103,7 @@ def sign(): if args.macos: print('\nSigning ' + args.version + ' MacOS') subprocess.check_call('cp inputs/dashcore-' + args.version + '-osx-unsigned.tar.gz inputs/dashcore-osx-unsigned.tar.gz', shell=True) - subprocess.check_call(['bin/gbuild', '-i', '--commit', 'signature='+args.commit, '../dash/contrib/gitian-descriptors/gitian-osx-signer.yml']) + subprocess.check_call(['bin/gbuild', '--skip-image', '--upgrade', '--commit', 'signature='+args.commit, '../dash/contrib/gitian-descriptors/gitian-osx-signer.yml']) subprocess.check_call(['bin/gsign', '-p', args.sign_prog, '--signer', args.signer, '--release', args.version+'-osx-signed', '--destination', '../gitian.sigs/', '../dash/contrib/gitian-descriptors/gitian-osx-signer.yml']) subprocess.check_call('mv build/out/dashcore-osx-signed.dmg ../dashcore-binaries/'+args.version+'/dashcore-'+args.version+'-osx.dmg', shell=True) From 07a7fda2259817fd6b3a7e1f1901ec571554a7b3 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Thu, 2 Sep 2021 02:10:09 +0300 Subject: [PATCH 4/8] Merge #15939: gitian: Remove Windows 32 bit build fa193dc8e6f3b96fa2dba2f1c1668f7720fed320 doc: Remove win32 from the release process (MarcoFalke) faf666f8148eeb305a9c4f78459aff2c7268016b Remove Windows 32 bit build (MarcoFalke) Pull request description: The Windows 32 bit build has been removed from https://bitcoincore.org/en/download/, so unless there are complaints, we don't need to build it even ACKs for commit fa193d: fanquake: utACK https://github.com/bitcoin/bitcoin/pull/15939/commits/fa193dc8e6f3b96fa2dba2f1c1668f7720fed320 Tree-SHA512: d6f2976a2e0c407698f720b00ac23ec4056626de4eff8621f4c5581120af0460afd1bdef72329cc0e7d92afca48d94ae5fce6777cb36bfabb60b8034ff08fd88 --- .gitlab-ci.yml | 16 ---------------- .travis.yml | 18 ------------------ .travis/test_04_install.sh | 4 ---- ci/Dockerfile.builder | 3 --- ci/matrix.sh | 5 ----- contrib/devtools/test-security-check.py | 12 ------------ contrib/gitian-build.py | 1 - contrib/gitian-descriptors/gitian-win.yml | 4 +--- depends/README.md | 3 +-- doc/build-generic.md | 1 - doc/release-process.md | 5 +---- 11 files changed, 3 insertions(+), 69 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5db2d239eb27..0fc17200212a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -144,13 +144,6 @@ arm-linux-gnueabihf: variables: HOST: arm-linux-gnueabihf -i686-w64-mingw32: - extends: - - .build-depends-template - - .skip-in-fast-mode-template - variables: - HOST: i686-w64-mingw32 - x86_64-w64-mingw32: extends: - .build-depends-template @@ -203,15 +196,6 @@ arm-linux-build: variables: BUILD_TARGET: arm-linux -win32-build: - extends: - - .build-template - - .skip-in-fast-mode-template - needs: - - i686-w64-mingw32 - variables: - BUILD_TARGET: win32 - win64-build: extends: - .build-template diff --git a/.travis.yml b/.travis.yml index f8ff7051a34c..c4017a236a72 100644 --- a/.travis.yml +++ b/.travis.yml @@ -86,9 +86,6 @@ jobs: - <<: *builddepends name: depends-arm-linux env: BUILD_TARGET=arm-linux - - <<: *builddepends - name: depends-win32 - env: BUILD_TARGET=win32 - <<: *builddepends name: depends-win64 env: BUILD_TARGET=win64 @@ -113,9 +110,6 @@ jobs: - <<: *buildsrc name: src-arm-linux env: BUILD_TARGET=arm-linux - - <<: *buildsrc - name: src-win32 - env: BUILD_TARGET=win32 - <<: *buildsrc name: src-win64 env: BUILD_TARGET=win64 @@ -137,9 +131,6 @@ jobs: name: src-mac env: BUILD_TARGET=mac # run tests (no tests for arm-linux and mac) - - <<: *runtests - name: tests-win32 - env: BUILD_TARGET=win32 - <<: *runtests name: tests-win64 env: BUILD_TARGET=win64 @@ -223,15 +214,6 @@ after_success: GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat --enable-reduce-exports" - - stage: test - name: 'Win32 [GOAL: deploy] [no gui tests]' - env: >- - HOST=i686-w64-mingw32 - DPKG_ADD_ARCH="i386" - PACKAGES="python3 nsis g++-mingw-w64-i686 wine-binfmt wine32" - GOAL="deploy" - BITCOIN_CONFIG="--enable-reduce-exports --disable-gui-tests" - - stage: test name: 'Win64 [GOAL: deploy] [no gui tests]' env: >- diff --git a/.travis/test_04_install.sh b/.travis/test_04_install.sh index a363d5924f42..7bcd2439f948 100755 --- a/.travis/test_04_install.sh +++ b/.travis/test_04_install.sh @@ -21,10 +21,6 @@ DOCKER_EXEC () { docker exec $DOCKER_ID bash -c "cd $PWD && $*" } -if [ -n "$DPKG_ADD_ARCH" ]; then - DOCKER_EXEC dpkg --add-architecture "$DPKG_ADD_ARCH" -fi - travis_retry DOCKER_EXEC apt-get update travis_retry DOCKER_EXEC apt-get install --no-install-recommends --no-upgrade -qq $PACKAGES $DOCKER_PACKAGES diff --git a/ci/Dockerfile.builder b/ci/Dockerfile.builder index d276006ceab5..89cf25c8ca21 100644 --- a/ci/Dockerfile.builder +++ b/ci/Dockerfile.builder @@ -36,7 +36,6 @@ RUN useradd -u ${USER_ID} -g dash -s /bin/bash -m -d /dash dash RUN dpkg --add-architecture i386 RUN apt-get update && apt-get install $APT_ARGS g++-7-multilib && rm -rf /var/lib/apt/lists/* RUN apt-get update && apt-get install $APT_ARGS g++-arm-linux-gnueabihf && rm -rf /var/lib/apt/lists/* -RUN apt-get update && apt-get install $APT_ARGS g++-mingw-w64-i686 && rm -rf /var/lib/apt/lists/* RUN apt-get update && apt-get install $APT_ARGS g++-mingw-w64-x86-64 && rm -rf /var/lib/apt/lists/* RUN apt-get update && apt-get install $APT_ARGS wine-stable wine32 wine64 bc nsis && rm -rf /var/lib/apt/lists/* RUN apt-get update && apt-get install $APT_ARGS python3-zmq && rm -rf /var/lib/apt/lists/* @@ -51,8 +50,6 @@ RUN ln -s x86_64-linux-gnu/asm /usr/include/asm # Make sure std::thread and friends is available RUN \ - update-alternatives --set i686-w64-mingw32-gcc /usr/bin/i686-w64-mingw32-gcc-posix; \ - update-alternatives --set i686-w64-mingw32-g++ /usr/bin/i686-w64-mingw32-g++-posix; \ update-alternatives --set x86_64-w64-mingw32-gcc /usr/bin/x86_64-w64-mingw32-gcc-posix; \ update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix; \ exit 0 diff --git a/ci/matrix.sh b/ci/matrix.sh index c23b6943ccd1..22c200545c4a 100755 --- a/ci/matrix.sh +++ b/ci/matrix.sh @@ -43,11 +43,6 @@ if [ "$BUILD_TARGET" = "arm-linux" ]; then export BITCOIN_CONFIG="--enable-glibc-back-compat --enable-reduce-exports --enable-werror CXXFLAGS=-Wno-psabi" export RUN_UNITTESTS=false export RUN_INTEGRATIONTESTS=false -elif [ "$BUILD_TARGET" = "win32" ]; then - export HOST=i686-w64-mingw32 - export DPKG_ADD_ARCH="i386" - export BITCOIN_CONFIG="--enable-gui --enable-reduce-exports --disable-miner" - export DIRECT_WINE_EXEC_TESTS=true elif [ "$BUILD_TARGET" = "win64" ]; then export HOST=x86_64-w64-mingw32 export DPKG_ADD_ARCH="i386" diff --git a/contrib/devtools/test-security-check.py b/contrib/devtools/test-security-check.py index bb1910415ee0..f5bff2ec0c7f 100755 --- a/contrib/devtools/test-security-check.py +++ b/contrib/devtools/test-security-check.py @@ -43,18 +43,6 @@ def test_ELF(self): self.assertEqual(call_security_check(cc, source, executable, ['-Wl,-znoexecstack','-fstack-protector-all','-Wl,-zrelro','-Wl,-z,now','-pie','-fPIE']), (0, '')) - def test_32bit_PE(self): - source = 'test1.c' - executable = 'test1.exe' - cc = 'i686-w64-mingw32-gcc' - write_testcode(source) - - self.assertEqual(call_security_check(cc, source, executable, ['-Wl,--no-nxcompat','-Wl,--no-dynamicbase']), - (1, executable+': failed DYNAMIC_BASE NX')) - self.assertEqual(call_security_check(cc, source, executable, ['-Wl,--nxcompat','-Wl,--no-dynamicbase']), - (1, executable+': failed DYNAMIC_BASE')) - self.assertEqual(call_security_check(cc, source, executable, ['-Wl,--nxcompat','-Wl,--dynamicbase']), - (0, '')) def test_64bit_PE(self): source = 'test1.c' executable = 'test1.exe' diff --git a/contrib/gitian-build.py b/contrib/gitian-build.py index ec07114417e9..d1736e9be0ba 100755 --- a/contrib/gitian-build.py +++ b/contrib/gitian-build.py @@ -98,7 +98,6 @@ def sign(): subprocess.check_call(['bin/gbuild', '--skip-image', '--upgrade', '--commit', 'signature='+args.commit, '../dash/contrib/gitian-descriptors/gitian-win-signer.yml']) subprocess.check_call(['bin/gsign', '-p', args.sign_prog, '--signer', args.signer, '--release', args.version+'-win-signed', '--destination', '../gitian.sigs/', '../dash/contrib/gitian-descriptors/gitian-win-signer.yml']) subprocess.check_call('mv build/out/dashcore-*win64-setup.exe ../dashcore-binaries/'+args.version, shell=True) - subprocess.check_call('mv build/out/dashcore-*win32-setup.exe ../dashcore-binaries/'+args.version, shell=True) if args.macos: print('\nSigning ' + args.version + ' MacOS') diff --git a/contrib/gitian-descriptors/gitian-win.yml b/contrib/gitian-descriptors/gitian-win.yml index d264c4917102..f344dbe88ad4 100755 --- a/contrib/gitian-descriptors/gitian-win.yml +++ b/contrib/gitian-descriptors/gitian-win.yml @@ -31,7 +31,7 @@ script: | set -e -o pipefail WRAP_DIR=$HOME/wrapped - HOSTS="i686-w64-mingw32 x86_64-w64-mingw32" + HOSTS="x86_64-w64-mingw32" CONFIGFLAGS="--enable-reduce-exports --disable-miner --disable-bench --disable-gui-tests --enable-crash-hooks" FAKETIME_HOST_PROGS="ar ranlib nm windres strip objcopy" FAKETIME_PROGS="date makensis zip" @@ -209,9 +209,7 @@ script: | cp $OUTDIR/dashcore-*setup-unsigned.exe unsigned/ find . | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ${OUTDIR}/${DISTNAME}-win-unsigned.tar.gz mv ${OUTDIR}/${DISTNAME}-x86_64-*-debug.zip ${OUTDIR}/${DISTNAME}-win64-debug.zip - mv ${OUTDIR}/${DISTNAME}-i686-*-debug.zip ${OUTDIR}/${DISTNAME}-win32-debug.zip mv ${OUTDIR}/${DISTNAME}-x86_64-*.zip ${OUTDIR}/${DISTNAME}-win64.zip - mv ${OUTDIR}/${DISTNAME}-i686-*.zip ${OUTDIR}/${DISTNAME}-win32.zip # Compress ccache (otherwise the assert file will get too huge) if [ "$CCACHE_DIR" != "" ]; then diff --git a/depends/README.md b/depends/README.md index 5f958f3c7489..b2c61b5787e4 100644 --- a/depends/README.md +++ b/depends/README.md @@ -20,7 +20,6 @@ created. To use it for Dash: Common `host-platform-triplets` for cross compilation are: -- `i686-w64-mingw32` for Win32 - `x86_64-w64-mingw32` for Win64 - `x86_64-apple-darwin16` for macOS - `arm-linux-gnueabihf` for Linux ARM 32 bit @@ -37,7 +36,7 @@ For macOS cross compilation: sudo apt-get install curl librsvg2-bin libtiff-tools bsdmainutils imagemagick libcap-dev libz-dev libbz2-dev python3-setuptools -For Win32/Win64 cross compilation: +For Win64 cross compilation: - see [build-windows.md](../doc/build-windows.md#cross-compilation-for-ubuntu-and-windows-subsystem-for-linux) diff --git a/doc/build-generic.md b/doc/build-generic.md index deb83ebd1a9a..2e6a543d45ff 100644 --- a/doc/build-generic.md +++ b/doc/build-generic.md @@ -47,7 +47,6 @@ $ make install # optional Please replace `` with your local system's `host-platform-triplet`. The following triplets are usually valid: - `i686-pc-linux-gnu` for Linux32 - `x86_64-pc-linux-gnu` for Linux64 -- `i686-w64-mingw32` for Win32 - `x86_64-w64-mingw32` for Win64 - `x86_64-apple-darwin16` for MacOSX - `arm-linux-gnueabihf` for Linux ARM 32 bit diff --git a/doc/release-process.md b/doc/release-process.md index f1e3e480faea..a2a05e44a092 100644 --- a/doc/release-process.md +++ b/doc/release-process.md @@ -213,7 +213,6 @@ Create (and optionally verify) the signed Windows binaries: ./bin/gsign --signer "$SIGNER" --release ${VERSION}-win-signed --destination ../gitian.sigs/ ../dash/contrib/gitian-descriptors/gitian-win-signer.yml ./bin/gverify -v -d ../gitian.sigs/ -r ${VERSION}-win-signed ../dash/contrib/gitian-descriptors/gitian-win-signer.yml mv build/out/dash-*win64-setup.exe ../dash-${VERSION}-win64-setup.exe - mv build/out/dash-*win32-setup.exe ../dash-${VERSION}-win32-setup.exe popd Commit your signature for the signed macOS/Windows binaries: @@ -221,7 +220,7 @@ Commit your signature for the signed macOS/Windows binaries: pushd gitian.sigs git add ${VERSION}-osx-signed/"${SIGNER}" git add ${VERSION}-win-signed/"${SIGNER}" - git commit -a + git commit -m "Add ${SIGNER} ${VERSION} signed binaries signatures" git push # Assuming you can push to the gitian.sigs tree popd @@ -242,8 +241,6 @@ dash-${VERSION}-x86_64-linux-gnu.tar.gz dash-${VERSION}-osx64.tar.gz dash-${VERSION}-osx.dmg dash-${VERSION}.tar.gz -dash-${VERSION}-win32-setup.exe -dash-${VERSION}-win32.zip dash-${VERSION}-win64-setup.exe dash-${VERSION}-win64.zip ``` From f512e704d5d2bec0b4d28efce39a645690cf9b0a Mon Sep 17 00:00:00 2001 From: MarcoFalke Date: Thu, 2 Sep 2021 03:37:21 +0300 Subject: [PATCH 5/8] Merge #13998: Scripts and tools: gitian-build.py improvements and corrections 0f22a0cf2f Fix gitian-build.py --verify option (Hennadii Stepanov) 4c56a798c0 Set/unset USE_LXC, USE_VBOX, USE_DOCKER explicitly (Hennadii Stepanov) cbbd98863b Fix Docker related issues for gitian-build.py (Hennadii Stepanov) Pull request description: 1. The Docker does not depend on `apt-cacher-ng` package. Ref: #14002. 2. Do not try to install the Docker if `docker.service` is detected on the system (e.g., the Docker was installed manually). Fix https://github.com/bitcoin/bitcoin/pull/13623#issuecomment-405684241 by **Sjors**. 3. Prevent the setting of more than one environment variable for the `gitian-builder` (an alternative to #13999). E.g., USE_LXC being set shadows USE_DOCKER; for details see [`gitian-builder/libexec/make-clean-vm`](https://github.com/devrandom/gitian-builder/blob/93a62c7d7d018c66c02a19bac3d751144043cfec/libexec/make-clean-vm#L7): ```sh VMSW=KVM if [ -n "$USE_LXC" ]; then VMSW=LXC elif [ -n "$USE_VBOX" ]; then VMSW=VBOX elif [ -n "$USE_DOCKER" ]; then VMSW=DOCKER fi ``` 4. The [`gitian-builder/bin/gverify`](https://github.com/devrandom/gitian-builder/blob/master/bin/gverify) script returns the exit code 1 if a signature verification ends with 'BAD SIGNATURE' or 'MISMATCH' by design. This PR allows to see the verification results for all signatures without a premature fail of the `gitian-build.py` script. Ref: #14014. ACKs for commit 0f22a0: Tree-SHA512: 55f8a5cffa20d0c745f51a687f3199cea015fa616e56a0aee4c25b5ca0985036c61e8cf1922515338d8c6a85f873674ebe7a9a56a5069d65a187e383150f1a83 --- contrib/gitian-build.py | 69 +++++++++++++++++++++++++---------------- 1 file changed, 42 insertions(+), 27 deletions(-) diff --git a/contrib/gitian-build.py b/contrib/gitian-build.py index d1736e9be0ba..62293e3811d9 100755 --- a/contrib/gitian-build.py +++ b/contrib/gitian-build.py @@ -8,9 +8,7 @@ def setup(): global args, workdir programs = ['ruby', 'git', 'make', 'wget'] - if args.lxc: - programs += ['apt-cacher-ng', 'lxc', 'debootstrap'] - elif args.kvm: + if args.kvm: programs += ['apt-cacher-ng', 'python-vm-builder', 'qemu-kvm', 'qemu-utils'] elif args.docker and not os.path.isfile('/lib/systemd/system/docker.service'): dockers = ['docker.io', 'docker-ce'] @@ -19,8 +17,10 @@ def setup(): if return_code == 0: break if return_code != 0: - print('Cannot find any way to install Docker', file=sys.stderr) - exit(1) + print('Cannot find any way to install Docker.', file=sys.stderr) + sys.exit(1) + else: + programs += ['apt-cacher-ng', 'lxc', 'debootstrap'] subprocess.check_call(['sudo', 'apt-get', 'install', '-qq'] + programs) if not os.path.isdir('gitian.sigs'): subprocess.check_call(['git', 'clone', 'https://github.com/dashpay/gitian.sigs.git']) @@ -41,7 +41,7 @@ def setup(): if args.is_bionic and not args.kvm and not args.docker: subprocess.check_call(['sudo', 'sed', '-i', 's/lxcbr0/br0/', '/etc/default/lxc-net']) print('Reboot is required') - exit(0) + sys.exit(0) def build(): global args, workdir @@ -118,20 +118,36 @@ def sign(): def verify(): global args, workdir + rc = 0 os.chdir('gitian-builder') print('\nVerifying v'+args.version+' Linux\n') - subprocess.call(['bin/gverify', '-v', '-d', '../gitian.sigs/', '-r', args.version+'-linux', '../dash/contrib/gitian-descriptors/gitian-linux.yml']) + if subprocess.call(['bin/gverify', '-v', '-d', '../gitian.sigs/', '-r', args.version+'-linux', '../dash/contrib/gitian-descriptors/gitian-linux.yml']): + print('Verifying v'+args.version+' Linux FAILED\n') + rc = 1 + print('\nVerifying v'+args.version+' Windows\n') - subprocess.call(['bin/gverify', '-v', '-d', '../gitian.sigs/', '-r', args.version+'-win-unsigned', '../dash/contrib/gitian-descriptors/gitian-win.yml']) + if subprocess.call(['bin/gverify', '-v', '-d', '../gitian.sigs/', '-r', args.version+'-win-unsigned', '../dash/contrib/gitian-descriptors/gitian-win.yml']): + print('Verifying v'+args.version+' Windows FAILED\n') + rc = 1 + print('\nVerifying v'+args.version+' MacOS\n') - subprocess.call(['bin/gverify', '-v', '-d', '../gitian.sigs/', '-r', args.version+'-osx-unsigned', '../dash/contrib/gitian-descriptors/gitian-osx.yml']) + if subprocess.call(['bin/gverify', '-v', '-d', '../gitian.sigs/', '-r', args.version+'-osx-unsigned', '../dash/contrib/gitian-descriptors/gitian-osx.yml']): + print('Verifying v'+args.version+' MacOS FAILED\n') + rc = 1 + print('\nVerifying v'+args.version+' Signed Windows\n') - subprocess.call(['bin/gverify', '-v', '-d', '../gitian.sigs/', '-r', args.version+'-win-signed', '../dash/contrib/gitian-descriptors/gitian-win-signer.yml']) + if subprocess.call(['bin/gverify', '-v', '-d', '../gitian.sigs/', '-r', args.version+'-win-signed', '../dash/contrib/gitian-descriptors/gitian-win-signer.yml']): + print('Verifying v'+args.version+' Signed Windows FAILED\n') + rc = 1 + print('\nVerifying v'+args.version+' Signed MacOS\n') - subprocess.call(['bin/gverify', '-v', '-d', '../gitian.sigs/', '-r', args.version+'-osx-signed', '../dash/contrib/gitian-descriptors/gitian-osx-signer.yml']) + if subprocess.call(['bin/gverify', '-v', '-d', '../gitian.sigs/', '-r', args.version+'-osx-signed', '../dash/contrib/gitian-descriptors/gitian-osx-signer.yml']): + print('Verifying v'+args.version+' Signed MacOS FAILED\n') + rc = 1 os.chdir(workdir) + return rc def main(): global args, workdir @@ -164,25 +180,24 @@ def main(): args.docker = (args.virtualization == 'docker') script_name = os.path.basename(sys.argv[0]) - # Set all USE_* environment variables for gitian-builder: USE_LXC, USE_DOCKER and USE_VBOX + if not args.lxc and not args.kvm and not args.docker: + print(script_name+': Wrong virtualization option.') + print('Try '+script_name+' --help for more information') + sys.exit(1) + + # Ensure no more than one environment variable for gitian-builder (USE_LXC, USE_VBOX, USE_DOCKER) is set as they + # can interfere (e.g., USE_LXC being set shadows USE_DOCKER; for details see gitian-builder/libexec/make-clean-vm). + os.environ['USE_LXC'] = '' os.environ['USE_VBOX'] = '' - if args.lxc: + os.environ['USE_DOCKER'] = '' + if args.docker: + os.environ['USE_DOCKER'] = '1' + elif not args.kvm: os.environ['USE_LXC'] = '1' - os.environ['USE_DOCKER'] = '' if 'GITIAN_HOST_IP' not in os.environ.keys(): os.environ['GITIAN_HOST_IP'] = '10.0.3.1' if 'LXC_GUEST_IP' not in os.environ.keys(): os.environ['LXC_GUEST_IP'] = '10.0.3.5' - elif args.kvm: - os.environ['USE_LXC'] = '' - os.environ['USE_DOCKER'] = '' - elif args.docker: - os.environ['USE_LXC'] = '' - os.environ['USE_DOCKER'] = '1' - else: - print(script_name+': Wrong virtualization option.') - print('Try '+script_name+' --help for more information') - exit(1) if args.setup: setup() @@ -203,11 +218,11 @@ def main(): if not args.signer: print(script_name+': Missing signer') print('Try '+script_name+' --help for more information') - exit(1) + sys.exit(1) if not args.version: print(script_name+': Missing version') print('Try '+script_name+' --help for more information') - exit(1) + sys.exit(1) # Add leading 'v' for tags if args.commit and args.pull: @@ -240,7 +255,7 @@ def main(): os.chdir('gitian.sigs') subprocess.check_call(['git', 'pull']) os.chdir(workdir) - verify() + sys.exit(verify()) if __name__ == '__main__': main() From 7a9b5cb3eb308fd4e599eec8ac877f2f98ecf561 Mon Sep 17 00:00:00 2001 From: MarcoFalke Date: Tue, 28 May 2019 14:32:05 -0400 Subject: [PATCH 6/8] Merge #16114: contrib: add curl as a required program in gitian-build.py 97dce72261 contrib: add curl as a required program in gitian-build.py (fanquake) Pull request description: Fixes: #16109 Adds `curl` to the list of base programs required by the `gitian-build.py` script. ACKs for commit 97dce7: hebasto: tACK 97dce7226194d5d8a06787afef7df08cebb66bd6 on Debian Buster RC1. Tree-SHA512: 68847a527aa6b5d883bffd6a6fe6bbbe4b96ceddb30f55ed5ffbfa690a10c2e9c1bc7ba4520319531ab3baa7a7f64c3c8ce89a791f7c746abe73a84c2942b94d --- contrib/gitian-build.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/gitian-build.py b/contrib/gitian-build.py index 62293e3811d9..25feb408622e 100755 --- a/contrib/gitian-build.py +++ b/contrib/gitian-build.py @@ -7,7 +7,7 @@ def setup(): global args, workdir - programs = ['ruby', 'git', 'make', 'wget'] + programs = ['ruby', 'git', 'make', 'wget', 'curl'] if args.kvm: programs += ['apt-cacher-ng', 'python-vm-builder', 'qemu-kvm', 'qemu-utils'] elif args.docker and not os.path.isfile('/lib/systemd/system/docker.service'): From f0cfb1023163a0983a3a6920ac5cf3855ac1bd15 Mon Sep 17 00:00:00 2001 From: MarcoFalke Date: Thu, 28 Jan 2021 17:42:56 +0100 Subject: [PATCH 7/8] Merge #21004: contrib: Fix docker args conditional in gitian-build 624091b7b97ed371900ca7c68f3e2929954e3464 Fix docker args conditional (setpill) Pull request description: The conditional that checks if docker needs to be installed has the side effect of triggering the default `lxc` branch in case docker comes preinstalled. This is clearly not intentional. ACKs for top commit: laanwj: Code review ACK 624091b7b97ed371900ca7c68f3e2929954e3464 theStack: Code review ACK 624091b7b97ed371900ca7c68f3e2929954e3464 Tree-SHA512: e37e2c35aaed813762223e5963e5416d5865b3fb53efb2aac86daaa03b95ccf07db9c3a779446029d055ab89491147c4d900117273e22caed201b21bdf287c58 --- contrib/gitian-build.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/contrib/gitian-build.py b/contrib/gitian-build.py index 25feb408622e..e53e4ac1d244 100755 --- a/contrib/gitian-build.py +++ b/contrib/gitian-build.py @@ -10,15 +10,16 @@ def setup(): programs = ['ruby', 'git', 'make', 'wget', 'curl'] if args.kvm: programs += ['apt-cacher-ng', 'python-vm-builder', 'qemu-kvm', 'qemu-utils'] - elif args.docker and not os.path.isfile('/lib/systemd/system/docker.service'): - dockers = ['docker.io', 'docker-ce'] - for i in dockers: - return_code = subprocess.call(['sudo', 'apt-get', 'install', '-qq', i]) - if return_code == 0: - break - if return_code != 0: - print('Cannot find any way to install Docker.', file=sys.stderr) - sys.exit(1) + elif args.docker: + if not os.path.isfile('/lib/systemd/system/docker.service'): + dockers = ['docker.io', 'docker-ce'] + for i in dockers: + return_code = subprocess.call(['sudo', 'apt-get', 'install', '-qq', i]) + if return_code == 0: + break + if return_code != 0: + print('Cannot find any way to install Docker.', file=sys.stderr) + sys.exit(1) else: programs += ['apt-cacher-ng', 'lxc', 'debootstrap'] subprocess.check_call(['sudo', 'apt-get', 'install', '-qq'] + programs) From b31f230349d5e7993f5bd30c54955ac0a434b284 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Wed, 10 Feb 2021 19:36:42 +0100 Subject: [PATCH 8/8] Merge #21130: script: Make LXC container size suitable for gitian builds 166266a372fed2b1f73053084a923fab7edc77f4 script: Make LXC container size suitable for gitian builds (Hennadii Stepanov) Pull request description: This change prevents "No space left on device" error. See: - https://github.com/bitcoin/bitcoin/pull/21036#issuecomment-774771873 - https://github.com/bitcoin/bitcoin/pull/21036#issuecomment-775031315 ACKs for top commit: jonasschnelli: ACK 166266a372fed2b1f73053084a923fab7edc77f4 - I had to add this manually to my nighly build base image Tree-SHA512: 47d84c3a65f0a17013b2cb970c34bfa4e600e83066be302ff10280aefefa0a7c6cb6c21a191b3e8e6fcd1c292d1c434cc4769e04626c4536050aced29b34d573 --- contrib/gitian-build.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/gitian-build.py b/contrib/gitian-build.py index e53e4ac1d244..79db87436638 100755 --- a/contrib/gitian-build.py +++ b/contrib/gitian-build.py @@ -36,7 +36,7 @@ def setup(): if args.docker: make_image_prog += ['--docker'] elif args.lxc: - make_image_prog += ['--lxc'] + make_image_prog += ['--lxc', '--disksize', '13000'] subprocess.check_call(make_image_prog) os.chdir(workdir) if args.is_bionic and not args.kvm and not args.docker: