windows.sdk: Split fetch & splat phases to fix Darwin
This commit is contained in:
@@ -1,71 +1,54 @@
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
stdenvNoCC,
|
||||
xwin,
|
||||
testers,
|
||||
llvmPackages,
|
||||
callPackage,
|
||||
}:
|
||||
let
|
||||
version = (builtins.fromJSON (builtins.readFile ./manifest.json)).info.buildVersion;
|
||||
|
||||
hashes = (builtins.fromJSON (builtins.readFile ./hashes.json));
|
||||
|
||||
host = stdenvNoCC.hostPlatform;
|
||||
arch =
|
||||
if host.isx86_64 then
|
||||
"x86_64"
|
||||
else if host.isAarch64 then
|
||||
"aarch64"
|
||||
else if host.isx86_32 then
|
||||
"x86"
|
||||
else if host.isAarch32 then
|
||||
"aarch"
|
||||
else
|
||||
throw "Unsupported system";
|
||||
fetchWinSdk = callPackage ./fetchWinSdk.nix { };
|
||||
in
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
inherit version;
|
||||
pname = "msvc-sdk";
|
||||
dontUnpack = true;
|
||||
pname = "win-sdk";
|
||||
|
||||
src = fetchWinSdk {
|
||||
manifest = ./manifest.json;
|
||||
hash = hashes.${finalAttrs.src.arch};
|
||||
};
|
||||
|
||||
strictDeps = true;
|
||||
nativeBuildInputs = [ xwin ];
|
||||
|
||||
outputHashAlgo = "sha256";
|
||||
outputHashMode = "recursive";
|
||||
outputHash =
|
||||
if !config.microsoftVisualStudioLicenseAccepted then
|
||||
throw ''
|
||||
Microsoft Software License Terms are not accepted with config.microsoftVisualStudioLicenseAccepted.
|
||||
Please read https://visualstudio.microsoft.com/license-terms/mt644918/ and if you agree, change your
|
||||
config to indicate so.
|
||||
''
|
||||
else
|
||||
hashes.${arch};
|
||||
nativeBuildInputs = [
|
||||
xwin
|
||||
];
|
||||
|
||||
__structuredAttrs = true;
|
||||
xwinArgs = [
|
||||
"--accept-license"
|
||||
"--cache-dir=xwin-out"
|
||||
"--cache-dir=."
|
||||
"--manifest=${./manifest.json}"
|
||||
"--arch=${arch}"
|
||||
"--arch=${finalAttrs.src.arch}"
|
||||
"splat"
|
||||
"--preserve-ms-arch-notation"
|
||||
];
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
xwin "''${xwinArgs[@]}"
|
||||
mkdir "$out"
|
||||
mv xwin-out/splat/* "$out"
|
||||
|
||||
runHook postBuild
|
||||
mkdir -p "$out"
|
||||
cp -r splat/* "$out"
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
dontFixup = true;
|
||||
dontInstall = true;
|
||||
|
||||
passthru = {
|
||||
updateScript = ./update.nu;
|
||||
|
||||
@@ -0,0 +1,91 @@
|
||||
{
|
||||
lib,
|
||||
config,
|
||||
stdenvNoCC,
|
||||
xwin,
|
||||
}:
|
||||
let
|
||||
host = stdenvNoCC.hostPlatform;
|
||||
|
||||
hostArch =
|
||||
if host.isx86_64 then
|
||||
"x86_64"
|
||||
else if host.isAarch64 then
|
||||
"aarch64"
|
||||
else if host.isx86_32 then
|
||||
"x86"
|
||||
else if host.isAarch32 then
|
||||
"aarch"
|
||||
else
|
||||
throw "Unsupported system";
|
||||
in
|
||||
lib.extendMkDerivation {
|
||||
constructDrv = stdenvNoCC.mkDerivation;
|
||||
|
||||
excludeDrvArgNames = [
|
||||
"manifest"
|
||||
"arch"
|
||||
];
|
||||
|
||||
extendDrvArgs =
|
||||
finalAttrs:
|
||||
{
|
||||
name ? "xwin-fetch-msvc",
|
||||
hash ? lib.fakeHash,
|
||||
manifest ? null,
|
||||
arch ? hostArch,
|
||||
...
|
||||
}@args:
|
||||
{
|
||||
inherit name;
|
||||
__structuredAttrs = true;
|
||||
dontUnpack = true;
|
||||
dontFixup = true;
|
||||
dontInstall = true;
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
nativeBuildInputs = [ xwin ];
|
||||
|
||||
outputHashAlgo = "sha256";
|
||||
outputHashMode = "recursive";
|
||||
outputHash =
|
||||
if !config.microsoftVisualStudioLicenseAccepted then
|
||||
throw ''
|
||||
Microsoft Software License Terms are not accepted with config.microsoftVisualStudioLicenseAccepted.
|
||||
Please read https://visualstudio.microsoft.com/license-terms/mt644918/ and if you agree, change your
|
||||
config to indicate so.
|
||||
''
|
||||
else
|
||||
hash;
|
||||
|
||||
xwinArgs = lib.optionals (manifest != null) [ "--manifest=${manifest}" ] ++ [
|
||||
"--accept-license"
|
||||
"--cache-dir=${placeholder "out"}"
|
||||
"--arch=${arch}"
|
||||
"download"
|
||||
];
|
||||
|
||||
buildPhase =
|
||||
args.buildPhase or ''
|
||||
runHook preBuild
|
||||
|
||||
xwin "''${xwinArgs[@]}"
|
||||
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
inherit arch;
|
||||
};
|
||||
|
||||
meta.license = {
|
||||
deprecated = false;
|
||||
fullName = "Microsoft Software License Terms";
|
||||
shortName = "msvc";
|
||||
spdxId = "unknown";
|
||||
free = false;
|
||||
url = "https://www.visualstudio.com/license-terms/mt644918/";
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"x86_64": "sha256-kp+xePTRZgqdAV3/BYhqKke3dXIkLWLM+IWFXtN2rHM=",
|
||||
"x86_64": "sha256-noXgXgsB6eneVxkIZkjJhAiXgsG0BBIuoYGjf7fi8t4=",
|
||||
"x86": "sha256-xEXV+XBNoXpAO8R/oDj8gfGb5tICr9ps4DN8Q4lqK2k=",
|
||||
"aarch64": "sha256-r0tTQUq3CePJ/7Vuzf4Zsy3Ebu0KiXNBwRHmrO3d15E="
|
||||
}
|
||||
|
||||
@@ -36,9 +36,9 @@ def main [] {
|
||||
|arch|
|
||||
let dir = mktemp -d
|
||||
|
||||
xwin --accept-license --cache-dir $dir --manifest $"($PATH | path join manifest.json)" --arch $arch splat --preserve-ms-arch-notation
|
||||
xwin --accept-license --cache-dir $dir --manifest $"($PATH | path join manifest.json)" --arch $arch download
|
||||
|
||||
let hash = nix hash path ($dir | path join splat)
|
||||
let hash = nix hash path $dir
|
||||
|
||||
{arch: $arch, hash: $hash}
|
||||
} | transpose -r -d
|
||||
|
||||
Reference in New Issue
Block a user