guix: Make it arch agnostic #21194

issue maflcko openend this issue on February 16, 2021
  1. maflcko commented at 11:25 am on February 16, 2021: member

    It would be nice if guix was arch agnostic, so different archs can be used to get the same binary.

    I tried running guix on amd64 and arm64, for the target bitcoin-62cc2180afc1-powerpc64le-linux-gnu.tar.gz and only got a few bits difference:

    0--- ./bitcoin-arm64/bin/bitcoin-cli
    1+++ ./bitcoin-amd64/bin/bitcoin-cli
    2├── readelf --wide --decompress --hex-dump=.gnu_debuglink {}
    3│ @@ -1,5 +1,5 @@
    45│  Hex dump of section '.gnu_debuglink':
    6│    0x00000000 62697463 6f696e2d 636c692e 64626700 bitcoin-cli.dbg.
    7│ -  0x00000010 13a837f9                            ..7.
    8│ +  0x00000010 08b973c6                            ..s.
    
  2. maflcko added the label Feature on Feb 16, 2021
  3. fanquake added the label Build system on Feb 16, 2021
  4. dongcarl commented at 5:10 pm on February 16, 2021: contributor
    I’m surprised the difference is this minute… Not sure I’ll be able to figure it out completely within our proposed timeline, but if you upload the two tarballs I’d be happy to investigate!
  5. maflcko commented at 8:45 am on June 4, 2021: member

    As of current master (on aarch64):

    • HOSTS="aarch64-linux-gnu" ./contrib/guix/guix-build fails:
     0The following derivations will be built:
     1   /gnu/store/0sw9sfzqbscns481w1wqb60ly0h62nd1-profile.drv
     2   /gnu/store/hccmvc78zqvaxfy4lgzhczq00y34zj69-gcc-cross-aarch64-linux-gnu-8.4.0.drv
     3   /gnu/store/kci19xba5jk35imc2pf5wky653f92fvl-linux-libre-headers-cross-aarch64-linux-gnu-5.4.94.drv
     4   /gnu/store/nc7814bwf767941rs647fnjkpl7nwiyi-gcc-cross-sans-libc-aarch64-linux-gnu-7.5.0.drv
     5   /gnu/store/p0basg4g7frkq5xpipyjwzirkzy9k4ps-glibc-cross-aarch64-linux-gnu-2.31.drv
     6   /gnu/store/sdyfqwh31ml0xpqfpb6swml55arh00sc-aarch64-linux-gnu-toolchain-8.4.0.drv
     7
     8building /gnu/store/nc7814bwf767941rs647fnjkpl7nwiyi-gcc-cross-sans-libc-aarch64-linux-gnu-7.5.0.drv...
     9| 'build' phasenote: keeping build directory `/tmp/guix-build-gcc-cross-sans-libc-aarch64-linux-gnu-7.5.0.drv-3'
    10builder for `/gnu/store/nc7814bwf767941rs647fnjkpl7nwiyi-gcc-cross-sans-libc-aarch64-linux-gnu-7.5.0.drv' failed with exit code 1
    11build of /gnu/store/nc7814bwf767941rs647fnjkpl7nwiyi-gcc-cross-sans-libc-aarch64-linux-gnu-7.5.0.drv failed
    12View build log at '/var/log/guix/drvs/nc/7814bwf767941rs647fnjkpl7nwiyi-gcc-cross-sans-libc-aarch64-linux-gnu-7.5.0.drv.bz2'.
    13cannot build derivation `/gnu/store/p0basg4g7frkq5xpipyjwzirkzy9k4ps-glibc-cross-aarch64-linux-gnu-2.31.drv': 1 dependencies couldn't be built
    14cannot build derivation `/gnu/store/kci19xba5jk35imc2pf5wky653f92fvl-linux-libre-headers-cross-aarch64-linux-gnu-5.4.94.drv': 1 dependencies couldn't be built
    15cannot build derivation `/gnu/store/0sw9sfzqbscns481w1wqb60ly0h62nd1-profile.drv': 1 dependencies couldn't be built
    16guix environment: error: build of `/gnu/store/0sw9sfzqbscns481w1wqb60ly0h62nd1-profile.drv' failed
    
    • HOSTS="x86_64-linux-gnu" ./contrib/guix/guix-build fails:
     0Creating qmake...
     1make[1]: Entering directory '/bitcoin/depends/work/build/x86_64-linux-gnu/qt/5.12.11-e7e75d6fe73/qtbase/qmake'
     2make[1]: Leaving directory '/bitcoin/depends/work/build/x86_64-linux-gnu/qt/5.12.11-e7e75d6fe73/qtbase/qmake'
     3Info: creating cache file /bitcoin/depends/work/build/x86_64-linux-gnu/qt/5.12.11-e7e75d6fe73/qtbase/.qmake.cache
     4Command line: -bindir /bitcoin/depends/x86_64-linux-gnu/native/bin -c++std c++1z -confirm-license -hostprefix /bitcoin/depends/x86_64-linux-gnu/native -no-compile-examples -no-cups -no-egl -no-eglfs -no-freetype -no-gif -no-glib -no-icu -no-ico -no-iconv -no-kms -no-linuxfb -no-libjpeg -no-libproxy -no-libudev -no-mtdev -no-openssl -no-openvg -no-reduce-relocations -no-sctp -no-securetransport -no-sql-db2 -no-sql-ibase -no-sql-oci -no-sql-tds -no-sql-mysql -no-sql-odbc -no-sql-psql -no-sql-sqlite -no-sql-sqlite2 -no-system-proxies -no-use-gold-linker -nomake examples -nomake tests -opensource -pkg-config -prefix /bitcoin/depends/x86_64-linux-gnu -qt-libpng -qt-pcre -qt-harfbuzz -qt-zlib -static -v -no-feature-bearermanagement -no-feature-colordialog -no-feature-commandlineparser -no-feature-concurrent -no-feature-dial -no-feature-fontcombobox -no-feature-ftp -no-feature-http -no-feature-image_heuristic_mask -no-feature-keysequenceedit -no-feature-lcdnumber -no-feature-networkdiskcache -no-feature-networkproxy -no-feature-pdf -no-feature-printdialog -no-feature-printer -no-feature-printpreviewdialog -no-feature-printpreviewwidget -no-feature-sessionmanager -no-feature-socks5 -no-feature-sql -no-feature-sqlmodel -no-feature-statemachine -no-feature-syntaxhighlighter -no-feature-textbrowser -no-feature-textodfwriter -no-feature-topleveldomain -no-feature-udpsocket -no-feature-undocommand -no-feature-undogroup -no-feature-undostack -no-feature-undoview -no-feature-vnc -no-feature-wizard -no-feature-xml -release -silent -qt-xcb -no-xcb-xlib -no-feature-xlib -system-freetype -fontconfig -no-opengl -no-feature-vulkan -dbus-runtime -xplatform linux-g++-64
     5Info: creating stash file /bitcoin/depends/work/build/x86_64-linux-gnu/qt/5.12.11-e7e75d6fe73/qtbase/.qmake.stash
     6Project ERROR: Cannot run target compiler 'g++'. Output:
     7===================
     8Using built-in specs.
     9COLLECT_GCC=g++
    10g++: error: unrecognized command line option '-m64'
    11Target: aarch64-unknown-linux-gnu
    12Configured with: 
    13Thread model: posix
    14gcc version 7.5.0 (GCC) 
    15===================
    16Maybe you forgot to setup the environment?
    17make: *** [funcs.mk:282: /bitcoin/depends/work/build/x86_64-linux-gnu/qt/5.12.11-e7e75d6fe73/./.stamp_configured] Error 3
    18make: Leaving directory '/bitcoin/depends'
    
    • The others all pass
  6. fanquake commented at 3:11 am on July 14, 2021: member
    I now have some aarch64 hardware, so can help test / debug here. Will run some Guix builds shortly.
  7. fanquake added this to the milestone 24.0 on Mar 6, 2022
  8. hebasto commented at 7:16 pm on March 6, 2022: member

    FWIW, Guix builds for 23.0rc1 on M1:

     051c9545bd5f914b01caccd451ea6ac0f2c62a92ade731484639919cc6e78454d  guix-build-23.0rc1/output/arm-linux-gnueabihf/SHA256SUMS.part
     18befc9e9202d8fd0c6b55857d537a7b2b98c05478a5e716303e27ccb1a3e1e53  guix-build-23.0rc1/output/arm-linux-gnueabihf/bitcoin-23.0rc1-arm-linux-gnueabihf-debug.tar.gz
     2ce0eb3a0c8b4b5683420f3f18f71d5d0e44a1697f435090cdd4afcb7ce4e3dd6  guix-build-23.0rc1/output/arm-linux-gnueabihf/bitcoin-23.0rc1-arm-linux-gnueabihf.tar.gz
     38fd48e1ce34859bf486f4a92fee906f6e84d9397f9035535f980bed32485604c  guix-build-23.0rc1/output/dist-archive/bitcoin-23.0rc1.tar.gz
     43e467b092f6f4b6d503d224c6a3e6037d3e0de39b11bb28305b5bef9eb5c64d2  guix-build-23.0rc1/output/powerpc64-linux-gnu/SHA256SUMS.part
     5e28652ae23a4c519de5fa3cbf6bbd8f9c2917b10cd68428777edaa03247169c0  guix-build-23.0rc1/output/powerpc64-linux-gnu/bitcoin-23.0rc1-powerpc64-linux-gnu-debug.tar.gz
     6ebe38bdf80939af4cf1655be9bdcfd722c2230c23d183e4954df210cb81d9602  guix-build-23.0rc1/output/powerpc64-linux-gnu/bitcoin-23.0rc1-powerpc64-linux-gnu.tar.gz
     73e85a804820168a652d0aefc7bdf28f3a0a478ae79179c3d57a2300d66f03016  guix-build-23.0rc1/output/powerpc64le-linux-gnu/SHA256SUMS.part
     87ba1747f4235dc088a61cdd81e2d77e37b6d9e12bb02cdfb207afb703833c583  guix-build-23.0rc1/output/powerpc64le-linux-gnu/bitcoin-23.0rc1-powerpc64le-linux-gnu-debug.tar.gz
     96469218a849f064f075dbb373b5ff8e12d6c7fffaeab4fc01eb246b3753a9a77  guix-build-23.0rc1/output/powerpc64le-linux-gnu/bitcoin-23.0rc1-powerpc64le-linux-gnu.tar.gz
    10a8d78ccf39080851e931bfe62fb08ac011c43599d8920ed8af0c4979afca2225  guix-build-23.0rc1/output/riscv64-linux-gnu/SHA256SUMS.part
    11d3f0d711e3b309b32143c20cc2721a9e68d4dfe98a2e1f980175415e302ed0f5  guix-build-23.0rc1/output/riscv64-linux-gnu/bitcoin-23.0rc1-riscv64-linux-gnu-debug.tar.gz
    129e37fb287b29f37135d3f3ed120dbac34567e8e54f037122d97e309e66a73b6d  guix-build-23.0rc1/output/riscv64-linux-gnu/bitcoin-23.0rc1-riscv64-linux-gnu.tar.gz
    138e77727619d8690fa9c6f5aad505b0496931cd2c1a450c83323de151dfe2c455  guix-build-23.0rc1/output/x86_64-linux-gnu/SHA256SUMS.part
    14a6fbb3bed3eff7547ae4e5670ed64098f2f0bf3a356289d8b2e3590b4fb3fd34  guix-build-23.0rc1/output/x86_64-linux-gnu/bitcoin-23.0rc1-x86_64-linux-gnu-debug.tar.gz
    151ec7baf6582e4c8f1192c8681538d544ab7873c75f436b049d9476c7a9346432  guix-build-23.0rc1/output/x86_64-linux-gnu/bitcoin-23.0rc1-x86_64-linux-gnu.tar.gz
    1694a0d13c5e6b94d161b8d698aac21f053cf37c3e64083c40403c9209d039588c  guix-build-23.0rc1/output/x86_64-w64-mingw32/SHA256SUMS.part
    17c257a311ea76678d9e291e8a4035e624f87fbede074695acf6e17171f473dd60  guix-build-23.0rc1/output/x86_64-w64-mingw32/bitcoin-23.0rc1-win-unsigned.tar.gz
    188e79863737d6f4a3bfbd674ad090481a5d17305edd06bd795e90f089fcab2c1c  guix-build-23.0rc1/output/x86_64-w64-mingw32/bitcoin-23.0rc1-win64-debug.zip
    19df9e10528a92193df677286238c0255e5b7dfb8024dcadef6efcb6534c76f2b6  guix-build-23.0rc1/output/x86_64-w64-mingw32/bitcoin-23.0rc1-win64-setup-unsigned.exe
    20c1bb0db26494932bd1c8a8f57cea2a22d3089428fb2dc5f46dedb791dcd5e957  guix-build-23.0rc1/output/x86_64-w64-mingw32/bitcoin-23.0rc1-win64.zip
    
  9. hebasto commented at 7:32 pm on March 13, 2022: member

    It would be nice if guix was arch agnostic, so different archs can be used to get the same binary.

    I tried running guix on amd64 and arm64, for the target bitcoin-62cc2180afc1-powerpc64le-linux-gnu.tar.gz and only got a few bits difference:

    0--- ./bitcoin-arm64/bin/bitcoin-cli
    1+++ ./bitcoin-amd64/bin/bitcoin-cli
    2├── readelf --wide --decompress --hex-dump=.gnu_debuglink {}
    3│ @@ -1,5 +1,5 @@
    45│  Hex dump of section '.gnu_debuglink':
    6│    0x00000000 62697463 6f696e2d 636c692e 64626700 bitcoin-cli.dbg.
    7│ -  0x00000010 13a837f9                            ..7.
    8│ +  0x00000010 08b973c6                            ..s.
    

    This difference is in CRC sums for debug files, i.e., bitcoin-cli.dbgs. It seems doable to switch from the “debug link” method to the “build ID” one, to avoid using of CRC sums.

    But diff in bitcoin-cli.dbg files is more versatile, including paths from /gnu/store with unique IDs for each build platform, i.e., x86_64 and arm64:

     0$ diffoscope x86_64/bitcoin-cli.dbg arm64/bitcoin-cli.dbg
     1--- x86_64/bitcoin-cli.dbg
     2+++ arm64/bitcoin-cli.dbg
     3...
     4│   The Directory Table (offset 0x108):
     5│ -  1	/gnu/store/hn1z64pdrzyisiakaqwk3hbxvx64x2m1-gcc-cross-arm-linux-gnueabihf-10.3.0/include/c++/bits
     6│ +  1	/gnu/store/58gbarhkiy7yhbj3097wjz1xklb3aqbd-gcc-cross-arm-linux-gnueabihf-10.3.0/include/c++/bits
     7│    2	.
     8│ -  3	/gnu/store/hn1z64pdrzyisiakaqwk3hbxvx64x2m1-gcc-cross-arm-linux-gnueabihf-10.3.0/include/c++/ext
     9│ -  4	/gnu/store/hn1z64pdrzyisiakaqwk3hbxvx64x2m1-gcc-cross-arm-linux-gnueabihf-10.3.0/include/c++
    10│ +  3	/gnu/store/58gbarhkiy7yhbj3097wjz1xklb3aqbd-gcc-cross-arm-linux-gnueabihf-10.3.0/include/c++/ext
    11│ +  4	/gnu/store/58gbarhkiy7yhbj3097wjz1xklb3aqbd-gcc-cross-arm-linux-gnueabihf-10.3.0/include/c++
    12│    5	./util
    13│    6	./univalue/include
    14│    7	./support
    15│    8	./policy
    16│ -  9	/gnu/store/hn1z64pdrzyisiakaqwk3hbxvx64x2m1-gcc-cross-arm-linux-gnueabihf-10.3.0/include/c++/arm-linux-gnueabihf/bits
    17│ -  10	/gnu/store/hn1z64pdrzyisiakaqwk3hbxvx64x2m1-gcc-cross-arm-linux-gnueabihf-10.3.0/include/c++/debug
    18│ -  11	/gnu/store/hfq9ns0d7310l3vd644rh4wgqdqzx470-gcc-cross-arm-linux-gnueabihf-10.3.0-lib/lib/gcc/arm-linux-gnueabihf/10.3.0/include
    19│ -  12	/gnu/store/3x51606wig5gr4bm7zhaymni1p9n4nff-glibc-cross-arm-linux-gnueabihf-2.24/include
    20│ -  13	/gnu/store/3x51606wig5gr4bm7zhaymni1p9n4nff-glibc-cross-arm-linux-gnueabihf-2.24/include/bits
    21│ -  14	/gnu/store/hn1z64pdrzyisiakaqwk3hbxvx64x2m1-gcc-cross-arm-linux-gnueabihf-10.3.0/include/c++/pstl
    22│ +  9	/gnu/store/58gbarhkiy7yhbj3097wjz1xklb3aqbd-gcc-cross-arm-linux-gnueabihf-10.3.0/include/c++/arm-linux-gnueabihf/bits
    23│ +  10	/gnu/store/58gbarhkiy7yhbj3097wjz1xklb3aqbd-gcc-cross-arm-linux-gnueabihf-10.3.0/include/c++/debug
    24│ +  11	/gnu/store/8xi0hhhrb8hwhh1wlvz104bjy0hvl2aa-gcc-cross-arm-linux-gnueabihf-10.3.0-lib/lib/gcc/arm-linux-gnueabihf/10.3.0/include
    25│ +  12	/gnu/store/gdkz5a88vv4qb81svppsfcbkdflrsl4s-glibc-cross-arm-linux-gnueabihf-2.24/include
    26│ +  13	/gnu/store/gdkz5a88vv4qb81svppsfcbkdflrsl4s-glibc-cross-arm-linux-gnueabihf-2.24/include/bits
    27│ +  14	/gnu/store/58gbarhkiy7yhbj3097wjz1xklb3aqbd-gcc-cross-arm-linux-gnueabihf-10.3.0/include/c++/pstl
    28│    15	./consensus
    29│    16	./rpc
    30│ -  17	/gnu/store/3x51606wig5gr4bm7zhaymni1p9n4nff-glibc-cross-arm-linux-gnueabihf-2.24/include/sys
    31│ +  17	/gnu/store/gdkz5a88vv4qb81svppsfcbkdflrsl4s-glibc-cross-arm-linux-gnueabihf-2.24/include/sys
    32│    18	./depends/arm-linux-gnueabihf/include/event2
    33│    19	./compat
    34
  10. hebasto commented at 10:28 am on March 14, 2022: member

    This difference is in CRC sums for debug files, i.e., bitcoin-cli.dbgs. It seems doable to switch from the “debug link” method to the “build ID” one, to avoid using of CRC sums.

    Suggested in #24556.

  11. hebasto commented at 1:49 pm on March 14, 2022: member

    Diffoscope output for the GUI (on top of the #24556):

     0--- x86_64/bitcoin-24d7fa363033-arm-linux-gnueabihf/bitcoin-24d7fa363033/bin/bitcoin-qt
     1+++ arm64/bitcoin-24d7fa363033-arm-linux-gnueabihf/bitcoin-24d7fa363033/bin/bitcoin-qt
     2├── objdump --line-numbers --disassemble --demangle --reloc --no-show-raw-insn --section=.text {}
     3│ @@ -2452856,21 +2452856,21 @@
     4│  	blx	ccc66e <dlopen@plt+0xc5a1aa>
     5│  	b	19dea98 <_fini@@Base+0xab8fd8>
     6│  	blx	154dde8 <_fini@@Base+0x628328>
     7│  	strls	pc, [r5, -r2, lsl [#14](/bitcoin-bitcoin/14/)]
     8│  	streq	pc, [r0, -r2, asr [#3](/bitcoin-bitcoin/3/)]!
     9│  	bleq	120a450 <_fini@@Base+0x2e4990>
    10│  			; <UNDEFINED> instruction: 0xf707fa20
    11│ -	svcls	0x00059706
    12│ +	svcls	0x00059707
    13│  	blx	ccc5d6 <dlopen@plt+0xc5a112>
    14│ -	andslt	pc, ip, sp, asr [#17](/bitcoin-bitcoin/17/)
    15│ +	andslt	pc, r8, sp, asr [#17](/bitcoin-bitcoin/17/)
    16│  	blx	a8c5fa <dlopen@plt+0xa1a136>
    17│ -	blx	9f59fc <dlopen@plt+0x983538>
    18│ +	blx	9f59f8 <dlopen@plt+0x983534>
    19│  	b	1cca5ec <_fini@@Base+0xda4b2c>
    20│ -	svcls	0x00060b07
    21│ +	svcls	0x00070b07
    22│  	andeq	lr, r2, [#188](/bitcoin-bitcoin/188/), 22	; 0x2f000
    23│  	b	1cb2608 <_fini@@Base+0xd8cb48>
    24│  			; <UNDEFINED> instruction: 0xf04f0b07
    25│  	bl	255a9f4 <_fini@@Base+0x1634f34>
    26│  	addmi	r0, r2, [#11264](/bitcoin-bitcoin/11264/)	; 0x2c00
    27│  	orrsmi	r9, r1, r5, lsl [#20](/bitcoin-bitcoin/20/)
    28│  	ldm	sl, {r0, r1, r2, r5, r6, r8, r9, ip, lr, pc}
    
  12. dongcarl commented at 7:52 pm on March 14, 2022: contributor

    For debug paths, we might be able to fix it with: -fdebug-prefix-map=OLD=NEW

    More info: https://reproducible-builds.org/docs/build-path/

  13. fanquake commented at 7:55 pm on March 14, 2022: member

    For debug paths, we might be able to fix it with: -fdebug-prefix-map=OLD=NEW

    We are currently using -ffile-prefix-map=${PWD}=., for Linux builds, and my understanding is that this should be the equivalent of using -fdebug-prefix-map & -fmacro-prefix-map.

  14. hebasto commented at 7:56 pm on March 14, 2022: member

    For debug paths, we might be able to fix it with: -fdebug-prefix-map=OLD=NEW

    More info: https://reproducible-builds.org/docs/build-path/

    Yes, we might. But will debug info files remain usable with such an approach?

  15. dongcarl commented at 7:57 pm on March 14, 2022: contributor

    @fanquake

    We are currently using -ffile-prefix-map=${PWD}=., for Linux builds, and my understanding is that this should be the equivalent of using -fdebug-prefix-map & -fmacro-prefix-map.

    Right, but looking at the debug differences we also need something like: -fdebug-prefix-map=/gnu/store/hn1z64pdrzyisiakaqwk3hbxvx64x2m1-gcc-cross-arm-linux-gnueabihf-10.3.0=/usr

  16. dongcarl commented at 7:58 pm on March 14, 2022: contributor

    @hebasto

    Yes, we might. But will debug info files remain usable with such an approach?

    Seems like debug info files are probably unusable right now since people won’t have the /gnu/store/gdkz5a88vv4qb81svppsfcbkdflrsl4s-glibc-cross-arm-linux-gnueabihf-2.24 paths?

  17. fanquake commented at 8:00 pm on March 14, 2022: member

    Right, but looking at the debug differences we also need something like:

    Right. We can specify multiple prefixes to fixup.

  18. achow101 commented at 11:12 pm on March 18, 2022: member
    Apparently the dmg binary is arch specific, so the mac codesigning tarball is not going to be reproducible across archs as we need to run dmg locally.
  19. fanquake commented at 8:56 am on March 19, 2022: member

    Apparently the dmg binary is arch specific, so the mac codesigning tarball is not going to be reproducible across archs as we need to run dmg locally.

    I’m suggesting we just remove it in #24031.

  20. hebasto commented at 1:09 pm on March 19, 2022: member

    Apparently the dmg binary is arch specific, so the mac codesigning tarball is not going to be reproducible across archs as we need to run dmg locally.

    I’m suggesting we just remove it in #24031.

    If #24031 really fixes cross-arch determinism for codesigned macos artifacts, it gets strong justification, and, probably, should go first.

  21. fanquake commented at 9:30 am on July 1, 2022: member
    As of #25490, we’ve got cross-architecture reproducibility for: powerpc64-linux-gnu powerpc64le-linux-gnu x86_64-apple-darwin x86_64-linux-gnu
  22. fanquake commented at 3:44 pm on July 18, 2022: member

    As of #25558 and #25599 we’ve got x86_64 <-> aarch64 cross-architecture reproducibility for: powerpc64-linux-gnu powerpc64le-linux-gnu riscv64-linux-gnu x86_64-apple-darwin x86_64-linux-gnu x86_64-w64-mingw32

    Remaining HOSTS: aarch64-linux-gnu - cannot be guix built on aarch64-linux-gnu (#22458). arm-linux-gnueabihf - reproducibility issue in lib double conversion code in qt. arm64-apple-darwin - iirc same lib double conversion issue as arm-linux-gnueabihf.

  23. bitcoin deleted a comment on Jul 18, 2022
  24. hebasto commented at 9:17 am on July 19, 2022: member

    arm-linux-gnueabihf - reproducibility issue in lib double conversion code in qt.

    Addressed in #25636.

  25. fanquake referenced this in commit 4727e5fc91 on Jul 19, 2022
  26. fanquake referenced this in commit c32fa85909 on Jul 19, 2022
  27. achow101 referenced this in commit 9c97ba5451 on Jul 19, 2022
  28. fanquake commented at 8:49 pm on July 19, 2022: member

    As of #25643 we’ve got x86_64 <-> aarch64 cross-architecture reproducibility for: arm-linux-gnueabihf powerpc64-linux-gnu powerpc64le-linux-gnu riscv64-linux-gnu x86_64-apple-darwin x86_64-linux-gnu x86_64-w64-mingw32

    Remaining HOSTS: aarch64-linux-gnu - cannot be guix built on aarch64-linux-gnu (#22458). arm64-apple-darwin - Needs investigating.

  29. sidhujag referenced this in commit 6f0ef72af6 on Jul 20, 2022
  30. achow101 commented at 6:33 pm on July 20, 2022: member
    For arm64-apple-darwin, part of the problem seems to be in the qt_memrotate180 function in qtbase. It looks like a different function prologue is being used depending on the building arch, and that looks like that causes a larger diff with different registers being used.
  31. hebasto commented at 4:32 pm on July 21, 2022: member

    For arm64-apple-darwin, part of the problem seems to be in the qt_memrotate180 function in qtbase. It looks like a different function prologue is being used depending on the building arch, and that looks like that causes a larger diff with different registers being used.

    It is not obvious from the source code:

     0#define QT_IMPL_MEMROTATE(type)                                     \
     1Q_GUI_EXPORT void qt_memrotate90(const type *src, int w, int h, int sstride, \
     2                                 type *dest, int dstride)           \
     3{                                                                   \
     4    qt_memrotate90_template(src, w, h, sstride, dest, dstride);     \
     5}                                                                   \
     6Q_GUI_EXPORT void qt_memrotate180(const type *src, int w, int h, int sstride, \
     7                                  type *dest, int dstride)          \
     8{                                                                   \
     9    qt_memrotate180_template(src, w, h, sstride, dest, dstride);    \
    10}                                                                   \
    11Q_GUI_EXPORT void qt_memrotate270(const type *src, int w, int h, int sstride, \
    12                                  type *dest, int dstride)          \
    13{                                                                   \
    14    qt_memrotate270_template(src, w, h, sstride, dest, dstride);    \
    15}
    16
    17...
    18
    19QT_IMPL_MEMROTATE(quint64)
    20QT_IMPL_MEMROTATE(quint32)
    21QT_IMPL_MEMROTATE(quint16)
    22QT_IMPL_MEMROTATE(quint24)
    23QT_IMPL_MEMROTATE(quint8)
    
  32. stickies-v referenced this in commit d196bfa523 on Aug 2, 2022
  33. fanquake referenced this in commit aca0200e94 on Aug 13, 2022
  34. fanquake commented at 12:43 pm on August 13, 2022: member
    Now that #25817 has been merged, I’m going to close this as resolved, as all HOSTS that currently build, are reprodicuble across x86_64 and aarch64. I’ll note in #22458 that when that is fixed it should be reproducible before merge. I’m somewhat confident that will be the case without any additional changes (other than fixing the compilation).
  35. fanquake closed this on Aug 13, 2022

  36. sidhujag referenced this in commit a63b93054b on Aug 15, 2022
  37. Rspigler referenced this in commit 6cd917a279 on Aug 21, 2022
  38. aguycalled referenced this in commit 30f4f832c0 on Aug 25, 2022
  39. mxaddict referenced this in commit d13efa1944 on Aug 29, 2022
  40. bitcoin locked this on Oct 11, 2023

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2024-12-18 18:12 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me