119 lines
3.8 KiB
Nix
119 lines
3.8 KiB
Nix
{
|
|
description = "A flake for Genode Libretro packages";
|
|
|
|
edition = 201909;
|
|
|
|
inputs = {
|
|
nixpkgs.uri = "github:ehmry/nixpkgs";
|
|
genodepkgs.url = "git+https://gitea.c3d2.de/ehmry/genodepkgs";
|
|
};
|
|
|
|
outputs = { self, nixpkgs, genodepkgs }:
|
|
let
|
|
submoduleList = import ./submodules.nix;
|
|
|
|
expandSubmodule = system: name:
|
|
|
|
let
|
|
thisSystem = builtins.getAttr system;
|
|
nixpkgs' = thisSystem nixpkgs.legacyPackages;
|
|
genodepkgs' = thisSystem genodepkgs.packages;
|
|
|
|
libretroCommon = with builtins;
|
|
let sm = getAttr "libretro-common" (listToAttrs submoduleList);
|
|
in nixpkgs'.fetchgit {
|
|
inherit (sm) url;
|
|
inherit (sm.prefetch) rev sha256 fetchSubmodules;
|
|
};
|
|
|
|
in { smPath, prefetch, url }:
|
|
let
|
|
value = nixpkgs'.stdenv.mkDerivation {
|
|
pname = name;
|
|
version = "unstable";
|
|
src = self;
|
|
smSrc = nixpkgs'.fetchgit {
|
|
inherit url;
|
|
inherit (prefetch) rev sha256 fetchSubmodules;
|
|
};
|
|
|
|
inherit libretroCommon smPath;
|
|
|
|
nativeBuildInputs = with nixpkgs'.buildPackages; [ tup pkgconfig ];
|
|
|
|
buildInputs = with genodepkgs'; [ base os libc stdcxx ];
|
|
|
|
configurePhase = ''
|
|
find . -name Tupfile -delete
|
|
mkdir -p libretro-common $smPath
|
|
cp -r $libretroCommon/* libretro-common/
|
|
cp -r $smSrc/* $smPath
|
|
chmod -R +rwX libretro-common/* $smPath/
|
|
tup init
|
|
tup -d generate tup-builder.sh
|
|
#echo builder generated
|
|
'';
|
|
|
|
buildPhase = ''
|
|
mkdir -p $out
|
|
ln -s $out out
|
|
pushd .
|
|
set -v
|
|
source tup-builder.sh
|
|
set +v
|
|
popd
|
|
'';
|
|
|
|
dontInstall = true;
|
|
};
|
|
in { inherit name value; };
|
|
|
|
expandPackagesList = { system, localSystem, crossSystem }:
|
|
map (sm: expandSubmodule system sm.name sm.value) submoduleList;
|
|
|
|
expandPackages = system: builtins.listToAttrs (expandPackagesList system);
|
|
|
|
systems = [ "x86_64-genode" ];
|
|
|
|
in {
|
|
packages = nixpkgs.lib.forAllCrossSystems expandPackages;
|
|
|
|
defaultPackage.x86_64-linux =
|
|
self.packages.x86_64-linux-x86_64-genode.retro_frontend;
|
|
|
|
hydraJobs = self.packages;
|
|
|
|
/* checks = nixpkgs.lib.forAllCrossSystems ({ system, localSystem, crossSystem }:
|
|
let
|
|
packages = (builtins.getAttr system genodepkgs.packages)
|
|
// (builtins.getAttr system self.packages);
|
|
depot = builtins.getAttr system genode-depot.packages;
|
|
lib = nixpkgs.lib // genodepkgs.lib;
|
|
in import ./checks { inherit system packages depot lib; });
|
|
|
|
testNova = nixpkgs.lib.forAllCrossSystems
|
|
({ system, localSystem, crossSystem }:
|
|
let
|
|
thisSystem = builtins.getAttr system;
|
|
packages = (thisSystem genodepkgs.packages)
|
|
// (thisSystem self.packages);
|
|
depot = thisSystem genode-depot.packages;
|
|
lib = nixpkgs.lib // genodepkgs.lib;
|
|
systemLib = thisSystem lib;
|
|
in rom@{ ... }:
|
|
systemLib.buildNovaIso {
|
|
name = "libretro-test-nova";
|
|
rom = {
|
|
config = systemLib.renderDhallInit ./checks/test.dhall "{=}";
|
|
"libc.lib.so" = "${depot.libc}/lib/libc.lib.so";
|
|
"libm.lib.so" = "${depot.libc}/lib/libm.lib.so";
|
|
"vfs.lib.so" = "${packages.os}/lib/vfs.lib.so";
|
|
retro_frontend = packages.retro_frontend
|
|
+ "/bin/retro_frontend/retro_frontend";
|
|
} // rom;
|
|
});
|
|
*/
|
|
|
|
};
|
|
}
|