2
0
Fork 0

genodeSources: arch-independent ports

Do not apply the fixup phase to ports, patching script shebangs is
infecting the ports with the packages used to prepare the port.

Do not import the package versions from the genodeSources
derivation, this breaks "nix flake list".

Make the selection of packages from buildPackages more explicit.
This commit is contained in:
Emery Hemingway 2020-08-15 17:44:06 +02:00
parent c415f1ea13
commit f9958ba64b
3 changed files with 151 additions and 34 deletions

View File

@ -1,10 +1,10 @@
# SPDX-License-Identifier: CC0-1.0
{ buildPackages, targetPackages }:
with buildPackages;
let
version = "20.05";
# Update ./port-versions.nix bumping the version and updateing the sources.
platform = targetPackages.targetPlatform;
@ -16,6 +16,8 @@ let
else
throw "unknown Genode arch for platform ${platform.system}";
inherit (buildPackages) callPackage fetchurl lib;
genodeSources =
# The Genode source repository
let
@ -26,7 +28,8 @@ let
"genode-aarch64-"
else
throw "unknown tool prefix for Genode arch ${arch}";
in stdenvNoCC.mkDerivation {
in with buildPackages;
stdenvNoCC.mkDerivation {
pname = "genode-sources";
inherit version;
src = fetchurl {
@ -55,11 +58,6 @@ let
installPhase = "cp -a . $out";
};
toolchain = callPackage ./toolchain.nix { };
stdenv' =
targetPackages.stdenvAdapters.overrideCC targetPackages.stdenv toolchain;
preparePort =
# Prepare a "port" of source code declared in the Genode sources
name:
@ -67,8 +65,9 @@ let
, patches ? [ ], ... }@args:
let
havePatches = patches != [ ];
version = builtins.getAttr name (import "${genodeSources}/ports.nix");
in stdenvNoCC.mkDerivation (args // {
version = (import ./port-versions.nix).${name};
in with buildPackages;
stdenvNoCC.mkDerivation (args // {
name = name + "-port-" + version;
inherit version patches;
preferLocalBuild = true;
@ -79,7 +78,7 @@ let
VERBOSE = "";
# need to build in verbose mode because errors are hidden
impureEnvVars = stdenv'.lib.fetchers.proxyImpureEnvVars
impureEnvVars = lib.fetchers.proxyImpureEnvVars
++ [ "GIT_PROXY_COMMAND" "SOCKS_SERVER" ];
src = if havePatches then genodeSources else null;
@ -117,10 +116,17 @@ let
cp -a $CONTRIB_DIR/* $out/
runHook postInstall
'';
dontFixup = true;
});
ports = stdenv.lib.mapAttrs preparePort
(import ./ports.nix { inherit buildPackages; });
ports =
lib.mapAttrs preparePort (import ./ports.nix { inherit buildPackages; });
toolchain = callPackage ./toolchain.nix { };
stdenv' =
targetPackages.stdenvAdapters.overrideCC targetPackages.stdenv toolchain;
buildUpstream =
# Build from the Genode sources
@ -136,8 +142,8 @@ let
src = if havePatches then genodeSources else null;
dontUnpack = !havePatches;
nativeBuildInputs = [ binutils bison flex stdenv.cc tcl which ]
++ nativeBuildInputs;
nativeBuildInputs = with buildPackages;
[ binutils bison flex stdenv.cc tcl which ] ++ nativeBuildInputs;
configurePhase = let
linkPorts = toString
@ -166,7 +172,7 @@ let
runHook postInstall
'';
meta = { platforms = stdenv.lib.platforms.genode; } // meta;
meta = { platforms = lib.platforms.genode; } // meta;
});
buildDepot =
@ -179,8 +185,8 @@ let
inherit (genodeSources) version;
enableParallelBuilding = true;
nativeBuildInputs = [ binutils bison flex stdenv.cc tcl which ]
++ nativeBuildInputs;
nativeBuildInputs = with buildPackages;
[ binutils bison flex stdenv.cc tcl which ] ++ nativeBuildInputs;
src = genodeSources;
# The genode source tree must be copied to the build directory
@ -222,7 +228,7 @@ let
runHook postInstall
'';
meta = { platforms = stdenv.lib.platforms.genode; } // meta;
meta = { platforms = lib.platforms.genode; } // meta;
});
buildOverrides = callPackage ./targets.nix { inherit ports; };

View File

@ -0,0 +1,98 @@
# The file is generated by the "genodeSources" derivation.
{
acpica = "5c1c54";
ada-runtime = "db8987";
arora = "e8f003";
bash = "02edac";
bbl = "b9358c";
binutils = "62d309";
bzip2 = "f755da";
ccid = "7a9fb9";
coreutils = "0c59a9";
curl = "782b9a";
dde_bsd = "823dbe";
dde_ipxe = "b68f4e";
dde_linux = "173719";
dde_rump = "9afe56";
dde_zircon = "49e3d9";
diffutils = "ee502a";
drm = "01858a";
e2fsprogs = "2a09cd";
e2fsprogs-lib = "9b9fa0";
egl_api = "783c19";
expat = "eff6ef";
fatfs = "973b91";
ffi = "f406cb";
fiasco = "386db7";
findutils = "6707e8";
foc = "ce2d3e";
freetype = "35b677";
fribidi = "389935";
gcc = "20345a";
gcov = "a6f852";
gdb = "8eddf0";
getdns = "030233";
gmp = "855680";
gnupg = "c784d4";
grep = "b96a88";
grub2 = "8cf62c";
icu = "62f13b";
jbig2dec = "682269";
jitterentropy = "6017e1";
jpeg = "5effdd";
less = "e7a42c";
libarchive = "7ce310";
libc = "2e544d";
libdrm = "c1cce0";
libgcrypt = "37159a";
libiconv = "3f5ca3";
libpng = "ac05f3";
libsparkcrypto = "d479dc";
libssh = "a475cc";
libusb = "633358";
libyaml = "1cde80";
lighttpd = "0665ee";
lua = "db8c61";
lwip = "6e0661";
lz4 = "d99c3d";
make = "c8beff";
mesa = "6835d6";
microcode_intel = "027883";
mpc = "989fb4";
mpfr = "923771";
muen = "6ee775";
mupdf = "5b4925";
ncurses = "7873b9";
netperf = "7b5692";
nova = "e1ea2d";
okl4 = "cbf5e3";
openjpeg = "721d10";
openssl = "82ec04";
pcg-c = "721366";
pcre = "11003e";
pcsc-lite = "405b75";
pistachio = "68c8c3";
qemu-usb = "2ff18f";
qoost = "014d68";
qt5 = "084385";
qt5-host = "ad5edc";
readline = "a0bfb0";
sanitizer = "181889";
sed = "459979";
sel4 = "793548";
sel4_tools = "4ee1b9";
seoul = "e8d696";
solo5 = "55dd4f";
stb = "ab8f50";
stdcxx = "79ad88";
tar = "19aea4";
tcl = "842b1a";
ttf-bitstream-vera = "cd3684";
uboot = "f3fd6b";
vim = "53caaa";
virtualbox5 = "e93407";
which = "91c953";
x86emu = "8a1c3a";
xz = "45203f";
zlib = "f7aef1";
}

View File

@ -3,39 +3,52 @@
{ buildPackages }:
with buildPackages; {
dde_bsd.hash = "sha256-2ilZs6JkcQAvU/sQYnHunGtGRZDt7qLTpKZxQxSOf2I=";
dde_ipxe.hash = "sha256-7J8Loy3e79LAAARQgNixN4NT8lUktgkvl3tZQK+OlMM=";
dde_linux.hash = "sha256-ePNLGyr9A9udzuV5RPaQYjCDc/yns89Yp3h7vQkeBg4=";
binutils = {
hash = "sha256-gTYP9YNx+x6KVfIMjTD+UAReWwUg93TCkJIWwAau9eA=";
nativeBuildInputs = [ autoconf ];
};
dde_bsd.hash = "sha256-Z2piyoOrNmXyEEp+kX5w/q4JTylYdSOocUrFeqjz13A=";
dde_ipxe.hash = "sha256-NJ129+DkxFg1fFHJBABBFRRjqEVNSz6v2hEB80AuEM4=";
dde_linux.hash = "sha256-aUp90z8dtn48QNUqGe1b08RzbESFmCJl7ECZf+lr0rg=";
dde_rump = {
hash = "sha256-Wr5otGkWEa+5xImsFHQzwap5LckNEbyWA/7xbNcOreI=";
nativeBuildInputs = [ subversion ];
patches = [ ./svn-trust-server-cert.patch ];
};
expat.hash = "sha256-wkqqtYTctVLYZoYbFP1iWL0Xx/mMec40gVxk9amSywU=";
expat.hash = "sha256-KpeM2ySmf+Ojx1mAj9n8lfX7iHaa7w5MPPKZcn4GpTc=";
gcc = {
hash = "sha256-ZF9P6xOHvSDN6oq4SN5jOEBBMGgGh6fXyDOgYdXHG1g=";
nativeBuildInputs = [ autoconf264 autogen ];
patches = [ ./gcc-port.patch ];
};
gdb.hash = "sha256-YfVWDdXSRt7rHMvlMxIL5ikbHDe/e6ryTt3V7FfsJ4M=";
gmp.hash = "sha256-ZOHMhhqMe8glpMEGg++uDjCxXksAXDiBKCchEPQKTCA=";
jitterentropy.hash = "sha256-6KS732GxtUMz0xPYKtshdn039DgdJq11vTDQesZn4Ds=";
jpeg.hash = "sha256-NRcaGchA0DH2g5OkWBOiFK5co6lMpAo1ELqtxRUR3do=";
jpeg.hash = "sha256-RLVnlrnYGrhqr3Feikoi/BNditCaKN0u3t9/UDpl2wQ=";
libc = {
hash = "sha256-U9DdP0yZIDptgFRNv3QCxWoC4P3N6bqVr4YZi730Fec=";
hash = "sha256-ONmUhqY7rVtH6Z+K7VCY0OMLNi1SF1XCHFjiVY3MW3c=";
nativeBuildInputs = [ buildPackages.gcc ];
};
libiconv.hash = "sha256-HR19++jiYBnCO03EsfryUmVzukS874pE658gYivnMnI=";
libpng.hash = "sha256-BZI9UcKjP8u1/x8iroqqOyS1VEUZJLuE560W7J5PRGo=";
libiconv.hash = "sha256-25YcW5zo1fE33ZolGQroR+KZO8wHEdN1QXa7+MhwS78=";
libpng.hash = "sha256-hNmSWN4gEk4UIjzkGD4j5qFooMCVXLwcBeOeFumvh+4=";
libssh.hash = "sha256-Z/1YdhISh2kqBjWiTOLkS+usoeeekJvAuYrVUgpxnQM=";
lwip.hash = "sha256-Zsz+zGFRz9oacWCOGtZrCnXjJM1fT+iwW/RxR4kUX2I=";
lz4.hash = "sha256-BBo/ZoX0om5OdN148pFUL1JnD5iL2f9dq9x0zsWjyKI=";
lwip.hash = "sha256-RZsqy9iKiUfQzQOrPw2QWiKS5BkVbGe4HseF2DzeWeQ=";
lz4.hash = "sha256-nydkAbexaqcKYDzp0TsECKMXyPaoY9rf3MAbU33VPrg=";
mesa = {
hash = "sha256-5SHU4m3kMmi6Nfj4SBq2tO3mzsIBrRPz64dexjV4pYA=";
hash = "sha256-8QVIEpN+mLG1XktdZM64sqz1fVeK1pLVlERtnVphW8Y=";
nativeBuildInputs = [ python ];
};
mupdf.hash = "sha256-Q9uZDIguJDXPOWrQutwJvoQI8ds1MmhMH17GpGAl+Pk=";
openssl.hash = "sha256-K/flYHGOabnRplSLk13qej2prX5oILyHknNgRHlNtIY=";
mpc.hash = "sha256-MOs51NYXkNYxBG4d97/fMCx/iYzrNum8jHe3QujF24o=";
mpfr.hash = "sha256-TSZCAHU7Vtuo9Pbi7v7oDV5Wc6YBVICriR4IbErYW4Q=";
mupdf.hash = "sha256-6NX7zvOwReBBdz83RxGW2FJWUkqI/DTBkSOCqukidYs=";
openssl.hash = "sha256-epRL3SobYQ7xf8qwp6D5xu/Ms2T/LhUjjs273ywWRWg=";
qemu-usb.hash = "sha256-F4ZXeH5sx3FOcD42zFOxKFMsqGookKdav1NJ7YgVw98=";
stb.hash = "sha256-9LSH1i8jcEvjRAmTvgtK+Axy9hO7uiSzmSgBvs0zkTc=";
stdcxx.hash = "sha256-3pGfDRE+MMgM/ARmgktyIMnhJ/poe6NOfueBwehHDXQ=";
stdcxx.hash = "sha256-iiE009fL1yE3XJ7HkaJakOiS++m7qONwwGrdJjBXQ7k=";
virtualbox5 = {
hash = "sha256-lMcZYL60t+4zOPog8idB8Hd9sFoa1f83caoN9Rw15WU=";
hash = "sha256-HLga/0pHQkjdMH7mU194B7pTFJoOoww69Yii4Ixmkxo=";
nativeBuildInputs = [ iasl libxslt unzip yasm ];
};
x86emu.hash = "sha256-QY6OL+cDVjQ67JItP1rS4ufPRGZf43AZtWxwza/0q0w=";
zlib.hash = "sha256-lq1VaD9huqW7pwrAbujoPosDK43xMKS++5HQstgMfa0=";
zlib.hash = "sha256-j3JXN0f8thrPCvLhYHIPjbGa0t3iynQ/gO7KMlgljq0=";
}