mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-07-13 21:50:33 +03:00
build-support: fix nix-prefetch-* on macOS
Since nix 2.20, `nix-store --add-fixed` doesn't accept paths where the parent directory is a symlink. On macOS, /tmp is a symlink to /private/tmp, which causes a "'/tmp' is a symlink" error: ``` $ nix run github:nixos/nixpkgs/24.11-beta#nix-prefetch-git -- --url https://github.com/IFTTT/polo.git --rev 316aa2ac210a45a7fc400ab921831493d5dd21b8 --hash sha256 Initialized empty Git repository in /private/tmp/git-checkout-tmp-1Bf9bIv7/polo-316aa2a/.git/ remote: Enumerating objects: 51, done. remote: Counting objects: 100% (51/51), done. remote: Compressing objects: 100% (42/42), done. remote: Total 51 (delta 8), reused 19 (delta 5), pack-reused 0 (from 0) Unpacking objects: 100% (51/51), 19.57 KiB | 541.00 KiB/s, done. From https://github.com/IFTTT/polo * branch HEAD -> FETCH_HEAD Switched to a new branch 'fetchgit' removing `.git'... error: path '/tmp' is a symlink ``` Avoid this by resolving /tmp to a real directory in all the prefetch scripts
This commit is contained in:
parent
1d8d6f2dbb
commit
0c3d16a7d5
6 changed files with 18 additions and 6 deletions
|
@ -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:-/tmp}/skopeo-copy-tmp-XXXXXXXX")")"
|
||||
trap "rm -rf \"$tmpPath\"" EXIT
|
||||
|
||||
tmpFile="$tmpPath/$(get_name $finalImageName $finalImageTag)"
|
||||
|
|
|
@ -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:-/tmp}/bzr-checkout-tmp-XXXXXXXX")")"
|
||||
trap "rm -rf \"$tmpPath\"" EXIT
|
||||
|
||||
tmpFile="$tmpPath/$dstFile"
|
||||
|
|
|
@ -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:-/tmp}/nix-prefetch-cvs-XXXXXXXX")")"
|
||||
trap removeTempDir EXIT
|
||||
}
|
||||
|
||||
|
|
|
@ -454,7 +454,9 @@ else
|
|||
# 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:-/tmp}/git-checkout-tmp-XXXXXXXX")")"
|
||||
exit_handlers+=(remove_tmpPath)
|
||||
|
||||
tmpFile="$tmpPath/$(url_to_name "$url" "$rev")"
|
||||
|
|
|
@ -43,7 +43,9 @@ fi
|
|||
# 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:-/tmp}/hg-checkout-tmp-XXXXXXXX")")"
|
||||
cleanup() { x=$?; rm -rf "$tmpPath"; exit $x; }; trap cleanup EXIT
|
||||
|
||||
tmpArchive="$tmpPath/hg-archive"
|
||||
|
|
|
@ -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:-/tmp}/svn-checkout-tmp-XXXXXXXX")")"
|
||||
trap "rm -rf \"$tmpPath\"" EXIT
|
||||
|
||||
tmpFile="$tmpPath/$dstFile"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue