-
Notifications
You must be signed in to change notification settings - Fork 35.7k
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
guix: switch to some minimal
versions of packages in our manifest
#27172
Conversation
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers. ReviewsSee the guideline for information on the review process.
If your review is incorrectly listed, please react with 👎 to this comment and the bot will ignore it on the next update. 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. |
Concept ACK. |
Concept ACK |
4ba09e0
to
2c9eb4a
Compare
Updated to also switch to |
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.
ACK 2c9eb4a,
Guix builds:
220003bd9c9cb840444494232b01b3d9e17ddda007abfd1b3a1001662b5f24c6 guix-build-2c9eb4afe1f5/output/aarch64-linux-gnu/SHA256SUMS.part
cc7f6e969a37d66164aad138635ea4ca1bb30eff2ed59a16c6b4af716824e4f1 guix-build-2c9eb4afe1f5/output/aarch64-linux-gnu/bitcoin-2c9eb4afe1f5-aarch64-linux-gnu-debug.tar.gz
6f1afad24db86220a29f8e3ee9170201b5ece045e00ce94d1000f0541a111a4d guix-build-2c9eb4afe1f5/output/aarch64-linux-gnu/bitcoin-2c9eb4afe1f5-aarch64-linux-gnu.tar.gz
776ae93e37ddddb9c31081978e99ce291866df65177d651099ce9880ee96d958 guix-build-2c9eb4afe1f5/output/arm-linux-gnueabihf/SHA256SUMS.part
4c5994b5f4f7ac78fa2747ef08fcc83db22724e5aecfe21fb7601a78e034a6bb guix-build-2c9eb4afe1f5/output/arm-linux-gnueabihf/bitcoin-2c9eb4afe1f5-arm-linux-gnueabihf-debug.tar.gz
fe0bc8f327f2e436a43b654b578882598eca9267a9c5a817602ba285ee1a367d guix-build-2c9eb4afe1f5/output/arm-linux-gnueabihf/bitcoin-2c9eb4afe1f5-arm-linux-gnueabihf.tar.gz
4bdb45f0c265ee2f5136eb569397a3c5559ae11da63b20cc786c6651fbf31321 guix-build-2c9eb4afe1f5/output/arm64-apple-darwin/SHA256SUMS.part
11f88d49ddd1d31ba495f94927acda630fc74094f6caab981f4a006a8494cfb4 guix-build-2c9eb4afe1f5/output/arm64-apple-darwin/bitcoin-2c9eb4afe1f5-arm64-apple-darwin-unsigned.dmg
d126ee99122c9aa579b7ad76de03050dca1e563951cc793f5ad1a7a45a701055 guix-build-2c9eb4afe1f5/output/arm64-apple-darwin/bitcoin-2c9eb4afe1f5-arm64-apple-darwin-unsigned.tar.gz
f063782ebe9178c4ae77e7a899c30869a8a9d53d633c8cba2b3e98cc067c2a65 guix-build-2c9eb4afe1f5/output/arm64-apple-darwin/bitcoin-2c9eb4afe1f5-arm64-apple-darwin.tar.gz
e8a4aeb471534a19c56c669549a3eb67c43ee62f1b4f3dff8260482d12bbc343 guix-build-2c9eb4afe1f5/output/dist-archive/bitcoin-2c9eb4afe1f5.tar.gz
460d56865ae6c0e62a4cace1ce845a18ebd762abff1dec78168216a45c9d4620 guix-build-2c9eb4afe1f5/output/powerpc64-linux-gnu/SHA256SUMS.part
a9f496bc00bc64691593ceae533a0218d9fc531f7fcc494565e02cbe4e932f41 guix-build-2c9eb4afe1f5/output/powerpc64-linux-gnu/bitcoin-2c9eb4afe1f5-powerpc64-linux-gnu-debug.tar.gz
fafef9e6db111df1a726e309ece5650be9fd76d996ead21367419eeefd3cd21e guix-build-2c9eb4afe1f5/output/powerpc64-linux-gnu/bitcoin-2c9eb4afe1f5-powerpc64-linux-gnu.tar.gz
95975950aa5f615d13f10fed74d24641ab9a0db1554b16c197ade5a5706d4a44 guix-build-2c9eb4afe1f5/output/powerpc64le-linux-gnu/SHA256SUMS.part
9f31f4a435eb5a60ee05c5a440c1ec8ed7e76c7f4f62ca2e6e5a8d5e3927c835 guix-build-2c9eb4afe1f5/output/powerpc64le-linux-gnu/bitcoin-2c9eb4afe1f5-powerpc64le-linux-gnu-debug.tar.gz
79c61d215454be1251d2a90014301830096687c00b822033bd9aa5e6e47edca0 guix-build-2c9eb4afe1f5/output/powerpc64le-linux-gnu/bitcoin-2c9eb4afe1f5-powerpc64le-linux-gnu.tar.gz
a55c44add1a7efa4f548f8563e39b72875d96f1ae62bae40b7c8459d98ea6658 guix-build-2c9eb4afe1f5/output/riscv64-linux-gnu/SHA256SUMS.part
75a3b9b835f87086259725461b4f52993a784c4cc38ce1fccb0c78b6b3ee4a79 guix-build-2c9eb4afe1f5/output/riscv64-linux-gnu/bitcoin-2c9eb4afe1f5-riscv64-linux-gnu-debug.tar.gz
9bb673fbab91e066d0f1c732e2923d72f77243d660246e9a2ef7cfe3fed313ce guix-build-2c9eb4afe1f5/output/riscv64-linux-gnu/bitcoin-2c9eb4afe1f5-riscv64-linux-gnu.tar.gz
2832113ac9efca29cc63e8242b93aca42ab84f68bde313932cc538a6082e9055 guix-build-2c9eb4afe1f5/output/x86_64-apple-darwin/SHA256SUMS.part
7a17513570eef6734ce32728d7a6c64415ae210425216f4c20be046fe30c5015 guix-build-2c9eb4afe1f5/output/x86_64-apple-darwin/bitcoin-2c9eb4afe1f5-x86_64-apple-darwin-unsigned.dmg
5b5931785fdcbc883b1f4764c30b88c1afa615104bc9f5d9d0dc22dd02cec6fe guix-build-2c9eb4afe1f5/output/x86_64-apple-darwin/bitcoin-2c9eb4afe1f5-x86_64-apple-darwin-unsigned.tar.gz
54ea0273e6883957f7a460697c7f29cb089ee840bebfb1a4b9cc3c74f03b220a guix-build-2c9eb4afe1f5/output/x86_64-apple-darwin/bitcoin-2c9eb4afe1f5-x86_64-apple-darwin.tar.gz
20b0f1df0240f0cd5c33b20a03133c13289406a38a41f25538905ae9e2475cda guix-build-2c9eb4afe1f5/output/x86_64-linux-gnu/SHA256SUMS.part
12013ddd041fdf9123c372ec3bc38b923474836672a082754f77909e008331bb guix-build-2c9eb4afe1f5/output/x86_64-linux-gnu/bitcoin-2c9eb4afe1f5-x86_64-linux-gnu-debug.tar.gz
db6148595868be876a13fcad84f2f6f96b5f27f9bda96f2d83e70bfa38a885c3 guix-build-2c9eb4afe1f5/output/x86_64-linux-gnu/bitcoin-2c9eb4afe1f5-x86_64-linux-gnu.tar.gz
b422d28275137c9b6aa9d5b8a6020b4461de1b150e592af8d4d41f959f8fa02d guix-build-2c9eb4afe1f5/output/x86_64-w64-mingw32/SHA256SUMS.part
f3d9a033dc3851bc918027e12955d366efea90d8bc2a4ba4d8983f4a74dcb0f1 guix-build-2c9eb4afe1f5/output/x86_64-w64-mingw32/bitcoin-2c9eb4afe1f5-win64-debug.zip
a0222e9a176994a8d91815922e46f2faf51bee3a34c7cf32996eeb07b94c3962 guix-build-2c9eb4afe1f5/output/x86_64-w64-mingw32/bitcoin-2c9eb4afe1f5-win64-setup-unsigned.exe
49c0788fb5ac27a7ec7977d549da43bb3cab66423cffcf388a50b6d704f9ce2f guix-build-2c9eb4afe1f5/output/x86_64-w64-mingw32/bitcoin-2c9eb4afe1f5-win64-unsigned.tar.gz
fda9a5ead9ee9c3939024d4826bcc84aba3ed4e92dd0ee336e33b05725486943 guix-build-2c9eb4afe1f5/output/x86_64-w64-mingw32/bitcoin-2c9eb4afe1f5-win64.zip
Is there an intuition on how much space this will save? Also, it might be good to check the binaries are identical (mod the commit id) before and after? |
ACK 2c9eb4a Guix builds:
|
Maybe 10's of megabytes (will get you a number). Saving any space is a nice side-effect, but isn't the primary goal here. The goal is to remove things that are not required in the release build environment, from the release build envionronment. Using available I would also assume this makes any bootstrapping paths less complicated, as any tools/dependencies that would otherwise be required to build/compile optional features we don't need, no-longer have to be built as part of any toolchain. Also cc @darosior. |
Some insight into any space saving: # bash
/gnu/store/5h2w4qi9hk1qzzgi1w83220ydslinr4s-glibc-2.33 38.3 36.6 42.9%
/gnu/store/094bbaq6glba86h1d4cj16xhdi6fk2jl-gcc-10.3.0-lib 71.7 33.4 39.2%
/gnu/store/d99ykvj3axzzidygsmdmzxah4lvxd6hw-bash-5.1.8 85.3 6.2 7.3%
/gnu/store/9rrnm5hdjw7cy96a2a9rfgh6y08wsbmf-ncurses-6.2.20210619 77.6 5.9 7.0%
/gnu/store/720rj90bch716isd8z7lcwrnvz28ap4y-bash-static-5.1.8 1.7 1.7 2.0%
/gnu/store/wcwls45278gzpjvwlvrrs1y7h30g44xh-readline-8.1.1 79.0 1.4 1.7%
total: 85.3 MiB
# bash-minimal
/gnu/store/5h2w4qi9hk1qzzgi1w83220ydslinr4s-glibc-2.33 38.3 36.6 50.4%
/gnu/store/094bbaq6glba86h1d4cj16xhdi6fk2jl-gcc-10.3.0-lib 71.7 33.4 45.9%
/gnu/store/720rj90bch716isd8z7lcwrnvz28ap4y-bash-static-5.1.8 1.7 1.7 2.3%
/gnu/store/chfwin3a4qp1znnpsjbmydr2jbzk0d6y-bash-minimal-5.1.8 72.7 1.0 1.4%
total: 72.7 MiB
# coreutils
/gnu/store/5h2w4qi9hk1qzzgi1w83220ydslinr4s-glibc-2.33 38.3 36.6 39.9%
/gnu/store/094bbaq6glba86h1d4cj16xhdi6fk2jl-gcc-10.3.0-lib 71.7 33.4 36.4%
/gnu/store/8fpk2cja3f07xls48jfnpgrzrljpqivr-coreutils-8.32 91.6 16.4 17.9%
/gnu/store/fwbiihd2sbhai63y1pvvdh0f2bakfzrf-gmp-6.2.1 74.4 2.7 2.9%
/gnu/store/720rj90bch716isd8z7lcwrnvz28ap4y-bash-static-5.1.8 1.7 1.7 1.8%
/gnu/store/a38k2v29l6l0iz6pmlk4dmzwdbvl10lq-acl-2.3.1 72.3 0.3 0.4%
/gnu/store/a7ggx0af69gv4k5mr1k617p4vy9kgx2v-libcap-2.62 72.0 0.3 0.3%
/gnu/store/jkjs0inmzhj4vsvclbf08nmh0shm7lrf-attr-2.5.1 71.9 0.2 0.3%
total: 91.6 MiB
# coreutils-minimal
store item total self
/gnu/store/5h2w4qi9hk1qzzgi1w83220ydslinr4s-glibc-2.33 38.3 36.6 41.6%
/gnu/store/094bbaq6glba86h1d4cj16xhdi6fk2jl-gcc-10.3.0-lib 71.7 33.4 37.9%
/gnu/store/vqdsrvs9jbn0ix2a58s99jwkh74124y5-coreutils-minimal-8.32 88.0 16.4 18.6%
/gnu/store/720rj90bch716isd8z7lcwrnvz28ap4y-bash-static-5.1.8 1.7 1.7 1.9%
total: 88.0 MiB |
GUIX hashes:
|
objdump diff: $ git diff -- ./d_*
diff --git a/./d_5_objdump b/./d_e_objdump
index eb1d0fe..27afaec 100644
--- a/./d_5_objdump
+++ b/./d_e_objdump
@@ -1,5 +1,5 @@
-bitcoin-519ec2650e7a/bin/bitcoind: file format elf64-x86-64
+bitcoin-e81d1cdf216b/bin/bitcoind: file format elf64-x86-64
Disassembly of section .init:
@@ -1471666,7 +1471666,7 @@ Disassembly of section .text:
6e63a7: lea 0x7a4af2(%rip),%rsi # e8aea0 <stderr@GLIBC_2.2.5+0xb620>
6e63ae: lea 0x3a0ebb(%rip),%rdi # a87270 <malloc@plt+0xa32cb0>
6e63b5: mov %rdx,0x7a4af4(%rip) # e8aeb0 <stderr@GLIBC_2.2.5+0xb630>
- 6e63bc: mov $0x6135,%edx
+ 6e63bc: mov $0x6436,%edx
6e63c1: movups %xmm0,(%rax)
6e63c4: movdqa 0x46d3d4(%rip),%xmm0 # b537a0 <malloc@plt+0xaff1e0>
6e63cc: mov %dx,0x30(%rax) |
tACK 2c9eb4a I get the same Guix hashes. Lightly tested on macOS. |
ACK 2c9eb4a
|
…ges in our manifest 2c9eb4a guix: use cmake-minimal over cmake (fanquake) 1475515 guix: use coreutils-minimal over coreutils (fanquake) 4445621 guix: use bash-minimal over bash (fanquake) Pull request description: Minimal versions of the same packages, that should still be sufficient for our use: > (define-public bash-minimal ;; A stripped-down Bash for non-interactive use. > (define-public coreutils-minimal ;; Coreutils without its optional dependencies. > ;;; This minimal variant of CMake does not include the documentation. It is ;;; used by the cmake-build-system. (define-public cmake-minimal ACKs for top commit: TheCharlatan: ACK 2c9eb4a Sjors: tACK 2c9eb4a achow101: ACK 2c9eb4a hebasto: ACK 2c9eb4a, Tree-SHA512: f91ca9e088b8346b20c2affc80870c31640de3aedcfcc0fb98a5e82c77ef64537870b88552f26759d31d8d0956b1fd685e6c25d5acbc92f5feaececd1a7dd37e
…on from upstream 24f26e0 guix: use cmake-minimal for python-lief (fanquake) 43d8173 guix: import LIEF from upstream (0.12.3) (fanquake) Pull request description: Update to version 0.12.3. Retain our PPC64 patch. Mention when we can drop our local definition. Also switch to using cmake-minimal (see #27172), which fixes atleast one build failure I've seen on aarch64, where cmake dependencies fail to build. Fix that by using the cmake without all the dependencies we don't actually need: ```bash The following derivations will be built: /gnu/store/7qqvqq2g7l5ylrjv0gn6zha565a12kar-python-lief-0.12.1.drv /gnu/store/f9zwh1ldy63ga0i5w6cbbqlj6sfq226j-cmake-3.21.4.drv /gnu/store/3wg6ya847id503m5izhzhn1qqs464lfk-python-sphinx-4.2.0.drv building /gnu/store/3wg6ya847id503m5izhzhn1qqs464lfk-python-sphinx-4.2.0.drv... / 'check' phasenote: keeping build directory `/tmp/guix-build-python-sphinx-4.2.0.drv-5' builder for `/gnu/store/3wg6ya847id503m5izhzhn1qqs464lfk-python-sphinx-4.2.0.drv' failed with exit code 1 build of /gnu/store/3wg6ya847id503m5izhzhn1qqs464lfk-python-sphinx-4.2.0.drv failed View build log at '/var/log/guix/drvs/3w/g6ya847id503m5izhzhn1qqs464lfk-python-sphinx-4.2.0.drv.gz'. cannot build derivation `/gnu/store/f9zwh1ldy63ga0i5w6cbbqlj6sfq226j-cmake-3.21.4.drv': 1 dependencies couldn't be built cannot build derivation `/gnu/store/7qqvqq2g7l5ylrjv0gn6zha565a12kar-python-lief-0.12.1.drv': 1 dependencies couldn't be built guix environment: error: build of `/gnu/store/7qqvqq2g7l5ylrjv0gn6zha565a12kar-python-lief-0.12.1.drv' failed ``` ACKs for top commit: TheCharlatan: ACK 24f26e0 Tree-SHA512: d4260cdf5121686fd2fa36c1fc85687848eeb26cabaad2c6566feb71a18ea7fb013cfc6353c99f6f74bc89108a9505adce513c1cfa22a0a67450e6a1c451d209
…efinition from upstream 24f26e0 guix: use cmake-minimal for python-lief (fanquake) 43d8173 guix: import LIEF from upstream (0.12.3) (fanquake) Pull request description: Update to version 0.12.3. Retain our PPC64 patch. Mention when we can drop our local definition. Also switch to using cmake-minimal (see bitcoin#27172), which fixes atleast one build failure I've seen on aarch64, where cmake dependencies fail to build. Fix that by using the cmake without all the dependencies we don't actually need: ```bash The following derivations will be built: /gnu/store/7qqvqq2g7l5ylrjv0gn6zha565a12kar-python-lief-0.12.1.drv /gnu/store/f9zwh1ldy63ga0i5w6cbbqlj6sfq226j-cmake-3.21.4.drv /gnu/store/3wg6ya847id503m5izhzhn1qqs464lfk-python-sphinx-4.2.0.drv building /gnu/store/3wg6ya847id503m5izhzhn1qqs464lfk-python-sphinx-4.2.0.drv... / 'check' phasenote: keeping build directory `/tmp/guix-build-python-sphinx-4.2.0.drv-5' builder for `/gnu/store/3wg6ya847id503m5izhzhn1qqs464lfk-python-sphinx-4.2.0.drv' failed with exit code 1 build of /gnu/store/3wg6ya847id503m5izhzhn1qqs464lfk-python-sphinx-4.2.0.drv failed View build log at '/var/log/guix/drvs/3w/g6ya847id503m5izhzhn1qqs464lfk-python-sphinx-4.2.0.drv.gz'. cannot build derivation `/gnu/store/f9zwh1ldy63ga0i5w6cbbqlj6sfq226j-cmake-3.21.4.drv': 1 dependencies couldn't be built cannot build derivation `/gnu/store/7qqvqq2g7l5ylrjv0gn6zha565a12kar-python-lief-0.12.1.drv': 1 dependencies couldn't be built guix environment: error: build of `/gnu/store/7qqvqq2g7l5ylrjv0gn6zha565a12kar-python-lief-0.12.1.drv' failed ``` ACKs for top commit: TheCharlatan: ACK 24f26e0 Tree-SHA512: d4260cdf5121686fd2fa36c1fc85687848eeb26cabaad2c6566feb71a18ea7fb013cfc6353c99f6f74bc89108a9505adce513c1cfa22a0a67450e6a1c451d209
…ges in our manifest 2c9eb4a guix: use cmake-minimal over cmake (fanquake) 1475515 guix: use coreutils-minimal over coreutils (fanquake) 4445621 guix: use bash-minimal over bash (fanquake) Pull request description: Minimal versions of the same packages, that should still be sufficient for our use: > (define-public bash-minimal ;; A stripped-down Bash for non-interactive use. > (define-public coreutils-minimal ;; Coreutils without its optional dependencies. > ;;; This minimal variant of CMake does not include the documentation. It is ;;; used by the cmake-build-system. (define-public cmake-minimal ACKs for top commit: TheCharlatan: ACK 2c9eb4a Sjors: tACK 2c9eb4a achow101: ACK 2c9eb4a hebasto: ACK 2c9eb4a, Tree-SHA512: f91ca9e088b8346b20c2affc80870c31640de3aedcfcc0fb98a5e82c77ef64537870b88552f26759d31d8d0956b1fd685e6c25d5acbc92f5feaececd1a7dd37e
…ges in our manifest 2c9eb4a guix: use cmake-minimal over cmake (fanquake) 1475515 guix: use coreutils-minimal over coreutils (fanquake) 4445621 guix: use bash-minimal over bash (fanquake) Pull request description: Minimal versions of the same packages, that should still be sufficient for our use: > (define-public bash-minimal ;; A stripped-down Bash for non-interactive use. > (define-public coreutils-minimal ;; Coreutils without its optional dependencies. > ;;; This minimal variant of CMake does not include the documentation. It is ;;; used by the cmake-build-system. (define-public cmake-minimal ACKs for top commit: TheCharlatan: ACK 2c9eb4a Sjors: tACK 2c9eb4a achow101: ACK 2c9eb4a hebasto: ACK 2c9eb4a, Tree-SHA512: f91ca9e088b8346b20c2affc80870c31640de3aedcfcc0fb98a5e82c77ef64537870b88552f26759d31d8d0956b1fd685e6c25d5acbc92f5feaececd1a7dd37e
…ges in our manifest 2c9eb4a guix: use cmake-minimal over cmake (fanquake) 1475515 guix: use coreutils-minimal over coreutils (fanquake) 4445621 guix: use bash-minimal over bash (fanquake) Pull request description: Minimal versions of the same packages, that should still be sufficient for our use: > (define-public bash-minimal ;; A stripped-down Bash for non-interactive use. > (define-public coreutils-minimal ;; Coreutils without its optional dependencies. > ;;; This minimal variant of CMake does not include the documentation. It is ;;; used by the cmake-build-system. (define-public cmake-minimal ACKs for top commit: TheCharlatan: ACK 2c9eb4a Sjors: tACK 2c9eb4a achow101: ACK 2c9eb4a hebasto: ACK 2c9eb4a, Tree-SHA512: f91ca9e088b8346b20c2affc80870c31640de3aedcfcc0fb98a5e82c77ef64537870b88552f26759d31d8d0956b1fd685e6c25d5acbc92f5feaececd1a7dd37e
…ges in our manifest 2c9eb4a guix: use cmake-minimal over cmake (fanquake) 1475515 guix: use coreutils-minimal over coreutils (fanquake) 4445621 guix: use bash-minimal over bash (fanquake) Pull request description: Minimal versions of the same packages, that should still be sufficient for our use: > (define-public bash-minimal ;; A stripped-down Bash for non-interactive use. > (define-public coreutils-minimal ;; Coreutils without its optional dependencies. > ;;; This minimal variant of CMake does not include the documentation. It is ;;; used by the cmake-build-system. (define-public cmake-minimal ACKs for top commit: TheCharlatan: ACK 2c9eb4a Sjors: tACK 2c9eb4a achow101: ACK 2c9eb4a hebasto: ACK 2c9eb4a, Tree-SHA512: f91ca9e088b8346b20c2affc80870c31640de3aedcfcc0fb98a5e82c77ef64537870b88552f26759d31d8d0956b1fd685e6c25d5acbc92f5feaececd1a7dd37e
Minimal versions of the same packages, that should still be sufficient for our use: