This "-D__nonnull\\(params\\)=" leads to a compilation failure in e.g.
the configure phase:
configure:21131: gcc -c -D__nonnull\(params\)= conftest.c >&5
<command-line>: warning: ISO C99 requires whitespace after the macro name
<command-line>: error: stray '\' in program
<command-line>: error: expected ',' or ';' before '(' token
<command-line>: error: stray '\' in program
According to the commit this isn't even needed on Linux.
I confirmed that this is an (expectable) glibc-2.34 thing by checking
that
* the issue doesn't occur with gcc 10/11 on a recent glibc-2.33 staging.
* the issue DOES occur in a docker container with Fedora rawhide (which
has glibc 2.34 and gcc 11).
Linking via `-lpthread` (or `-pthread`) is not needed anymore since
`glibc-2.34` since all the functionality is part of `libc.so.6` and
`libpthread.so.6` only exists for backwards-compatibility.
However, e.g. `gcc` (`libgomp` to be precise) expects a `libpthread.so`
to link against, otherwise the configure script will fail. As already
stated in the glibc release-notes itself, it is to expect that a lot
more applications will have issues with this, so I decided to re-add
`libpthread.so` as well.
For `librt.so.1`, the same thing is needed to make sure that Perl still
compiles:
/nix/store/d6y5r7m93x14bmgn2p75fannz39jz66f-binutils-2.35.1/bin/ld: cannot find -lrt
collect2: error: ld returned 1 exit status
make[1]: *** [Makefile:490: ../../lib/auto/Time/HiRes/HiRes.so] Error 1
make[1]: Leaving directory '/build/perl-5.34.0/dist/Time-HiRes'
This fix is needed to work around linker-errors such as
undefined reference to `__libc_csu_fini'
which I got in almost every derivation which is part of stage2. The
reasoning behind this is that the startup-code was simplified[1] and
thus `__libc_csu_fini` doesn't exist anymore.
A workable solution is to use a newer libc which properly links in
stage3. And actually this seems expected given the rationale for stage3:
# Construct a third stdenv identical to the 2nd, except that this
# one uses the rebuilt Glibc from stage2. It still uses the recent
# binutils and rest of the bootstrap tools, including GCC.
So this patch basically overrides the libraries inside `gcc-unwrapped` -
which is basically the bootstrap tools and thus also contains the libc
used in stage3 - with the shared objects from the freshly built libc
from stage2.
[1] https://sourceware.org/pipermail/libc-alpha/2021-March/123079.html
Update version to 1.4.231.
Build 231 points to a specific commit from the 1.4.x branch adding many
fixes and improvements. Since this version is an unofficial release, add
an unstable prefix to the version string in Nixpkgs.
Signed-off-by: Felix Singer <felixsinger@posteo.net>
Signed-off-by: Franz Pletz <fpletz@fnordicwalking.de>
The required modifications in the postInstall phase are only applied on
Linux and the test currently fails on Darwin:
https://github.com/NixOS/nixpkgs/runs/5344236204
> building '/nix/store/45s58pv9j6a19wr9izx49s6i0i4qshxs-mesa-dev-does-not-depend-on-llvm.drv'...
> error: output '/nix/store/czmszfcwdx87vx2wf80lhp3h9skqqcfs-mesa-dev-does-not-depend-on-llvm' is not allowed to refer to the following paths:
> /nix/store/cwb5g57al7iizw456ah9rk49cxb47wi3-mesa-21.3.7-drivers
protobuf generation is not thread safe
```
> ./ortools/scheduling/rcpsp_parser.h:24:10: fatal error: ortools/scheduling/rcpsp.pb.h: No such file or directory
> 24 | #include "ortools/scheduling/rcpsp.pb.h"
```