On Thu, Jun 03, 2021 at 10:08:00PM -0700, Chris Marusich wrote: > Hi, > > Currently in Guix, we explicitly specify --with-long-double-128 on > powerpc64le-linux (and potentially other powerpc64-* systems) in two > places. It turns out that this is not necessary. This patch simplifies > our code. > > I originally authored this in order to try fixing bug 47698, but it > didn't solve that problem, and it turns out the --with-long-double-128 > option is probably unrelated to that bug. However, it's still worth > making this change to simplify our code. > > If nobody has any issues with this, then in 2 weeks I will commit it. > One question is: where should I commit it? I'd like to commit it to > master, but it causes many rebuilds on powerpc64le-linux (it does not > cause rebuilds on any other platforms), so per the guidelines ((guix) > Submitting Patches) I ought to commit it to core-updates. However, > because the glibc upgrade from 2.31 to 2.32 on core-updates causes many > problems for powerpc64le-linux, core-updates has never once been a > viable branch for powerpc64le-linux in the time since support was first > added on master. So if I commit this patch to core-updates, it won't > really do anyone any good right now. With all this in mind, I think > master is the right place to commit this patch. > > -- > Chris couple of thoughts: powerpc64le is in 'technology preview', so IMO it's fine to make big changes to it as needed. On master (and probably on core-updates too) we have a patch for glibc to force ... something (that I don't remember) on powerpc architectures, which has the side effect of needing '--with-long-double-128' on powerpc-linux also in commencement.scm. If we could drop that patch then I don't think we would need it anymore for powerpc. > From ad89f9f59d22cc10fbf7dd6f738ce15a6e79b640 Mon Sep 17 00:00:00 2001 > From: Chris Marusich > Date: Sat, 10 Apr 2021 18:16:17 -0700 > Subject: [PATCH] gnu: Simplify the use of --with-long-double-128 on > powerpc64le. > > In short, this change adds the "--with-long-double-128" configure option in > one place and removes it from two other (now-redundant) places. It does not > cause any rebuilds on systems other than powerpc64le-linux. > > * gnu/packages/gcc.scm (gcc-configure-flags-for-triplet): Add a clause for > targets starting with "powerpc64le-" which adds the "--with-long-double-128" > option. This causes any package using this procedure to be built using this > new option on powerpc64le systems. In particular, this affects the gcc > package and the gcc-final package, in addition to all the other versions of > GCC defined in (gnu packages gcc). > * gnu/packages/commencement.scm (gcc-boot0)[#:configure-flags]: Remove the > code that adds the "--with-long-double-128" configure option for powerpc64le, > since it is now redundant. The gcc-boot0 package uses (and adds to) the gcc > package's configure options. This means that the above change in gcc.scm is > sufficient to ensure that the gcc-boot0 package's configure options will > include "--with-long-double-128" on powerpc64le systems. > * gnu/packages/cross-base.scm (cross-gcc-arguments)[#:configure-flags]: Remove > the code that adds the "--with-long-double-128" configure option for > powerpc64le, since it is now redundant. The cross-gcc-arguments procedure > uses (and adds to) the configure options of its xgcc argument (a package). > This means that regardless of which gcc from gcc.scm is used as the xgcc, the > above change in gcc.scm is sufficient to ensure that the cross-gcc-arguments > procedure's configure options will include "--with-long-double-128" on > powerpc64le systems. > --- > gnu/packages/commencement.scm | 7 ------- > gnu/packages/cross-base.scm | 6 ------ > gnu/packages/gcc.scm | 3 +++ > 3 files changed, 3 insertions(+), 13 deletions(-) > > diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm > index d4511ed914..db564db9c4 100644 > --- a/gnu/packages/commencement.scm > +++ b/gnu/packages/commencement.scm > @@ -2819,13 +2819,6 @@ exec " gcc "/bin/" program > "--disable-shared" > "--enable-languages=c,c++" > I've adjusted this on core-updates to also take effect on powerpc-linux. > - ;; boot-triplet inserts "guix" in the triplet. > - ,@(if (equal? "powerpc64le-guix-linux-gnu" (boot-triplet)) > - ;; On POWER9 (little endian) glibc needs the > - ;; 128-bit long double type. > - '("--with-long-double-128") > - '()) > - > ;; libstdc++ cannot be built at this stage > ;; ("Link tests are not allowed after > ;; GCC_NO_EXECUTABLES."). > diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm > index 180594509b..c1e5f2eb79 100644 > --- a/gnu/packages/cross-base.scm > +++ b/gnu/packages/cross-base.scm > @@ -153,12 +153,6 @@ base compiler and using LIBC (which may be either a libc package or #f.)" > "--disable-decimal-float" ;would need libc > "--disable-libcilkrts" > > - ,@(if (string-prefix? "powerpc64le-" target) > - ;; On POWER9 (little endian) glibc needs > - ;; the 128-bit long double type. > - '("--with-long-double-128") > - '()) > - > ;; When target is any OS other than 'none' these > ;; libraries will fail if there is no libc > ;; present. See > diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm > index a412c93c29..22a0f35422 100644 > --- a/gnu/packages/gcc.scm > +++ b/gnu/packages/gcc.scm > @@ -79,6 +79,9 @@ where the OS part is overloaded to denote a specific ABI---into GCC > ;; Cilk has been removed from GCC 8 anyway. > '("--disable-libcilkrts")) > This can be just 'powerpc64le' > + ((string-prefix? "powerpc64le-" target) > + '("--with-long-double-128")) > + > (else > ;; TODO: Add `arm.*-gnueabi', etc. > '()))) > -- > 2.30.2 > -- Efraim Flashner אפרים פלשנר GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 Confidentiality cannot be guaranteed on emails sent or received unencrypted