libretro.mkLibretroCore: switch to lib.extendMkDerivation
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
}:
|
||||
|
||||
lib.makeScope newScope (self: {
|
||||
mkLibretroCore = self.callPackage ./mkLibretroCore.nix;
|
||||
mkLibretroCore = self.callPackage ./mkLibretroCore.nix { };
|
||||
|
||||
atari800 = self.callPackage ./cores/atari800.nix { };
|
||||
|
||||
|
||||
@@ -6,96 +6,93 @@
|
||||
retroarch-bare,
|
||||
unstableGitUpdater,
|
||||
zlib,
|
||||
# Params
|
||||
core,
|
||||
makefile ? "Makefile.libretro",
|
||||
extraBuildInputs ? [ ],
|
||||
extraNativeBuildInputs ? [ ],
|
||||
## Location of resulting RetroArch core on $out
|
||||
libretroCore ? "/lib/retroarch/cores",
|
||||
## The core filename is derived from the core name
|
||||
## Setting `normalizeCore` to `true` will convert `-` to `_` on the core filename
|
||||
normalizeCore ? true,
|
||||
...
|
||||
}@args:
|
||||
}:
|
||||
|
||||
let
|
||||
d2u = if normalizeCore then (lib.replaceStrings [ "-" ] [ "_" ]) else (x: x);
|
||||
coreDir = placeholder "out" + libretroCore;
|
||||
coreFilename = "${d2u core}_libretro${stdenv.hostPlatform.extensions.sharedLibrary}";
|
||||
mainProgram = "retroarch-${core}";
|
||||
extraArgs = builtins.removeAttrs args [
|
||||
"lib"
|
||||
"stdenv"
|
||||
"makeWrapper"
|
||||
"retroarch-bare"
|
||||
"unstableGitUpdater"
|
||||
"zlib"
|
||||
lib.extendMkDerivation {
|
||||
constructDrv = stdenv.mkDerivation;
|
||||
|
||||
excludeDrvArgNames = [
|
||||
"core"
|
||||
"extraBuildInputs"
|
||||
"extraNativeBuildInputs"
|
||||
"libretroCore"
|
||||
"makefile"
|
||||
"normalizeCore"
|
||||
"passthru"
|
||||
"meta"
|
||||
];
|
||||
in
|
||||
stdenv.mkDerivation (
|
||||
{
|
||||
pname = "libretro-${core}";
|
||||
|
||||
buildInputs = [ zlib ] ++ extraBuildInputs;
|
||||
nativeBuildInputs = [ makeWrapper ] ++ extraNativeBuildInputs;
|
||||
extendDrvArgs =
|
||||
finalAttrs:
|
||||
{
|
||||
core,
|
||||
enableParallelBuilding ? true,
|
||||
extraBuildInputs ? [ ],
|
||||
extraNativeBuildInputs ? [ ],
|
||||
makeFlags ? [ ],
|
||||
makefile ? "Makefile.libretro",
|
||||
meta ? { },
|
||||
passthru ? { },
|
||||
strictDeps ? true,
|
||||
## Location of resulting RetroArch core on $out
|
||||
libretroCore ? "/lib/retroarch/cores",
|
||||
## The core filename is derived from the core name
|
||||
## Setting `normalizeCore` to `true` will convert `-` to `_` on the core filename
|
||||
normalizeCore ? true,
|
||||
...
|
||||
}:
|
||||
let
|
||||
d2u = if normalizeCore then (lib.replaceStrings [ "-" ] [ "_" ]) else (x: x);
|
||||
coreDir = placeholder "out" + libretroCore;
|
||||
coreFilename = "${d2u core}_libretro${stdenv.hostPlatform.extensions.sharedLibrary}";
|
||||
mainProgram = "retroarch-${core}";
|
||||
in
|
||||
{
|
||||
pname = "libretro-${core}";
|
||||
|
||||
inherit makefile;
|
||||
buildInputs = [ zlib ] ++ extraBuildInputs;
|
||||
nativeBuildInputs = [ makeWrapper ] ++ extraNativeBuildInputs;
|
||||
|
||||
makeFlags = [
|
||||
"platform=${
|
||||
{
|
||||
linux = "unix";
|
||||
darwin = "osx";
|
||||
windows = "win";
|
||||
}
|
||||
.${stdenv.hostPlatform.parsed.kernel.name} or stdenv.hostPlatform.parsed.kernel.name
|
||||
}"
|
||||
"ARCH=${
|
||||
{
|
||||
armv7l = "arm";
|
||||
armv6l = "arm";
|
||||
aarch64 = "arm64";
|
||||
i686 = "x86";
|
||||
}
|
||||
.${stdenv.hostPlatform.parsed.cpu.name} or stdenv.hostPlatform.parsed.cpu.name
|
||||
}"
|
||||
] ++ (args.makeFlags or [ ]);
|
||||
inherit enableParallelBuilding makefile strictDeps;
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
makeFlags = [
|
||||
"platform=${
|
||||
{
|
||||
linux = "unix";
|
||||
darwin = "osx";
|
||||
windows = "win";
|
||||
}
|
||||
.${stdenv.hostPlatform.parsed.kernel.name} or stdenv.hostPlatform.parsed.kernel.name
|
||||
}"
|
||||
"ARCH=${
|
||||
{
|
||||
armv7l = "arm";
|
||||
armv6l = "arm";
|
||||
aarch64 = "arm64";
|
||||
i686 = "x86";
|
||||
}
|
||||
.${stdenv.hostPlatform.parsed.cpu.name} or stdenv.hostPlatform.parsed.cpu.name
|
||||
}"
|
||||
] ++ makeFlags;
|
||||
|
||||
install -Dt ${coreDir} ${coreFilename}
|
||||
makeWrapper ${retroarch-bare}/bin/retroarch $out/bin/${mainProgram} \
|
||||
--add-flags "-L ${coreDir}/${coreFilename}"
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
install -Dt ${coreDir} ${coreFilename}
|
||||
makeWrapper ${retroarch-bare}/bin/retroarch $out/bin/${mainProgram} \
|
||||
--add-flags "-L ${coreDir}/${coreFilename}"
|
||||
|
||||
enableParallelBuilding = true;
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
inherit core libretroCore;
|
||||
# libretro repos sometimes has a fake tag like "Current", ignore
|
||||
# it by setting hardcodeZeroVersion
|
||||
updateScript = unstableGitUpdater { hardcodeZeroVersion = true; };
|
||||
} // (args.passthru or { });
|
||||
passthru = {
|
||||
inherit core libretroCore;
|
||||
# libretro repos sometimes has a fake tag like "Current", ignore
|
||||
# it by setting hardcodeZeroVersion
|
||||
updateScript = unstableGitUpdater { hardcodeZeroVersion = true; };
|
||||
} // passthru;
|
||||
|
||||
meta = {
|
||||
inherit mainProgram;
|
||||
inherit (retroarch-bare.meta) platforms;
|
||||
homepage = "https://www.libretro.com/";
|
||||
teams = [ lib.teams.libretro ];
|
||||
} // (args.meta or { });
|
||||
}
|
||||
// extraArgs
|
||||
)
|
||||
meta = {
|
||||
inherit mainProgram;
|
||||
inherit (retroarch-bare.meta) platforms;
|
||||
teams = [ lib.teams.libretro ];
|
||||
} // meta;
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user