- boost 167 removed on staging-next (7915d1e03f) × boost attributes are inherited on staging (d20aa4955d)
- linux kernels were moved to linux-kernels.nix on staging-next (c62f911507) × hardened kernels are versioned on staging (a5341beb78) + removed linux_5_12 (e55554491d)
- conflict in node-packages – I regenerated it using node2nix from nixos-unstable (does not build on staging)
This allows users of scons to pick the correct version of python.
Previously we had issues with some build systems not picking the right
python3 version when adding additional python modules to the build
environment. A famous example of this is mongodb where additional python
modules are required to run the scons build.
This is change doesn't introduce rebuilds (to the best of my knowledge)
as it only adds a passthru argument and changes how we pass the python
version around.
Adds the SystemConfiguration framework to buildInputs unless we're
bootstrapping.
For the bootstrap version, we revert
31f631a142
instead so CMake builds without SystemConfiguration.
GPRbuild is a multi language build system developed by AdaCore which
is mostly used for build Ada-related projects using GNAT.
Since GPRbuild is used to build itself and its dependency library
XML/Ada we first build a bootstrap version of it using the provided
bash build script bootstrap.sh as the gprbuild-boot derivation.
gprbuild-boot is then used to build xmlada and the proper gprbuild
derivation.
GPRbuild has its own search path mechanism via GPR_PROJECT_PATH which
we address via a setupHook. It currently works quite similar to the
pkg-config one: It accumulates all inputs into GPR_PROJECT_PATH,
GPR_PROJECT_PATH_FOR_BUILD etc. However this is quite limited at the
moment as we don't have a gprbuild wrapper yet which understands the
_FOR_BUILD suffix. However, we'll need to address this in the future
as it is currently basically impossible to test since the distinction
only affects cross-compilation, but it is not possible to build a GNAT
cross-compiler in nixpkgs at the moment (I'm working on changing that,
however).
Another issue we had to solve was GPRbuild not finding the right GNAT
via its gprconfig tool: GPRbuild has a knowledge base with compiler
definitions which run some checks and collect info about binaries
which are in PATH. In the end the first compiler in PATH that supports
the desired language is selected.
We want GPRbuild to discover our wrapped GNAT since the unwrapped one
is incapable of producing working binaries since it won't find the
crt*.o objects distributed with libc. GPRbuild however needs to find
the Ada runtime distributed with GNAT which is not part of the wrapper
derivation, so it will skip the wrapper and select the unwrapped GNAT.
Symlinking the unwrapped's lib directory into the wrapper fixes this
problem, but breaks linking in some cases (e. g. when linking against
OMP from gcc, the runtime variant will shadow the problem dynamic lib
from buildInputs). Additionally it uses gnatls as an indicator it has
found GNAT which is not part of the wrapper.
The solution we opted to adopt here is to install a custom compiler
description into gprbuild's knowledge base which properly detects the
nixpkgs GNAT wrapper: It uses gnatmake to detect GNAT instead of
gnatls and discovers the runtime via a symlink we add to
`$out/nix-support`. This additional definition is enough to properly
detect GNAT, since the plain wrapped gcc detection works out of the
box. It may, however, be necessary to add special definitions for
other languages in the future where gprbuild also needs to discover
the runtime.
One future improvement would be to install libgpr into a separate
output or split it into a separate derivation (which would require to
link gprbuild statically always since otherwise we end up with a
cyclical dependency).
cmake on darwin now depends on the SystemConfiguration framework.
Support for this has not yet been added to our bootstrapping.
We need to decide how to go further. As this is blocking staging-next
it is reverted.
This reverts commit 29bbaa1489.
Also removing a comment that instructs maintainers to cross-check
the hash with one that is posted upstream, because as @lilyball
reasoned:
"I'm not really sure what the benefit of comparing the hash is; if the
download is tampered with, the hash is served from the same site and
would presumably be tampered with as well, and the download is done over
https and declares its Content-Length so there's no risk of truncation
(which would cause the file to fail to unpack anyway)"
bmake runs the ksh test if /bin/ksh exists. This is never a good
indication on platforms where we can sandbox and causes problems on
darwin where this path may exist, but never would be in PATH.
We solve this problem by always enabling the test and adding ksh to
checkInputs.
ksh doesn't seem to compile with musl, so we disable it on that
platform.
conan needs jinja2<3 and six<=1.15.0. Adding six to packageOverrides
results in this build error:
$ nix-build -A conan
...
Found duplicated packages in closure for dependency 'six':
six 1.16.0 (/nix/store/zn4haxpv5j9ilccvw7vxxwbfb84vhl5i-python3.8-six-1.16.0/lib/python3.8/site-packages)
six 1.15.0 (/nix/store/8nkfc88xal8g91hfjsxq93b6pfydq2d7-python3.8-six-1.15.0/lib/python3.8/site-packages)
As the changes in six-1.16.0 look harmless, work around the above issue
by allowing conan to use six-1.16.0.
- AMD GPU packages: AMD removed support for the RX5x0 GPUs from ROCm, so
I cannot test these packages anymore.
- A small number of GUI packages: I switched back to macOS on the
desktop for work reasons, so I cannot easily test these.
- broot: I took over maintainership from someone else, but do not really
use broot.
These are all read from the environment by the default bmake
stdlib (e.g. <bsd.prog.mk>, <bsd.own.mk>). Some of the default
values (like building cat pages instead of man pages, or stripping
binaries when installing) don't really make sense for Nixpkgs, so we
override them here for every build using bmake.
Eventually I'd like to unify the bmake setupHook and the NetBSD make
setupHook, but not today.
By default, the cmake derivation contains the documentation in .rst
format. This format is not well suited for interactive use. Therefore,
we add both man and info outputs and convert the documentation to
these formats using Sphinx.
These formats are enabled by default only in cmake versions for
interactive use (ncurses, Qt), because using Sphinx in the basic
version leads to circular dependency (infinite recursion). Namely,
Sphinx has imagemagick in its checkInputs and imagemagick has several
transitive dependencies, which have cmake in nativeBuildInputs.
* Fix varmod-localtime test by setting TZ to an absolute path to the
appropriate file in TZDIR. This avoids having an extra patch for musl
which doesn't support TZDIR at all.
* Move tests into checkPhase by applying patch from alpine
* Fix build with musl by disabling deptgt-delete_on_error test (which I
haven't debugged myself, just copied this from alpine) and fixing a
test which fails due to differing output from strerror(3) between musl
and glibc. Also we need to add a shebang to install-sh, otherwise it
won't be executed in pkgsMusl.
Rust 1.50.0 incorporated a Cargo change (rust-lang/cargo#8937) in
which cargo vendor erroneously changed permissions of vendored
crates. This was fixed in Rust
1.51.0 (rust-lang/cargo#9131). Unfortunately, this means that all
cargoSha256/cargoHashes produced during the Rust 1.50.0 cycle are
potentially broken.
This change updates cargoSha256/cargoHash tree-wide.
Fixes#121994.
Pin pyjwt to 1.7.1 (the last of the 1.x series) to fix building conan:
ERROR: Could not find a version that satisfies the requirement PyJWT<2.0.0,>=1.4.0 (from conan)
Ref. upstream issue https://github.com/conan-io/conan/issues/8876.
Also begin to start work on cross compilation, though that will have to
be finished later.
The patches are based on the first version of
https://reviews.llvm.org/D99484. It's very annoying to do the
back-porting but the review has uncovered nothing super major so I'm
fine sticking with what I've got.
Beyond making the outputs work, I also strove to re-sync the packages,
as they have been drifting pointlessly apart for some time.
----
Other misc notes, highly incomplete
- lvm-config-native and llvm-config are put in `dev` because they are
tools just for build time.
- Clang no longer has an lld dep. That was introduced in
db29857eb3, but if clang needs help
finding lld when it is used we should just pass it flags / put in the
resource dir. Providing it at build time increases critical path
length for no good reason.
----
A note on `nativeCC`:
`stdenv` takes tools from the previous stage, so:
1. `pkgsBuildBuild`: `(?1, x, x)`
2. `pkgsBuildBuild.stdenv.cc`: `(?0, ?1, x)`
while:
1. `pkgsBuildBuild`: `(?1, x, x)`
2. `pkgsBuildBuild.targetPackages`: `(x, x, ?2)`
3. `pkgsBuildBuild.targetPackages.stdenv.cc`: `(?1, x, x)`
With this change,
nativeBuildInputs = [ bmake ];
will cause bmake to be used instead of GNU make, but with the usual
stdenv API. Packages using bmake will no longer need to implement
their own {build,check,dist}Phase.