Message ID | e690c54ea603e68c01240e8155aa122e06f6ccd4.1617711307.git.efraim@flashner.co.il |
---|---|
State | Accepted |
Headers | show |
Series | Add 32-bit powerpc support | expand |
Context | Check | Description |
---|---|---|
cbaines/comparison | success | View comparision |
cbaines/git branch | success | View Git branch |
cbaines/applying patch | success | View Laminar job |
cbaines/issue | success | View issue |
Efraim Flashner <efraim@flashner.co.il> writes: > On 923bb70a1bff657125c3008f119a477e5cb57c2b > gnu:glibc-for-bootstrap: Fix patch. > > Run > ./pre-inst-env guix build --target=powerpc-linux-gnu bootstrap-tarballs > > Producing > > /gnu/store/dyj1wvayyp1ihaknkxniz1xamcf4yrhl-bootstrap-tarballs-0 > > With guix hash -rx /gnu/store/dyj1wvayyp1ihaknkxniz1xamcf4yrhl-bootstrap-tarballs-0 > > 02xx2ydj28pwv3vflqffinpq1icj09gzi9icm8j4bwc4lca9irxn Generally speaking, this patch looks fine to me. Just curious, what sort of machines does one use for 32-bit powerpc? I want to build the bootstrap binaries, see if they're reproducible (in particular GCC, which I suspect won't be), and verify the hashes. It might take a few days to do that, but I'll update this thread once I've done it. > @@ -139,6 +148,7 @@ > ;; This is where the bootstrap executables come from. > '("https://git.savannah.gnu.org/cgit/guix.git/plain/gnu/packages/bootstrap/" > "https://alpha.gnu.org/gnu/guix/bootstrap/" > + "http://flashner.co.il/guix/bootstrap/" > "http://lilypond.org/janneke/guix/")) Once you're reasonably sure the bootstrap binaries won't change, we should consider uploading them to alpha.gnu.org. Ludo did it for me for powerpc64le-linux but I don't know who has access (I don't). > (define %hurd-systems > ;; The GNU/Hurd systems for which support is being developed. > @@ -361,7 +361,7 @@ name of its URI." > ;; > ;; XXX: MIPS is unavailable in CI: > ;; <https://lists.gnu.org/archive/html/guix-devel/2017-03/msg00790.html>. > - (fold delete %supported-systems '("mips64el-linux"))) > + (fold delete %supported-systems '("mips64el-linux" "powerpc-linux"))) Any ideas for how we can get a machine for powerpc CI? Maybe VMs, I guess? Can a POWER9 machine be a powerpc-linux machine...?
Hello, On Wed, Apr 14, 2021 at 5:51 AM Chris Marusich <cmmarusich@gmail.com> wrote: > Generally speaking, this patch looks fine to me. Just curious, what > sort of machines does one use for 32-bit powerpc? Old apple hardware based on powerpc G4 (powermacs, mini, imac, etc.), maybe even G3. > Any ideas for how we can get a machine for powerpc CI? Maybe VMs, I > guess? Can a POWER9 machine be a powerpc-linux machine...? A VM on power9 may be able to run BE ppc32. Regards
On Wed, Apr 14, 2021 at 09:36:24AM +0200, Vincent Legoll wrote: > Hello, > > On Wed, Apr 14, 2021 at 5:51 AM Chris Marusich <cmmarusich@gmail.com> wrote: > > Generally speaking, this patch looks fine to me. Just curious, what > > sort of machines does one use for 32-bit powerpc? > > Old apple hardware based on powerpc G4 (powermacs, mini, imac, etc.), > maybe even G3. There are a couple families of 32-bit powerpc machines out there with (IIRC) macppc being the most prevalent for desktops. > > > Any ideas for how we can get a machine for powerpc CI? Maybe VMs, I > > guess? Can a POWER9 machine be a powerpc-linux machine...? > > A VM on power9 may be able to run BE ppc32. > Can it do it "directly" or does it need to be inside of a VM/chroot? I never looked too much into it, never quite seemed like something that I'd be able to take advantage of.
Chris Marusich <cmmarusich@gmail.com> writes: > Efraim Flashner <efraim@flashner.co.il> writes: > >> On 923bb70a1bff657125c3008f119a477e5cb57c2b >> gnu:glibc-for-bootstrap: Fix patch. >> >> Run >> ./pre-inst-env guix build --target=powerpc-linux-gnu bootstrap-tarballs g>> >> Producing >> >> /gnu/store/dyj1wvayyp1ihaknkxniz1xamcf4yrhl-bootstrap-tarballs-0 >> >> With guix hash -rx /gnu/store/dyj1wvayyp1ihaknkxniz1xamcf4yrhl-bootstrap-tarballs-0 >> >> 02xx2ydj28pwv3vflqffinpq1icj09gzi9icm8j4bwc4lca9irxn > > Generally speaking, this patch looks fine to me. Just curious, what > sort of machines does one use for 32-bit powerpc? > > I want to build the bootstrap binaries, see if they're reproducible (in > particular GCC, which I suspect won't be), and verify the hashes. > > It might take a few days to do that, but I'll update this thread once > I've done it. I repeated Efraim's steps on two different x86_64-linux Guix System machines. In both cases, it produced exactly the same hash. Therefore, it would seem these bootstrap binaries are actually reproducible. I was surprised by this because of my experience with bug 41669. I expected GCC to not be reproducible, but in this case it seems reproducible. I wonder what's different? The powerpc64 architecture is 64-bit, and powerpc is 32-bit, but I wonder what else might be different that could cause the non-reproducibility to occur only in the powerpc64-linux case. Anyway, this is good news for the powerpc-linux port. It is also an interesting clue for the investigation of bug 41669, but further discussion about that should go there, not here.
On Tue, May 04, 2021 at 06:52:31PM -0700, Chris Marusich wrote: > Chris Marusich <cmmarusich@gmail.com> writes: > > > Efraim Flashner <efraim@flashner.co.il> writes: > > > >> On 923bb70a1bff657125c3008f119a477e5cb57c2b > >> gnu:glibc-for-bootstrap: Fix patch. > >> > >> Run > >> ./pre-inst-env guix build --target=powerpc-linux-gnu bootstrap-tarballs > g>> > >> Producing > >> > >> /gnu/store/dyj1wvayyp1ihaknkxniz1xamcf4yrhl-bootstrap-tarballs-0 > >> > >> With guix hash -rx /gnu/store/dyj1wvayyp1ihaknkxniz1xamcf4yrhl-bootstrap-tarballs-0 > >> > >> 02xx2ydj28pwv3vflqffinpq1icj09gzi9icm8j4bwc4lca9irxn > > > > Generally speaking, this patch looks fine to me. Just curious, what > > sort of machines does one use for 32-bit powerpc? > > > > I want to build the bootstrap binaries, see if they're reproducible (in > > particular GCC, which I suspect won't be), and verify the hashes. > > > > It might take a few days to do that, but I'll update this thread once > > I've done it. > > I repeated Efraim's steps on two different x86_64-linux Guix System > machines. In both cases, it produced exactly the same hash. Therefore, > it would seem these bootstrap binaries are actually reproducible. I was > surprised by this because of my experience with bug 41669. I expected > GCC to not be reproducible, but in this case it seems reproducible. > > I wonder what's different? The powerpc64 architecture is 64-bit, and > powerpc is 32-bit, but I wonder what else might be different that could > cause the non-reproducibility to occur only in the powerpc64-linux > case. > > Anyway, this is good news for the powerpc-linux port. It is also an > interesting clue for the investigation of bug 41669, but further > discussion about that should go there, not here. > In terms of what is more relevant here, IIRC there is some CI code to build cross toolchain stuff to powerpc-linux-gnu. Is it possible that you reused some of that? I don't remember exactly from the other bug report which bits suddenly made the difference. Otherwise I built mine about 4 months earlier.
Hi Chris, Chris Marusich <cmmarusich@gmail.com> skribis: > Chris Marusich <cmmarusich@gmail.com> writes: > >> Efraim Flashner <efraim@flashner.co.il> writes: >> >>> On 923bb70a1bff657125c3008f119a477e5cb57c2b >>> gnu:glibc-for-bootstrap: Fix patch. >>> >>> Run >>> ./pre-inst-env guix build --target=powerpc-linux-gnu bootstrap-tarballs > g>> >>> Producing >>> >>> /gnu/store/dyj1wvayyp1ihaknkxniz1xamcf4yrhl-bootstrap-tarballs-0 >>> >>> With guix hash -rx /gnu/store/dyj1wvayyp1ihaknkxniz1xamcf4yrhl-bootstrap-tarballs-0 >>> >>> 02xx2ydj28pwv3vflqffinpq1icj09gzi9icm8j4bwc4lca9irxn >> >> Generally speaking, this patch looks fine to me. Just curious, what >> sort of machines does one use for 32-bit powerpc? >> >> I want to build the bootstrap binaries, see if they're reproducible (in >> particular GCC, which I suspect won't be), and verify the hashes. >> >> It might take a few days to do that, but I'll update this thread once >> I've done it. > > I repeated Efraim's steps on two different x86_64-linux Guix System > machines. In both cases, it produced exactly the same hash. Therefore, > it would seem these bootstrap binaries are actually reproducible. This is great news, thanks for checking! With this, we can be more confident uploading the binary seeds to ftp.gnu.org. > I was surprised by this because of my experience with bug 41669. I > expected GCC to not be reproducible, but in this case it seems > reproducible. Yes, that’s weird, but it’s better this way. :-) Thanks, Ludo’.
diff --git a/gnu/packages/bootstrap.scm b/gnu/packages/bootstrap.scm index c50e94e891..049735013a 100644 --- a/gnu/packages/bootstrap.scm +++ b/gnu/packages/bootstrap.scm @@ -89,6 +89,15 @@ ,(base32 "1j51gv08sfg277yxj73xd564wjq3f8xwd6s9rbcg8v9gms47m4cx")) ("xz" ,(base32 "1d779rwsrasphg5g3r37qppcqy3p7ay1jb1y83w7x4i3qsc7zjy2"))) + ("powerpc-linux" + ("bash" + ,(base32 "0hwlw5lcyjzadprf5fm0cv4zb6jw667g9amnmhq0lbixasy7j72j")) + ("mkdir" + ,(base32 "12lfwh5p8pp06250wgi9mdvjv1jdfpd5xpmvfc0616aj0xqh09hp")) + ("tar" + ,(base32 "00sbmwl8qh6alxv9mw4hvj1j4yipwmw5mrw6qad8bi2pr7ya5386")) + ("xz" + ,(base32 "0hi47y6zh5zz137i59l5ibw92x6g54zn7ris1b1ym9rvavsasg7b"))) ("armhf-linux" ("bash" ,(base32 "0s6f1s26g4dsrrkl39zblvwpxmbzi6n9mgqf6vxsqz42gik6bgyn")) @@ -139,6 +148,7 @@ ;; This is where the bootstrap executables come from. '("https://git.savannah.gnu.org/cgit/guix.git/plain/gnu/packages/bootstrap/" "https://alpha.gnu.org/gnu/guix/bootstrap/" + "http://flashner.co.il/guix/bootstrap/" "http://lilypond.org/janneke/guix/")) (define (bootstrap-executable-file-name system program) @@ -146,6 +156,7 @@ (match system ("powerpc64le-linux" (string-append system "/20210106/" program)) ("i586-gnu" (string-append system "/20200326/" program)) + ("powerpc-linux" (string-append system "/20200923/bin/" program)) (_ (string-append system "/" program "?id=44f07d1dc6806e97c4e9ee3e6be883cc59dc666e")))) @@ -341,6 +352,8 @@ or false to signal an error." (match system ("aarch64-linux" "/20170217/guile-2.0.14.tar.xz") + ("powerpc-linux" + "/20200923/guile-2.0.14.tar.xz") ("armhf-linux" "/20150101/guile-2.0.11.tar.xz") ("i586-gnu" @@ -366,7 +379,9 @@ or false to signal an error." ("aarch64-linux" (base32 "1giy2aprjmn5fp9c4s9r125fljw4wv6ixy5739i5bffw4jgr0f9r")) ("i586-gnu" - (base32 "0wgqpsmvg25rnqn49ap7kwd2qxccd8dr4lllzp7i3rjvgav27vac")))) + (base32 "0wgqpsmvg25rnqn49ap7kwd2qxccd8dr4lllzp7i3rjvgav27vac")) + ("powerpc-linux" + (base32 "1by2p7s27fbyjzfkcw8h65h4kkqh7d23kv4sgg5jppjn2qx7swq4")))) (define (bootstrap-guile-origin system) "Return an <origin> object for the Guile tarball of SYSTEM." @@ -500,6 +515,8 @@ $out/bin/guile --version~%" "/20210106/static-binaries-0-powerpc64le-linux-gnu.tar.xz") ("i586-gnu" "/20200326/static-binaries-0-i586-pc-gnu.tar.xz") + ("powerpc-linux" + "/20200923/static-binaries.tar.xz") (_ "/20131110/static-binaries.tar.xz"))) %bootstrap-base-urls)) @@ -523,6 +540,9 @@ $out/bin/guile --version~%" ("i586-gnu" (base32 "17kllqnf3fg79gzy9ansgi801c46yh9c23h4d923plvb0nfm1cfn")) + ("powerpc-linux" + (base32 + "0kspxy0yczan2vlih6aa9hailr2inz000fqa0gn5x9d1fxxa5y8m")) ("mips64el-linux" (base32 "072y4wyfsj1bs80r6vbybbafy8ya4vfy7qj25dklwk97m6g71753")))))) @@ -573,6 +593,8 @@ $out/bin/guile --version~%" "/20210106/binutils-static-stripped-2.34-powerpc64le-linux-gnu.tar.xz") ("i586-gnu" "/20200326/binutils-static-stripped-2.34-i586-pc-gnu.tar.xz") + ("powerpc-linux" + "/20200923/binutils-2.35.1.tar.xz") (_ "/20131110/binutils-2.23.2.tar.xz"))) %bootstrap-base-urls)) @@ -596,6 +618,9 @@ $out/bin/guile --version~%" ("i586-gnu" (base32 "11kykv1kmqc5wln57rs4klaqa13hm952smkc57qcsyss21kfjprs")) + ("powerpc-linux" + (base32 + "0asbg1c4avkrvh057mx0942xwddd136jni382zqsxzn79ls42yq8")) ("mips64el-linux" (base32 "1x8kkhcxmfyzg1ddpz2pxs6fbdl6412r7x0nzbmi5n7mj8zw2gy7")))))) @@ -653,6 +678,8 @@ $out/bin/guile --version~%" "/20210106/glibc-stripped-2.31-powerpc64le-linux-gnu.tar.xz") ("i586-gnu" "/20200326/glibc-stripped-2.31-i586-pc-gnu.tar.xz") + ("powerpc-linux" + "/20200923/glibc-2.32.tar.xz") (_ "/20131110/glibc-2.18.tar.xz"))) %bootstrap-base-urls)) @@ -676,6 +703,9 @@ $out/bin/guile --version~%" ("i586-gnu" (base32 "14ddm10lpbas8bankmn5bcrlqvz1v5dnn1qjzxb19r57vd2w5952")) + ("powerpc-linux" + (base32 + "0smmssyjrlk5cvx49586smmk81gkwff0i6r91n4rir4jm6ba25sb")) ("mips64el-linux" (base32 "0k97a3whzx3apsi9n2cbsrr79ad6lh00klxph9hw4fqyp1abkdsg"))))))))) @@ -749,6 +779,8 @@ exec ~a/bin/.gcc-wrapped -B~a/lib \ "/20210106/gcc-stripped-5.5.0-powerpc64le-linux-gnu.tar.xz") ("i586-gnu" "/20200326/gcc-stripped-5.5.0-i586-pc-gnu.tar.xz") + ("powerpc-linux" + "/20200923/gcc-5.5.0.tar.xz") (_ "/20131110/gcc-4.8.2.tar.xz"))) %bootstrap-base-urls)) @@ -772,6 +804,9 @@ exec ~a/bin/.gcc-wrapped -B~a/lib \ ("i586-gnu" (base32 "1j2zc58wzil71a34h7c70sd68dmqvcscrw3rmn2whq79vd70zvv5")) + ("powerpc-linux" + (base32 + "1p7df3yixhm87dw5sccc6yn1i9db1r9hnmsg87wq5xi4rfmirq7w")) ("mips64el-linux" (base32 "1m5miqkyng45l745n0sfafdpjkqv9225xf44jqkygwsipj2cv9ks"))))))))) diff --git a/guix/packages.scm b/guix/packages.scm index 56173e1204..e60201d8fc 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -350,7 +350,7 @@ name of its URI." ;; This is the list of system types that are supported. By default, we ;; expect all packages to build successfully here. '("x86_64-linux" "i686-linux" "armhf-linux" "aarch64-linux" "mips64el-linux" "i586-gnu" - "powerpc64le-linux")) + "powerpc64le-linux" "powerpc-linux")) (define %hurd-systems ;; The GNU/Hurd systems for which support is being developed. @@ -361,7 +361,7 @@ name of its URI." ;; ;; XXX: MIPS is unavailable in CI: ;; <https://lists.gnu.org/archive/html/guix-devel/2017-03/msg00790.html>. - (fold delete %supported-systems '("mips64el-linux"))) + (fold delete %supported-systems '("mips64el-linux" "powerpc-linux"))) ;; A package. diff --git a/m4/guix.m4 b/m4/guix.m4 index 05d409a674..e778a56004 100644 --- a/m4/guix.m4 +++ b/m4/guix.m4 @@ -1,7 +1,7 @@ dnl GNU Guix --- Functional package management for GNU dnl Copyright © 2012, 2013, 2014, 2015, 2016, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org> dnl Copyright © 2014 Mark H Weaver <mhw@netris.org> -dnl Copyright © 2017 Efraim Flashner <efraim@flashner.co.il> +dnl Copyright © 2017, 2020 Efraim Flashner <efraim@flashner.co.il> dnl Copyright © 2021 Chris Marusich <cmmarusich@gmail.com> dnl dnl This file is part of GNU Guix. @@ -89,7 +89,7 @@ courageous and port the GNU System distribution to it (see # Currently only Linux-based systems are supported, and only on some # platforms. case "$guix_system" in - x86_64-linux|i686-linux|armhf-linux|aarch64-linux|powerpc64le-linux) + x86_64-linux|i686-linux|armhf-linux|aarch64-linux|powerpc64le-linux|powerpc-linux) ;; *) if test "x$guix_courageous" = "xyes"; then