-
Notifications
You must be signed in to change notification settings - Fork 38.7k
guix: Misc feedback-based fixes + hier restructuring #21375
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers. ConflictsReviewers, this pull request conflicts with the following ones:
If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first. |
8257966 to
25da213
Compare
55f003b to
8e3608e
Compare
8e3608e to
61194db
Compare
| ...bind-mounted in container to: '$(DISTSRC_BASE=/distsrc-base && distsrc_for_host "$HOST")' | ||
| ...outputting in: '${OUTDIR:?not set}' | ||
| ...bind-mounted in container to: '/outdir' | ||
| ...outdirting in: '$(outdir_for_host "$HOST")' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is "outdirting"?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
😬 Uhh... Over-eager find-and-replace strikes again...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is still not fixed, FWIW.
|
My outdirt: |
|
My outdirt. Looks like there's still a diff in the osx unsigned tarball: find output -type f -name *$(git rev-parse --short HEAD)*.* -print0 | env LC_ALL=C sort -z | xargs -r0 sha256sum
54f46bc056b2d38160d5fde32590a76148e15c37d67d34fc65390ba3f371ea97 output/aarch64-linux-gnu/bitcoin-61194db48c87-aarch64-linux-gnu-debug.tar.gz
9d23600991e1b40aeee8df638e8140183b310ea8fc9a4b080fe1c0a895c173f7 output/aarch64-linux-gnu/bitcoin-61194db48c87-aarch64-linux-gnu.tar.gz
f92f44566ebd3b315d4fbac110b5583d38258d90243bb0690046cebcbd6db85c output/arm-linux-gnueabihf/bitcoin-61194db48c87-arm-linux-gnueabihf-debug.tar.gz
a9a5656b331988051732f283612ef5c5451c7fba5563af65adb4765e00189bca output/arm-linux-gnueabihf/bitcoin-61194db48c87-arm-linux-gnueabihf.tar.gz
56d4856462f6c627910da9932d4477d2f09335a2e21a67fc02161b6e87324f43 output/dist-archive/bitcoin-61194db48c87.tar.gz
fd9573284e95c17b023ff34a9c1e63ef2774d7a9d56148dd47e619e9db3fd552 output/powerpc64-linux-gnu/bitcoin-61194db48c87-powerpc64-linux-gnu-debug.tar.gz
997cb276dee01ab9aa6c8f742a4fd4550570c9bfddfe016abde0c0a5ed96f626 output/powerpc64-linux-gnu/bitcoin-61194db48c87-powerpc64-linux-gnu.tar.gz
33037bfa1cf621fdffc7db9d79924fa20396f63dce7c6d75051a4aa8ccb83d60 output/powerpc64le-linux-gnu/bitcoin-61194db48c87-powerpc64le-linux-gnu-debug.tar.gz
c7f2d79a785162453e825345dff38cb53e4fea2f1752375b480138397556a78c output/powerpc64le-linux-gnu/bitcoin-61194db48c87-powerpc64le-linux-gnu.tar.gz
2df5d6a009ae1ba4b87bb68190fbcc0144d779ef0658582510087ab03a3138df output/riscv64-linux-gnu/bitcoin-61194db48c87-riscv64-linux-gnu-debug.tar.gz
fe4518267aff57ee69ed8333654661dbe3672d53149a38880ba09226b04bcd56 output/riscv64-linux-gnu/bitcoin-61194db48c87-riscv64-linux-gnu.tar.gz
cee31dfd3a107ac2a83d4cebea19550b3c3aa9d6996ecfd956072cbf3ac12061 output/x86_64-apple-darwin18/bitcoin-61194db48c87-osx-unsigned.dmg
5e1237b7197c2bd9f163371c5fcdb03f111db9bcfb62f178de303add7f2c1528 output/x86_64-apple-darwin18/bitcoin-61194db48c87-osx-unsigned.tar.gz
12194e2c4504a63329b082c26543fff112f3ebc184b2aadbbfb57779d1968047 output/x86_64-apple-darwin18/bitcoin-61194db48c87-osx64.tar.gz
81006656851795b0414e523520ec3d222d9033bc84c68354332632b8536e4d87 output/x86_64-linux-gnu/bitcoin-61194db48c87-x86_64-linux-gnu-debug.tar.gz
678dfae6336edefe90d048c05335f699bb7fe27b7420d47674bc3125e79f6b3b output/x86_64-linux-gnu/bitcoin-61194db48c87-x86_64-linux-gnu.tar.gz
56a1eec1494674294015bbfa7bba3fa65c95eb7c4984e366483d3e0c6795b887 output/x86_64-w64-mingw32/bitcoin-61194db48c87-win-unsigned.tar.gz
01f04e86a8371fda4971914d06a775ed00a1122713427b8e591aadef675a5e31 output/x86_64-w64-mingw32/bitcoin-61194db48c87-win64-debug.zip
1f83850e8e22ef93c2731ff99b1c0b7ae2cb70a8712d3b04c7bb4a5080d91c39 output/x86_64-w64-mingw32/bitcoin-61194db48c87-win64-setup-unsigned.exe
408d22aea8d5f22ade221ed9188ea859ef1f2395b7d74d817855e090a2328321 output/x86_64-w64-mingw32/bitcoin-61194db48c87-win64.zip |
|
Mine! I'm going to guess |
Uploaded here: https://github.com/fanquake/build_artifacts/releases/tag/guix_21375 |
|
Testing a hypothesis: @sipa @fanquake could one of you build 8170456 with HOSTS='x86_64-apple-darwin18'? I got: |
|
@dongcarl I got: |
|
Great! Looks like we have reproducibility. I'm experimenting a bit with building |
|
|
What is the rationale for removing the It seems to me that the convention in the rest of the repository is to keep the .py/.sh extension for scripts, even the main units. |
I was thinking that we might change the scripting language for these scripts in the future, or perhaps just have a python wrapper which interprets arguments. I that case, I wouldn't want to have everyone change their invocation again, therefore I omitted the |
CMake's RPATH patching apparently causes non-reproducibility in the executables which are produced, manifesting in a difference in padding in the .dynstr section (we found this while investigating non-reproducibility in the "dmg" tool). This RPATH patching can be safely skipped for executables which don't depend on internal shared libraries. Documentation sources: 1. https://gitlab.kitware.com/cmake/community/-/wikis/doc/cmake/RPATH-handling 2. https://reproducible-builds.org/docs/deterministic-build-systems/#cmake-notes Prior debugging art: 1. https://stackoverflow.com/questions/63438206/cmake-g-reproducible-build-issue-with-changing-build-path 2. https://github.com/NXPmicro/mfgtools/pull/229/files
This relatively easy change eliminates all runtime dependencies (except for the kernel) for dmg, which is the only native build tool that gets put in our output tarballs. This allows much more flexibility when constructing the codesigning environment, and is much more robust.
edf5c8a to
7476b46
Compare
|
Pushed edf5c8a8182e30862c7d62f11147ead31e029f04 -> 7476b46
$ find guix-build-$(git rev-parse --short=12 HEAD)/output/ -type f -print0 | env LC_ALL=C sort -z | xargs -r0 sha256sum
95c20e95a7fac6e0a1d2fe8ab39f882a7b92dce457bcf617beb7885608ce6d4b guix-build-7476b46f1893/output/aarch64-linux-gnu/bitcoin-7476b46f1893-aarch64-linux-gnu-debug.tar.gz
d1da31d62a5eb8b7bd5757994b3fed344774554a5db420a9e0126717abc1a0e0 guix-build-7476b46f1893/output/aarch64-linux-gnu/bitcoin-7476b46f1893-aarch64-linux-gnu.tar.gz
901353750ddb4edf242b6f0be8f2d792f5cd7396c92e08425af0425d48edc26f guix-build-7476b46f1893/output/arm-linux-gnueabihf/bitcoin-7476b46f1893-arm-linux-gnueabihf-debug.tar.gz
43b82d0289bfe393d4473552daa61e9969bf2bf673b909a43e33f041251b1873 guix-build-7476b46f1893/output/arm-linux-gnueabihf/bitcoin-7476b46f1893-arm-linux-gnueabihf.tar.gz
136b6db7095ad7d9deace423042b4c8555778502d0aeaf20f7824a865cdebe1d guix-build-7476b46f1893/output/dist-archive/bitcoin-7476b46f1893.tar.gz
63c168a78021fe9564ba64a9dacadedf3fa74ce3af94b63389b581e6d2b92a91 guix-build-7476b46f1893/output/powerpc64-linux-gnu/bitcoin-7476b46f1893-powerpc64-linux-gnu-debug.tar.gz
93bed490a7d6029fd1f96edcbe0c1a6482f90cd12ce5f520f6d57a9d879d2810 guix-build-7476b46f1893/output/powerpc64-linux-gnu/bitcoin-7476b46f1893-powerpc64-linux-gnu.tar.gz
2a085f1c9ac270502bedfda1de12ca075fe55805275aae17d92872821d5ef6dd guix-build-7476b46f1893/output/powerpc64le-linux-gnu/bitcoin-7476b46f1893-powerpc64le-linux-gnu-debug.tar.gz
73c30078d872733cfd908cdc5b3430e01b6001ff1f8454f08d1a904fd196e502 guix-build-7476b46f1893/output/powerpc64le-linux-gnu/bitcoin-7476b46f1893-powerpc64le-linux-gnu.tar.gz
9728024ae3cff4d067410c61a1024a3dc7526a4842a51a06ff2d3a1a67294833 guix-build-7476b46f1893/output/riscv64-linux-gnu/bitcoin-7476b46f1893-riscv64-linux-gnu-debug.tar.gz
f67986dc977ee4b791a505bc14e032f625713a69d9090d9d3f5d45154785dd5d guix-build-7476b46f1893/output/riscv64-linux-gnu/bitcoin-7476b46f1893-riscv64-linux-gnu.tar.gz
32466d33c282fbb5da9d49fe46a71403b280fbfe9fd0fe33169fbec118c1b582 guix-build-7476b46f1893/output/x86_64-apple-darwin18/bitcoin-7476b46f1893-osx-unsigned.dmg
8e3cd482b143ce87075b01881f53c233e7867a0ff97ee810529d56fa6080ee72 guix-build-7476b46f1893/output/x86_64-apple-darwin18/bitcoin-7476b46f1893-osx-unsigned.tar.gz
ef7aaebeb0cc5d14aacce1fb2bf5e2ec9ab9652142ebcc5e0378c967583c778d guix-build-7476b46f1893/output/x86_64-apple-darwin18/bitcoin-7476b46f1893-osx64.tar.gz
9559ad27c0e76373e5e9b6a068ce0e9a51031fb121c12cdab0bb0a183624efcd guix-build-7476b46f1893/output/x86_64-linux-gnu/bitcoin-7476b46f1893-x86_64-linux-gnu-debug.tar.gz
23fba5cfd134fd35c78e05bab8207a0909acce15ffe5fb8fed7703fabe389e96 guix-build-7476b46f1893/output/x86_64-linux-gnu/bitcoin-7476b46f1893-x86_64-linux-gnu.tar.gz
73bd95215fcdb6428ad16e785502b6438f4ec02f9c3e237f7bfab213e2b79077 guix-build-7476b46f1893/output/x86_64-w64-mingw32/bitcoin-7476b46f1893-win-unsigned.tar.gz
c2b919c0a6bdf6b31c86bc52a22a69c78df2f1adfda5e0629e24c2c5accd1715 guix-build-7476b46f1893/output/x86_64-w64-mingw32/bitcoin-7476b46f1893-win64-debug.zip
8add7726bc390f177ea67ba7fb5b6697e9f51cf1c7c82e87ef89163fcfd62834 guix-build-7476b46f1893/output/x86_64-w64-mingw32/bitcoin-7476b46f1893-win64-setup-unsigned.exe
453af78c249b5fb8341bb48850a4a886d26595f35cda7f72fea97b0f14760dc2 guix-build-7476b46f1893/output/x86_64-w64-mingw32/bitcoin-7476b46f1893-win64.zip
|
|
ACK 7476b46 |
|
5c09bca Fix a typo in guix-build output (Pieter Wuille) Pull request description: This was overlooked in bitcoin#21375. ACKs for top commit: fanquake: ACK 5c09bca Tree-SHA512: 81d8ad4061abb17d5f16ae72ab0c88df76d5a2f100cb9f471ca700d2e87583103036367ea1958a1066f9613f63908d1b2b35734a7eb77ec9850d4c8b079732e1
Also see #21643. |
… by the `shellcheck` tool a3f6167 test: Make more shell scripts verifiable by the `shellcheck` tool (Hennadii Stepanov) Pull request description: Some shell scripts from `contrib/guix` and `contrib/shell` are not verifiable by the `shellcheck` tool for the following reasons: - they have no extension (see bitcoin/bitcoin@4eccf06 from bitcoin/bitcoin#21375) - they have the `.bash` extension while `.sh` is expected This PR adds these scripts to the input for the `shellcheck` tool, and it fixes discovered `shellcheck` warnings. ACKs for top commit: dongcarl: Code Review ACK a3f6167, this is a good robustness improvement for our shell scripts. jamesob: crACK bitcoin/bitcoin@a3f6167 Tree-SHA512: 6703f5369d9c04c1a174491f381afa5ec2cc4d37321c1b93615abcdde4dfd3caae82868b699c25b72132d8c8c6f2e9cf24d38eb180ed4d0f0584d8c282e58935
… by the `shellcheck` tool 56a3907 test: Make more shell scripts verifiable by the `shellcheck` tool (Hennadii Stepanov) Pull request description: Some shell scripts from `contrib/guix` and `contrib/shell` are not verifiable by the `shellcheck` tool for the following reasons: - they have no extension (see bitcoin/bitcoin@d8d1eb0 from bitcoin/bitcoin#21375) - they have the `.bash` extension while `.sh` is expected This PR adds these scripts to the input for the `shellcheck` tool, and it fixes discovered `shellcheck` warnings. ACKs for top commit: dongcarl: Code Review ACK 56a3907, this is a good robustness improvement for our shell scripts. jamesob: crACK bitcoin/bitcoin@56a3907 Tree-SHA512: 6703f5369d9c04c1a174491f381afa5ec2cc4d37321c1b93615abcdde4dfd3caae82868b699c25b72132d8c8c6f2e9cf24d38eb180ed4d0f0584d8c282e58935
8e84c18 Ignore guix builds (Hennadii Stepanov) Pull request description: This PR is a bitcoin#21375 follow up. ACKs for top commit: sipa: ACK 8e84c18 Tree-SHA512: 71d1c5acac3382f232074a025445d6d6660cb99e53233fade9ab29ad95b56da44e4e42e44411cfef175a0a8f3800633779ad1d24c2cfdcbc1a36239d38d5b8c3
This PR addresses a few hiccups encountered by the brave souls who've been experimenting with the Guix scripts:
--cores=and--max-jobs=guix's--cores=actually corresponds to make's--jobs=, so let's just control--cores=with our overridable env vargit-describewill screamfatal: no tag exactly matches '<hash>'when looking for a tag, but we don't care, so silence thatwindeploy/unsignedshould be insidedistsrc-*and created idempotently (sorry I know this one annoyed people)README.mdguix-daemonin case user forgot to start aguix-daemon--fallbackflag may be needed to tell Guix to not fail if substitutes fail but fallback to building locallycodesign_allocateandpagestuffare now unnecessary for codesigning as we're now usingsignappleA few robustness changes are also included:
--link-profileflag, as some Guix packages may expect the profile to be available under$HOME/.guix-profileC*_INCLUDE_PATH) ourselves, after patching a Qt::moc bugclang-toolchainpackage for darwin builds instead ofclang, lining up with all our other toolchain packages.Finally, we restructure the guix building hierarchy such that it looks something like:
Separating guix builds by their version identifier (basically namespacing them) allows us to change the layout in the future without worry about potential naming conflicts.