Merge pull request #186323 from ShamrockLee/make-setuphook-passthru

trivial-builders.nix: Add input argument `passthru` to makeSetupHook
This commit is contained in:
Robert Hensing 2022-09-19 11:30:37 +01:00 committed by GitHub
commit 8deb17a36e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 33 additions and 9 deletions

View File

@ -16,12 +16,14 @@ makeSetupHook {
substitutions = {
cc = "${cc}/bin/${cc.targetPrefix}cc ${lib.escapeShellArgs (map (s: "-fsanitize=${s}") sanitizers)}";
};
passthru = {
# Extract the function call used to create a binary wrapper from its embedded docstring
passthru.extractCmd = writeShellScript "extract-binary-wrapper-cmd" ''
extractCmd = writeShellScript "extract-binary-wrapper-cmd" ''
strings -dw "$1" | sed -n '/^makeCWrapper/,/^$/ p'
'';
passthru.tests = tests.makeBinaryWrapper;
tests = tests.makeBinaryWrapper;
};
} ./make-binary-wrapper.sh

View File

@ -1,9 +1,8 @@
{ callPackage, makeSetupHook }:
(makeSetupHook {
makeSetupHook {
name = "postgresql-test-hook";
} ./postgresql-test-hook.sh).overrideAttrs (o: {
passthru.tests = {
simple = callPackage ./test.nix { };
};
})
} ./postgresql-test-hook.sh

View File

@ -13,6 +13,7 @@
}:
makeSetupHook {
name = "wrap-gapps-hook";
deps = lib.optionals (!stdenv.isDarwin) [
# It is highly probable that a program will use GSettings,
# at minimum through GTK file chooser dialogue.
@ -36,8 +37,8 @@ makeSetupHook {
# We use the wrapProgram function.
makeWrapper
];
substitutions = {
passthru.tests = let
passthru = {
tests = let
sample-project = ./tests/sample-project;
testLib = callPackage ./tests/lib.nix { };

View File

@ -1,5 +1,12 @@
{ lib, stdenv, stdenvNoCC, lndir, runtimeShell, shellcheck }:
let
inherit (lib)
optionalAttrs
warn
;
in
rec {
/* Run the shell command `buildCommand' to produce a store path named
@ -525,12 +532,25 @@ rec {
* substitutions = { bash = "${pkgs.bash}/bin/bash"; };
* meta.platforms = lib.platforms.linux;
* } ./myscript.sh;
*
* # setup hook with a package test
* myhellohookTested = makeSetupHook {
* deps = [ hello ];
* substitutions = { bash = "${pkgs.bash}/bin/bash"; };
* meta.platforms = lib.platforms.linux;
* passthru.tests.greeting = callPackage ./test { };
* } ./myscript.sh;
*/
makeSetupHook = { name ? "hook", deps ? [], substitutions ? {}, meta ? {} }: script:
makeSetupHook = { name ? "hook", deps ? [], substitutions ? {}, meta ? {}, passthru ? {} }: script:
runCommand name
(substitutions // {
inherit meta;
strictDeps = true;
# TODO 2023-01, no backport: simplify to inherit passthru;
passthru = passthru
// optionalAttrs (substitutions?passthru)
(warn "makeSetupHook (name = ${lib.strings.escapeNixString name}): `substitutions.passthru` is deprecated. Please set `passthru` directly."
substitutions.passthru);
})
(''
mkdir -p $out/nix-support

View File

@ -918,7 +918,9 @@ with pkgs;
{ deps = [ dieHook ];
substitutions = {
shell = targetPackages.runtimeShell;
passthru.tests = tests.makeWrapper;
};
passthru = {
tests = tests.makeWrapper;
};
}
../build-support/setup-hooks/make-wrapper.sh;