Skip to content

Commit

Permalink
build-support: fix nix-prefetch-* on macOS (#358685)
Browse files Browse the repository at this point in the history
  • Loading branch information
Mic92 authored Dec 13, 2024
2 parents cc9e7bb + 6cb8c5e commit 3dc8ff1
Show file tree
Hide file tree
Showing 8 changed files with 22 additions and 12 deletions.
4 changes: 3 additions & 1 deletion pkgs/build-support/docker/nix-prefetch-docker
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,9 @@ fi

sourceUrl="docker://$imageName@$imageDigest"

tmpPath="$(mktemp -d "${TMPDIR:-/tmp}/skopeo-copy-tmp-XXXXXXXX")"
# 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 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
4 changes: 3 additions & 1 deletion pkgs/build-support/fetchbzr/nix-prefetch-bzr
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +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 test -z "$finalPath"; then
tmpPath="$(mktemp -d "${TMPDIR:-/tmp}/bzr-checkout-tmp-XXXXXXXX")"
# 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 bzr-checkout-tmp-XXXXXXXX)")"
trap "rm -rf \"$tmpPath\"" EXIT

tmpFile="$tmpPath/$dstFile"
Expand Down
4 changes: 3 additions & 1 deletion pkgs/build-support/fetchcvs/nix-prefetch-cvs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,9 @@ fi


mkTempDir() {
tmpPath="$(mktemp -d "${TMPDIR:-/tmp}/nix-prefetch-cvs-XXXXXXXX")"
# 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 nix-prefetch-csv-XXXXXXXX)")"
trap removeTempDir EXIT
}

Expand Down
5 changes: 3 additions & 2 deletions pkgs/build-support/fetchgit/nix-prefetch-git
Original file line number Diff line number Diff line change
Expand Up @@ -453,8 +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

tmpPath="$(mktemp -d "${TMPDIR:-/tmp}/git-checkout-tmp-XXXXXXXX")"
# 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 git-checkout-tmp-XXXXXXXX)")"
exit_handlers+=(remove_tmpPath)

tmpFile="$tmpPath/$(url_to_name "$url" "$rev")"
Expand Down
5 changes: 3 additions & 2 deletions pkgs/build-support/fetchhg/nix-prefetch-hg
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +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

tmpPath="$(mktemp -d "${TMPDIR:-/tmp}/hg-checkout-tmp-XXXXXXXX")"
# 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 hg-checkout-tmp-XXXXXXXX)")"
cleanup() { x=$?; rm -rf "$tmpPath"; exit $x; }; trap cleanup EXIT

tmpArchive="$tmpPath/hg-archive"
Expand Down
4 changes: 3 additions & 1 deletion pkgs/build-support/fetchsvn/nix-prefetch-svn
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,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 test -z "$finalPath"; then
tmpPath="$(mktemp -d "${TMPDIR:-/tmp}/svn-checkout-tmp-XXXXXXXX")"
# 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 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 @@ -15,7 +15,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 @@ -30,7 +30,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 3dc8ff1

Please sign in to comment.