make-symlinks-relative: run on all outputs
This commit is contained in:
parent
bfc50c1faf
commit
cfb543a532
|
@ -1,4 +1,6 @@
|
||||||
postFixupHooks+=(_makeSymlinksRelative)
|
# symlinks are often created in postFixup
|
||||||
|
# don't use fixupOutputHooks, it is before postFixup
|
||||||
|
postFixupHooks+=(_makeSymlinksRelativeInAllOutputs)
|
||||||
|
|
||||||
# For every symlink in $output that refers to another file in $output
|
# For every symlink in $output that refers to another file in $output
|
||||||
# ensure that the symlink is relative. This removes references to the output
|
# ensure that the symlink is relative. This removes references to the output
|
||||||
|
@ -26,3 +28,10 @@ _makeSymlinksRelative() {
|
||||||
|
|
||||||
done < <(find $prefix -type l -print0)
|
done < <(find $prefix -type l -print0)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_makeSymlinksRelativeInAllOutputs() {
|
||||||
|
local output
|
||||||
|
for output in $(getAllOutputNames); do
|
||||||
|
prefix="${!output}" _makeSymlinksRelative
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
|
@ -23,19 +23,29 @@
|
||||||
};
|
};
|
||||||
make-symlinks-relative = stdenv.mkDerivation {
|
make-symlinks-relative = stdenv.mkDerivation {
|
||||||
name = "test-make-symlinks-relative";
|
name = "test-make-symlinks-relative";
|
||||||
|
outputs = [ "out" "man" ];
|
||||||
buildCommand = ''
|
buildCommand = ''
|
||||||
mkdir -p $out/{bar,baz}
|
mkdir -p $out/{bar,baz}
|
||||||
|
mkdir -p $man/share/{x,y}
|
||||||
source1="$out/bar/foo"
|
source1="$out/bar/foo"
|
||||||
destination1="$out/baz/foo"
|
destination1="$out/baz/foo"
|
||||||
|
source2="$man/share/x/file1"
|
||||||
|
destination2="$man/share/y/file2"
|
||||||
echo foo > $source1
|
echo foo > $source1
|
||||||
|
echo foo > $source2
|
||||||
ln -s $source1 $destination1
|
ln -s $source1 $destination1
|
||||||
|
ln -s $source2 $destination2
|
||||||
echo "symlink before patching: $(readlink $destination1)"
|
echo "symlink before patching: $(readlink $destination1)"
|
||||||
|
echo "symlink before patching: $(readlink $destination2)"
|
||||||
|
|
||||||
_makeSymlinksRelative
|
_makeSymlinksRelativeInAllOutputs
|
||||||
|
|
||||||
echo "symlink after patching: $(readlink $destination1)"
|
echo "symlink after patching: $(readlink $destination1)"
|
||||||
([[ -e $destination1 ]] && echo "symlink isn't broken") || (echo "symlink is broken" && exit 1)
|
([[ -e $destination1 ]] && echo "symlink isn't broken") || (echo "symlink is broken" && exit 1)
|
||||||
([[ $(readlink $destination1) == "../bar/foo" ]] && echo "absolute symlink was made relative") || (echo "symlink was not made relative" && exit 1)
|
([[ $(readlink $destination1) == "../bar/foo" ]] && echo "absolute symlink was made relative") || (echo "symlink was not made relative" && exit 1)
|
||||||
|
echo "symlink after patching: $(readlink $destination2)"
|
||||||
|
([[ -e $destination2 ]] && echo "symlink isn't broken") || (echo "symlink is broken" && exit 1)
|
||||||
|
([[ $(readlink $destination2) == "../x/file1" ]] && echo "absolute symlink was made relative") || (echo "symlink was not made relative" && exit 1)
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
move-docs = stdenv.mkDerivation {
|
move-docs = stdenv.mkDerivation {
|
||||||
|
|
Loading…
Reference in a new issue