Build more packages using upstream build system
- Implement support for "ports" - Update Nixpkgs to use Genode 20.02 - Remove packaging of forked Genode
This commit is contained in:
parent
ee580c30e2
commit
a61c3532e8
|
@ -7,8 +7,8 @@ nixpkgs.writeScriptBin "linux-image" (with nixpkgs.buildPackages; ''
|
||||||
set -eu
|
set -eu
|
||||||
export DHALL_PRELUDE=''${DHALL_PRELUDE:-${packages.dhallPrelude}/package.dhall}
|
export DHALL_PRELUDE=''${DHALL_PRELUDE:-${packages.dhallPrelude}/package.dhall}
|
||||||
export DHALL_GENODE=''${DHALL_GENODE:-${packages.dhallGenode}/package.dhall}
|
export DHALL_GENODE=''${DHALL_GENODE:-${packages.dhallGenode}/package.dhall}
|
||||||
export BASE_LINUX_MANIFEST=''${BASE_LINUX_MANIFEST:-${packages.genode.base-linux.manifest}}
|
export BASE_LINUX_MANIFEST=''${BASE_LINUX_MANIFEST:-${packages.base-linux.manifest}}
|
||||||
export OS_MANIFEST=''${OS_MANIFEST:-${packages.genode.os.manifest}}
|
export OS_MANIFEST=''${OS_MANIFEST:-${packages.os.manifest}}
|
||||||
${dhallApps.dhall.program} text <<< "${./script.dhall} ($@)" > boot.sh
|
${dhallApps.dhall.program} text <<< "${./script.dhall} ($@)" > boot.sh
|
||||||
source boot.sh
|
source boot.sh
|
||||||
rm boot.sh
|
rm boot.sh
|
||||||
|
|
104
flake.lock
104
flake.lock
|
@ -1,43 +1,109 @@
|
||||||
{
|
{
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"dhall-haskell": {
|
"dhall-haskell": {
|
||||||
|
"info": {
|
||||||
|
"narHash": "sha256-KJl9ZLcMcEsLSPcwcWoc0Ac74/6HKC9LkVMeLwhyhlg="
|
||||||
|
},
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
|
"info": {
|
||||||
|
"narHash": "sha256-wJg4DA700SoQbEz61448sR6BgxRa1R92K3vvCV1g+HY="
|
||||||
|
},
|
||||||
"inputs": {},
|
"inputs": {},
|
||||||
"narHash": "sha256-wJg4DA700SoQbEz61448sR6BgxRa1R92K3vvCV1g+HY=",
|
"locked": {
|
||||||
"originalUrl": "git+https://github.com/nixos/nixpkgs.git?ref=18.09-beta&rev=1d4de0d552ae9aa66a5b8dee5fb0650a4372d148",
|
"ref": "18.09-beta",
|
||||||
"url": "git+https://github.com/nixos/nixpkgs.git?ref=18.09-beta&rev=1d4de0d552ae9aa66a5b8dee5fb0650a4372d148"
|
"rev": "1d4de0d552ae9aa66a5b8dee5fb0650a4372d148",
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/nixos/nixpkgs.git"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"ref": "18.09-beta",
|
||||||
|
"rev": "1d4de0d552ae9aa66a5b8dee5fb0650a4372d148",
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/nixos/nixpkgs.git"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"nixpkgsStaticLinux": {
|
"nixpkgsStaticLinux": {
|
||||||
|
"info": {
|
||||||
|
"narHash": "sha256-famU3pJZ4vkElV9qc71HmyRVSvcrAhfMZ0UJKpmmKP8="
|
||||||
|
},
|
||||||
"inputs": {},
|
"inputs": {},
|
||||||
"narHash": "sha256-famU3pJZ4vkElV9qc71HmyRVSvcrAhfMZ0UJKpmmKP8=",
|
"locked": {
|
||||||
"originalUrl": "git+https://github.com/nh2/nixpkgs.git?ref=static-haskell-nix-stack-dhall-working",
|
"ref": "static-haskell-nix-stack-dhall-working",
|
||||||
"url": "git+https://github.com/nh2/nixpkgs.git?ref=static-haskell-nix-stack-dhall-working&rev=925aac04f4ca58aceb83beef18cb7dae0715421b"
|
"rev": "925aac04f4ca58aceb83beef18cb7dae0715421b",
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/nh2/nixpkgs.git"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"ref": "static-haskell-nix-stack-dhall-working",
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/nh2/nixpkgs.git"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"narHash": "sha256-KJl9ZLcMcEsLSPcwcWoc0Ac74/6HKC9LkVMeLwhyhlg=",
|
"locked": {
|
||||||
"originalUrl": "git+https://github.com/dhall-lang/dhall-haskell?ref=flake",
|
"ref": "flake",
|
||||||
"url": "git+https://github.com/dhall-lang/dhall-haskell?ref=flake&rev=aea28adf3d10ff1982aa4ddd176d1476251b932f"
|
"rev": "aea28adf3d10ff1982aa4ddd176d1476251b932f",
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/dhall-lang/dhall-haskell"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"ref": "flake",
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/dhall-lang/dhall-haskell"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"genode-depot": {
|
"genode-depot": {
|
||||||
|
"info": {
|
||||||
|
"narHash": "sha256-7eL2MfGgeEaIwJXPc4LQ7pBa4JeGicm9th7onjKgzsE="
|
||||||
|
},
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
|
"info": {
|
||||||
|
"narHash": "sha256-OnpEWzNxF/AU4KlqBXM2s5PWvfI5/BS6xQrPvkF5tO8="
|
||||||
|
},
|
||||||
"inputs": {},
|
"inputs": {},
|
||||||
"narHash": "sha256-OnpEWzNxF/AU4KlqBXM2s5PWvfI5/BS6xQrPvkF5tO8=",
|
"locked": {
|
||||||
"originalUrl": "nixpkgs",
|
"owner": "edolstra",
|
||||||
"url": "github:edolstra/nixpkgs/7f8d4b088e2df7fdb6b513bc2d6941f1d422a013"
|
"repo": "nixpkgs",
|
||||||
|
"rev": "7f8d4b088e2df7fdb6b513bc2d6941f1d422a013",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"id": "nixpkgs",
|
||||||
|
"type": "indirect"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"narHash": "sha256-7eL2MfGgeEaIwJXPc4LQ7pBa4JeGicm9th7onjKgzsE=",
|
"locked": {
|
||||||
"originalUrl": "git+https://git.sr.ht/~ehmry/genode-depot",
|
"ref": "master",
|
||||||
"url": "git+https://git.sr.ht/~ehmry/genode-depot?ref=master&rev=8c2aafed45b4075e37f1cd93de0ebf93f38c83c3"
|
"rev": "8c2aafed45b4075e37f1cd93de0ebf93f38c83c3",
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.sr.ht/~ehmry/genode-depot"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://git.sr.ht/~ehmry/genode-depot"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
|
"info": {
|
||||||
|
"lastModified": 1583160598,
|
||||||
|
"narHash": "sha256-jiBSr7JK/xy7pIXFVhjdxpWy0pudDDRDW5XjzmDXPjA="
|
||||||
|
},
|
||||||
"inputs": {},
|
"inputs": {},
|
||||||
"narHash": "sha256-H97qzDLWl646rcgEPMA0oQDt817kGcpCiROdi1j2N0I=",
|
"locked": {
|
||||||
"originalUrl": "github:ehmry/nixpkgs",
|
"owner": "ehmry",
|
||||||
"url": "github:ehmry/nixpkgs/c73578fb214872baf2261f52eccbcbfdf6d54f32"
|
"repo": "nixpkgs",
|
||||||
|
"rev": "37cf068dcf79503fa6f399dcb44bc15c5d2f33f0",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "ehmry",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"version": 3
|
"version": 4
|
||||||
}
|
}
|
||||||
|
|
21
flake.nix
21
flake.nix
|
@ -34,24 +34,21 @@
|
||||||
dhallApps = dhall-haskell.apps.${localSystem};
|
dhallApps = dhall-haskell.apps.${localSystem};
|
||||||
};
|
};
|
||||||
|
|
||||||
defaultPackage = packages.genode.base-linux;
|
defaultPackage = with packages;
|
||||||
|
lib.mergeManifests [
|
||||||
|
base-hw-pc
|
||||||
|
base-nova
|
||||||
|
base-linux
|
||||||
|
os
|
||||||
|
sotest-producer
|
||||||
|
];
|
||||||
|
|
||||||
devShell = legacyPackages.mkShell {
|
devShell = legacyPackages.mkShell {
|
||||||
nativeBuildInputs = [ dhall-haskell.packages.${localSystem}.dhall ];
|
nativeBuildInputs = [ dhall-haskell.packages.${localSystem}.dhall ];
|
||||||
shellHook = ''
|
shellHook = ''
|
||||||
export DHALL_PRELUDE="${packages.dhallPrelude}/package.dhall"
|
export DHALL_PRELUDE="${packages.dhallPrelude}/package.dhall"
|
||||||
export DHALL_GENODE="${packages.dhallGenode}/package.dhall"
|
export DHALL_GENODE="${packages.dhallGenode}/package.dhall"
|
||||||
export MANIFEST="${
|
export MANIFEST="${defaultPackage}"
|
||||||
with packages;
|
|
||||||
lib.mergeManifests [
|
|
||||||
base-hw-pc
|
|
||||||
base-nova
|
|
||||||
genode.base
|
|
||||||
genode.base-linux
|
|
||||||
genode.os
|
|
||||||
sotest-producer
|
|
||||||
]
|
|
||||||
}"
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -17,10 +17,11 @@ let
|
||||||
callPackage' = path: attrs:
|
callPackage' = path: attrs:
|
||||||
addManifest (legacyPackages.callPackages path attrs);
|
addManifest (legacyPackages.callPackages path attrs);
|
||||||
|
|
||||||
buildUpstream = import ./genodelabs {
|
buildUpstream = let
|
||||||
|
f = import ./genodelabs {
|
||||||
nixpkgs = legacyPackages;
|
nixpkgs = legacyPackages;
|
||||||
inherit apps;
|
|
||||||
};
|
};
|
||||||
|
in args: addManifest (f args);
|
||||||
|
|
||||||
in rec {
|
in rec {
|
||||||
|
|
||||||
|
@ -28,35 +29,102 @@ in rec {
|
||||||
|
|
||||||
base-hw-pc = buildUpstream {
|
base-hw-pc = buildUpstream {
|
||||||
name = "base-hw-pc";
|
name = "base-hw-pc";
|
||||||
arch = "x86_64";
|
KERNEL = "hw";
|
||||||
kernel = "hw";
|
BOARD = "pc";
|
||||||
board = "pc";
|
|
||||||
targets = [ "bootstrap" "core" "timer" "lib/ld" ];
|
targets = [ "bootstrap" "core" "timer" "lib/ld" ];
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
mkdir -p $out/lib
|
mkdir -p $out/lib
|
||||||
mv $out/bin/*.o $out/lib/
|
mv $out/bin/*.o $out/lib/
|
||||||
mv $out/bin/ld-hw.lib.so $out/lib/ld.lib.so
|
mv $out/lib/ld-hw.lib.so $out/lib/ld.lib.so
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
base-linux = buildUpstream {
|
||||||
|
name = "base-linux";
|
||||||
|
KERNEL = "linux";
|
||||||
|
targets = [ "core" "timer" "lib/ld" ];
|
||||||
|
postInstall = ''
|
||||||
|
mkdir -p $out/lib
|
||||||
|
mv $out/lib/ld-linux.lib.so $out/lib/ld.lib.so
|
||||||
|
'';
|
||||||
|
HOST_INC_DIR = legacyPackages.buildPackages.glibc.dev + "/include";
|
||||||
|
};
|
||||||
|
|
||||||
base-nova = buildUpstream {
|
base-nova = buildUpstream {
|
||||||
name = "base-nova";
|
name = "base-nova";
|
||||||
arch = "x86_64";
|
KERNEL = "nova";
|
||||||
kernel = "nova";
|
|
||||||
targets = [ "core" "timer" "lib/ld" ];
|
targets = [ "core" "timer" "lib/ld" ];
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
mkdir -p $out/lib
|
mkdir -p $out/lib
|
||||||
mv $out/bin/*.o $out/lib/
|
mv $out/bin/*.o $out/lib/
|
||||||
mv $out/bin/ld-nova.lib.so $out/lib/ld.lib.so
|
mv $out/lib/ld-nova.lib.so $out/lib/ld.lib.so
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
driversPc = let
|
||||||
|
directoryBlacklist = [
|
||||||
|
"repos/dde_zircon"
|
||||||
|
];
|
||||||
|
in buildUpstream {
|
||||||
|
name = "drivers";
|
||||||
|
BOARD = "pc";
|
||||||
|
targets = [ "drivers" ];
|
||||||
|
ports = [ "dde_bsd" "dde_ipxe" "dde_linux" "libc" "openssl" "x86emu" ];
|
||||||
|
preBuild = "find ${toString directoryBlacklist} -name target.mk -delete";
|
||||||
|
};
|
||||||
|
|
||||||
driver_manager = buildUpstream {
|
noux = buildUpstream {
|
||||||
name = "driver_manager";
|
name = "noux";
|
||||||
arch = "x86_64";
|
targets = [ "noux" "lib/libc_noux" ];
|
||||||
targets = [ "app/driver_manager" ];
|
ports = [ "libc" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
os = let
|
||||||
|
directoryBlacklist = [
|
||||||
|
"repos/dde_bsd"
|
||||||
|
"repos/dde_ipxe"
|
||||||
|
"repos/dde_linux"
|
||||||
|
"repos/dde_rump"
|
||||||
|
"repos/gems/src/app/mixer_gui_qt"
|
||||||
|
"repos/gems/src/server/http_block"
|
||||||
|
"repos/gems/src/server/terminal_mux"
|
||||||
|
"repos/libports"
|
||||||
|
"repos/ports"
|
||||||
|
];
|
||||||
|
in buildUpstream {
|
||||||
|
name = "os";
|
||||||
patches = [ ./genodelabs/capslock.patch ];
|
patches = [ ./genodelabs/capslock.patch ];
|
||||||
|
targets = [ "app" "init" "lib/vfs" "server" ];
|
||||||
|
ports = [ "jitterentropy" "libc" "libpng" "libssh" "openssl" "stb" "zlib" ];
|
||||||
|
preBuild = "find ${toString directoryBlacklist} -name target.mk -delete";
|
||||||
|
nativeBuildInputs = with legacyPackages.buildPackages; [ bison flex ];
|
||||||
|
};
|
||||||
|
|
||||||
|
vfs_lwip = buildUpstream {
|
||||||
|
name = "lwip";
|
||||||
|
targets = [ "lib/vfs/lwip" ];
|
||||||
|
ports = [ "lwip" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
vfs_rump = buildUpstream {
|
||||||
|
name = "vfs_rump";
|
||||||
|
targets = [ "lib/vfs/rump" ];
|
||||||
|
ports = [ "dde_rump" ];
|
||||||
|
buildInputs = [ legacyPackages.buildPackages.zlib ];
|
||||||
|
};
|
||||||
|
|
||||||
|
vfs_ttf = buildUpstream {
|
||||||
|
name = "vfs_ttf";
|
||||||
|
targets = [ "lib/vfs/ttf" ];
|
||||||
|
ports = [ "libc" "stb" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
virtualbox5 = buildUpstream {
|
||||||
|
name = "virtualbox5";
|
||||||
|
targets = [ "virtualbox5" ];
|
||||||
|
ports = [ "libc" "libiconv" "qemu-usb" "stdcxx" "virtualbox5" ];
|
||||||
|
nativeBuildInputs = with legacyPackages.buildPackages; [ iasl yasm ];
|
||||||
|
KERNEL = "nova";
|
||||||
};
|
};
|
||||||
|
|
||||||
genodeTests = let
|
genodeTests = let
|
||||||
|
@ -64,8 +132,6 @@ in rec {
|
||||||
"repos/base-*"
|
"repos/base-*"
|
||||||
"repos/base/src/test/sanitizer"
|
"repos/base/src/test/sanitizer"
|
||||||
"repos/base/src/test/xml_generator"
|
"repos/base/src/test/xml_generator"
|
||||||
"repos/dde_bsd"
|
|
||||||
"repos/dde_linux"
|
|
||||||
"repos/gems/src/test/aes_cbc_4k"
|
"repos/gems/src/test/aes_cbc_4k"
|
||||||
"repos/gems/src/test/decorator_stress"
|
"repos/gems/src/test/decorator_stress"
|
||||||
"repos/gems/src/test/text_painter"
|
"repos/gems/src/test/text_painter"
|
||||||
|
@ -76,9 +142,9 @@ in rec {
|
||||||
];
|
];
|
||||||
in buildUpstream {
|
in buildUpstream {
|
||||||
name = "genode-tests";
|
name = "genode-tests";
|
||||||
arch = "x86_64";
|
|
||||||
preBuild = "find ${toString directoryBlacklist} -name target.mk -delete";
|
preBuild = "find ${toString directoryBlacklist} -name target.mk -delete";
|
||||||
targets = [ "test" ];
|
targets = [ "test" ];
|
||||||
|
ports = [ "libc" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
bender = legacyPackages.buildPackages.callPackage ./bender { };
|
bender = legacyPackages.buildPackages.callPackage ./bender { };
|
||||||
|
@ -87,24 +153,14 @@ in rec {
|
||||||
|
|
||||||
dhallPrelude = dhallPackages.prelude;
|
dhallPrelude = dhallPackages.prelude;
|
||||||
|
|
||||||
genode = import ./genode {
|
|
||||||
nixpkgs = legacyPackages;
|
|
||||||
inherit mkDhallManifest;
|
|
||||||
};
|
|
||||||
|
|
||||||
NOVA = legacyPackages.callPackage ./NOVA { };
|
NOVA = legacyPackages.callPackage ./NOVA { };
|
||||||
|
|
||||||
libc = callPackage' ./libc { inherit depot; };
|
libc = callPackage' ./libc { inherit depot; };
|
||||||
|
|
||||||
nic_bus = callPackage ./nic_bus { inherit (genode) base os; };
|
solo5 = let drv = callPackage' ./solo5 { };
|
||||||
|
|
||||||
solo5 = let drv = callPackage' ./solo5 { inherit genode; };
|
|
||||||
in drv // { tests = addManifest drv.tests // { pname = "solo5-tests"; }; };
|
in drv // { tests = addManifest drv.tests // { pname = "solo5-tests"; }; };
|
||||||
|
|
||||||
sotest-producer = callPackage' ./sotest-producer {
|
sotest-producer = callPackage' ./sotest-producer { };
|
||||||
stdenv = genode.stdenvGcc;
|
|
||||||
inherit genode;
|
|
||||||
};
|
|
||||||
|
|
||||||
stdcxx = callPackage' ./stdcxx { };
|
stdcxx = callPackage' ./stdcxx { };
|
||||||
|
|
||||||
|
|
|
@ -1,274 +0,0 @@
|
||||||
# SPDX-License-Identifier: CC0-1.0
|
|
||||||
|
|
||||||
{ nixpkgs, mkDhallManifest }:
|
|
||||||
|
|
||||||
let
|
|
||||||
|
|
||||||
src = nixpkgs.fetchgit {
|
|
||||||
url = "https://git.sr.ht/~ehmry/genode";
|
|
||||||
rev = "11ff9a1dc524dadd3252777d9be529910e375e66";
|
|
||||||
sha256 = "1238ashnx40fmc715w1mqiachdw7bkd04zy6d6l1hmn7f0ld535n";
|
|
||||||
};
|
|
||||||
|
|
||||||
inherit (nixpkgs) buildPackages llvmPackages;
|
|
||||||
|
|
||||||
sourceForgeToolchain = nixpkgs.buildPackages.callPackage ./toolchain.nix { };
|
|
||||||
|
|
||||||
stdenvLlvm = let inherit (nixpkgs) stdenv;
|
|
||||||
in assert stdenv.cc.isClang; stdenv;
|
|
||||||
|
|
||||||
stdenvGcc = let
|
|
||||||
env = nixpkgs.stdenvAdapters.overrideCC nixpkgs.stdenv sourceForgeToolchain;
|
|
||||||
in assert env.cc.isGNU; env;
|
|
||||||
|
|
||||||
inherit (stdenvLlvm) lib targetPlatform;
|
|
||||||
specs = with targetPlatform;
|
|
||||||
[ ]
|
|
||||||
|
|
||||||
++ lib.optional is32bit "32bit"
|
|
||||||
|
|
||||||
++ lib.optional is64bit "64bit"
|
|
||||||
|
|
||||||
++ lib.optional isAarch32 "arm"
|
|
||||||
|
|
||||||
++ lib.optional isAarch64 "arm_64"
|
|
||||||
|
|
||||||
++ lib.optional isRiscV "riscv"
|
|
||||||
|
|
||||||
++ lib.optional isx86 "x86"
|
|
||||||
|
|
||||||
++ lib.optional isx86_32 "x86_32"
|
|
||||||
|
|
||||||
++ lib.optional isx86_64 "x86_64";
|
|
||||||
|
|
||||||
toTupConfig = env: attrs:
|
|
||||||
let
|
|
||||||
tupArch = with env.targetPlatform;
|
|
||||||
|
|
||||||
if isAarch32 then
|
|
||||||
"arm"
|
|
||||||
else
|
|
||||||
|
|
||||||
if isAarch64 then
|
|
||||||
"arm64"
|
|
||||||
else
|
|
||||||
|
|
||||||
if isx86_32 then
|
|
||||||
"i386"
|
|
||||||
else
|
|
||||||
|
|
||||||
if isx86_64 then
|
|
||||||
"x86_64"
|
|
||||||
else
|
|
||||||
|
|
||||||
abort "unhandled targetPlatform";
|
|
||||||
|
|
||||||
attrs' = with env; { TUP_ARCH = tupArch; } // attrs;
|
|
||||||
|
|
||||||
in with builtins;
|
|
||||||
env.mkDerivation {
|
|
||||||
name = "tup.config";
|
|
||||||
nativeBuildInputs = with nixpkgs.buildPackages; [
|
|
||||||
binutils
|
|
||||||
pkgconfig
|
|
||||||
which
|
|
||||||
];
|
|
||||||
text = let
|
|
||||||
op = config: name: ''
|
|
||||||
${config}CONFIG_${name}=${getAttr name attrs}
|
|
||||||
'';
|
|
||||||
in foldl' op "" (attrNames attrs);
|
|
||||||
passAsFile = [ "text" ];
|
|
||||||
preferLocalBuild = true;
|
|
||||||
buildCommand = let
|
|
||||||
subst = let
|
|
||||||
vars = [ "AR" "NM" ];
|
|
||||||
f = other: var:
|
|
||||||
other + ''
|
|
||||||
echo CONFIG_${var}=`which ''$${var}` >> $out
|
|
||||||
'';
|
|
||||||
in foldl' f "" vars;
|
|
||||||
utils = let
|
|
||||||
vars = [ "pkg-config" "objcopy" ];
|
|
||||||
f = other: var:
|
|
||||||
other + ''
|
|
||||||
echo CONFIG_${var}=`which ${var}` >> $out
|
|
||||||
'';
|
|
||||||
in foldl' f "" vars;
|
|
||||||
in ''
|
|
||||||
cp $textPath $out
|
|
||||||
${subst}
|
|
||||||
${utils}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
tupConfigGcc = let
|
|
||||||
f = env:
|
|
||||||
let prefix = bin: env.cc.targetPrefix + bin;
|
|
||||||
in {
|
|
||||||
CC = prefix "gcc";
|
|
||||||
CXX = prefix "g++";
|
|
||||||
LD = prefix "ld";
|
|
||||||
OBJCOPY = prefix "objcopy";
|
|
||||||
RANLIB = prefix "ranlib";
|
|
||||||
READELF = prefix "readelf";
|
|
||||||
STRIP = prefix "strip";
|
|
||||||
PKGCONFIG = "${nixpkgs.buildPackages.pkgconfig}/bin/pkg-config";
|
|
||||||
|
|
||||||
IS_GCC = "";
|
|
||||||
LINUX_HEADERS = buildPackages.glibc.dev;
|
|
||||||
};
|
|
||||||
in toTupConfig stdenvGcc (f stdenvGcc);
|
|
||||||
|
|
||||||
tupConfigLlvm = let
|
|
||||||
f = env:
|
|
||||||
let prefix = bin: "${env.cc}/bin/${env.cc.targetPrefix}${bin}";
|
|
||||||
in {
|
|
||||||
CC = prefix "cc";
|
|
||||||
CXX = prefix "c++";
|
|
||||||
LD = prefix "ld";
|
|
||||||
OBJCOPY = "llvm-objcopy";
|
|
||||||
OBJDUMP = "llvm-objdump";
|
|
||||||
RANLIB = "llvm-ranlib";
|
|
||||||
READELF = "llvm-readelf";
|
|
||||||
STRIP = "llvm-strip";
|
|
||||||
PKGCONFIG = "${nixpkgs.buildPackages.pkgconfig}/bin/pkg-config";
|
|
||||||
|
|
||||||
IS_LLVM = "";
|
|
||||||
LIBCXXABI = llvmPackages.libcxxabi;
|
|
||||||
LIBCXX = llvmPackages.libcxx;
|
|
||||||
LIBUNWIND_BAREMETAL =
|
|
||||||
llvmPackages.libunwind.override { isBaremetal = true; };
|
|
||||||
LIBUNWIND = llvmPackages.libunwind;
|
|
||||||
LINUX_HEADERS = buildPackages.glibc.dev;
|
|
||||||
};
|
|
||||||
in toTupConfig stdenvLlvm (f stdenvLlvm);
|
|
||||||
|
|
||||||
buildRepo = { env, repo, repoInputs }:
|
|
||||||
env.mkDerivation {
|
|
||||||
pname = repo;
|
|
||||||
version = "19.11";
|
|
||||||
inherit repo specs src;
|
|
||||||
|
|
||||||
nativeBuildInputs = repoInputs;
|
|
||||||
# This is wrong, why does pkg-config not collect buildInputs?
|
|
||||||
|
|
||||||
propagatedNativeBuildInputs = repoInputs;
|
|
||||||
|
|
||||||
depsBuildBuild = with buildPackages; [ llvm pkgconfig tup ];
|
|
||||||
|
|
||||||
tupConfig = if env.cc.isGNU then
|
|
||||||
tupConfigGcc
|
|
||||||
else if env.cc.isClang then
|
|
||||||
tupConfigLlvm
|
|
||||||
else
|
|
||||||
throw "no Tup config for this stdenv";
|
|
||||||
|
|
||||||
configurePhase = ''
|
|
||||||
# Configure Tup
|
|
||||||
set -v
|
|
||||||
install -m666 $tupConfig tup.config
|
|
||||||
echo CONFIG_NIX_OUTPUTS_OUT=$out >> tup.config
|
|
||||||
echo CONFIG_NIX_OUTPUTS_DEV=$out >> tup.config
|
|
||||||
|
|
||||||
# Disable other repos
|
|
||||||
for R in repos/*; do
|
|
||||||
[ "$R" != "repos/$repo" ] && find $R -name Tupfile -delete
|
|
||||||
done
|
|
||||||
|
|
||||||
# Scan repository and generate script
|
|
||||||
tup init
|
|
||||||
tup generate buildPhase.sh
|
|
||||||
|
|
||||||
# Redirect artifacts to Nix store
|
|
||||||
mkdir -p $out/lib $out/include
|
|
||||||
ln -s $out out
|
|
||||||
ln -s $out dev
|
|
||||||
'';
|
|
||||||
|
|
||||||
buildPhase = ''
|
|
||||||
test -d repos/$repo/src/ld && cp -rv repos/$repo/src/ld $out/
|
|
||||||
pushd .
|
|
||||||
set -v
|
|
||||||
source buildPhase.sh
|
|
||||||
set +v
|
|
||||||
popd
|
|
||||||
'';
|
|
||||||
|
|
||||||
installPhase = ''
|
|
||||||
# Populate the "dev" headers
|
|
||||||
if [ -d "repos/$repo/include" ]; then
|
|
||||||
for DIR in repos/$repo/include; do
|
|
||||||
for SPEC in $specs; do
|
|
||||||
if [ -d $DIR/spec/$SPEC ]; then
|
|
||||||
cp -r $DIR/spec/$SPEC/* $out/include
|
|
||||||
rm -r $DIR/spec/$SPEC
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
rm -rf $DIR/spec
|
|
||||||
cp -r $DIR $out/
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
touch $out/.genode
|
|
||||||
for pc in $out/lib/pkgconfig/*.pc; do
|
|
||||||
sed -e "s|^Libs: |Libs: -L$out/lib |" -i $pc
|
|
||||||
done
|
|
||||||
'';
|
|
||||||
|
|
||||||
meta = with env.lib; {
|
|
||||||
description =
|
|
||||||
"The Genode operation system framework (${repo} repository).";
|
|
||||||
homepage = "https://genode.org/";
|
|
||||||
license = licenses.agpl3;
|
|
||||||
maintainers = [ maintainers.ehmry ];
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
buildRepoGcc' = { ... }@args:
|
|
||||||
let drv = buildRepo ({ env = stdenvGcc; } // args);
|
|
||||||
in { manifest = mkDhallManifest drv; } // drv;
|
|
||||||
|
|
||||||
buildRepoLlvm' = { ... }@args:
|
|
||||||
let drv = buildRepo ({ env = stdenvLlvm; } // args);
|
|
||||||
in { manifest = mkDhallManifest drv; } // drv;
|
|
||||||
|
|
||||||
drvs = rec {
|
|
||||||
|
|
||||||
base = buildRepoGcc' {
|
|
||||||
repo = "base";
|
|
||||||
repoInputs = [ ];
|
|
||||||
};
|
|
||||||
|
|
||||||
base-linux = buildRepoGcc' {
|
|
||||||
repo = "base-linux";
|
|
||||||
repoInputs = [ base ];
|
|
||||||
};
|
|
||||||
|
|
||||||
os = buildRepoLlvm' {
|
|
||||||
repo = "os";
|
|
||||||
repoInputs = [ base ];
|
|
||||||
};
|
|
||||||
|
|
||||||
gems = buildRepoLlvm' {
|
|
||||||
repo = "gems";
|
|
||||||
repoInputs = [ base os ];
|
|
||||||
};
|
|
||||||
|
|
||||||
inherit stdenvGcc stdenvLlvm tupConfigGcc tupConfigLlvm;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
manifest = with builtins;
|
|
||||||
let
|
|
||||||
repoDrvs = filter (drv: typeOf drv == "set" && hasAttr "repo" drv && hasAttr "manifest" drv)
|
|
||||||
(attrValues drvs);
|
|
||||||
records = map (drv: "${drv.repo}=${drv.manifest}") repoDrvs;
|
|
||||||
text = "{" + builtins.concatStringsSep "," records + "}";
|
|
||||||
in nixpkgs.writeTextFile {
|
|
||||||
name = "genode.manifest.dhall";
|
|
||||||
inherit text;
|
|
||||||
};
|
|
||||||
|
|
||||||
in drvs // manifest // { pname = "genode"; inherit manifest; }
|
|
|
@ -1,20 +1,167 @@
|
||||||
{ nixpkgs, apps }:
|
{ nixpkgs }:
|
||||||
|
|
||||||
{ name, targets, arch, kernel ? "hw", board ? "pc", ... }@extraAttrs:
|
|
||||||
let
|
let
|
||||||
sourceForgeToolchain =
|
inherit (nixpkgs.genodeHeaders) version src;
|
||||||
nixpkgs.buildPackages.callPackage ./../genode/toolchain.nix { };
|
|
||||||
|
|
||||||
stdenvGcc = let
|
sourceForgeToolchain =
|
||||||
env = nixpkgs.stdenvAdapters.overrideCC nixpkgs.stdenv sourceForgeToolchain;
|
nixpkgs.buildPackages.callPackage ./toolchain.nix { };
|
||||||
in assert env.cc.isGNU; env;
|
|
||||||
version = "20.02";
|
stdenv' =
|
||||||
toolPrefix = if arch == "x86_64" then
|
nixpkgs.stdenvAdapters.overrideCC nixpkgs.stdenv sourceForgeToolchain;
|
||||||
|
|
||||||
|
platform = stdenv'.targetPlatform;
|
||||||
|
|
||||||
|
arch = with platform;
|
||||||
|
if isx86_64 then
|
||||||
|
"x86_64"
|
||||||
|
else
|
||||||
|
throw "unknown Genode arch for platform ${platform.system}";
|
||||||
|
|
||||||
|
toolPrefix = if platform.isx86 then
|
||||||
"genode-x86-"
|
"genode-x86-"
|
||||||
else
|
else
|
||||||
throw "unknown tool prefix for Genode arch ${arch}";
|
throw "unknown tool prefix for Genode arch ${arch}";
|
||||||
in stdenvGcc.mkDerivation ({
|
|
||||||
outputs = [ "out" "manifest" ];
|
mkPort = { name, hash, nativeBuildInputs ? [ ] }:
|
||||||
|
let
|
||||||
|
value = stdenv'.mkDerivation {
|
||||||
|
pname = name;
|
||||||
|
inherit src version;
|
||||||
|
|
||||||
|
outputHashMode = "recursive";
|
||||||
|
outputHash = hash;
|
||||||
|
|
||||||
|
nativeBuildInputs = with nixpkgs.buildPackages;
|
||||||
|
[ bison glibc flex gitMinimal subversion glibcLocales which wget ]
|
||||||
|
++ nativeBuildInputs;
|
||||||
|
|
||||||
|
patches = [ ./svn-trust-server-cert.patch ];
|
||||||
|
|
||||||
|
configurePhase = ''
|
||||||
|
runHook preConfigure
|
||||||
|
patchShebangs ./tool/ports
|
||||||
|
runHook postConfigure
|
||||||
|
'';
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
export CONTRIB_DIR=$out
|
||||||
|
./tool/ports/prepare_port $pname
|
||||||
|
'';
|
||||||
|
|
||||||
|
dontInstall = true;
|
||||||
|
|
||||||
|
GIT_SSL_CAINFO =
|
||||||
|
"${nixpkgs.buildPackages.cacert}/etc/ssl/certs/ca-bundle.crt";
|
||||||
|
|
||||||
|
impureEnvVars = stdenv'.lib.fetchers.proxyImpureEnvVars
|
||||||
|
++ [ "GIT_PROXY_COMMAND" "SOCKS_SERVER" ];
|
||||||
|
|
||||||
|
};
|
||||||
|
in { inherit name value; };
|
||||||
|
|
||||||
|
portDrvs = with nixpkgs.buildPackages; builtins.listToAttrs (builtins.map mkPort [
|
||||||
|
{
|
||||||
|
name = "stb";
|
||||||
|
hash = "sha256-RQKF/H3wsKy6ZT9PLv4vzerJl+0Be2wqNjqsUBYZU6U=";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "libc";
|
||||||
|
hash = "sha256-yx5jGJI1w6KAwS2JPHhWpPFEeEyOv7yfIeXLRgQM7l8=";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "x86emu";
|
||||||
|
hash = "sha256-fKUab/HflrcZqzSk/cz/QimPtPILGwvXgHkwE4y2uQc=";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "lwip";
|
||||||
|
hash = "sha256-1oOJoCME8N1nQKUxG7vRBFRtJ9MausrIfno91QchMEU=";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "dde_linux";
|
||||||
|
hash = "sha256-9xD+pIjYeL9W/2HsOpJCGJs5+RgM2gmwxXC+h1Yc90Y=";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "dde_bsd";
|
||||||
|
hash = "sha256-ZcF6L4maC1vB5IP1jR6L4CWlaNf5Qu4xVjqITK3Yt0w=";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "dde_rump";
|
||||||
|
hash = "sha256-aU5s+sf9/bZxzSX7+9wNEn3693yxDJB/dNVWMLuJkQI=";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "dde_ipxe";
|
||||||
|
hash = "sha256-UIwC0O5IlxNWQKBJYE9h5ekVWP18UTvejsgb1i6KHCs=";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "openssl";
|
||||||
|
hash = "sha256-eZYdDT4L3R64mhUKGAiiQUOF9GgeEHDZlsDZbI4BM58=";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "libiconv";
|
||||||
|
hash = "sha256-TN3cZAo7zq7OLXXB2lLxOnM5c98aA0GksE7ACrymVvE=";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "qemu-usb";
|
||||||
|
hash = "sha256-awBouSz5MBBc9HuHZiZJK7jbabNSyqBQMX2NPXHvR0I=";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "stdcxx";
|
||||||
|
hash = "sha256-hXRdT6f2prKsCXDSJ4HMF1MNaRh0/EoNMrJUBuHQeyI=";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "virtualbox5";
|
||||||
|
hash = "sha256-VZPXyFLzLFCmxbbBqmZ9HP0y6E+1I+v/+Rt22IjlOrI=";
|
||||||
|
nativeBuildInputs = [
|
||||||
|
iasl
|
||||||
|
libxslt
|
||||||
|
unzip
|
||||||
|
yasm
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "expat";
|
||||||
|
hash = "sha256-CCMxMn2DpzrIkW9WMBaX1T77T/GECy8pVlsT+BpbsQs=";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "jpeg";
|
||||||
|
hash = "sha256-ZUMuNV9ltGqZhny6LAn/Do1ojbypnSHa9dfQ0ZVZhUE=";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "lz4";
|
||||||
|
hash = "sha256-xYohPuOwqiFBHkqwP/q0fMafmWzMg4rt3qYZqO624wk=";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "mesa";
|
||||||
|
hash = "sha256-ho8t+7jFzYPi8nmHi4usFNunwHsbSBdtvVOtAlbz9Oc=";
|
||||||
|
nativeBuildInputs = [ python ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "mupdf";
|
||||||
|
hash = "sha256-7zl2DKFIPzQdX/poF0jxejn81OCWrh7QfTuNmtOA4WA=";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "jitterentropy";
|
||||||
|
hash = "sha256-FnLuTDOCyQ9/jpQfx0vtyrbUymW7G3BuSM+NINKOxK4=";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "libpng";
|
||||||
|
hash = "sha256-Y3DjI7m1kYGbHX8hRob3RYnTTTX4LteOt5Yqzlcq/tQ=";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "libssh";
|
||||||
|
hash = "sha256-IjHv+cbvAU7RVcKJSvHJmG8ZDULpEAawr7snPzWdMsU=";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "zlib";
|
||||||
|
hash = "sha256-gWv8RKlc3TacC4sHPKXyhqVDRkM6MIXuWLqEx5gHz7s=";
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
|
||||||
|
in { name, targets, ports ? [ ], nativeBuildInputs ? [ ], ... }@extraAttrs:
|
||||||
|
|
||||||
|
let ports' = builtins.map (name: builtins.getAttr name portDrvs) ports;
|
||||||
|
|
||||||
|
in stdenv'.mkDerivation (extraAttrs // {
|
||||||
pname = name;
|
pname = name;
|
||||||
inherit version targets;
|
inherit version targets;
|
||||||
src = nixpkgs.fetchFromGitHub {
|
src = nixpkgs.fetchFromGitHub {
|
||||||
|
@ -24,11 +171,13 @@ in stdenvGcc.mkDerivation ({
|
||||||
sha256 = "0idk92ibrasla0y2xkrmyh49dx0nzg96gqkcmn6r3w5r3fdpsfjy";
|
sha256 = "0idk92ibrasla0y2xkrmyh49dx0nzg96gqkcmn6r3w5r3fdpsfjy";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = with nixpkgs.buildPackages; [ binutils tcl which ];
|
nativeBuildInputs = with nixpkgs.buildPackages;
|
||||||
|
[ binutils bison flex stdenv.cc tcl which ] ++ nativeBuildInputs;
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
configurePhase = ''
|
configurePhase = ''
|
||||||
|
runHook preConfigure
|
||||||
patchShebangs ./tool/check_abi
|
patchShebangs ./tool/check_abi
|
||||||
patchShebangs ./tool/create_builddir
|
patchShebangs ./tool/create_builddir
|
||||||
substituteInPlace repos/base/etc/tools.conf \
|
substituteInPlace repos/base/etc/tools.conf \
|
||||||
|
@ -38,27 +187,22 @@ in stdenvGcc.mkDerivation ({
|
||||||
./tool/create_builddir ${arch} BUILD_DIR=build
|
./tool/create_builddir ${arch} BUILD_DIR=build
|
||||||
substituteInPlace build/etc/build.conf \
|
substituteInPlace build/etc/build.conf \
|
||||||
--replace "#REPOSITORIES" "REPOSITORIES"
|
--replace "#REPOSITORIES" "REPOSITORIES"
|
||||||
'';
|
runHook postConfigure
|
||||||
|
'' + (if ports != [ ] then
|
||||||
|
"mkdir contrib;"
|
||||||
|
+ toString (builtins.map (drv: " ln -sv ${drv}/* contrib/;") ports')
|
||||||
|
else
|
||||||
|
"");
|
||||||
|
|
||||||
makeFlags = [ "-C build" "KERNEL=${kernel}" "BOARD=${board}" ];
|
makeFlags = [ "-C build" ] ++ targets;
|
||||||
|
|
||||||
buildPhase = ''
|
|
||||||
runHook preBuild
|
|
||||||
local flagsArray=(
|
|
||||||
''${enableParallelBuilding:+-j''${NIX_BUILD_CORES} -l''${NIX_BUILD_CORES}}
|
|
||||||
SHELL=$SHELL
|
|
||||||
$makeFlags ''${makeFlagsArray+"''${makeFlagsArray[@]}"}
|
|
||||||
$buildFlags ''${buildFlagsArray+"''${buildFlagsArray[@]}"}
|
|
||||||
)
|
|
||||||
make "''${flagsArray[@]}" $targets
|
|
||||||
runHook postBuild
|
|
||||||
'';
|
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
runHook preInstall
|
runHook preInstall
|
||||||
find -name '*.xsd' -delete
|
find build/bin -name '*.xsd' -delete
|
||||||
find build/bin -execdir install -Dt $out/bin '{}' \;
|
find build/bin -name '*.lib.so' -exec install -Dt $out/lib '{}' \; -delete
|
||||||
|
find build/bin -exec install -Dt $out/bin '{}' \;
|
||||||
runHook postInstall
|
runHook postInstall
|
||||||
${apps.generate-manifest.program} $out > $manifest
|
|
||||||
'';
|
'';
|
||||||
} // extraAttrs)
|
|
||||||
|
passthru.ports = portDrvs;
|
||||||
|
})
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
diff --git a/tool/ports/mk/install.mk b/tool/ports/mk/install.mk
|
||||||
|
index 6fe5271abf..dec4984063 100644
|
||||||
|
--- a/tool/ports/mk/install.mk
|
||||||
|
+++ b/tool/ports/mk/install.mk
|
||||||
|
@@ -179,7 +179,8 @@ _svn_dir = $(call _assert,$(DIR($1)),Missing declaration of DIR($*))
|
||||||
|
$(VERBOSE)dir=$(call _svn_dir,$*);\
|
||||||
|
rm -rf $$dir; \
|
||||||
|
$(MSG_DOWNLOAD)$(URL($*)); \
|
||||||
|
- svn export -q $(URL($*))@$(REV($*)) $$dir;
|
||||||
|
+ svn export --trust-server-cert --non-interactive \
|
||||||
|
+ -q $(URL($*))@$(REV($*)) $$dir;
|
||||||
|
|
||||||
|
|
||||||
|
##
|
|
@ -1,69 +0,0 @@
|
||||||
# SPDX-License-Identifier: CC0-1.0
|
|
||||||
|
|
||||||
{ stdenv, buildPackages, fetchgit, base, os, pkgconfig, tup }:
|
|
||||||
|
|
||||||
let
|
|
||||||
tupArch = with stdenv.targetPlatform;
|
|
||||||
if isAarch32 then "arm" else
|
|
||||||
if isAarch64 then "arm64" else
|
|
||||||
if isx86_32 then "i386" else
|
|
||||||
if isx86_64 then "x86_64" else
|
|
||||||
abort "unhandled targetPlatform";
|
|
||||||
|
|
||||||
toTupConfig = attrs:
|
|
||||||
with builtins;
|
|
||||||
let op = config: name: "${config}CONFIG_${name}=${getAttr name attrs} ";
|
|
||||||
in foldl' op "" (attrNames attrs);
|
|
||||||
|
|
||||||
in stdenv.mkDerivation rec {
|
|
||||||
name = "nic_bus";
|
|
||||||
version = "1.0";
|
|
||||||
src = fetchgit {
|
|
||||||
url = "https://git.sr.ht/~ehmry/nic_bus";
|
|
||||||
rev = "76881b4fbb99e9a995d1f35a33529ff8f38c89bc";
|
|
||||||
sha256 = "08fcbfnlg0ljbgv95yd5q70c7xa0sg2k0njv4ygancs7d7f7q4bb";
|
|
||||||
};
|
|
||||||
|
|
||||||
nativeBuildInputs = [ pkgconfig tup ];
|
|
||||||
|
|
||||||
buildInputs = [ base os ];
|
|
||||||
|
|
||||||
tupConfig = toTupConfig {
|
|
||||||
TUP_ARCH = tupArch;
|
|
||||||
VERSION = version;
|
|
||||||
};
|
|
||||||
|
|
||||||
configurePhase = ''
|
|
||||||
cp -v ${base.src}/Tuprules.tup .
|
|
||||||
|
|
||||||
# Configure Tup
|
|
||||||
echo $tupConfig | tr ' CONFIG_' '\nCONFIG_' > tup.config
|
|
||||||
echo CONFIG_NIX_OUTPUTS_OUT=$out >> tup.config
|
|
||||||
echo CONFIG_NIX_OUTPUTS_DEV=$dev >> tup.config
|
|
||||||
|
|
||||||
# Scan repository and generate script
|
|
||||||
tup init
|
|
||||||
tup generate buildPhase.sh
|
|
||||||
|
|
||||||
# Redirect artifacts to Nix store
|
|
||||||
mkdir -p $out
|
|
||||||
ln -s $out out
|
|
||||||
'';
|
|
||||||
|
|
||||||
buildPhase = ''
|
|
||||||
test -d repos/$repo/src/ld && cp -rv repos/$repo/src/ld $dev/
|
|
||||||
pushd .
|
|
||||||
set -v
|
|
||||||
source buildPhase.sh
|
|
||||||
set +v
|
|
||||||
popd
|
|
||||||
'';
|
|
||||||
|
|
||||||
dontInstall = true;
|
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
|
||||||
license = licenses.agpl3;
|
|
||||||
maintainers = [ maintainers.ehmry ];
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,6 +1,6 @@
|
||||||
# SPDX-License-Identifier: CC0-1.0
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
{ stdenv, buildPackages, fetchurl, pkgconfig, genode }:
|
{ stdenv, buildPackages, fetchurl, pkgconfig, genodeLibcCross }:
|
||||||
|
|
||||||
# WARNING: recursive make ahead
|
# WARNING: recursive make ahead
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ in stdenv.mkDerivation {
|
||||||
|
|
||||||
nativeBuildInputs = [ pkgconfig ];
|
nativeBuildInputs = [ pkgconfig ];
|
||||||
|
|
||||||
buildInputs = [ genode.base genode.os ];
|
buildInputs = [ genodeLibcCross ];
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url =
|
url =
|
||||||
|
|
|
@ -1,18 +1,18 @@
|
||||||
# SPDX-License-Identifier: CC0-1.0
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
{ stdenv, fetchgit, buildPackages, genode }:
|
{ stdenv, fetchgit, buildPackages, genodeLibcCross }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "sotest-producer";
|
pname = "sotest-producer";
|
||||||
version = "0.1.1";
|
version = "0.1.3";
|
||||||
|
|
||||||
nativeBuildInputs = with buildPackages; [ tup pkgconfig ];
|
nativeBuildInputs = with buildPackages; [ tup pkgconfig ];
|
||||||
buildInputs = with genode; [ base os ];
|
buildInputs = with buildPackages; [ genodeLibcCross ];
|
||||||
|
|
||||||
src = fetchgit {
|
src = fetchgit {
|
||||||
url = "https://gitea.c3d2.de/ehmry/genode-sotest-producer.git";
|
url = "https://gitea.c3d2.de/ehmry/genode-sotest-producer.git";
|
||||||
rev = "v" + version;
|
rev = "v" + version;
|
||||||
sha256 = "0i51acml79m4drzz1r8jdysr9jklll5xllgw073qcrk407kff5qv";
|
sha256 = "0jmmshvmgq18ppdwac7mj9b55rczhbsk4vynglgb5vvjg6nqcr3p";
|
||||||
};
|
};
|
||||||
|
|
||||||
configurePhase = ''
|
configurePhase = ''
|
||||||
|
|
|
@ -22,7 +22,7 @@ let
|
||||||
nova = (call:
|
nova = (call:
|
||||||
((tests call) // {
|
((tests call) // {
|
||||||
driver_manager = call ./driver_manager.nix { };
|
driver_manager = call ./driver_manager.nix { };
|
||||||
# noux = call ./noux.nix { };
|
noux = call ./noux.nix { };
|
||||||
pci = call ./pci.nix { };
|
pci = call ./pci.nix { };
|
||||||
rtc = call ./rtc.nix { };
|
rtc = call ./rtc.nix { };
|
||||||
})) (import ./driver-nova.nix {
|
})) (import ./driver-nova.nix {
|
||||||
|
@ -55,5 +55,5 @@ let
|
||||||
}) (testsToList nova);
|
}) (testsToList nova);
|
||||||
|
|
||||||
in with builtins;
|
in with builtins;
|
||||||
listToAttrs ((concatLists (map (testsToList) [ linux nova hw ])) ++ hw-sotest
|
listToAttrs ((concatLists (map (testsToList) [ linux hw nova ])) ++ hw-sotest
|
||||||
++ nova-sotest)
|
++ nova-sotest)
|
||||||
|
|
|
@ -42,7 +42,7 @@ let
|
||||||
let
|
let
|
||||||
testConfig' = "${./driver-hw-config.dhall} ${testConfig}";
|
testConfig' = "${./driver-hw-config.dhall} ${testConfig}";
|
||||||
manifest = lib.mergeManifests (with testPkgs;
|
manifest = lib.mergeManifests (with testPkgs;
|
||||||
[ base-hw-pc genode.os sotest-producer ]
|
[ base-hw-pc os sotest-producer ]
|
||||||
++ testInputs);
|
++ testInputs);
|
||||||
testEnv' = {
|
testEnv' = {
|
||||||
DHALL_PRELUDE = "${testPkgs.dhallPrelude}/package.dhall";
|
DHALL_PRELUDE = "${testPkgs.dhallPrelude}/package.dhall";
|
||||||
|
|
|
@ -31,8 +31,8 @@ in λ(boot : Genode.Boot.Type)
|
||||||
|
|
||||||
in Genode.BootModules.toRomPaths
|
in Genode.BootModules.toRomPaths
|
||||||
[ manifest.base-linux.bin.core-linux
|
[ manifest.base-linux.bin.core-linux
|
||||||
, manifest.base-linux.bin.ld
|
|
||||||
, manifest.base-linux.bin.linux_timer_drv
|
, manifest.base-linux.bin.linux_timer_drv
|
||||||
|
, manifest.base-linux.lib.ld
|
||||||
, manifest.os.bin.init
|
, manifest.os.bin.init
|
||||||
, manifest.sotest-producer.bin.sotest-harness
|
, manifest.sotest-producer.bin.sotest-harness
|
||||||
]
|
]
|
||||||
|
|
|
@ -44,7 +44,7 @@ let
|
||||||
DHALL_GENODE = "${testPkgs.dhallGenode}/package.dhall";
|
DHALL_GENODE = "${testPkgs.dhallGenode}/package.dhall";
|
||||||
DHALL_WRAP_HARNESS = ./sotest-wrapper.dhall;
|
DHALL_WRAP_HARNESS = ./sotest-wrapper.dhall;
|
||||||
MANIFEST = lib.mergeManifests (with testPkgs;
|
MANIFEST = lib.mergeManifests (with testPkgs;
|
||||||
[ genode.base-linux genode.os sotest-producer ] ++ testInputs);
|
[ base-linux os sotest-producer ] ++ testInputs);
|
||||||
XDG_CACHE_HOME = "/tmp";
|
XDG_CACHE_HOME = "/tmp";
|
||||||
} // env;
|
} // env;
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,7 @@ let
|
||||||
let
|
let
|
||||||
testConfig' = "${./driver-nova-config.dhall} ${testConfig}";
|
testConfig' = "${./driver-nova-config.dhall} ${testConfig}";
|
||||||
manifest = lib.mergeManifests (with testPkgs;
|
manifest = lib.mergeManifests (with testPkgs;
|
||||||
[ base-nova genode.os sotest-producer ]
|
[ base-nova os sotest-producer ]
|
||||||
++ testInputs);
|
++ testInputs);
|
||||||
testEnv' = {
|
testEnv' = {
|
||||||
DHALL_PRELUDE = "${testPkgs.dhallPrelude}/package.dhall";
|
DHALL_PRELUDE = "${testPkgs.dhallPrelude}/package.dhall";
|
||||||
|
|
|
@ -7,7 +7,7 @@ testEnv.mkTest {
|
||||||
name = "driver_manager";
|
name = "driver_manager";
|
||||||
meta.maintainers = with pkgs.stdenv.lib.maintainers; [ ehmry ];
|
meta.maintainers = with pkgs.stdenv.lib.maintainers; [ ehmry ];
|
||||||
testEnv = { drivers = ./../compositions/pc-drivers.dhall; };
|
testEnv = { drivers = ./../compositions/pc-drivers.dhall; };
|
||||||
testInputs = (with pkgs; [ genodeTests driver_manager ]) ++ (with depot; [
|
testInputs = (with pkgs; [ genodeTests driversPc ]) ++ (with depot; [
|
||||||
boot_fb_drv
|
boot_fb_drv
|
||||||
intel_fb_drv
|
intel_fb_drv
|
||||||
usb_drv
|
usb_drv
|
||||||
|
|
|
@ -3,19 +3,20 @@ let Genode = env:DHALL_GENODE
|
||||||
let manifest = env:MANIFEST
|
let manifest = env:MANIFEST
|
||||||
|
|
||||||
in Genode.Boot.toRomPaths
|
in Genode.Boot.toRomPaths
|
||||||
[ manifest.driver_manager.bin.driver_manager
|
[
|
||||||
|
, manifest.drivers.bin.acpi_drv
|
||||||
|
, manifest.drivers.bin.ahci_drv
|
||||||
|
, manifest.drivers.bin.platform_drv
|
||||||
|
, manifest.drivers.bin.ps2_drv
|
||||||
|
, manifest.drivers.bin.rtc_drv
|
||||||
|
, manifest.drivers.bin.usb_drv
|
||||||
|
, manifest.drivers.bin.vesa_fb_drv
|
||||||
, manifest.genode-tests.bin.test-driver_manager
|
, manifest.genode-tests.bin.test-driver_manager
|
||||||
, manifest.os.bin.acpi_drv
|
, manifest.os.bin.driver_manager
|
||||||
, manifest.os.bin.ahci_drv
|
|
||||||
, manifest.os.bin.dynamic_rom
|
, manifest.os.bin.dynamic_rom
|
||||||
, manifest.os.bin.input_filter
|
, manifest.os.bin.input_filter
|
||||||
, manifest.os.bin.platform_drv
|
|
||||||
, manifest.os.bin.ps2_drv
|
|
||||||
, manifest.os.bin.report_rom
|
, manifest.os.bin.report_rom
|
||||||
, manifest.os.bin.rom_reporter
|
, manifest.os.bin.rom_reporter
|
||||||
, manifest.os.bin.rtc_drv
|
|
||||||
, manifest.usb_drv.bin.usb_drv
|
|
||||||
, manifest.vesa_drv.bin.vesa_fb_drv
|
|
||||||
]
|
]
|
||||||
# Genode.Boot.toRomTexts
|
# Genode.Boot.toRomTexts
|
||||||
( toMap
|
( toMap
|
||||||
|
|
|
@ -52,12 +52,12 @@ in { config =
|
||||||
|
|
||||||
in Genode.Boot.toRomPaths
|
in Genode.Boot.toRomPaths
|
||||||
[ manifest.bash-minimal.tar.bash-minimal
|
[ manifest.bash-minimal.tar.bash-minimal
|
||||||
, manifest.libc.lib.libc
|
, manifest.noux.lib.libc
|
||||||
, manifest.libc.lib.libm
|
, manifest.noux.lib.libm
|
||||||
, manifest.ncurses.lib.ncurses
|
, manifest.ncurses.lib.ncurses
|
||||||
, manifest.noux.bin.noux
|
, manifest.noux.bin.noux
|
||||||
, manifest.noux.lib.libc_noux
|
, manifest.noux.lib.libc_noux
|
||||||
, manifest.os.lib.vfs
|
, manifest.os.lib.vfs
|
||||||
, manifest.posix.lib.posix
|
, manifest.noux.lib.posix
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,12 +6,10 @@ with pkgs;
|
||||||
testEnv.mkTest rec {
|
testEnv.mkTest rec {
|
||||||
name = "noux";
|
name = "noux";
|
||||||
testConfig = ./noux.dhall;
|
testConfig = ./noux.dhall;
|
||||||
testInputs = with depot; [
|
testInputs = (with pkgs; [ noux ]) ++ (with depot; [
|
||||||
bash-minimal
|
bash-minimal
|
||||||
libc
|
|
||||||
ncurses
|
ncurses
|
||||||
noux
|
]);
|
||||||
posix
|
|
||||||
];
|
|
||||||
meta.maintainers = with pkgs.stdenv.lib.maintainers; [ ehmry ];
|
meta.maintainers = with pkgs.stdenv.lib.maintainers; [ ehmry ];
|
||||||
|
testScript = "run_genode_until {SOTEST SUCCESS} 40";
|
||||||
}
|
}
|
||||||
|
|
|
@ -97,9 +97,9 @@ in { config =
|
||||||
let manifest = env:MANIFEST
|
let manifest = env:MANIFEST
|
||||||
|
|
||||||
in Genode.Boot.toRomPaths
|
in Genode.Boot.toRomPaths
|
||||||
[ manifest.os.bin.acpi_drv
|
[ manifest.drivers.bin.acpi_drv
|
||||||
, manifest.os.bin.platform_drv
|
, manifest.drivers.bin.platform_drv
|
||||||
, manifest.os.bin.report_rom
|
, manifest.os.bin.report_rom
|
||||||
, manifest.os.bin.test-pci
|
, manifest.genode-tests.bin.test-pci
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,7 @@ testEnv.mkTest {
|
||||||
meta.maintainers = with pkgs.stdenv.lib.maintainers; [ ehmry ];
|
meta.maintainers = with pkgs.stdenv.lib.maintainers; [ ehmry ];
|
||||||
|
|
||||||
testConfig = ./pci.dhall;
|
testConfig = ./pci.dhall;
|
||||||
testInputs = [ pkgs.genodeTests ];
|
testInputs = [ pkgs.genodeTests pkgs.driversPc ];
|
||||||
testScript = ''
|
testScript = ''
|
||||||
run_genode_until "--- Platform test finished ---.*\n" 60
|
run_genode_until "--- Platform test finished ---.*\n" 60
|
||||||
'';
|
'';
|
||||||
|
|
|
@ -31,5 +31,5 @@ in { config =
|
||||||
let manifest = env:MANIFEST
|
let manifest = env:MANIFEST
|
||||||
|
|
||||||
in Genode.Boot.toRomPaths
|
in Genode.Boot.toRomPaths
|
||||||
[ manifest.genode-tests.bin.test-rtc, manifest.os.bin.rtc_drv ]
|
[ manifest.genode-tests.bin.test-rtc, manifest.drivers.bin.rtc_drv ]
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,6 @@ testEnv.mkTest {
|
||||||
meta.maintainers = with pkgs.stdenv.lib.maintainers; [ ehmry ];
|
meta.maintainers = with pkgs.stdenv.lib.maintainers; [ ehmry ];
|
||||||
|
|
||||||
testConfig = ./rtc.dhall;
|
testConfig = ./rtc.dhall;
|
||||||
testInputs = [ pkgs.genodeTests ];
|
testInputs = with pkgs; [ driversPc genodeTests ];
|
||||||
testScript = "run_genode_until {--- RTC test finished ---} 40";
|
testScript = "run_genode_until {--- RTC test finished ---} 40";
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@ let
|
||||||
testEnv.mkTest (attrs // {
|
testEnv.mkTest (attrs // {
|
||||||
name = "solo5-" + name;
|
name = "solo5-" + name;
|
||||||
inherit testScript;
|
inherit testScript;
|
||||||
testInputs = [ pkgs.solo5 pkgs.solo5.tests ];
|
testInputs = [ pkgs.solo5 pkgs.solo5.tests pkgs.driversPc ];
|
||||||
testConfig = "(${./boot-wrapper.dhall} ${testConfig})";
|
testConfig = "(${./boot-wrapper.dhall} ${testConfig})";
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -37,6 +37,6 @@ in { config =
|
||||||
|
|
||||||
in Genode.BootModules.toRomPaths
|
in Genode.BootModules.toRomPaths
|
||||||
[ manifest.solo5-tests.bin.solo5-test_time
|
[ manifest.solo5-tests.bin.solo5-test_time
|
||||||
, manifest.os.bin.rtc_drv
|
, manifest.drivers.bin.rtc_drv
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue