Nix expr: Add binary releases back to 2.3.2, some cleanup
This commit is contained in:
parent
83ec4594d6
commit
dada959cfa
|
@ -1,6 +1,6 @@
|
|||
{ lib
|
||||
# infrastructure
|
||||
, drvVersionAtLeast
|
||||
, isVersionAtLeast
|
||||
, replaceDotWithUnderscore
|
||||
, fetchFromGitHub
|
||||
, fetchFromGitLab
|
||||
|
@ -13,14 +13,17 @@
|
|||
* updating? make sure to hit the rest of this file, the hand-written deps `/Dist/deps-historical.nix`,
|
||||
* the shell script for CI `/Dist/nix_expr_check_attrs.sh`, and the docs `/Dist/nix_expr_usage_docs.md`
|
||||
*/
|
||||
releases = [ "2.9.1" "2.9" "2.8" "2.7" "2.6.3" "2.6.2" "2.6.1" "2.6" ];
|
||||
releases = [
|
||||
"2.9.1" "2.9" "2.8" "2.7" "2.6.3" "2.6.2" "2.6.1" "2.6"
|
||||
"2.5.2" "2.5.1" "2.5" "2.4.2" "2.4.1" "2.4" "2.3.3" "2.3.2"
|
||||
];
|
||||
releaseCount = lib.length releases;
|
||||
releaseFrags = builtins.map replaceDotWithUnderscore releases;
|
||||
releaseOffsetLookup = lib.listToAttrs (lib.imap0 (lib.flip lib.nameValuePair) releaseFrags);
|
||||
depsForHistoricalRelease = releaseFrag: fetchNuGet: let
|
||||
file = import ./deps-historical.nix;
|
||||
windows = (builtins.map (s: file."since-${s}") releaseFrags) ++ (builtins.map (s: file."until-${s}") releaseFrags);
|
||||
extras = builtins.map (s: file."only-${s}") releaseFrags;
|
||||
windows = builtins.map (s: file."since-${s}" or []) releaseFrags ++ builtins.map (s: file."until-${s}" or []) releaseFrags;
|
||||
extras = builtins.map (s: file."only-${s}" or []) releaseFrags;
|
||||
i = releaseOffsetLookup.${releaseFrag};
|
||||
in builtins.map fetchNuGet (lib.elemAt extras i ++ lib.concatLists (lib.sublist i releaseCount windows));
|
||||
releaseTagSourceInfos = let
|
||||
|
@ -36,11 +39,10 @@
|
|||
};
|
||||
in (lib.optionalAttrs (dotnet-sdk != null) { inherit dotnet-sdk; }) // {
|
||||
inherit shortHash version;
|
||||
branch = "master";
|
||||
drv = fetchFromGitHub (fetcherArgs // { owner = "TASEmulators"; });
|
||||
src = fetchFromGitHub (fetcherArgs // { owner = "TASEmulators"; });
|
||||
#TODO can use `srcs` w/ `buildDotnetModule`?
|
||||
# verified hashes match for 2.7 through 2.9, but 2.9.1 rev (745efb1dd) was missing (force-push nonsense IIRC)
|
||||
drv1 = fetchFromGitLab (fetcherArgs // { owner = "TASVideos"; });
|
||||
src1 = fetchFromGitLab (fetcherArgs // { owner = "TASVideos"; });
|
||||
nugetDeps = let
|
||||
releaseFrag = replaceDotWithUnderscore version;
|
||||
in mkNugetDeps {
|
||||
|
@ -138,6 +140,47 @@
|
|||
hashPostPatching = "sha256-kswmNENYxumQlJdUKRQcb5Ni5+aXUqKxEnJ8jX5OHQ0=";
|
||||
dotnet-sdk = dotnet-sdk_5;
|
||||
};
|
||||
# if you want to get these building from source, start by changing `releasesEmuHawkInstallables` in `default.nix` so the attrs are actually exposed
|
||||
info-2_5_2 = {
|
||||
version = "2.5.2";
|
||||
rev = "21a476200e76ef815d2bb66dffc167f9720a4eb9";
|
||||
hashPostPatching = "";
|
||||
};
|
||||
info-2_5_1 = {
|
||||
version = "2.5.1";
|
||||
rev = "f104807193bd5a4bffdd67d52967ab844038775e";
|
||||
hashPostPatching = "";
|
||||
};
|
||||
info-2_5 = {
|
||||
version = "2.5";
|
||||
rev = "5b93ef14dc613417eb937c1f793dd2dfb851d717";
|
||||
hashPostPatching = "";
|
||||
};
|
||||
info-2_4_2 = {
|
||||
version = "2.4.2";
|
||||
rev = "546ccda9189e346840909350eca8b1fdcadad081";
|
||||
hashPostPatching = "";
|
||||
};
|
||||
info-2_4_1 = {
|
||||
version = "2.4.1";
|
||||
rev = "60a1ddea5e4775f3be4bd417d53cacf0eba978c4";
|
||||
hashPostPatching = "";
|
||||
};
|
||||
info-2_4 = {
|
||||
version = "2.4";
|
||||
rev = "16f5da9f9c2e57ac7a8bb70b2028e3a9501127b8";
|
||||
hashPostPatching = "";
|
||||
};
|
||||
info-2_3_3 = {
|
||||
version = "2.3.3";
|
||||
rev = "c330541c35e97c66df31d1616a69927cf65bf318";
|
||||
hashPostPatching = "";
|
||||
};
|
||||
info-2_3_2 = {
|
||||
version = "2.3.2";
|
||||
rev = "92847b1d1d534108143cfbff1e266036332c0573";
|
||||
hashPostPatching = "";
|
||||
};
|
||||
};
|
||||
in {
|
||||
inherit depsForHistoricalRelease releaseFrags releaseTagSourceInfos;
|
||||
|
@ -145,40 +188,51 @@ in {
|
|||
populateHawkSourceInfo = hawkSourceInfo: let
|
||||
inherit (hawkSourceInfo) version;
|
||||
neededExtraManagedDepsApprox = [ "virtu" ]
|
||||
++ lib.optionals (drvVersionAtLeast "2.6" version) [ "hawkQuantizer" "isoParser" ]
|
||||
++ lib.optionals (drvVersionAtLeast "2.6.2" version) [ "flatBuffersGenOutput" "srcGenReflectionCache" ]
|
||||
++ lib.optionals (!drvVersionAtLeast "2.9" version) [ "flatBuffersCore" "gongShell" ]
|
||||
++ lib.optionals (drvVersionAtLeast "2.9" version) [ "bizhawkAnalyzer" "nlua" ]
|
||||
++ lib.optional (drvVersionAtLeast "2.9.1" version) "srcGenVersionInfo"
|
||||
++ lib.optionals (!drvVersionAtLeast "2.9.2" version) [ "slimDX" "systemDataSqliteDropIn" ]
|
||||
++ lib.optional (drvVersionAtLeast "2.9.2" version) "srcGenSettingsUtil"
|
||||
++ lib.optionals (isVersionAtLeast "2.6" version) [ "hawkQuantizer" "isoParser" ]
|
||||
++ lib.optionals (isVersionAtLeast "2.6.2" version) [ "flatBuffersGenOutput" "srcGenReflectionCache" ]
|
||||
++ lib.optionals (!isVersionAtLeast "2.9" version) [ "flatBuffersCore" "gongShell" ]
|
||||
++ lib.optionals (isVersionAtLeast "2.9" version) [ "bizhawkAnalyzer" "nlua" ]
|
||||
++ lib.optional (isVersionAtLeast "2.9.1" version) "srcGenVersionInfo"
|
||||
++ lib.optionals (!isVersionAtLeast "2.9.2" version) [ "slimDX" "systemDataSqliteDropIn" ]
|
||||
++ lib.optional (isVersionAtLeast "2.9.2" version) "srcGenSettingsUtil"
|
||||
;
|
||||
in {
|
||||
inherit neededExtraManagedDepsApprox;
|
||||
__contentAddressed = false; #TODO try w/ CA
|
||||
copyingAssetsInEmuHawkProj = drvVersionAtLeast "2.6.3" version;
|
||||
copyingAssetsInEmuHawkProj = isVersionAtLeast "2.6.3" version;
|
||||
dotnet-sdk = dotnet-sdk_6;
|
||||
exePathRespectsEnvVar = drvVersionAtLeast "2.9.2" version;
|
||||
hasAssetsInOutput = !drvVersionAtLeast "2.6.1" version;
|
||||
hasFFmpegPatch_e68a49aa5 = drvVersionAtLeast "2.9.2" version; # with e68a49aa5, downloading *and running* FFmpeg finally works; TODO use FFmpeg from Nixpkgs since it's a stable version (4.4.1)
|
||||
hasMiscTypeCheckerPatch_6afb3be98 = drvVersionAtLeast "2.6.2" version;
|
||||
exePathRespectsEnvVar = isVersionAtLeast "2.9.2" version;
|
||||
hasAssemblyResolveHandler = isVersionAtLeast "2.3.3" version;
|
||||
hasAssetsInOutput = !isVersionAtLeast "2.6.1" version;
|
||||
hasFFmpegPatch_e68a49aa5 = isVersionAtLeast "2.9.2" version; # with e68a49aa5, downloading *and running* FFmpeg finally works; TODO use FFmpeg from Nixpkgs since it's a stable version (4.4.1)
|
||||
hasMiscTypeCheckerPatch_6afb3be98 = isVersionAtLeast "2.6.2" version;
|
||||
neededExtraManagedDeps = neededExtraManagedDepsApprox;
|
||||
needsSDL = drvVersionAtLeast "2.9.2" version;
|
||||
needsSDL = isVersionAtLeast "2.9.2" version;
|
||||
nugetDeps = ./deps.nix;
|
||||
packageScriptNeeds7Zip = !drvVersionAtLeast "2.6.3" version;
|
||||
packageScriptRemovesWinFilesFromLinux = drvVersionAtLeast "2.9.2" version;
|
||||
pathConfigNeedsOrdinal = !drvVersionAtLeast "2.7.1" version;
|
||||
packageScriptNeeds7Zip = !isVersionAtLeast "2.6.3" version;
|
||||
packageScriptRemovesWinFilesFromLinux = isVersionAtLeast "2.9.2" version;
|
||||
pathConfigNeedsOrdinal = !isVersionAtLeast "2.7.1" version;
|
||||
releaseArtifactHasRogueOTKAsmConfig = version == "2.9.1";
|
||||
versionProjNeedsDoubleBuild = !drvVersionAtLeast "2.9.1" version;
|
||||
releaseArtifactNeedsLowercaseAsms = !isVersionAtLeast "2.3.3" version;
|
||||
releaseArtifactNeedsOTKAsmConfig = isVersionAtLeast "2.3.3" version && !isVersionAtLeast "2.5" version; # see a1b501fe5
|
||||
releaseArtifactNeedsVBDotnetReference = !isVersionAtLeast "2.5.1" version;
|
||||
versionProjNeedsDoubleBuild = !isVersionAtLeast "2.9.1" version;
|
||||
#TODO warn about missing/broken features when eval'ing older releases
|
||||
} // hawkSourceInfo;
|
||||
/** to be passed to `splitReleaseArtifact` */
|
||||
releaseArtifactInfos = lib.mapAttrs'
|
||||
(releaseFrag: value: {
|
||||
name = "bizhawkAssemblies-${releaseFrag}-bin";
|
||||
value = {
|
||||
hawkSourceInfo = releaseTagSourceInfos."info-${releaseFrag}" // { branch = "release"; } // value.hawkSourceInfo or {};
|
||||
} // value;
|
||||
value = let
|
||||
hawkSourceInfo = releaseTagSourceInfos."info-${releaseFrag}" // value.hawkSourceInfo or {};
|
||||
in {
|
||||
inherit hawkSourceInfo;
|
||||
${if isVersionAtLeast "2.6" hawkSourceInfo.version
|
||||
then if isVersionAtLeast "2.6.3" hawkSourceInfo.version
|
||||
then null
|
||||
else "zippedTarball"
|
||||
else "crossPlatformArtifact"} = true;
|
||||
} // lib.optionalAttrs (!isVersionAtLeast "2.6" hawkSourceInfo.version) { stripRoot = false; } // value;
|
||||
})
|
||||
{
|
||||
"2_9_1" = {
|
||||
|
@ -200,16 +254,39 @@ in {
|
|||
hashPrePatching = "sha256-gCHySfNOjqazbQDqk5lKJIYmPI6onqcaVDwuY8Ud2ns=";
|
||||
};
|
||||
"2_6_2" = {
|
||||
zippedTarball = true;
|
||||
hashPrePatching = "sha256-tlnF/ZQOkLMbiEV2BqhxzQ/KixGZ30+LgOUoHvpv13s=";
|
||||
};
|
||||
"2_6_1" = {
|
||||
zippedTarball = true;
|
||||
hashPrePatching = "sha256-Ou4NbRo7Gh0HWviXSEHtp0PpsGDdYsN8yhR0/gQy3rY=";
|
||||
};
|
||||
"2_6" = {
|
||||
zippedTarball = true;
|
||||
hashPrePatching = "sha256-AHP1mgedC9wUq+YAJD0gM4Lrl0H0UkrWyifEDC9KLog=";
|
||||
};
|
||||
"2_5_2" = {
|
||||
hashPrePatching = "sha256-vurAHOSWwpHZ96cLnRvb6wR+6dvTVKgoqUvlU4Qyp3g=";
|
||||
};
|
||||
"2_5_1" = {
|
||||
hashPrePatching = "sha256-tB6UXQPFHPIhV5bERkv/kAktyMn3dnlI4nzIwXO9imQ=";
|
||||
};
|
||||
"2_5" = {
|
||||
url = "https://github.com/TASEmulators/BizHawk/releases/download/2.5/BizHawk-2.5.0.zip";
|
||||
hashPrePatching = "sha256-OPuNxgHWYBCw6gkkllir0U9z+ZF3K8K2o24W00MWgLk=";
|
||||
};
|
||||
"2_4_2" = {
|
||||
hashPrePatching = "sha256-0ZunzBTO4O+B89N5PI0+AeVFBhe9shEtCANsYJBVdaY=";
|
||||
};
|
||||
"2_4_1" = {
|
||||
hashPrePatching = "sha256-uORUDsPh7ePRzB69wqKW65Cch35Fjg34Q0aa7Vcf+dA=";
|
||||
};
|
||||
"2_4" = {
|
||||
hashPrePatching = "sha256-vgocYt0Wo5LSLxHF5W1aFi2xqkklMYhZP4zHOIFbCb0=";
|
||||
};
|
||||
"2_3_3" = {
|
||||
hashPrePatching = "sha256-kLPNpnggnrc7TgA6NCC0P/tkFiUgTHVyKPdUz0UX1EE=";
|
||||
};
|
||||
"2_3_2" = {
|
||||
hashPrePatching = "sha256-x2DwrzBkPAGhlov/eU/VwXuHVP/Rv0o7pZptmsSQLJU=";
|
||||
};
|
||||
# older releases won't pass prereq checker w/o WINE libs, relevant change was https://github.com/TASEmulators/BizHawk/commit/27a4062ea22e5cb4a81628580ce47fec7a2709a5#diff-aff17d6fcf6169cad48e9c8d08145b0de360e874aa8ffee0ea66e636cccda39f
|
||||
};
|
||||
}
|
||||
|
|
|
@ -78,7 +78,8 @@
|
|||
else
|
||||
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$ldLibPath"
|
||||
fi
|
||||
${lib.optionalString (!debugPInvokes) "# "}export MONO_LOG_LEVEL=debug MONO_LOG_MASK=dll # pass `--arg debugPInvokes true` to nix-build to enable
|
||||
${if bizhawkAssemblies.hawkSourceInfo.hasAssemblyResolveHandler then "" else ''export MONO_PATH="$BIZHAWK_HOME/dll/nlua:$BIZHAWK_HOME/dll"
|
||||
''}${lib.optionalString (!debugPInvokes) "# "}export MONO_LOG_LEVEL=debug MONO_LOG_MASK=dll # pass `--arg debugPInvokes true` to nix-build to enable
|
||||
${lib.optionalString debugDotnetHostCrashes "# "}export MONO_CRASH_NOFILE=1 # pass `--arg debugDotnetHostCrashes true` to nix-build to disable
|
||||
if [ "$1" = '--mono-no-redirect' ]; then
|
||||
printf "(passing --mono-no-redirect is no longer necessary)\n" >&2
|
||||
|
|
|
@ -7,6 +7,7 @@ nix-instantiate --eval --strict -E 'import Dist/exposed-attr-checker.nix {}'
|
|||
printf "\n"
|
||||
|
||||
attrNamesToCheck='discohawk-latest emuhawk-2_9_1 emuhawk-2_9 emuhawk-2_8 emuhawk-2_7 emuhawk-2_6_3 emuhawk-2_6_2 emuhawk-2_6_1 emuhawk-2_6'
|
||||
attrNamesToCheckBinOnly='emuhawk-2_5_2 emuhawk-2_5_1 emuhawk-2_5 emuhawk-2_4_2 emuhawk-2_4_1 emuhawk-2_4 emuhawk-2_3_3 emuhawk-2_3_2'
|
||||
# not checking `forNixOS = false` since it's just the same wrapped with nixGL
|
||||
#commonBuildFlags='--pure --arg doCheck true' # not working :(
|
||||
commonBuildFlags='--pure'
|
||||
|
@ -37,7 +38,7 @@ else
|
|||
done
|
||||
fi
|
||||
printf "Packaging releases.\n"
|
||||
for a in $attrNamesToCheck; do
|
||||
for a in $attrNamesToCheck $attrNamesToCheckBinOnly; do
|
||||
b -A "$a-bin"
|
||||
b -A "$a-bin.assemblies" --check
|
||||
done
|
||||
|
|
|
@ -23,6 +23,14 @@ Version | Attr for asms | Attr for EmuHawk | Attr for DiscoHawk
|
|||
2.6.1 from source | DIY | `emuhawk-2_6_1` | DIY
|
||||
2.6 | `bizhawkAssemblies-2_6-bin` | `emuhawk-2_6-bin` | DIY
|
||||
2.6 from source | DIY | `emuhawk-2_6` | DIY
|
||||
2.5.2 | `bizhawkAssemblies-2_5_2-bin` | `emuhawk-2_5_2-bin` | DIY
|
||||
2.5.1 | `bizhawkAssemblies-2_5_1-bin` | `emuhawk-2_5_1-bin` | DIY
|
||||
2.5 | `bizhawkAssemblies-2_5-bin` | `emuhawk-2_5-bin` | DIY
|
||||
2.4.2 | `bizhawkAssemblies-2_4_2-bin` | `emuhawk-2_4_2-bin` | DIY
|
||||
2.4.1 | `bizhawkAssemblies-2_4_1-bin` | `emuhawk-2_4_1-bin` | DIY
|
||||
2.4 | `bizhawkAssemblies-2_4-bin` | `emuhawk-2_4-bin` | DIY
|
||||
2.3.3 | `bizhawkAssemblies-2_3_3-bin` | `emuhawk-2_3_3-bin` | DIY
|
||||
2.3.2 | `bizhawkAssemblies-2_3_2-bin` | `emuhawk-2_3_2-bin` | DIY
|
||||
|
||||
Nix functions and data:
|
||||
- `buildAssembliesFor`
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
grabFromReferences = { filePfx, subdir ? "" }: runCommand filePfx {
|
||||
inherit (hawkSourceInfo) __contentAddressed;
|
||||
meta.sourceProvenance = [ lib.sourceTypes.binaryBytecode ];
|
||||
} ''mkdir -p "$out${subdir}"; cp -vt "$out${subdir}" '${hawkSourceInfo.drv}/References${subdir}'/${filePfx}*'';
|
||||
} ''mkdir -p "$out${subdir}"; cp -vt "$out${subdir}" '${hawkSourceInfo.src}/References${subdir}/${filePfx}'*'';
|
||||
in { #TODO build all but flatBuffersCore, gongShell, slimDX, and systemDataSqliteDropIn from source
|
||||
bizhawkAnalyzer = grabFromReferences { filePfx = "BizHawk.Analyzer"; };
|
||||
flatBuffersCore = grabFromReferences { filePfx = "FlatBuffers.Core"; };
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
# rundeps
|
||||
, lua
|
||||
, mono
|
||||
, monoBasic
|
||||
, openal
|
||||
, SDL2
|
||||
, udev
|
||||
|
@ -47,9 +48,8 @@
|
|||
* TODO replace this with something more like `buildExtraManagedDepsFor`; for existing Nix exprs see https://gitlab.com/YoshiRulz/yoshis-hawk-thoughts/-/issues/10
|
||||
*/
|
||||
buildUnmanagedDepsFor = hawkSourceInfo: stdenv.mkDerivation {
|
||||
inherit (hawkSourceInfo) version;
|
||||
inherit (hawkSourceInfo) src version;
|
||||
pname = "bizhawk-native-deps";
|
||||
src = hawkSourceInfo.drv;
|
||||
dontBuild = true;
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
@ -73,10 +73,9 @@
|
|||
extraManagedDeps = hawkSourceInfo.extraManagedDeps or buildExtraManagedDepsFor hawkSourceInfo;
|
||||
in buildDotnetModule (lib.fix (finalAttrs: { # proper `finalAttrs` not supported >:(
|
||||
inherit doCheck mono;
|
||||
inherit (hawkSourceInfo) __contentAddressed dotnet-sdk nugetDeps version;
|
||||
inherit (hawkSourceInfo) __contentAddressed dotnet-sdk nugetDeps src version;
|
||||
pname = "BizHawk";
|
||||
isLocalBuild = lib.hasSuffix "-local" finalAttrs.version;
|
||||
src = hawkSourceInfo.drv;
|
||||
postUnpack = lib.optionalString finalAttrs.isLocalBuild ''(cd BizHawk-*-local; Dist/CleanupBuildOutputDirs.sh)'';
|
||||
outputs = [ "out" "assets" "extraUnmanagedDeps" "waterboxCores" ];
|
||||
propagatedBuildOutputs = []; # without this, other outputs depend on `out`
|
||||
|
@ -254,8 +253,9 @@ in {
|
|||
splitReleaseArtifact =
|
||||
{ hawkSourceInfo
|
||||
, hashPrePatching
|
||||
, crossPlatformArtifact ? false
|
||||
, zippedTarball ? false
|
||||
, url ? "https://github.com/TASEmulators/BizHawk/releases/download/${hawkSourceInfo.version}/BizHawk-${hawkSourceInfo.version}-linux-x64${if zippedTarball then ".tar.zip" else ".tar.gz"}"
|
||||
, url ? "https://github.com/TASEmulators/BizHawk/releases/download/${hawkSourceInfo.version}/BizHawk-${hawkSourceInfo.version}${if crossPlatformArtifact then ".zip" else if zippedTarball then "-linux-x64.tar.zip" else "-linux-x64.tar.gz"}"
|
||||
, stripRoot ? true
|
||||
}: assert buildConfig == "Release"; let
|
||||
artifact = fetchzip { inherit stripRoot url; hash = hashPrePatching; };
|
||||
|
@ -275,10 +275,13 @@ in {
|
|||
rm -f EmuHawkMono.sh
|
||||
${if hawkSourceInfo'.releaseArtifactHasRogueOTKAsmConfig then ''mv -ft dll OpenTK.dll.config
|
||||
'' else ""}rmdir Firmware
|
||||
mkdir ExternalTools && touch ExternalTools/.keep
|
||||
mkdir -p ExternalTools; touch ExternalTools/.keep
|
||||
|
||||
mkdir -p $out; mv -t $out defctrl.json DiscoHawk.exe* dll EmuHawk.exe* gamedb Shaders
|
||||
printf '${emuhawkBuildFlavour}' >$out/dll/custombuild.txt
|
||||
mkdir -p $out; mv -t $out defctrl.json DiscoHawk.exe* dll EmuHawk.exe* gamedb [Ss]haders
|
||||
${if hawkSourceInfo'.releaseArtifactNeedsVBDotnetReference then ''cp -t $out/dll '${lib.getOutput "out" monoBasic}/usr/lib/mono/4.5/Microsoft.VisualBasic.dll'
|
||||
'' else ""}${if hawkSourceInfo'.releaseArtifactNeedsLowercaseAsms then ''(cd $out/dll; for s in Client.Common Emulation.Cores; do cp BizHawk.$s.dll Bizhawk.$s.dll; done)
|
||||
'' else ""}${if hawkSourceInfo'.releaseArtifactNeedsOTKAsmConfig then ''cp -t $out/dll '${releaseTagSourceInfos.info-2_6.src}/Assets/dll/OpenTK.dll.config'
|
||||
'' else ""}printf '${emuhawkBuildFlavour}' >$out/dll/custombuild.txt
|
||||
|
||||
mkdir -p $extraUnmanagedDeps/lib; mv -t $extraUnmanagedDeps/lib $out/dll/*.so*
|
||||
mkdir -p $waterboxCores/dll; mv -t $waterboxCores/dll $out/dll/*.wbx*
|
||||
|
|
28
default.nix
28
default.nix
|
@ -3,6 +3,7 @@
|
|||
, stdenv ? pkgs.stdenvNoCC
|
||||
# infrastructure
|
||||
, buildDotnetModule ? pkgs.buildDotnetModule
|
||||
, dpkg ? pkgs.dpkg
|
||||
, fetchFromGitHub ? pkgs.fetchFromGitHub
|
||||
, fetchFromGitLab ? pkgs.fetchFromGitLab
|
||||
, fetchpatch ? pkgs.fetchpatch
|
||||
|
@ -19,8 +20,7 @@
|
|||
version = "2.9.2-local"; # used in default value of `BIZHAWK_DATA_HOME`, which distinguishes parallel installs' config and other data
|
||||
in {
|
||||
inherit version;
|
||||
branch = "master"; # must be regex-escaped (interpolated as `sed "s/.../${branch}/"`); written into movies and savestates, written to config to detect in-place upgrades (N/A to Nix), and of course also shown in the About dialog
|
||||
drv = builtins.path { path = ./.; name = "BizHawk-${version}"; }; # source derivation; did have filter here for speed, but it wasn't faster and it wasn't correct and it couldn't be made correct and I'm mad
|
||||
src = builtins.path { path = ./.; name = "BizHawk-${version}"; }; # source derivation; did have filter here for speed, but it wasn't faster and it wasn't correct and it couldn't be made correct and I'm mad
|
||||
}
|
||||
# makedeps
|
||||
, dotnet-sdk_6 ? pkgs.dotnet-sdk_6
|
||||
|
@ -50,8 +50,8 @@ in {
|
|||
, forNixOS ? true
|
||||
, initConfig ? {} # forwarded to Dist/launch-scripts.nix (see docs there)
|
||||
}: let
|
||||
isVersionAtLeast = lib.flip lib.versionAtLeast; # I stand by this being the more useful param order w.r.t. currying
|
||||
replaceDotWithUnderscore = s: lib.replaceStrings [ "." ] [ "_" ] s;
|
||||
drvVersionAtLeast = exVer: acVer: builtins.compareVersions exVer acVer <= 0;
|
||||
/** you can't actually make hard links in the sandbox, so this just copies, and we'll rely on Nix' automatic deduping */
|
||||
hardLinkJoin =
|
||||
{ name
|
||||
|
@ -72,7 +72,7 @@ in {
|
|||
'';
|
||||
inherit (import Dist/historical.nix {
|
||||
inherit lib
|
||||
drvVersionAtLeast replaceDotWithUnderscore
|
||||
isVersionAtLeast replaceDotWithUnderscore
|
||||
fetchFromGitHub fetchFromGitLab mkNugetDeps
|
||||
dotnet-sdk_5 dotnet-sdk_6;
|
||||
}) depsForHistoricalRelease populateHawkSourceInfo releaseArtifactInfos releaseFrags releaseTagSourceInfos;
|
||||
|
@ -94,10 +94,16 @@ in {
|
|||
buildConfig doCheck emuhawkBuildFlavour extraDefines extraDotnetBuildFlags;
|
||||
mono = if mono != null
|
||||
then mono # allow older Mono if set explicitly
|
||||
else if drvVersionAtLeast "6.12.0.151" pkgs.mono.version
|
||||
else if isVersionAtLeast "6.12.0.151" pkgs.mono.version
|
||||
then pkgs.mono
|
||||
else lib.trace "provided Mono too old, using Mono from Nixpkgs 23.05"
|
||||
(import (fetchTarball "https://github.com/NixOS/nixpkgs/archive/23.05.tar.gz") {}).mono;
|
||||
monoBasic = fetchzip {
|
||||
url = "https://download.mono-project.com/repo/debian/pool/main/m/mono-basic/libmono-microsoft-visualbasic10.0-cil_4.7-0xamarin3+debian9b1_all.deb";
|
||||
nativeBuildInputs = [ dpkg ];
|
||||
hash = "sha256-2m1FwpDxzqVXR6GUB3oFuTqIXCde/msb+tg8v6lIN6s=";
|
||||
# tried and failed building from source, following https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=mono-basic
|
||||
};
|
||||
};
|
||||
emuhawk-local = pp.buildEmuHawkInstallableFor {
|
||||
inherit forNixOS;
|
||||
|
@ -106,8 +112,8 @@ in {
|
|||
asmsFromReleaseArtifacts = lib.mapAttrs (_: pp.splitReleaseArtifact) releaseArtifactInfos;
|
||||
# the asms for from-CWD and latest release from-source are exposed below as `bizhawkAssemblies` and `bizhawkAssemblies-latest`, respectively
|
||||
# apart from that, no `asmsFromSource`, since if you're only after the assets you might as well use the release artifact
|
||||
releasesEmuHawkInstallables = lib.listToAttrs (lib.concatLists (builtins.map
|
||||
(versionFrag: [
|
||||
releasesEmuHawkInstallables = lib.pipe releaseFrags [
|
||||
(builtins.map (versionFrag: [
|
||||
({
|
||||
name = "emuhawk-${versionFrag}";
|
||||
value = pp.buildEmuHawkInstallableFor {
|
||||
|
@ -122,8 +128,12 @@ in {
|
|||
bizhawkAssemblies = asmsFromReleaseArtifacts."bizhawkAssemblies-${versionFrag}-bin";
|
||||
};
|
||||
})
|
||||
])
|
||||
releaseFrags));
|
||||
]))
|
||||
lib.concatLists
|
||||
lib.listToAttrs
|
||||
(lib.filterAttrs (name: value: lib.hasSuffix "-bin" name
|
||||
|| isVersionAtLeast "2.6" value.hawkSourceInfo.version))
|
||||
];
|
||||
latestVersionFrag = lib.head releaseFrags;
|
||||
combined = pp // asmsFromReleaseArtifacts // releasesEmuHawkInstallables // {
|
||||
inherit depsForHistoricalRelease releaseTagSourceInfos;
|
||||
|
|
Loading…
Reference in New Issue