build-support: Simplify tmpdir creation with coreutils

macOS 10.12 doesn't have a usable --tmpdir flag on the builtin mktemp, but we can
make use of coreutil's mktemp instead.
This commit is contained in:
Jonathan del Strother 2024-11-25 09:22:09 +00:00
parent 0c3d16a7d5
commit 6cb8c5ec01
No known key found for this signature in database
GPG key ID: 0F567E1A2C4EBD80
8 changed files with 10 additions and 12 deletions

View file

@ -123,7 +123,7 @@ sourceUrl="docker://$imageName@$imageDigest"
# nix>=2.20 rejects adding symlinked paths to the store, so use realpath
# to resolve to a physical path. https://github.com/NixOS/nix/issues/11941
tmpPath="$(realpath "$(mktemp -d "${TMPDIR:-/tmp}/skopeo-copy-tmp-XXXXXXXX")")"
tmpPath="$(realpath "$(mktemp -d --tmpdir skopeo-copy-tmp-XXXXXXXX)")"
trap "rm -rf \"$tmpPath\"" EXIT
tmpFile="$tmpPath/$(get_name $finalImageName $finalImageTag)"

View file

@ -1,4 +1,4 @@
{ lib, stdenv, makeWrapper, nix, skopeo, jq }:
{ lib, stdenv, makeWrapper, nix, skopeo, jq, coreutils }:
stdenv.mkDerivation {
name = "nix-prefetch-docker";
@ -10,7 +10,7 @@ stdenv.mkDerivation {
installPhase = ''
install -vD ${./nix-prefetch-docker} $out/bin/$name;
wrapProgram $out/bin/$name \
--prefix PATH : ${lib.makeBinPath [ nix skopeo jq ]} \
--prefix PATH : ${lib.makeBinPath [ nix skopeo jq coreutils ]} \
--set HOME /homeless-shelter
'';

View file

@ -44,7 +44,7 @@ fi
if test -z "$finalPath"; then
# nix>=2.20 rejects adding symlinked paths to the store, so use realpath
# to resolve to a physical path. https://github.com/NixOS/nix/issues/11941
tmpPath="$(realpath "$(mktemp -d "${TMPDIR:-/tmp}/bzr-checkout-tmp-XXXXXXXX")")"
tmpPath="$(realpath "$(mktemp -d --tmpdir bzr-checkout-tmp-XXXXXXXX)")"
trap "rm -rf \"$tmpPath\"" EXIT
tmpFile="$tmpPath/$dstFile"

View file

@ -22,7 +22,7 @@ fi
mkTempDir() {
# nix>=2.20 rejects adding symlinked paths to the store, so use realpath
# to resolve to a physical path. https://github.com/NixOS/nix/issues/11941
tmpPath="$(realpath "$(mktemp -d "${TMPDIR:-/tmp}/nix-prefetch-cvs-XXXXXXXX")")"
tmpPath="$(realpath "$(mktemp -d --tmpdir nix-prefetch-csv-XXXXXXXX)")"
trap removeTempDir EXIT
}

View file

@ -453,10 +453,9 @@ else
# If we don't know the hash or a path with that hash doesn't exist,
# download the file and add it to the store.
if test -z "$finalPath"; then
# nix>=2.20 rejects adding symlinked paths to the store, so use realpath
# to resolve to a physical path. https://github.com/NixOS/nix/issues/11941
tmpPath="$(realpath "$(mktemp -d "${TMPDIR:-/tmp}/git-checkout-tmp-XXXXXXXX")")"
tmpPath="$(realpath "$(mktemp -d --tmpdir git-checkout-tmp-XXXXXXXX)")"
exit_handlers+=(remove_tmpPath)
tmpFile="$tmpPath/$(url_to_name "$url" "$rev")"

View file

@ -42,10 +42,9 @@ fi
# If we don't know the hash or a path with that hash doesn't exist,
# download the file and add it to the store.
if [[ -z "$finalPath" ]]; then
# nix>=2.20 rejects adding symlinked paths to the store, so use realpath
# to resolve to a physical path. https://github.com/NixOS/nix/issues/11941
tmpPath="$(realpath "$(mktemp -d "${TMPDIR:-/tmp}/hg-checkout-tmp-XXXXXXXX")")"
tmpPath="$(realpath "$(mktemp -d --tmpdir hg-checkout-tmp-XXXXXXXX)")"
cleanup() { x=$?; rm -rf "$tmpPath"; exit $x; }; trap cleanup EXIT
tmpArchive="$tmpPath/hg-archive"

View file

@ -43,7 +43,7 @@ fi
if test -z "$finalPath"; then
# nix>=2.20 rejects adding symlinked paths to the store, so use realpath
# to resolve to a physical path. https://github.com/NixOS/nix/issues/11941
tmpPath="$(realpath "$(mktemp -d "${TMPDIR:-/tmp}/svn-checkout-tmp-XXXXXXXX")")"
tmpPath="$(realpath "$(mktemp -d --tmpdir svn-checkout-tmp-XXXXXXXX)")"
trap "rm -rf \"$tmpPath\"" EXIT
tmpFile="$tmpPath/$dstFile"

View file

@ -13,7 +13,7 @@ let mkPrefetchScript = tool: src: deps:
installPhase = ''
install -vD ${src} $out/bin/$name;
wrapProgram $out/bin/$name \
--prefix PATH : ${lib.makeBinPath (deps ++ [ gnused nix ])} \
--prefix PATH : ${lib.makeBinPath (deps ++ [ coreutils gnused nix ])} \
--set HOME /homeless-shelter
'';
@ -28,7 +28,7 @@ let mkPrefetchScript = tool: src: deps:
in rec {
nix-prefetch-bzr = mkPrefetchScript "bzr" ../../../build-support/fetchbzr/nix-prefetch-bzr [ breezy ];
nix-prefetch-cvs = mkPrefetchScript "cvs" ../../../build-support/fetchcvs/nix-prefetch-cvs [ cvs ];
nix-prefetch-git = mkPrefetchScript "git" ../../../build-support/fetchgit/nix-prefetch-git [ coreutils findutils gawk git git-lfs ];
nix-prefetch-git = mkPrefetchScript "git" ../../../build-support/fetchgit/nix-prefetch-git [ findutils gawk git git-lfs ];
nix-prefetch-hg = mkPrefetchScript "hg" ../../../build-support/fetchhg/nix-prefetch-hg [ mercurial ];
nix-prefetch-svn = mkPrefetchScript "svn" ../../../build-support/fetchsvn/nix-prefetch-svn [ subversion ];