Commit Graph

1310 Commits

Author SHA1 Message Date
Weijia Wang
b39481bc09 gcc: fix build on x86_64-darwin 2023-07-08 11:03:41 +03:00
Adam Joseph
926c920c12 gcc: tighten condition for inhibit_libc=true
The situation described in the comment preceding `export
inhibit_libc=true` does not match the conditional which follows it.
Specifically, the comment says that this line is meant for "clang
builds gcc" situations, yet it is enabled even when
`!stdenv.cc.isClang`.

This commit tightens the conditional to make it match the situation
described in the comment.
2023-07-07 03:02:47 -07:00
Adam Joseph
424952b7b4 gccWithoutTargetLibc: link libgcc_s.so using -mnewlib if isPower
Closes #244405

Also adds considerably more commenting to document what is going on.
2023-07-06 05:50:26 -07:00
Adam Joseph
a35e1694a8 gcc: if isM68k, look for libgcc_s.so.2 (instead of .so.1)
Closes #243613
2023-07-01 16:45:44 -07:00
Adam Joseph
96a2f1b4e1 gcc: kludge to prevent mass-rebuild
This commit is reverted in #240596 (which must go to staging).
2023-07-01 13:12:41 -07:00
Adam Joseph
63305d00d3 gcc: withoutTargetLibc: build libgcc_s.so
We want a `libgcc_s.so` to be built by the first stage
cross-compiler (withoutTargetLibc), since that is the compiler which
will compile the target libc.

This commit accomplishes that, by making three changes:

1. Replacing the `targetPlatform.libc == "msvcrt" &&` conditional
   with `enableShared`, so that the code which cross-build
   `libgcc_s.so` is used for all cross compilers capable of emitting
   shared libraries.

2. Removing the `targetPlatform == hostPlatform` guard from the code
   which produces the `libgcc` output.

3. Looking for build products in in "lib/${targetPlatform.config}/"
   rather than "lib/", so we will find them when cross compiling.
2023-07-01 13:12:41 -07:00
Adam Joseph
443dfc4b05 gcc: s_crossStageStatic_withoutTargetLibc_
This commit renames the `crossStageStatic` argument to the `gcc`
expression to `withoutTargetLibc`.  See previous commit for details.
2023-07-01 13:12:41 -07:00
Adam Joseph
2affd455a4 gccCrossStageStatic: enable dynamic libraries, rename to gccWithoutTargetLibc
This commit allows `gccCrossStageStatic` to build dynamically-linked
libraries.  Since is no longer restricted to building static
libraries its name is no longer appropriate, and this commit also
renames it to the more-accurate `gccWithoutTargetLibc`.

By default, you can't build a gcc that knows how to create dynamic
libraries unless you have already built the targetPlatform libc.

Because of this, our gcc cross-compiler is built in two stages:

  1. Build a cross-compiler (gccCrossStageStatic) that can build
     only static libraries.

  2. Use gccCrossStageStatic to compile the targetPlatform libc.

  3. Use the targetPlatform libc to build a fully-capable cross
     compiler.

You might notice that this pattern looks very similar to what we do
with `xgcc` in the stdenv bootstrap.  Indeed it is!  I would like to
work towards getting the existing stdenv bootstrap to handle cross
compilers as well.  However we don't want to cripple `stdenv.xgcc`
by taking away its ability to build dynamic libraries.

It turns out that the only thing gcc needs the targetPlatform libc
for is to emit a DT_NEEDED for `-lc` into `libgcc.so`.  That's it!
And since we don't use `gccCrossStageStatic` to build anything other
than libc, it's safe to omit the `DT_NEEDED` because that `libgcc`
will never be loaded by anything other than `libc`.  So `libc` will
already be in the process's address space.

Other people have noticed this; crosstool-ng has been using this
approach for a very long time:

  36ad0b17a7/scripts/build/cc/gcc.sh (L638-L640)
2023-07-01 13:12:40 -07:00
Adam Joseph
e41f217257 gcc: use hasSharedLibraries instead of isStatic 2023-07-01 13:12:22 -07:00
Adam Joseph
c04c1a1777 Revert "gcc: kludge to prevent mass-rebuild"
This reverts commit 8dce1f7383b064ae5adee7702a8eeed06346dd24.
2023-06-30 02:28:13 -07:00
Adam Joseph
91ef45c98a gcc: disable glibc<->libgcc circularity workaround for windows and LLVM
This essentially reverts #238154 if `isWindows` or `useLLVM`, the
two cases where it caused breakage:

  https://github.com/NixOS/nixpkgs/pull/238154#issuecomment-1633752094

Since #238154 exists mainly for `isGNU` (i.e. due to the
glibc<->libgcc circular dependency) disabling it here isn't a big deal.
2023-06-30 01:39:58 -07:00
Adam Joseph
0344bcbcf4 gcc: deduplicate boilerplate
This commit deduplicates libgcc-related boilerplate which appears in
every version of our gcc expression, by moving it into libgcc.nix.

I will be submitting a separate PR which changes this boilerplate,
but that PR will be much easier to review if I can make the change
in just one place.

Meanwhile, *this* commit has no effect on eval:

$ for A in 10  11  12  13  4.8  4.9  6  7  8  9; do nix-instantiate . -A gcc$(echo $A | tr -d .); done 2>/dev/null | sort | tee before
/nix/store/1a37lnzpnz0dhm3lphiy2gcdrxgqa7ma-gcc-wrapper-4.8.5.drv
/nix/store/5szdivc8il0c3g94dq4wqnq5j77a9h6p-gcc-wrapper-11.4.0.drv
/nix/store/bmmc717wmnp1j2xkd3if5dfxicnflvn5-gcc-wrapper-7.5.0.drv
/nix/store/fc1ggpixv3wqcazchhl2hnn5zl5ds30l-gcc-wrapper-13.1.0.drv
/nix/store/j9c2b20w35r3ag5nxmklhagbwsgjhds2-gcc-wrapper-4.9.4.drv
/nix/store/nq7q57bxmsk2g457wr4b9449as3f216w-gcc-wrapper-12.3.0.drv
/nix/store/sqmkkfapzykapcs4azvxm83n786ga7q1-gcc-wrapper-10.4.0.drv
/nix/store/vxnz30i23mkl4ldsq485kxn7q0p2y4nf-gcc-wrapper-8.5.0.drv
/nix/store/yfhv0bv15cg5kj2xsb9fcgb6pdlw42v0-gcc-wrapper-6.5.0.drv
/nix/store/yi5gr75pb6kddnll10jg25hhndhkba7s-gcc-wrapper-9.5.0.drv

$ for A in 10  11  12  13  4.8  4.9  6  7  8  9; do nix-instantiate . -A gcc$(echo $A | tr -d .); done | sort | tee after
/nix/store/1a37lnzpnz0dhm3lphiy2gcdrxgqa7ma-gcc-wrapper-4.8.5.drv
/nix/store/5szdivc8il0c3g94dq4wqnq5j77a9h6p-gcc-wrapper-11.4.0.drv
/nix/store/bmmc717wmnp1j2xkd3if5dfxicnflvn5-gcc-wrapper-7.5.0.drv
/nix/store/fc1ggpixv3wqcazchhl2hnn5zl5ds30l-gcc-wrapper-13.1.0.drv
/nix/store/j9c2b20w35r3ag5nxmklhagbwsgjhds2-gcc-wrapper-4.9.4.drv
/nix/store/nq7q57bxmsk2g457wr4b9449as3f216w-gcc-wrapper-12.3.0.drv
/nix/store/sqmkkfapzykapcs4azvxm83n786ga7q1-gcc-wrapper-10.4.0.drv
/nix/store/vxnz30i23mkl4ldsq485kxn7q0p2y4nf-gcc-wrapper-8.5.0.drv
/nix/store/yfhv0bv15cg5kj2xsb9fcgb6pdlw42v0-gcc-wrapper-6.5.0.drv
/nix/store/yi5gr75pb6kddnll10jg25hhndhkba7s-gcc-wrapper-9.5.0.drv

$ diff -u after before
$
2023-06-27 19:21:49 -07:00
Alyssa Ross
0f2191f3b2 Merge remote-tracking branch 'origin/staging-next' into staging
Conflicts:
	pkgs/development/compilers/gcc/11/default.nix
2023-06-22 06:23:16 +00:00
Janne Heß
61e5bba2b7 gcc11: 11.3.0 -> 11.4.0 2023-06-19 07:48:37 +02:00
Arnout Engelen
f6a7658c51 gcc: disable parallelism when installing
to avoid missing sections in the info pages due
the index being overwritten by parallel `install-info`
invocations
2023-06-13 17:16:23 +02:00
Arnout Engelen
e8d0aa9d19 Revert "gcc: install info files serially"
Because the build still uses a pre-4.4 version of GNU Make,
this option makes the whole build serial rather than only
the installation.

See also https://gcc.gnu.org/PR109898

This reverts commit f3995cee01.
2023-06-13 17:16:20 +02:00
github-actions[bot]
9f2767ce37 Merge staging-next into staging 2023-06-10 18:01:41 +00:00
Daniel Nagy
ca2cb9f644 treewide: "libary" -> "library" 2023-06-10 14:54:08 +01:00
Artturi
69b154f738 Merge pull request #234204 from vcunat/p/gcc-nofetch-patch 2023-06-08 17:53:58 +03:00
Sergei Trofimovich
aaf4f4acca Merge pull request #234887 from trofi/mingw-w64-gcc-13-fix
gcc13: drop already upstreamed mingwW64 patch
2023-06-06 08:05:23 +01:00
Sergei Trofimovich
9de90335f9 gcc13: drop already upstreamed mingwW64 patch
Without the change the patch failed to apply as:

```
$ nix build -f. pkgsCross.mingwW64.stdenv.cc.cc
...
x86_64-w64-mingw32-stage-final-gcc> applying patch /nix/store/sb9irfs83qvdgkf23agvv1vn96n9z31p-Added-mcf-thread-model-support-from-mcfgthread.patch
x86_64-w64-mingw32-stage-final-gcc> patching file config/gthr.m4
x86_64-w64-mingw32-stage-final-gcc> Reversed (or previously applied) patch detected!  Assume -R? [n]
x86_64-w64-mingw32-stage-final-gcc> Apply anyway? [n]
x86_64-w64-mingw32-stage-final-gcc> Skipping patch.
...
```

The patch is apready present in gcc-13.1.0.
2023-05-29 22:40:07 +01:00
Sergei Trofimovich
e1356f9958 Merge pull request #232075 from trofi/gcc12-update
gcc12: 12.2.0 -> 12.3.0
2023-05-29 10:05:32 +01:00
Sergei Trofimovich
c78434b2cd gcc12: 12.2.0 -> 12.3.0
Added an ICE backport for `ccache` build failure.
2023-05-27 09:42:47 +01:00
Vladimír Čunát
c98d687fd6 gcc{6..11}: import a patch into nixpkgs
fetchurl can't be used on generated patches this way.
The hash doesn't match anymore.  fetchpatch would be an alternative.
2023-05-26 12:55:25 +02:00
Elias Naur
8d2846edbb gcc: only disable aligned_alloc for darwin build/host/target platforms (#226290)
Before this change a Darwin gcc would output binaries that avoid
aligned_alloc, regardless of target platform. That's fine for Darwin
targets, but not for non-darwin targets such as pkgsCross.raspberryPi.

This change replaces the single configure flag with a flag for
each of build, host, target.

Idea by @trofi.
2023-05-16 19:43:17 -04:00
Sergei Trofimovich
e86e25fd5d Merge pull request #228388 from trofi/gcc13
gcc13, gccgo13, gfortran13, gnat13: init at 13.1.0
2023-05-13 21:16:40 +01:00
Sergei Trofimovich
4b8b00f56c gcc13, gccgo13, gfortran13, gnat13: init at 13.1.0
It's a copy of `gcc12.cc` implementation. Nothing special added here.

Note that gccgo13 does not build yet (similar to existing gccgo12).
The failure is related to libgcc_s.so lookup problems. Not specific
to gcc-13 release.

Co-authored-by: Weijia Wang <9713184+wegank@users.noreply.github.com>
Co-authored-by: Sandro <sandro.jaeckel@gmail.com>
2023-05-13 13:18:08 +01:00
Vladimír Čunát
ae3f6c9c6d Merge #229898: gcc: install info files serially
...into staging
2023-05-10 08:39:57 +02:00
Arnout Engelen
f3995cee01 gcc: install info files serially
installing info files in parallel is dangerous, because
`install-info` will write to a `dir-file` as a side-effect,
and it has no protection against multiple `install-info`
processes running in parallel and overwriting each others'
changes.

Local fix until we can fix the `Makefile.in` generation
upstream

Fixes #229470
2023-05-09 19:02:41 +02:00
Adam Joseph
e1842769ae Merge pull request #228296 from amjoseph-nixpkgs/pr/gcc/libsanitizer/mips64n32
gcc: disable libsanitizer on mips64n32
2023-05-05 06:54:41 +00:00
Alyssa Ross
7f4280c538 pkgsStatic.gcc: fix build
There's no libgcc.so in a static-only build.
2023-05-03 18:35:51 +00:00
Vladimír Čunát
586616fd4b Merge #228606: gcc: fix fastStdenv breakage from #209870 2023-05-01 17:21:42 +02:00
Adam Joseph
cfc4c95770 gcc: fix fastStdenv breakage from #209870
Apparently gcc has these `Makefile` targets:

- `""`
- `"bootstrap"`
- `"profiledbootstrap"`

... but no `"profiled"`.  So if you want a profiled compiler, at the
moment, it should be bootstrapped.

If we ever decide to make the nixpkgs bootstrap use a profiled
compiler (which at the moment means nondeterminism) a Nix-driven
profile loop is certainly possible, but would take some work.

Closes #228597.
2023-04-27 15:22:06 -07:00
Elias Naur
c10a195ab1 gcc: tighten platform flags special-case for aarch64-darwin
The 4aa95e3312 commit added support for
aarch64-darwin but also ignored platform flags if the build platform
is aarch64-darwin. This leads to confusing errors such as
`pkgsCross.raspberryPi` packages compiled with soft-float even though
the platform supports hard-float (and is built as such on other
platforms).

The correct way to ignore platform flags is to check `targetPlatform`,
not the build platform. This change fixes that.

While we're here, tigthen the special-case to cover only the problematic
flags: `-with-cpu` and `-with-arch`.
2023-04-27 15:57:17 -06:00
Weijia Wang
5378f9a6c2 gccgo: fix build 2023-04-27 10:52:46 +03:00
Adam Joseph
c289fc341b gcc: disable libsanitizer on mips64n32
On MIPS, libsanitizer appears to have very detailed knowledge of the
Linux system call ABI manually encoded, by hand, into the library.
This encoding covers the o32 and 64 abis, but does not cover n32.
Adding support for n32 would be a major undertaking.

Without adding this encoding, builds of gcc will fail with errors
including (but not limited to) the following:

```
In file included from ../../../../gcc-12.2.0/libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cpp:21:
../../../../gcc-12.2.0/libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cpp:75:38: error: static assertion failed
   75 | COMPILER_CHECK(struct_kernel_stat_sz == sizeof(struct stat));
      |                ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
../../../../gcc-12.2.0/libsanitizer/sanitizer_common/sanitizer_internal_defs.h:348:44: note: in definition of macro 'COMPILER_CHECK'
  348 | #define COMPILER_CHECK(pred) static_assert(pred, "")
      |                                            ^~~~
../../../../gcc-12.2.0/libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cpp:75:38: note: the comparison reduces to '(144 == 160)'
   75 | COMPILER_CHECK(struct_kernel_stat_sz == sizeof(struct stat));
      |                ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
../../../../gcc-12.2.0/libsanitizer/sanitizer_common/sanitizer_internal_defs.h:348:44: note: in definition of macro 'COMPILER_CHECK'
  348 | #define COMPILER_CHECK(pred) static_assert(pred, "")
      |                                            ^~~~
...
In file included from ../../../../gcc-12.2.0/libsanitizer/sanitizer_common/sanitizer_linux.cpp:184:
../../../../gcc-12.2.0/libsanitizer/sanitizer_common/sanitizer_linux.cpp: In function '__sanitizer::uptr __sanitizer::internal_mmap(void*, uptr, int, int, int, u64)':
../../../../gcc-12.2.0/libsanitizer/sanitizer_common/sanitizer_syscall_generic.inc:19:24: error: '__NR_mmap2' was not declared in this scope
   19 | # define SYSCALL(name) __NR_ ## name
      |                        ^~~~~
../../../../gcc-12.2.0/libsanitizer/sanitizer_common/sanitizer_linux.cpp:198:27: note: in expansion of macro 'SYSCALL'
  198 |   return internal_syscall(SYSCALL(mmap2), addr, length, prot, flags, fd,
      |                           ^~~~~~~
../../../../gcc-12.2.0/libsanitizer/sanitizer_common/sanitizer_linux.cpp: In function 'void __sanitizer::stat64_to_stat(stat64*, stat*)':
../../../../gcc-12.2.0/libsanitizer/sanitizer_common/sanitizer_linux.cpp:279:23: error: 'struct stat64' has no member named 'st_atim'; did you mean 'st_atime'?
  279 |   out->st_atime = in->st_atime;
      |                       ^~~~~~~~
../../../../gcc-12.2.0/libsanitizer/sanitizer_common/sanitizer_linux.cpp:280:23: error: 'struct stat64' has no member named 'st_mtim'; did you mean 'st_mtime'?
  280 |   out->st_mtime = in->st_mtime;
      |                       ^~~~~~~~
../../../../gcc-12.2.0/libsanitizer/sanitizer_common/sanitizer_linux.cpp:281:23: error: 'struct stat64' has no member named 'st_ctim'; did you mean 'st_ctime'?
  281 |   out->st_ctime = in->st_ctime;
      |                       ^~~~~~~~
../../../../gcc-12.2.0/libsanitizer/sanitizer_common/sanitizer_linux.cpp: In function '__sanitizer::uptr __sanitizer::internal_stat(const char*, void*)':
../../../../gcc-12.2.0/libsanitizer/sanitizer_common/sanitizer_syscall_generic.inc:19:24: error: '__NR_stat64' was not declared in this scope
   19 | # define SYSCALL(name) __NR_ ## name
      |                        ^~~~~
../../../../gcc-12.2.0/libsanitizer/sanitizer_common/sanitizer_linux.cpp:353:30: note: in expansion of macro 'SYSCALL'
  353 |   int res = internal_syscall(SYSCALL(stat64), path, &buf64);
      |                              ^~~~~~~
../../../../gcc-12.2.0/libsanitizer/sanitizer_common/sanitizer_linux.cpp: In function '__sanitizer::uptr __sanitizer::internal_lstat(const char*, void*)':
../../../../gcc-12.2.0/libsanitizer/sanitizer_common/sanitizer_syscall_generic.inc:19:24: error: '__NR_lstat64' was not declared in this scope
   19 | # define SYSCALL(name) __NR_ ## name
      |                        ^~~~~
../../../../gcc-12.2.0/libsanitizer/sanitizer_common/sanitizer_linux.cpp:378:30: note: in expansion of macro 'SYSCALL'
  378 |   int res = internal_syscall(SYSCALL(lstat64), path, &buf64);
      |                              ^~~~~~~
../../../../gcc-12.2.0/libsanitizer/sanitizer_common/sanitizer_linux.cpp: In function '__sanitizer::uptr __sanitizer::internal_fstat(fd_t, void*)':
../../../../gcc-12.2.0/libsanitizer/sanitizer_common/sanitizer_syscall_generic.inc:19:24: error: '__NR_fstat64' was not declared in this scope
   19 | # define SYSCALL(name) __NR_ ## name
      |                        ^~~~~
../../../../gcc-12.2.0/libsanitizer/sanitizer_common/sanitizer_linux.cpp:397:30: note: in expansion of macro 'SYSCALL'
  397 |   int res = internal_syscall(SYSCALL(fstat64), fd, &buf64);
      |                              ^~~~~~~
../../../../gcc-12.2.0/libsanitizer/sanitizer_common/sanitizer_linux.cpp: At global scope:
../../../../gcc-12.2.0/libsanitizer/sanitizer_common/sanitizer_linux.cpp:303:13: warning: 'void __sanitizer::kernel_stat_to_stat(kernel_stat*, stat*)' defined but not used [8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wunused-function-Wunused-function8;;]
  303 | static void kernel_stat_to_stat(struct kernel_stat *in, struct stat *out) {
      |             ^~~~~~~~~~~~~~~~~~~
mv -f .deps/sanitizer_mutex.Tpo .deps/sanitizer_mutex.Plo
make[4]: *** [Makefile:617: sanitizer_linux.lo] Error 1
mv -f .deps/sancov_flags.Tpo .deps/sancov_flags.Plo
../../../../gcc-12.2.0/libsanitizer/sanitizer_common/sanitizer_posix.cpp: In function '__sanitizer::fd_t __sanitizer::OpenFile(const char*, FileAccessMode, error_t*)':
../../../../gcc-12.2.0/libsanitizer/sanitizer_common/sanitizer_posix.cpp:162:27: warning: 'flags' may be used uninitialized [8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wmaybe-uninitialized-Wmaybe-uninitialized8;;]
  162 |   fd_t res = internal_open(filename, flags, 0660);
      |              ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
../../../../gcc-12.2.0/libsanitizer/sanitizer_common/sanitizer_posix.cpp:156:7: note: 'flags' was declared here
  156 |   int flags;
      |       ^~~~~
```
2023-04-26 21:50:15 -07:00
github-actions[bot]
3d3f04baba Merge staging-next into staging 2023-04-17 00:02:39 +00:00
Vladimír Čunát
cdf4c593d8 Merge #170215: powerpc64*: use --with-long-double-format=ieee
...into staging
2023-04-16 09:20:57 +02:00
Manuel Mendez
31d6802773 gnatboot: rename to gnat-bootstrap
Most other bootstrap compilers are named -bootstrap so lets follow that
pattern.
2023-04-15 18:52:14 -04:00
Artturi
a2da3d62a6 Merge pull request #225220 from amjoseph-nixpkgs/pr/gfortran/do-not-disable-bootstrap 2023-04-11 22:33:14 +03:00
Adam Joseph
e199e42538 Merge pull request #225595 from trofi/gcc-no-statx-fix
gcc: drop include-fixed/bits/statx.h
2023-04-11 17:45:49 +00:00
Adam Joseph
f06ab170fa gcc: never disableBootstrap for gfortran
As suggested by @trofi here:

  https://github.com/NixOS/nixpkgs/pull/209870#issuecomment-1500635687

This should fix failures among packages which use gfortran:

  https://github.com/NixOS/nixpkgs/pull/209870#issuecomment-1500550903
  https://hydra.nixos.org/build/215195834
2023-04-11 20:19:58 +03:00
Artturin
b1d4dfddaf Revert "julia{18,19,}: fix build by a temporary hack"
This reverts commit e2691227cd.
2023-04-11 20:19:58 +03:00
Sergei Trofimovich
84822c43fc gcc: drop include-fixed/bits/statx.h
At least on armv7l-linux bootstrapTools fixed version of bits/statx.h
breaks the header:
    https://github.com/NixOS/nixpkgs/pull/209870#issuecomment-1501201452

Drop the header along with other already cleaned ones.
2023-04-10 17:04:03 +01:00
Vladimír Čunát
e2691227cd julia{18,19,}: fix build by a temporary hack
This is a low-rebuild version of PR #225273
/cc the proper and hopefully complete fix in PR #225220
2023-04-10 16:36:55 +02:00
Adam Joseph
1b771711b6 gcc: do not --disable-bootstrap, create libgcc output, or create checksum output on Darwin 2023-04-05 21:36:09 -07:00
Adam Joseph
deda18bae8 gcc: only pass --with-long-double-format if gcc allows it 2023-04-05 15:54:38 -07:00
Adam Joseph
29b395309f gcc: make --with-long-double-format configurable by targetPlatform.gcc 2023-04-05 15:54:37 -07:00
Adam Joseph
40f7300227 gcc: if isPower64 && !isMusl use --with-long-double-format=ieee
Use IEEE-standard floating point on `powerpc64le` instead of
IBM-proprietary formats.  The GCC wiki has more details on the history
here:

  https://gcc.gnu.org/wiki/Ieee128PowerPC

Nixpkgs' stdenv has no legacy `powerpc64le` installs to deal with
(stdenv did not bootstrap on powerpc64le until very recenty), so it's
much easier decision for us.

Red Hat (i.e. IBM) has tried to do this in each of the last *six*
releases:

  https://fedoraproject.org/wiki/Changes/PPC64LE_Float128_Transition

they and finally shipped it in May with Fedora 36:

  https://bugzilla.redhat.com/show_bug.cgi?id=1649936

Apparently glibc 2.35 fixes the last blocker.

Co-authored-by: Sandro <sandro.jaeckel@gmail.com>
2023-04-05 15:52:43 -07:00
Vladimír Čunát
4eaca2b138 Merge #188492: glibc: 2.35-224 -> 2.37-8
...into staging
2023-04-03 20:29:07 +02:00