nixpkgs/pkgs/development/tools/build-managers
sternenseemann c3c4ef859a gprbuild, xmlada: init at 21.0.0
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).
2021-08-03 14:58:49 +02:00
..
alibuild
apache-ant various: cleanup of "inherit version;" 2021-07-18 00:19:24 +02:00
apache-maven maven: 3.6.3 -> 3.8.1 2021-04-27 15:19:20 +02:00
arpa2cm
bam bam: use python3 2021-03-25 10:29:14 +01:00
bazel bazel-remote: 2.1.0 -> 2.1.1 2021-06-24 05:12:00 +00:00
bear bear: 3.0.12 -> 3.0.13 2021-06-27 14:52:45 +00:00
bloop
bmake bmake: enable ksh test on non musl platforms 2021-07-04 20:20:42 +02:00
boot update homepage link 2021-07-05 23:36:42 +03:00
buck buck: use jdk8 2021-04-24 11:25:35 -07:00
cmake cmake: don't use meta.homepage in fetchurl 2021-07-20 23:57:01 +02:00
colormake
conan Merge pull request #129137 from bjornfor/fix-conan 2021-07-04 13:12:03 +02:00
corrosion corrosion: init at unstable-2021-02-23 2021-03-31 17:06:13 +02:00
drake
dub dub: Add possibility to switch D compiler and compile with ldc per default instead of dmd 2021-03-18 17:29:49 +02:00
fac treewide: fix cargoSha256/cargoHash 2021-05-08 00:36:37 -07:00
gn
gnumake Merge master into staging-next 2021-07-18 06:01:33 +00:00
gprbuild gprbuild, xmlada: init at 21.0.0 2021-08-03 14:58:49 +02:00
gradle gradle: 7.0 -> 7.1 2021-07-01 15:01:43 +03:00
gup reuse version variable 2021-06-11 21:49:20 +10:00
icmake
jam development: /s/name/pname&version/ 2021-06-30 09:45:11 +02:00
kati
leiningen leiningen: 2.9.5 -> 2.9.6 2021-05-14 10:11:41 +02:00
mage
meson
mill mill: 0.9.8 -> 0.9.9 2021-07-20 13:07:35 -07:00
mk development: /s/name/pname&version/ 2021-06-30 09:45:11 +02:00
msbuild Merge pull request #107977 from corngood/msbuild 2021-04-12 20:09:16 +02:00
ninja
pants
qbs treewide: remove unnecessary enableParallelBuilding when using qmake 2021-07-20 10:32:58 +07:00
rake
rebar various: cleanup of "inherit version;" 2021-07-18 00:19:24 +02:00
rebar3 rebar3: apply tmpdir patch from upstream 2021-07-30 21:24:57 +09:00
redo development: /s/name/pname&version/ 2021-06-30 09:45:11 +02:00
redo-apenwarr
redo-c redo: Set CFLAGS only if not defined 2021-07-04 19:39:05 +02:00
redo-sh
remake remake: 4.1 -> 4.3 (#119737) 2021-04-21 03:18:35 +02:00
rocm-cmake Remove danieldk as a maintainer for some packages 2021-07-03 12:14:20 +02:00
samurai
sbt sbt: 1.5.3 -> 1.5.4 2021-06-15 06:12:50 +02:00
sbt-extras sbt-extras: 2021-04-06 → 2021-04-26 2021-04-28 14:39:10 +00:00
scons scons: Remove myself as maintainer 2021-05-30 15:22:55 +02:00
shards shards: 0.14.0 -> 0.14.1 2021-03-20 14:07:40 +08:00
tup tup: 0.7.10 -> 0.7.11 2021-05-15 22:24:01 +02:00
waf waf: 2.0.20 -> 2.0.22 2021-03-20 09:22:04 +01:00
wafHook