uboot: (firmwareOdroidC2/C4) don't invoke patch tool, use patches = [] instead
https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/setup.sh#L948 this can do it nicely. Signed-off-by: Anton Arapov <anton@deadbeef.mx>
This commit is contained in:
commit
56de2bcd43
30691 changed files with 3076956 additions and 0 deletions
90
pkgs/development/tools/build-managers/gprbuild/boot.nix
Normal file
90
pkgs/development/tools/build-managers/gprbuild/boot.nix
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
{ stdenv
|
||||
, lib
|
||||
, fetchFromGitHub
|
||||
, gnat
|
||||
, which
|
||||
, xmlada # for src
|
||||
}:
|
||||
|
||||
let
|
||||
version = "22.0.0";
|
||||
|
||||
gprConfigKbSrc = fetchFromGitHub {
|
||||
name = "gprconfig-kb-${version}-src";
|
||||
owner = "AdaCore";
|
||||
repo = "gprconfig_kb";
|
||||
rev = "v${version}";
|
||||
sha256 = "0zvd0v5cz0zd1hfnhdd91c6sr3bbv1w715j2gvzx3vxlpx1c2q4n";
|
||||
};
|
||||
in
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "gprbuild-boot";
|
||||
inherit version;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
name = "gprbuild-${version}";
|
||||
owner = "AdaCore";
|
||||
repo = "gprbuild";
|
||||
rev = "v${version}";
|
||||
sha256 = "0rv0ha0kxzab5hhv0jzkjkmchhlvlx8fci8xalnngrgb9nd4r3v8";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
gnat
|
||||
which
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
# The Makefile uses gprbuild to build gprbuild which
|
||||
# we can't do at this point, delete it to prevent the
|
||||
# default phases from failing.
|
||||
rm Makefile
|
||||
|
||||
# make sure bootstrap script runs
|
||||
patchShebangs --build bootstrap.sh
|
||||
'';
|
||||
|
||||
# This setupHook populates GPR_PROJECT_PATH which is used by
|
||||
# gprbuild to find dependencies. It works quite similar to
|
||||
# the pkg-config setupHook in the sense that it also splits
|
||||
# dependencies into GPR_PROJECT_PATH and GPR_PROJECT_PATH_FOR_BUILD,
|
||||
# but gprbuild itself doesn't support this, so we'll need to
|
||||
# introducing a wrapper for it in the future remains TODO.
|
||||
# For the moment this doesn't matter since we have no situation
|
||||
# were gprbuild is used to build something used at build time.
|
||||
setupHook = ./gpr-project-path-hook.sh;
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
./bootstrap.sh \
|
||||
--with-xmlada=${xmlada.src} \
|
||||
--with-kb=${gprConfigKbSrc} \
|
||||
--prefix=$out
|
||||
|
||||
# Install custom compiler description which can detect nixpkgs'
|
||||
# GNAT wrapper as a proper Ada compiler. The default compiler
|
||||
# description expects the runtime library to be installed in
|
||||
# the same prefix which isn't the case for nixpkgs. As a
|
||||
# result, it would detect the unwrapped GNAT as a proper
|
||||
# compiler which is unable to produce working binaries.
|
||||
#
|
||||
# Our compiler description is very similar to the upstream
|
||||
# GNAT description except that we use a symlink in $out/nix-support
|
||||
# created by the cc-wrapper to find the associated runtime
|
||||
# libraries and use gnatmake instead of gnatls to find GNAT's
|
||||
# bin directory.
|
||||
install -m644 ${./nixpkgs-gnat.xml} $out/share/gprconfig/nixpkgs-gnat.xml
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Multi-language extensible build tool";
|
||||
homepage = "https://github.com/AdaCore/gprbuild";
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = [ maintainers.sternenseemann ];
|
||||
platforms = platforms.all;
|
||||
};
|
||||
}
|
||||
65
pkgs/development/tools/build-managers/gprbuild/default.nix
Normal file
65
pkgs/development/tools/build-managers/gprbuild/default.nix
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, fetchpatch
|
||||
, gprbuild-boot
|
||||
, which
|
||||
, gnat
|
||||
, xmlada
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "gprbuild";
|
||||
|
||||
# See ./boot.nix for an explanation of the gprbuild setupHook,
|
||||
# our custom knowledge base entry and the situation wrt a
|
||||
# (future) gprbuild wrapper.
|
||||
inherit (gprbuild-boot)
|
||||
version
|
||||
src
|
||||
setupHook
|
||||
meta
|
||||
;
|
||||
|
||||
nativeBuildInputs = [
|
||||
gnat
|
||||
gprbuild-boot
|
||||
which
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
xmlada
|
||||
];
|
||||
|
||||
makeFlags = [
|
||||
"ENABLE_SHARED=${if stdenv.hostPlatform.isStatic then "no" else "yes"}"
|
||||
"PROCESSORS=$(NIX_BUILD_CORES)"
|
||||
# confusingly, for gprbuild --target is autoconf --host
|
||||
"TARGET=${stdenv.hostPlatform.config}"
|
||||
"prefix=${placeholder "out"}"
|
||||
] ++ lib.optionals (!stdenv.hostPlatform.isStatic) [
|
||||
"LIBRARY_TYPE=relocatable"
|
||||
];
|
||||
|
||||
# Fixes gprbuild being linked statically always
|
||||
patches = lib.optional (!stdenv.hostPlatform.isStatic) (fetchpatch {
|
||||
name = "gprbuild-relocatable-build.patch";
|
||||
url = "https://aur.archlinux.org/cgit/aur.git/plain/relocatable-build.patch?h=gprbuild&id=1d4e8a5cb982e79135a0aaa3ef87654bed1fe4f0";
|
||||
sha256 = "1r3xsp1pk9h666mm8mdravkybmd5gv2f751x2ffb1kxnwq1rwiyn";
|
||||
});
|
||||
|
||||
buildFlags = [ "all" "libgpr.build" ];
|
||||
|
||||
installFlags = [ "all" "libgpr.install" ];
|
||||
|
||||
# link gprconfig_kb db from gprbuild-boot into build dir,
|
||||
# the install process copies its contents to $out
|
||||
preInstall = ''
|
||||
ln -sf ${gprbuild-boot}/share/gprconfig share/gprconfig
|
||||
'';
|
||||
|
||||
# no need for the install script
|
||||
postInstall = ''
|
||||
rm $out/doinstall
|
||||
'';
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
addAdaObjectsPath() {
|
||||
local role_post
|
||||
getHostRoleEnvHook
|
||||
|
||||
addToSearchPath "GPR_PROJECT_PATH${role_post}" "$1/share/gpr"
|
||||
}
|
||||
|
||||
addEnvHooks "$targetOffset" addAdaObjectsPath
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
<?xml version="1.0" ?>
|
||||
<gprconfig>
|
||||
<!-- This differs from the default GNAT compiler description
|
||||
in the following ways:
|
||||
|
||||
* gnatmake is used over gnatls to detect the GNAT version
|
||||
since the latter is not part of the wrapper.
|
||||
* to find the runtime libraries, we rely on the symlink
|
||||
../nix-support/gprconfig-gnat-unwrapped which is a
|
||||
gprconfig-specific addition to the cc-wrapper we employ
|
||||
for Ada compilers (which is only GNAT at the moment).
|
||||
|
||||
For documentation on this file format and its use refer to
|
||||
https://docs.adacore.com/gprbuild-docs/html/gprbuild_ug/companion_tools.html#the-gprconfig-knowledge-base
|
||||
-->
|
||||
<compiler_description>
|
||||
<!-- We would like to name this something different, so users
|
||||
of gprconfig know this is something custom, nixpkgs-related,
|
||||
but unfortunately the knowledge base depends on the name of
|
||||
the compiler for e. g. linker settings.
|
||||
-->
|
||||
<name>GNAT</name>
|
||||
<executable prefix="1">(.*-.*-.*)?gnatmake</executable>
|
||||
<version>
|
||||
<external>${PREFIX}gnatmake -v</external>
|
||||
<grep regexp="^GNATMAKE.+?(\d+(\.\d+)?)" group="1"></grep>
|
||||
</version>
|
||||
<languages>Ada</languages>
|
||||
<variable name="gcc_version">
|
||||
<external>${PREFIX}gcc -v</external>
|
||||
<grep regexp="^[-\w]*gcc \S+ (\S+)" group="1"></grep>
|
||||
</variable>
|
||||
<!-- The ada runtime libraries and objects are only part of the unwrapped
|
||||
GNAT derivation. We can't symlink them into the wrapper derivation
|
||||
(at least not the canonical location) since that screws with linking
|
||||
against libraries distributed with gcc.
|
||||
|
||||
As a workaround, we create a symlink to the unwrapped GNAT's "out"
|
||||
output in the cc-wrapper which we can read into a variable here and
|
||||
use to find GNAT's Ada runtime.
|
||||
-->
|
||||
<variable name="gnat_unwrapped">
|
||||
<external>readlink -n ${PATH}/../nix-support/gprconfig-gnat-unwrapped</external>
|
||||
</variable>
|
||||
<runtimes default="default,kernel,native">
|
||||
<directory group="default" >$gnat_unwrapped/lib/gcc(-lib)?/$TARGET/$gcc_version/adalib/</directory>
|
||||
<directory group="default" contents="^rts-">$gnat_unwrapped/lib/gcc(-lib)?/$TARGET/$gcc_version/ada_object_path</directory>
|
||||
<directory group="2" >$gnat_unwrapped/lib/gcc(-lib)?/$TARGET/$gcc_version/rts-(.*)/adalib/</directory>
|
||||
<directory group="1" >$gnat_unwrapped/$TARGET/lib/gnat/(.*)/adalib/</directory>
|
||||
</runtimes>
|
||||
<target>
|
||||
<external>${PREFIX}gcc -dumpmachine</external>
|
||||
<grep regexp="[^\r\n]+"></grep>
|
||||
</target>
|
||||
</compiler_description>
|
||||
</gprconfig>
|
||||
Loading…
Add table
Add a link
Reference in a new issue