Skip to content

Commit

Permalink
build-support: Simplify tmpdir creation with coreutils
Browse files Browse the repository at this point in the history
macOS 10.12 doesn't have a usable --tmpdir flag on the builtin mktemp, but we can
make use of coreutil's mktemp instead.
  • Loading branch information
jdelStrother committed Nov 25, 2024
1 parent 0c3d16a commit 6cb8c5e
Show file tree
Hide file tree
Showing 8 changed files with 10 additions and 12 deletions.
2 changes: 1 addition & 1 deletion pkgs/build-support/docker/nix-prefetch-docker
Original file line number Diff line number Diff line change
Expand Up @@ -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)"
Expand Down
4 changes: 2 additions & 2 deletions pkgs/build-support/docker/nix-prefetch-docker.nix
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{ lib, stdenv, makeWrapper, nix, skopeo, jq }:
{ lib, stdenv, makeWrapper, nix, skopeo, jq, coreutils }:

stdenv.mkDerivation {
name = "nix-prefetch-docker";
Expand All @@ -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
'';

Expand Down
2 changes: 1 addition & 1 deletion pkgs/build-support/fetchbzr/nix-prefetch-bzr
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
2 changes: 1 addition & 1 deletion pkgs/build-support/fetchcvs/nix-prefetch-cvs
Original file line number Diff line number Diff line change
Expand Up @@ -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
}

Expand Down
3 changes: 1 addition & 2 deletions pkgs/build-support/fetchgit/nix-prefetch-git
Original file line number Diff line number Diff line change
Expand Up @@ -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")"
Expand Down
3 changes: 1 addition & 2 deletions pkgs/build-support/fetchhg/nix-prefetch-hg
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
2 changes: 1 addition & 1 deletion pkgs/build-support/fetchsvn/nix-prefetch-svn
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
'';

Expand All @@ -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 ];

Expand Down

0 comments on commit 6cb8c5e

Please sign in to comment.