From f9958ba64bbbdf819d0a784c4ba476ed4df68660 Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Sat, 15 Aug 2020 17:44:06 +0200 Subject: [PATCH] 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. --- packages/genodelabs/default.nix | 42 +++++++----- packages/genodelabs/port-versions.nix | 98 +++++++++++++++++++++++++++ packages/genodelabs/ports.nix | 45 +++++++----- 3 files changed, 151 insertions(+), 34 deletions(-) create mode 100644 packages/genodelabs/port-versions.nix diff --git a/packages/genodelabs/default.nix b/packages/genodelabs/default.nix index de8f4d1..0348c2f 100644 --- a/packages/genodelabs/default.nix +++ b/packages/genodelabs/default.nix @@ -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; }; diff --git a/packages/genodelabs/port-versions.nix b/packages/genodelabs/port-versions.nix new file mode 100644 index 0000000..d52ade0 --- /dev/null +++ b/packages/genodelabs/port-versions.nix @@ -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"; +} diff --git a/packages/genodelabs/ports.nix b/packages/genodelabs/ports.nix index f819096..c260a15 100644 --- a/packages/genodelabs/ports.nix +++ b/packages/genodelabs/ports.nix @@ -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="; }