bitcoin/ci
W. J. van der Laan 698b4b8fac
Merge bitcoin/bitcoin#22930: build: remove glibc back compat
76630cbfb9 doc: add glibc to dependencies.md (fanquake)
a907704e7f compat: remove glibc_compat.cpp (fanquake)
62e45da945 build: remove glibc-back-compat from build system (fanquake)
2ef0accefc remove --enable-glibc-back-compat from CI and docs (fanquake)

Pull request description:

  This removes our glibc backwards compatibility code (glibcxx sanity checks remain), which is [no-longer used for release builds](https://github.com/bitcoin/bitcoin/pull/22405).

  With these changes our minimum required glibc remains at 2.17, as Guix builds [are done with `--disable-thread-local`](d2dd1697ce/contrib/guix/libexec/build.sh (L242)).

  Guix builds:
  ```bash
  d9024376ac06b836800b942fcbe8a6454866ded652e41c43d605255f840e8183  guix-build-76630cbfb924/output/aarch64-linux-gnu/SHA256SUMS.part
  bea9607f111b7a501e2410e59ccfca6f83ea075edb299d2f9b878860a4f1ad50  guix-build-76630cbfb924/output/aarch64-linux-gnu/bitcoin-76630cbfb924-aarch64-linux-gnu-debug.tar.gz
  b41d7eaec5b598f146ead32a40c0e2281d22138c02a7000fb154fe8ff341ab9d  guix-build-76630cbfb924/output/aarch64-linux-gnu/bitcoin-76630cbfb924-aarch64-linux-gnu.tar.gz
  9ec0e1b2cd4ca55d5c12354325d7c4552333f1bad7e620db247eb24e15500210  guix-build-76630cbfb924/output/arm-linux-gnueabihf/SHA256SUMS.part
  dbb3e92a3b7d6460e0d5319f49c91eb65593d8604807c1b3084c9d657b198271  guix-build-76630cbfb924/output/arm-linux-gnueabihf/bitcoin-76630cbfb924-arm-linux-gnueabihf-debug.tar.gz
  ff2fa70b01f92b9fba9f0216deebc3e511d84ff93a7316f6766a405160a20483  guix-build-76630cbfb924/output/arm-linux-gnueabihf/bitcoin-76630cbfb924-arm-linux-gnueabihf.tar.gz
  486586b4f3e81855a52e5410127b92f6dde9d1eede2720de260b13552a4b4823  guix-build-76630cbfb924/output/dist-archive/bitcoin-76630cbfb924.tar.gz
  466ccc848c39c0ca85c4575c2bfcd1bc7aba2caa5ba8a42147cce60be5120bf6  guix-build-76630cbfb924/output/powerpc64-linux-gnu/SHA256SUMS.part
  4c739da127df3738e993dcef48ec8f005b7d7938060197c718e771cdd18c2087  guix-build-76630cbfb924/output/powerpc64-linux-gnu/bitcoin-76630cbfb924-powerpc64-linux-gnu-debug.tar.gz
  2294fc23c170d63fc03085d56ba8653e3cf0cff15c8bd5680faa7b7552e1db07  guix-build-76630cbfb924/output/powerpc64-linux-gnu/bitcoin-76630cbfb924-powerpc64-linux-gnu.tar.gz
  7be025478c51a1ba7884a7c2f090a1311651fc218d706051b1830cbc4e82ee4d  guix-build-76630cbfb924/output/powerpc64le-linux-gnu/SHA256SUMS.part
  30600ad6d9bfe70b68a2a4bedc733b56b26232a45d4491b1a6fa30b76cd3f690  guix-build-76630cbfb924/output/powerpc64le-linux-gnu/bitcoin-76630cbfb924-powerpc64le-linux-gnu-debug.tar.gz
  70528805fae16b95d1df46011511ca1c2616fb89422c0164e30d02fa0193b6a1  guix-build-76630cbfb924/output/powerpc64le-linux-gnu/bitcoin-76630cbfb924-powerpc64le-linux-gnu.tar.gz
  20f4daaa095803e9c34ed8b119f948e3e61d03b4d5814e4b15ca285c2ba5a109  guix-build-76630cbfb924/output/riscv64-linux-gnu/SHA256SUMS.part
  6f969d6b6561ea87d1e54a3a643640da54e4e33d2470dbc607ad27f3a87a0f1d  guix-build-76630cbfb924/output/riscv64-linux-gnu/bitcoin-76630cbfb924-riscv64-linux-gnu-debug.tar.gz
  7c1e925d199d21781c96e9ee8d63d5eac995cbe2574ccedd81c0938531f694c1  guix-build-76630cbfb924/output/riscv64-linux-gnu/bitcoin-76630cbfb924-riscv64-linux-gnu.tar.gz
  d0f13a7a9fcd95669cbab3b637940c2014632405037959989768ec2ffa7fd861  guix-build-76630cbfb924/output/x86_64-apple-darwin18/SHA256SUMS.part
  ff23fbdd72fd42140bf11773866061cd5571b66d65bbd769b1345969d195b7ce  guix-build-76630cbfb924/output/x86_64-apple-darwin18/bitcoin-76630cbfb924-osx-unsigned.dmg
  1b51f4a7611b85d4f599291f42887643ddd59babfc6fb71284793123d8a6be33  guix-build-76630cbfb924/output/x86_64-apple-darwin18/bitcoin-76630cbfb924-osx-unsigned.tar.gz
  e0dc9be66c3dc9ba30c5224cf0499ef02b3b7e213081561a6d57d5cc76b3e9a7  guix-build-76630cbfb924/output/x86_64-apple-darwin18/bitcoin-76630cbfb924-osx64.tar.gz
  ae3fb0320a0f39dae48354fe74f3d071b16b33920b3b7b27244658439fdfbc93  guix-build-76630cbfb924/output/x86_64-linux-gnu/SHA256SUMS.part
  9545ccf26a930a3f876058bb0c4965e1320a354ee2d9ce27d95f8bdd2e8679a6  guix-build-76630cbfb924/output/x86_64-linux-gnu/bitcoin-76630cbfb924-x86_64-linux-gnu-debug.tar.gz
  4827206220eaa2b36ebb44b68035c6bda0cec0c2f1b27c08b8349f2f7b3f56d5  guix-build-76630cbfb924/output/x86_64-linux-gnu/bitcoin-76630cbfb924-x86_64-linux-gnu.tar.gz
  c2ad3ed62b2ac41a25a43e1c38869a588bf93853cae4502880adf0b66ce30369  guix-build-76630cbfb924/output/x86_64-w64-mingw32/SHA256SUMS.part
  a88ee3a0cb715d32cf12cb164d8fe4d9c4c810cc417426f3aacc4e7f08460271  guix-build-76630cbfb924/output/x86_64-w64-mingw32/bitcoin-76630cbfb924-win-unsigned.tar.gz
  7673ac8df641d185ea7a150ed27eeee9645168e126d186c6ae935eefdff9edae  guix-build-76630cbfb924/output/x86_64-w64-mingw32/bitcoin-76630cbfb924-win64-debug.zip
  b90d243d292d1b603d744639e5061917035bd8fba6acd0bb61f10479a200f5aa  guix-build-76630cbfb924/output/x86_64-w64-mingw32/bitcoin-76630cbfb924-win64-setup-unsigned.exe
  fe69d000da647e0fb7ab19252149be4b45af742223b4c37630200b1d5b43de33  guix-build-76630cbfb924/output/x86_64-w64-mingw32/bitcoin-76630cbfb924-win64.zip
  ```

ACKs for top commit:
  laanwj:
    Code review ACK 76630cbfb9

Tree-SHA512: 6bd1e344f0f37cfb0017fb8b2b0eee41c6a043f23f8ccb2ad1d59e7f2a47f4b84fe431d7d059c409b63263a0af38be955961c4b2ba7b03538f77a0597abb7880
2021-09-16 19:03:42 +02:00
..
lint test: Update test README and lint script 2021-09-02 10:26:35 +02:00
retry build: update retry to current version 2019-10-30 18:49:57 -04:00
test Merge bitcoin/bitcoin#22930: build: remove glibc back compat 2021-09-16 19:03:42 +02:00
lint_run_all.sh scripted-diff: Bump copyright headers 2020-12-31 09:45:41 +01:00
README.md doc: move doc to ci readme 2020-06-19 10:44:00 -04:00
test_run_all.sh scripted-diff: Bump copyright headers 2020-12-31 09:45:41 +01:00

CI Scripts

This directory contains scripts for each build step in each build stage.

Running a Stage Locally

Be aware that the tests will be built and run in-place, so please run at your own risk. If the repository is not a fresh git clone, you might have to clean files from previous builds or test runs first.

The ci needs to perform various sysadmin tasks such as installing packages or writing to the user's home directory. While most of the actions are done inside a docker container, this is not possible for all. Thus, cache directories, such as the depends cache, previous release binaries, or ccache, are mounted as read-write into the docker container. While it should be fine to run the ci system locally on you development box, the ci scripts can generally be assumed to have received less review and testing compared to other parts of the codebase. If you want to keep the work tree clean, you might want to run the ci system in a virtual machine with a Linux operating system of your choice.

To allow for a wide range of tested environments, but also ensure reproducibility to some extent, the test stage requires docker to be installed. To install all requirements on Ubuntu, run

sudo apt install docker.io bash

To run the default test stage,

./ci/test_run_all.sh

To run the test stage with a specific configuration,

FILE_ENV="./ci/test/00_setup_env_arm.sh" ./ci/test_run_all.sh

Configurations

The test files (FILE_ENV) are constructed to test a wide range of configurations, rather than a single pass/fail. This helps to catch build failures and logic errors that present on platforms other than the ones the author has tested.

Some builders use the dependency-generator in ./depends, rather than using the system package manager to install build dependencies. This guarantees that the tester is using the same versions as the release builds, which also use ./depends.

If no FILE_ENV has been specified or values are left out, 00_setup_env.sh is used as the default configuration with fallback values.

It is also possible to force a specific configuration without modifying the file. For example,

MAKEJOBS="-j1" FILE_ENV="./ci/test/00_setup_env_arm.sh" ./ci/test_run_all.sh

The files starting with 0n (n greater than 0) are the scripts that are run in order.

Cache

In order to avoid rebuilding all dependencies for each build, the binaries are cached and re-used when possible. Changes in the dependency-generator will trigger cache-invalidation and rebuilds as necessary.