2
0
Fork 0
Genode Packages collection https://git.sr.ht/~ehmry/genodepkgs/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
genodepkgs/overlay/default.nix

146 lines
4.1 KiB

{ flake }:
final: prev:
with prev;
let
overrideHost = drv: attrs:
if hostPlatform.isGenode then drv.override attrs else drv;
overrideHostAttrs = drv: f:
if hostPlatform.isGenode then drv.overrideAttrs f else drv;
overrideTarget = drv: f:
if targetPlatform.isGenode then drv.override f else drv;
overrideTargetAttrs = drv: f:
if targetPlatform.isGenode then drv.overrideAttrs f else drv;
addPatches = drv: patch:
overrideTargetAttrs drv
(attrs: { patches = attrs.patches or [ ] ++ [ patch ]; });
addHostPatches = if hostPlatform.isGenode then
drv: patches:
overrideTargetAttrs drv
(attrs: { patches = attrs.patches or [ ] ++ patches; })
else
drv: _: drv;
in {
bash = overrideTargetAttrs bash (attrs: {
configureFlags = attrs.configureFlags
++ [ "--without-bash-malloc" ]; # no sbrk please
postPatch = "sed '/check_dev_tty/d' shell.c";
});
binutils-unwrapped = overrideTargetAttrs binutils-unwrapped (attrs: {
patches = attrs.patches ++ [ ./binutils/support-genode.patch ];
nativeBuildInputs = [ final.updateAutotoolsGnuConfigScriptsHook ];
});
cmake = overrideTargetAttrs cmake (attrs: {
postInstall = with stdenv; ''
local MODULE="$out/share/cmake-${
lib.versions.majorMinor attrs.version
}/Modules/Platform/Genode.cmake"
if [ -e "$MODULE" ]; then
echo "Upstream provides $MODULE!"
exit 1
fi
cp ${./cmake/Genode.cmake} $MODULE
'';
});
coreutils = if targetPlatform.isGenode then
(coreutils.override {
gmp = null;
libiconv = null;
}).overrideAttrs (attrs: {
configureFlags = [
"--disable-acl"
"--disable-largefile"
"--disable-xattr"
"--disable-libcap"
"--disable-nls"
];
LDFLAGS = [ "-Wl,--no-as-needed" ];
# keep libposix NEEDED
})
else
coreutils;
gdb = addPatches gdb [ ./gdb/genode.patch ];
genodeLibcCross = callPackage ./libc { };
genodePackages = import ../packages {
inherit flake;
pkgs = final;
};
libconfig = overrideHostAttrs libconfig
(attrs: { configureFlags = [ "--disable-examples" ]; });
libcCrossChooser = name:
if stdenv.targetPlatform.isGenode then
targetPackages.genodeLibcCross
else
prev.libcCrossChooser name;
libsodium = overrideHostAttrs libsodium (attrs: {
patches = (attrs.patches or [ ]) ++ [ ./libsodium/genode.patch ];
});
libtool = overrideTargetAttrs libtool (attrs: {
nativeBuildInputs = attrs.nativeBuildInputs ++ [ autoconf automake115x ];
patches = ./libtool/genode.patch;
});
libtoxcore = overrideHost libtoxcore {
libopus = null;
libvpx = null;
ncurses = null;
};
llvmPackages_11 = callPackage ./llvm-11 ({
inherit (stdenvAdapters) overrideCC;
buildLlvmTools = buildPackages.llvmPackages_11.tools;
targetLlvmLibraries = targetPackages.llvmPackages_11.libraries;
inherit (final.genodePackages.genodeSources) genodeBase;
} // stdenv.lib.optionalAttrs
(stdenv.hostPlatform.isi686 && buildPackages.stdenv.cc.isGNU) {
stdenv = gcc7Stdenv;
});
ncurses = addHostPatches ncurses [ ./ncurses/genode.patch ];
openssl = overrideHostAttrs openssl (attrs: {
outputs = [ "out" ]
++ builtins.filter (x: x != "bin" && x != "out") attrs.outputs;
patches = attrs.patches or [ ] ++ [ ./openssl/genode.patch ];
configureScript = {
x86_64-genode = "./Configure Genode-x86_64";
}.${stdenv.hostPlatform.system} or (throw
"Not sure what configuration to use for ${stdenv.hostPlatform.config}");
configureFlags = attrs.configureFlags ++ [ "no-devcryptoeng" ];
postInstall =
"rm $out/bin/c_rehash"; # eliminate the perl runtime dependency
});
rsync = overrideHostAttrs (overrideHost rsync {
enableACLs = false;
popt = null;
}) (attrs: { outputs = [ "out" "man" ]; });
solo5-tools = callPackage ./solo5-tools { };
zlib = overrideHostAttrs zlib (attrs: {
postInstall = attrs.postInstall or "" + ''
pushd ''${!outputLib}/lib
find . -type l -delete
mv libz.so.* libz.so
popd
'';
});
}