shrub/nix/lib/make-release-tarball.nix
Brendan Hay 689c0eb6a0
build: ensuring release tarball contains singular parent directory
This ensures parity with the current release tarballs.
2020-10-28 11:05:58 +01:00

39 lines
845 B
Nix

{ lib, stdenvNoCC, coreutils }:
{ name, contents # { target = source, ... }
}:
let
transforms = builtins.concatStringsSep " " (lib.mapAttrsToList
(target: source: ''--transform "s,${source},${target},"'') contents);
sources = builtins.concatStringsSep " "
(lib.mapAttrsToList (_target: source: "${source}") contents);
in stdenvNoCC.mkDerivation {
inherit name;
outputs = [ "out" "hash" ];
nativeBuildInputs = [ coreutils ];
phases = [ "buildPhase" "hashPhase" ];
buildPhase = ''
tar -vczf $out \
--owner=0 --group=0 --mode=u+rw,uga+r \
--absolute-names \
--hard-dereference \
${transforms} \
${sources}
'';
hashPhase = ''
mkdir $hash
md5sum $out | awk '{printf $1}' > $hash/md5
sha256sum $out | awk '{printf $1}' > $hash/sha256
'';
preferLocalBuild = true;
}