diff --git a/pkgs/by-name/bl/blackshades/package.nix b/pkgs/by-name/bl/blackshades/package.nix index ec2bdfe33d4e..137c4c902555 100644 --- a/pkgs/by-name/bl/blackshades/package.nix +++ b/pkgs/by-name/bl/blackshades/package.nix @@ -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 ''; diff --git a/pkgs/development/compilers/zig/fetcher.nix b/pkgs/development/compilers/zig/fetcher.nix new file mode 100644 index 000000000000..abb8acaa0838 --- /dev/null +++ b/pkgs/development/compilers/zig/fetcher.nix @@ -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 + '' diff --git a/pkgs/development/compilers/zig/generic.nix b/pkgs/development/compilers/zig/generic.nix index 5b95d7fd6b52..2f81039821b2 100644 --- a/pkgs/development/compilers/zig/generic.nix +++ b/pkgs/development/compilers/zig/generic.nix @@ -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 = { diff --git a/pkgs/development/compilers/zig/passthru.nix b/pkgs/development/compilers/zig/passthru.nix new file mode 100644 index 000000000000..094142fbc16e --- /dev/null +++ b/pkgs/development/compilers/zig/passthru.nix @@ -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; }; +}