2
0
Fork 0

Move genodeSources from packages to overlay

This commit is contained in:
Ehmry - 2020-03-27 13:03:50 +05:30
parent e0742fef4e
commit 8a74a86599
10 changed files with 192 additions and 173 deletions

View File

@ -19,12 +19,13 @@ with prev; {
cp ${./cmake/Genode.cmake} $MODULE
'' else
null;
});
genodeHeaders = callPackage ./headers { };
genodeLibcCross = callPackage ./libc { stdenv = crossLibcStdenv; };
genodeSources = buildPackages.callPackage ./genode { };
libcCrossChooser = name:
if stdenv.targetPlatform.isGenode then
targetPackages.genodeLibcCross or genodeLibcCross

157
overlay/genode/default.nix Normal file
View File

@ -0,0 +1,157 @@
{ buildPackages, targetPackages }:
with buildPackages;
let
version = "20.02";
genodeSources = let
platform = targetPackages.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-"
else
throw "unknown tool prefix for Genode arch ${arch}";
in stdenvNoCC.mkDerivation {
pname = "genode-sources";
inherit version;
src = fetchurl {
url = "https://github.com/genodelabs/genode/archive/${version}.tar.gz";
hash = "sha256-ZY9ND6vDA9u127TAv87uOjPuLzRzBPyp5PzD6iM7uNI=";
};
nativeBuildInputs = [ expect gnumake tcl ];
patches = [ ./init.xsd.patch ./svn-trust-server-cert.patch ];
configurePhase = ''
patchShebangs ./tool
substituteInPlace repos/base/etc/tools.conf \
--replace "/usr/local/genode/tool/19.05/bin/" ""
substituteInPlace tool/check_abi \
--replace "exec nm" "exec ${toolPrefix}nm"
'';
dontBuild = true;
installPhase = "cp -a . $out";
};
sourceForgeToolchain = callPackage ./toolchain.nix { };
stdenv' = targetPackages.stdenvAdapters.overrideCC targetPackages.stdenv
sourceForgeToolchain;
platform = stdenv'.targetPlatform;
arch = with platform;
if isx86_64 then
"x86_64"
else
throw "unknown Genode arch for platform ${platform.system}";
preparePort = name:
{ hash ? "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", ... }@args:
stdenvNoCC.mkDerivation (args // {
outputHashMode = "recursive";
outputHash = hash;
pname = name;
inherit (genodeSources) version;
GIT_SSL_CAINFO = "${cacert}/etc/ssl/certs/ca-bundle.crt";
VERBOSE = "";
# need to build in verbose mode because errors are hidden
impureEnvVars = stdenv'.lib.fetchers.proxyImpureEnvVars
++ [ "GIT_PROXY_COMMAND" "SOCKS_SERVER" ];
dontUnpack = true;
dontConfigure = true;
nativeBuildInputs =
[ bison flex gitMinimal glibc glibcLocales rsync wget which ]
++ (args.nativeBuildInputs or [ ]);
buildPhase = ''
runHook preBuild
export CONTRIB_DIR=$NIX_BUILD_TOP/contrib
mkdir $CONTRIB_DIR
${genodeSources}/tool/ports/prepare_port $pname
runHook postBuild
'';
installPhase = ''
runHook preInstall
rsync $CONTRIB_DIR/* $out/ \
-lr --copy-unsafe-links \
--exclude '*.git' \
--exclude '*.svn' \
--exclude '*.gz' \
--exclude '*.xz' \
runHook postInstall
'';
});
ports = stdenv.lib.mapAttrs preparePort
(import ./ports.nix { inherit buildPackages; });
buildUpstream = { name, targets, portInputs ? [ ], nativeBuildInputs ? [ ]
, ... }@extraAttrs:
let
drv = stdenv'.mkDerivation (extraAttrs // {
pname = name;
inherit (genodeSources) version;
inherit targets;
dontUnpack = true;
nativeBuildInputs = [ binutils bison flex stdenv.cc tcl which ]
++ nativeBuildInputs;
enableParallelBuilding = true;
configurePhase = let
linkPorts = toString
(builtins.map (drv: " ln -sv ${drv}/* contrib/;") portInputs);
in ''
runHook preConfigure
export CONTRIB_DIR=$NIX_BUILD_TOP/contrib
export BUILD_DIR=$NIX_BUILD_TOP/build
${genodeSources}/tool/create_builddir ${arch}
substituteInPlace build/etc/build.conf \
--replace "#REPOSITORIES" "REPOSITORIES"
mkdir $CONTRIB_DIR; ${linkPorts}
runHook postConfigure
'';
makeFlags = [ "-C build" ] ++ targets;
installPhase = ''
runHook preInstall
find build/bin -name '*.xsd' -delete
find build/bin -follow -type f -exec install -Dt $out '{}' \;
runHook postInstall
'';
});
in drv;
buildOverrides = callPackage ./targets.nix { inherit ports; };
in genodeSources // {
inherit buildUpstream;
inherit ports;
toolchain = sourceForgeToolchain;
make = target:
with builtins;
let
attrs = if hasAttr target buildOverrides then
getAttr target buildOverrides
else
{ };
in buildUpstream ({
name = replaceStrings [ "/" ] [ "-" ] target;
targets = [ target ];
} // attrs);
}

View File

@ -0,0 +1,23 @@
commit 1b8f44e80801bbb8d3dba813b72eed4c6a5a5ca6
Author: Emery Hemingway <ehmry@posteo.net>
Date: Fri Mar 20 20:10:28 2020 +0530
part_block: support for up to 128 session
Allow sessions for each of the 128 sessions supported by GPT.
Fix #3705
diff --git a/repos/os/src/server/part_block/main.cc b/repos/os/src/server/part_block/main.cc
index a446be31db..56bade6086 100644
--- a/repos/os/src/server/part_block/main.cc
+++ b/repos/os/src/server/part_block/main.cc
@@ -226,7 +226,7 @@ class Block::Main : Rpc_object<Typed_root<Session>>,
Gpt _gpt { _env, _block, _heap, _reporter };
Partition_table &_partition_table { _table() };
- enum { MAX_SESSIONS = 32 };
+ enum { MAX_SESSIONS = 128 };
Session_component *_sessions[MAX_SESSIONS] { };
Job_queue<128> _job_queue { };
Registry<Block::Job> _job_registry { };

View File

@ -1,7 +1,6 @@
# ports are superficially similar to Nix, but inferior in every way
nativePkgs:
with nativePkgs; {
{ buildPackages }:
with buildPackages; {
dde_bsd.hash = "sha256-2ilZs6JkcQAvU/sQYnHunGtGRZDt7qLTpKZxQxSOf2I=";
dde_ipxe.hash = "sha256-KAmDF2t+xKzkEjWZ1bvLO8O+IlaV0ImuFsd8SIC3UQw=";
dde_linux.hash = "sha256-a1oaYF5S8OazyCOu/Jq+YOfrN4Kyb4JesLs222Vanjc=";

View File

@ -1,8 +1,5 @@
{ buildPackages, ports }:
with ports;
{
with ports; {
"app/gpt_write".portInputs = [ jitterentropy ];
"app/lighttpd".portInputs = [ libc lighttpd openssl zlib ];
@ -23,7 +20,7 @@ with ports;
"lib/vfs/ttf".portInputs = [ libc stb ];
"lib/vfs/rump" = {
portInputs = [ dde_rump ];
buildInputs = [ buildPackages.zlib ];
buildInputs = with buildPackages; [ zlib ];
};
noux = {

View File

@ -3,11 +3,10 @@
{ nixpkgs }:
let
inherit (nixpkgs) callPackage;
dhallPackages = nixpkgs.buildPackages.callPackage ./dhall { };
inherit (nixpkgs) callPackage genodeSources;
inherit (genodeSources) buildUpstream;
genodeLabs = import ./genodelabs { inherit nixpkgs; };
inherit (genodeLabs) buildUpstream;
dhallPackages = nixpkgs.buildPackages.callPackage ./dhall { };
buildWorld = let
genodeWorld = nixpkgs.fetchFromGitHub {
@ -17,7 +16,7 @@ let
hash = "sha256-sirmUtLmZ5YnfLKrOvOBafnZW3UW+1LtkiGu85Ma820=";
};
in attrs:
buildUpstream (attrs // {
genodeSources.buildUpstream (attrs // {
postConfigure =
"echo REPOSITORIES += ${genodeWorld} >> build/etc/build.conf";
});
@ -25,8 +24,7 @@ let
genodeTupRules = ./Tuprules.tup;
in rec {
inherit (nixpkgs) stdenv;
inherit (genodeLabs) genodeSources; # toolchain;
inherit (nixpkgs) stdenv genodeSources;
base-hw-pc = buildUpstream {
name = "base-hw-pc";
@ -66,7 +64,7 @@ in rec {
'';
};
init = genodeSources.make "init";
init = nixpkgs.genodeSources.make "init";
ssh_client = buildWorld {
name = "ssh_client";

View File

@ -1,156 +0,0 @@
{ nixpkgs }:
let
genodeSources = let
inherit (nixpkgs) stdenv;
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-"
else
throw "unknown tool prefix for Genode arch ${arch}";
in stdenv.mkDerivation {
pname = "genode-sources";
inherit (nixpkgs.genodeHeaders) src version;
nativeBuildInputs = with nixpkgs.buildPackages; [ expect gnumake tcl ];
patches = [ ./init.xsd.patch ./svn-trust-server-cert.patch ];
configurePhase = ''
patchShebangs ./tool
substituteInPlace repos/base/etc/tools.conf \
--replace "/usr/local/genode/tool/19.05/bin/" ""
substituteInPlace tool/check_abi \
--replace "exec nm" "exec ${toolPrefix}nm"
'';
dontBuild = true;
installPhase = "cp -a . $out";
};
sourceForgeToolchain = nixpkgs.buildPackages.callPackage ./toolchain.nix { };
stdenv' =
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}";
preparePort = name:
{ hash ? "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", ... }@args:
nixpkgs.buildPackages.stdenv.mkDerivation (args // {
outputHashMode = "recursive";
outputHash = hash;
pname = name;
inherit (genodeSources) version;
GIT_SSL_CAINFO =
"${nixpkgs.buildPackages.cacert}/etc/ssl/certs/ca-bundle.crt";
VERBOSE = "";
# need to build in verbose mode because errors are hidden
impureEnvVars = stdenv'.lib.fetchers.proxyImpureEnvVars
++ [ "GIT_PROXY_COMMAND" "SOCKS_SERVER" ];
dontUnpack = true;
dontConfigure = true;
nativeBuildInputs = with nixpkgs.buildPackages;
[ bison flex gitMinimal glibc glibcLocales rsync wget which ]
++ (args.nativeBuildInputs or [ ]);
buildPhase = ''
runHook preBuild
export CONTRIB_DIR=$NIX_BUILD_TOP/contrib
mkdir $CONTRIB_DIR
${genodeSources}/tool/ports/prepare_port $pname
runHook postBuild
'';
installPhase = ''
runHook preInstall
rsync $CONTRIB_DIR/* $out/ \
-lr --copy-unsafe-links \
--exclude '*.git' \
--exclude '*.svn' \
--exclude '*.gz' \
--exclude '*.xz' \
runHook postInstall
'';
});
ports =
nixpkgs.lib.mapAttrs preparePort (import ./ports.nix nixpkgs.buildPackages);
buildUpstream = { name, targets, portInputs ? [ ], nativeBuildInputs ? [ ]
, ... }@extraAttrs:
stdenv'.mkDerivation (extraAttrs // {
pname = name;
inherit (genodeSources) version;
inherit targets;
dontUnpack = true;
nativeBuildInputs = with nixpkgs.buildPackages;
[ binutils bison flex stdenv.cc tcl which ] ++ nativeBuildInputs;
enableParallelBuilding = true;
configurePhase = let
linkPorts = toString
(builtins.map (drv: " ln -sv ${drv}/* contrib/;") portInputs);
in ''
runHook preConfigure
export CONTRIB_DIR=$NIX_BUILD_TOP/contrib
export BUILD_DIR=$NIX_BUILD_TOP/build
${genodeSources}/tool/create_builddir ${arch}
substituteInPlace build/etc/build.conf \
--replace "#REPOSITORIES" "REPOSITORIES"
mkdir $CONTRIB_DIR; ${linkPorts}
runHook postConfigure
'';
makeFlags = [ "-C build" ] ++ targets;
installPhase = ''
runHook preInstall
find build/bin -name '*.xsd' -delete
find build/bin -follow -type f -exec install -Dt $out '{}' \;
runHook postInstall
'';
});
buildOverrides = import ./targets.nix {
inherit (nixpkgs) buildPackages;
inherit ports;
};
in {
inherit buildUpstream;
genodeSources = genodeSources // {
make = target:
with builtins;
let
attrs = if hasAttr target buildOverrides then
getAttr target buildOverrides
else
{ };
in buildUpstream ({
name = builtins.replaceStrings [ "/" ] [ "-" ] target;
targets = [ target ];
} // attrs);
inherit ports;
toolchain = sourceForgeToolchain;
};
}