zig: move passthru into a separate file & add fetcher (#414567)

This commit is contained in:
Tristan Ross
2025-06-15 20:29:44 -07:00
committed by GitHub
4 changed files with 86 additions and 41 deletions
+8 -19
View File
@@ -25,25 +25,14 @@ stdenv.mkDerivation (finalAttrs: {
postUnpack = ''
ln -s ${
runCommand "${finalAttrs.finalPackage.name}-zig-deps"
{
inherit (finalAttrs) src;
nativeBuildInputs = [ zig_0_14 ];
outputHashAlgo = null;
outputHashMode = "recursive";
outputHash = "sha256-wBIfLeaKtTow2Z7gjEgIFmqcTGWgpRWI+k0t294BslM=";
}
''
export ZIG_GLOBAL_CACHE_DIR=$(mktemp -d)
runHook unpackPhase
cd $sourceRoot
zig build --fetch
mv $ZIG_GLOBAL_CACHE_DIR/p $out
''
zig_0_14.fetchDeps {
inherit (finalAttrs)
src
pname
version
;
hash = "sha256-wBIfLeaKtTow2Z7gjEgIFmqcTGWgpRWI+k0t294BslM=";
}
} $ZIG_GLOBAL_CACHE_DIR/p
'';
@@ -0,0 +1,32 @@
{
lib,
zig,
runCommand,
}:
{
pname,
version,
name ? "${pname}-${version}",
src,
hash ? lib.fakeHash,
}@args:
runCommand "${name}-zig-deps"
{
inherit (args) src;
nativeBuildInputs = [ zig ];
outputHashAlgo = null;
outputHashMode = "recursive";
outputHash = hash;
}
''
export ZIG_GLOBAL_CACHE_DIR=$(mktemp -d)
runHook unpackPhase
cd $sourceRoot
zig build --fetch
mv $ZIG_GLOBAL_CACHE_DIR/p $out
''
+11 -22
View File
@@ -142,28 +142,17 @@ stdenv.mkDerivation (finalAttrs: {
runHook postInstallCheck
'';
passthru = {
hook = callPackage ./hook.nix { zig = finalAttrs.finalPackage; };
bintools-unwrapped = callPackage ./bintools.nix { zig = finalAttrs.finalPackage; };
bintools = wrapBintoolsWith { bintools = finalAttrs.finalPackage.bintools-unwrapped; };
cc-unwrapped = callPackage ./cc.nix { zig = finalAttrs.finalPackage; };
cc = wrapCCWith {
cc = finalAttrs.finalPackage.cc-unwrapped;
bintools = finalAttrs.finalPackage.bintools;
extraPackages = [ ];
nixSupport.cc-cflags =
[
"-target"
"${stdenv.targetPlatform.system}-${stdenv.targetPlatform.parsed.abi.name}"
]
++ lib.optional (
stdenv.targetPlatform.isLinux && !(stdenv.targetPlatform.isStatic or false)
) "-Wl,-dynamic-linker=${targetPackages.stdenv.cc.bintools.dynamicLinker}";
};
stdenv = overrideCC stdenv finalAttrs.finalPackage.cc;
passthru = import ./passthru.nix {
inherit
lib
stdenv
callPackage
wrapCCWith
wrapBintoolsWith
overrideCC
targetPackages
;
zig = finalAttrs.finalPackage;
};
meta = {
@@ -0,0 +1,35 @@
{
lib,
stdenv,
zig,
callPackage,
wrapCCWith,
wrapBintoolsWith,
overrideCC,
targetPackages,
}:
{
hook = callPackage ./hook.nix { inherit zig; };
bintools-unwrapped = callPackage ./bintools.nix { inherit zig; };
bintools = wrapBintoolsWith { bintools = zig.bintools-unwrapped; };
cc-unwrapped = callPackage ./cc.nix { inherit zig; };
cc = wrapCCWith {
cc = zig.cc-unwrapped;
bintools = zig.bintools;
extraPackages = [ ];
nixSupport.cc-cflags =
[
"-target"
"${stdenv.targetPlatform.system}-${stdenv.targetPlatform.parsed.abi.name}"
]
++ lib.optional (
stdenv.targetPlatform.isLinux && !(stdenv.targetPlatform.isStatic or false)
) "-Wl,-dynamic-linker=${targetPackages.stdenv.cc.bintools.dynamicLinker}";
};
stdenv = overrideCC stdenv zig.cc;
fetchDeps = callPackage ./fetcher.nix { inherit zig; };
}