mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-10 03:23:29 +03:00
nixos/make-disk-image: fix contents dir paths
`make-disk-image` is a tool for creating VM images. It takes an argument `contents` that allows one to specify files and directories that should be copied into the VM image. However, directories end up not at the specified target, but instead at a subdirectory of the target, with a nix-store-like path, e.g. `/target/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-source`. See issue https://github.com/NixOS/nixpkgs/issues/226203 . This change adds a test for make-disk-image's contents directory handling and adds a fix (appending `/` to rsync input directory names). This closes issue https://github.com/NixOS/nixpkgs/issues/226203 .
This commit is contained in:
parent
a711e445cc
commit
15c760d6b8
3 changed files with 28 additions and 10 deletions
|
@ -402,11 +402,16 @@ let format' = format; in let
|
|||
done
|
||||
else
|
||||
mkdir -p $root/$(dirname $target)
|
||||
if ! [ -e $root/$target ]; then
|
||||
rsync $rsync_flags $source $root/$target
|
||||
else
|
||||
if [ -e $root/$target ]; then
|
||||
echo "duplicate entry $target -> $source"
|
||||
exit 1
|
||||
elif [ -d $source ]; then
|
||||
# Append a slash to the end of source to get rsync to copy the
|
||||
# directory _to_ the target instead of _inside_ the target.
|
||||
# (See `man rsync`'s note on a trailing slash.)
|
||||
rsync $rsync_flags $source/ $root/$target
|
||||
else
|
||||
rsync $rsync_flags $source $root/$target
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue