2020-01-17 01:24:34 +01:00
|
|
|
# SPDX-License-Identifier: CC0-1.0
|
|
|
|
|
2019-10-28 20:19:52 +01:00
|
|
|
{
|
|
|
|
edition = 201909;
|
|
|
|
|
2019-11-05 17:38:47 +01:00
|
|
|
description = "Genode packages";
|
2019-10-28 20:19:52 +01:00
|
|
|
|
2020-03-26 13:33:36 +01:00
|
|
|
inputs.genode-depot.uri = "git+https://git.sr.ht/~ehmry/genode-depot";
|
2019-10-28 20:19:52 +01:00
|
|
|
|
2020-03-24 13:47:30 +01:00
|
|
|
outputs = { self, genode-depot, nixpkgs }:
|
2019-11-05 17:38:47 +01:00
|
|
|
let
|
2019-12-20 08:38:34 +01:00
|
|
|
localSystems = [ "x86_64-linux" ];
|
|
|
|
crossSystems = [ "x86_64-genode" ];
|
|
|
|
|
2020-03-21 17:08:37 +01:00
|
|
|
forAllLocalSystems = f:
|
|
|
|
nixpkgs.lib.genAttrs localSystems (system: f system);
|
|
|
|
|
2019-12-20 08:38:34 +01:00
|
|
|
forAllCrossSystems = f:
|
|
|
|
with builtins;
|
|
|
|
let
|
|
|
|
f' = localSystem: crossSystem:
|
|
|
|
let system = localSystem + "-" + crossSystem;
|
|
|
|
in {
|
|
|
|
name = system;
|
|
|
|
value = f { inherit system localSystem crossSystem; };
|
|
|
|
};
|
|
|
|
list = nixpkgs.lib.lists.crossLists f' [ localSystems crossSystems ];
|
|
|
|
attrSet = listToAttrs list;
|
|
|
|
in attrSet;
|
|
|
|
|
2020-03-21 17:08:37 +01:00
|
|
|
forAllSystems = f:
|
|
|
|
(forAllCrossSystems f) // (forAllLocalSystems (system:
|
|
|
|
f {
|
|
|
|
inherit system;
|
|
|
|
localSystem = system;
|
|
|
|
crossSystem = system;
|
|
|
|
}));
|
|
|
|
|
|
|
|
nixpkgsFor = forAllSystems ({ system, localSystem, crossSystem }:
|
|
|
|
if localSystem == crossSystem then
|
2020-03-24 13:47:30 +01:00
|
|
|
import nixpkgs {
|
2020-03-21 17:08:37 +01:00
|
|
|
inherit system;
|
|
|
|
overlays = [ self.overlay ];
|
|
|
|
}
|
|
|
|
else
|
|
|
|
import nixpkgs {
|
2020-03-24 13:47:30 +01:00
|
|
|
inherit localSystem;
|
|
|
|
crossSystem = {
|
|
|
|
system = crossSystem;
|
|
|
|
useLLVM = true;
|
|
|
|
};
|
2020-03-21 17:08:37 +01:00
|
|
|
config.allowUnsupportedSystem = true;
|
|
|
|
overlays = [ self.overlay ];
|
|
|
|
});
|
|
|
|
|
|
|
|
in rec {
|
|
|
|
|
|
|
|
overlay = import ./overlay;
|
|
|
|
|
|
|
|
lib = forAllCrossSystems ({ system, localSystem, crossSystem }:
|
2020-04-05 19:54:03 +02:00
|
|
|
nixpkgs.lib // (import ./lib {
|
2020-03-21 17:08:37 +01:00
|
|
|
inherit system localSystem crossSystem;
|
|
|
|
apps = self.apps.${system};
|
|
|
|
genodepkgs = self;
|
2020-04-05 19:54:03 +02:00
|
|
|
nixpkgs = nixpkgsFor.${system};
|
2020-03-21 17:08:37 +01:00
|
|
|
}));
|
|
|
|
|
|
|
|
legacyPackages = forAllSystems
|
|
|
|
({ system, localSystem, crossSystem }: nixpkgsFor.${system});
|
|
|
|
# pass thru Nixpkgs
|
|
|
|
|
|
|
|
packages = forAllCrossSystems ({ system, localSystem, crossSystem }:
|
2020-04-02 09:06:18 +02:00
|
|
|
nixpkgsFor.${system}.genodePackages);
|
2020-03-21 17:08:37 +01:00
|
|
|
|
|
|
|
devShell = forAllLocalSystems (system:
|
2019-12-20 08:38:34 +01:00
|
|
|
let
|
2020-03-21 17:08:37 +01:00
|
|
|
pkgs = nixpkgsFor.${system};
|
|
|
|
fhs = pkgs.buildFHSUserEnv {
|
|
|
|
name = "genode-env";
|
|
|
|
targetPkgs = pkgs:
|
|
|
|
(with pkgs; [
|
|
|
|
binutils
|
|
|
|
bison
|
|
|
|
expect
|
|
|
|
flex
|
|
|
|
git
|
|
|
|
glibc.dev
|
|
|
|
gnumake
|
|
|
|
libxml2
|
|
|
|
qemu
|
|
|
|
tcl
|
|
|
|
which
|
|
|
|
xorriso
|
|
|
|
]);
|
|
|
|
runScript = "bash";
|
|
|
|
extraBuildCommands = let
|
|
|
|
toolchain = pkgs.fetchzip {
|
2020-03-24 13:47:30 +01:00
|
|
|
url =
|
|
|
|
"file://${packages.x86_64-linux-x86_64-genode.genodeSources.toolchain.src}";
|
2020-03-21 17:08:37 +01:00
|
|
|
hash = "sha256-26rPvLUPEJm40zLSqTquwuFTJ1idTB0T4VXgaHRN+4o=";
|
|
|
|
};
|
|
|
|
in "ln -s ${toolchain}/local usr/local";
|
2019-12-02 16:39:52 +01:00
|
|
|
};
|
2020-03-21 17:08:37 +01:00
|
|
|
in pkgs.stdenv.mkDerivation {
|
|
|
|
name = "genode-fhs-shell";
|
|
|
|
nativeBuildInputs = [ fhs ];
|
|
|
|
shellHook = "exec genode-env";
|
|
|
|
});
|
|
|
|
|
2020-03-24 13:47:30 +01:00
|
|
|
apps = let
|
|
|
|
apps' = forAllCrossSystems ({ system, localSystem, crossSystem }:
|
|
|
|
import ./apps {
|
|
|
|
self = self.apps.${system};
|
2020-04-05 10:01:11 +02:00
|
|
|
nixpkgs = nixpkgsFor.${system};
|
2020-03-24 13:47:30 +01:00
|
|
|
nixpkgsLocal = nixpkgsFor.${localSystem};
|
|
|
|
packages = self.packages.${system};
|
|
|
|
});
|
|
|
|
in apps' // { x86_64-linux = apps'.x86_64-linux-x86_64-genode; };
|
|
|
|
|
|
|
|
checks = let
|
|
|
|
checks' = forAllCrossSystems ({ system, localSystem, crossSystem }:
|
|
|
|
import ./tests {
|
|
|
|
apps = self.apps.${system};
|
2020-04-05 19:54:03 +02:00
|
|
|
buildPackages = nixpkgsFor.${localSystem};
|
|
|
|
depot = genode-depot.packages.${system};
|
2020-03-24 13:47:30 +01:00
|
|
|
genodepkgs = self.packages.${system};
|
2020-04-05 19:54:03 +02:00
|
|
|
lib = self.lib.${system};
|
|
|
|
nixpkgs = nixpkgsFor.${system};
|
2020-03-24 13:47:30 +01:00
|
|
|
});
|
|
|
|
in checks' // { x86_64-linux = checks'.x86_64-linux-x86_64-genode; };
|
2020-03-21 17:08:37 +01:00
|
|
|
};
|
2019-10-28 20:19:52 +01:00
|
|
|
}
|