uboot: (firmwareOdroidC2/C4) don't invoke patch tool, use patches = [] instead
https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/setup.sh#L948 this can do it nicely. Signed-off-by: Anton Arapov <anton@deadbeef.mx>
This commit is contained in:
commit
56de2bcd43
30691 changed files with 3076956 additions and 0 deletions
72
pkgs/build-support/testers/default.nix
Normal file
72
pkgs/build-support/testers/default.nix
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
{ pkgs, lib, callPackage, runCommand, stdenv }:
|
||||
# Documentation is in doc/builders/testers.chapter.md
|
||||
{
|
||||
testEqualDerivation = callPackage ./test-equal-derivation.nix { };
|
||||
|
||||
testVersion =
|
||||
{ package,
|
||||
command ? "${package.meta.mainProgram or package.pname or package.name} --version",
|
||||
version ? package.version,
|
||||
}: runCommand "${package.name}-test-version" { nativeBuildInputs = [ package ]; meta.timeout = 60; } ''
|
||||
if output=$(${command} 2>&1); then
|
||||
if grep -Fw "${version}" - <<< "$output"; then
|
||||
touch $out
|
||||
else
|
||||
echo "Version string '${version}' not found!" >&2
|
||||
echo "The output was:" >&2
|
||||
echo "$output" >&2
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo -n ${lib.escapeShellArg command} >&2
|
||||
echo " returned a non-zero exit code." >&2
|
||||
echo "$output" >&2
|
||||
exit 1
|
||||
fi
|
||||
'';
|
||||
|
||||
# See doc/builders/testers.chapter.md or
|
||||
# https://nixos.org/manual/nixpkgs/unstable/#tester-invalidateFetcherByDrvHash
|
||||
invalidateFetcherByDrvHash = f: args:
|
||||
let
|
||||
drvPath = (f args).drvPath;
|
||||
# It's safe to discard the context, because we don't access the path.
|
||||
salt = builtins.unsafeDiscardStringContext (lib.substring 0 12 (baseNameOf drvPath));
|
||||
# New derivation incorporating the original drv hash in the name
|
||||
salted = f (args // { name = "${args.name or "source"}-salted-${salt}"; });
|
||||
# Make sure we did change the derivation. If the fetcher ignores `name`,
|
||||
# `invalidateFetcherByDrvHash` doesn't work.
|
||||
checked =
|
||||
if salted.drvPath == drvPath
|
||||
then throw "invalidateFetcherByDrvHash: Adding the derivation hash to the fixed-output derivation name had no effect. Make sure the fetcher's name argument ends up in the derivation name. Otherwise, the fetcher will not be re-run when its implementation changes. This is important for testing."
|
||||
else salted;
|
||||
in checked;
|
||||
|
||||
# See doc/builders/testers.chapter.md or
|
||||
# https://nixos.org/manual/nixpkgs/unstable/#tester-invalidateFetcherByDrvHash
|
||||
nixosTest =
|
||||
let
|
||||
/* The nixos/lib/testing-python.nix module, preapplied with arguments that
|
||||
* make sense for this evaluation of Nixpkgs.
|
||||
*/
|
||||
nixosTesting =
|
||||
(import ../../../nixos/lib/testing-python.nix {
|
||||
inherit (stdenv.hostPlatform) system;
|
||||
inherit pkgs;
|
||||
extraConfigurations = [(
|
||||
{ lib, ... }: {
|
||||
config.nixpkgs.pkgs = lib.mkDefault pkgs;
|
||||
}
|
||||
)];
|
||||
});
|
||||
in
|
||||
test:
|
||||
let
|
||||
loadedTest = if builtins.typeOf test == "path"
|
||||
then import test
|
||||
else test;
|
||||
calledTest = lib.toFunction loadedTest pkgs;
|
||||
in
|
||||
nixosTesting.makeTest calledTest;
|
||||
|
||||
}
|
||||
26
pkgs/build-support/testers/test-equal-derivation.nix
Normal file
26
pkgs/build-support/testers/test-equal-derivation.nix
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
{ lib, runCommand, emptyFile, nix-diff }:
|
||||
|
||||
assertion: a: b:
|
||||
let
|
||||
drvA = builtins.unsafeDiscardOutputDependency a.drvPath or (throw "testEqualDerivation second argument must be a package");
|
||||
drvB = builtins.unsafeDiscardOutputDependency b.drvPath or (throw "testEqualDerivation third argument must be a package");
|
||||
name =
|
||||
if a?name
|
||||
then "testEqualDerivation-${a.name}"
|
||||
else "testEqualDerivation";
|
||||
in
|
||||
if drvA == drvB then
|
||||
emptyFile
|
||||
else
|
||||
runCommand name
|
||||
{
|
||||
inherit assertion drvA drvB;
|
||||
nativeBuildInputs = [ nix-diff ];
|
||||
} ''
|
||||
echo "$assertion"
|
||||
echo "However, the derivations differ:"
|
||||
echo
|
||||
echo nix-diff $drvA $drvB
|
||||
nix-diff $drvA $drvB
|
||||
exit 1
|
||||
''
|
||||
8
pkgs/build-support/testers/test/README.md
Normal file
8
pkgs/build-support/testers/test/README.md
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
# Tests _for the testers_
|
||||
|
||||
cd nixpkgs
|
||||
nix-build -A tests.testers
|
||||
|
||||
Tests generally derive their own correctness from simplicity, which in the
|
||||
case of testers (themselves functions) does not always work out.
|
||||
Hence the need for tests that test the testers.
|
||||
27
pkgs/build-support/testers/test/default.nix
Normal file
27
pkgs/build-support/testers/test/default.nix
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
{ testers, lib, pkgs, ... }:
|
||||
let
|
||||
pkgs-with-overlay = pkgs.extend(final: prev: {
|
||||
proof-of-overlay-hello = prev.hello;
|
||||
});
|
||||
|
||||
dummyVersioning = {
|
||||
revision = "test";
|
||||
versionSuffix = "test";
|
||||
label = "test";
|
||||
};
|
||||
|
||||
in
|
||||
lib.recurseIntoAttrs {
|
||||
# Check that the wiring of nixosTest is correct.
|
||||
# Correct operation of the NixOS test driver should be asserted elsewhere.
|
||||
nixosTest-example = pkgs-with-overlay.testers.nixosTest ({ lib, pkgs, figlet, ... }: {
|
||||
name = "nixosTest-test";
|
||||
nodes.machine = { pkgs, ... }: {
|
||||
system.nixos = dummyVersioning;
|
||||
environment.systemPackages = [ pkgs.proof-of-overlay-hello figlet ];
|
||||
};
|
||||
testScript = ''
|
||||
machine.succeed("hello | figlet >/dev/console")
|
||||
'';
|
||||
});
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue