diff options
author | Martin Messer <martin.messer@cyberus-technology.de> | 2022-04-07 16:28:20 +0200 |
---|---|---|
committer | Martin Messer <martin.messer@cyberus-technology.de> | 2023-12-07 16:38:48 +0100 |
commit | 17e88c2890068e944c61dbaf7493ae12417b8944 (patch) | |
tree | 8a6c526ab1391a63dc10a29d59d7539344ae9594 /pkgs/test/incrementalBuild/default.nix | |
parent | 1cd6b7fdc37cdc7a4a31c87aa31e4ebf5ed930c8 (diff) | |
download | nixlib-17e88c2890068e944c61dbaf7493ae12417b8944.tar nixlib-17e88c2890068e944c61dbaf7493ae12417b8944.tar.gz nixlib-17e88c2890068e944c61dbaf7493ae12417b8944.tar.bz2 nixlib-17e88c2890068e944c61dbaf7493ae12417b8944.tar.lz nixlib-17e88c2890068e944c61dbaf7493ae12417b8944.tar.xz nixlib-17e88c2890068e944c61dbaf7493ae12417b8944.tar.zst nixlib-17e88c2890068e944c61dbaf7493ae12417b8944.zip |
checkpointedBuild: add checkpointed build test based on pkgs hello
Diffstat (limited to 'pkgs/test/incrementalBuild/default.nix')
-rw-r--r-- | pkgs/test/incrementalBuild/default.nix | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/pkgs/test/incrementalBuild/default.nix b/pkgs/test/incrementalBuild/default.nix new file mode 100644 index 000000000000..cff1efee9a12 --- /dev/null +++ b/pkgs/test/incrementalBuild/default.nix @@ -0,0 +1,57 @@ +{ hello, buildIncremental, runCommandNoCC, texinfo, stdenv, rsync }: +let + baseHello = buildIncremental.prepareIncrementalBuild hello; + patchedHello = hello.overrideAttrs (old: { + buildInputs = [ texinfo ]; + src = runCommandNoCC "patch-hello-src" { } '' + mkdir -p $out + cd $out + tar xf ${hello.src} --strip-components=1 + patch -p1 < ${./hello.patch} + ''; + }); + incrementalBuiltHello = buildIncremental.mkIncrementalBuild patchedHello baseHello.incrementalBuildArtifacts; + + incrementalBuiltHelloWithCheck = incrementalBuiltHello.overrideAttrs (old: { + doCheck = true; + checkPhase = '' + echo "checking if unchanged source file is not recompiled" + [ "$(stat --format="%Y" lib/exitfail.o)" = "$(stat --format="%Y" ${baseHello.incrementalBuildArtifacts}/lib/exitfail.o)" ] + ''; + }); + + baseHelloRemoveFile = buildIncremental.prepareIncrementalBuild (hello.overrideAttrs (old: { + patches = [ ./hello-additionalFile.patch ]; + })); + + preparedHelloRemoveFileSrc = runCommandNoCC "patch-hello-src" { } '' + mkdir -p $out + cd $out + tar xf ${hello.src} --strip-components=1 + patch -p1 < ${./hello-additionalFile.patch} + ''; + + patchedHelloRemoveFile = hello.overrideAttrs (old: { + buildInputs = [ texinfo ]; + src = runCommandNoCC "patch-hello-src" { } '' + mkdir -p $out + cd $out + ${rsync}/bin/rsync -cutU --chown=$USER:$USER --chmod=+w -r ${preparedHelloRemoveFileSrc}/* . + patch -p1 < ${./hello-removeFile.patch} + ''; + }); + + incrementalBuiltHelloWithRemovedFile = buildIncremental.mkIncrementalBuild patchedHelloRemoveFile baseHelloRemoveFile.incrementalBuildArtifacts; +in +stdenv.mkDerivation { + name = "patched-hello-returns-correct-output"; + buildCommand = '' + touch $out + + echo "testing output of hello binary" + [ "$(${incrementalBuiltHelloWithCheck}/bin/hello)" = "Hello, incremental world!" ] + echo "testing output of hello with removed file" + [ "$(${incrementalBuiltHelloWithRemovedFile}/bin/hello)" = "Hello, incremental world!" ] + ''; +} + |