Gentoo packages that build multiple variants, like once for every
version of a slotted dependency, currently fail to install if their
source dir includes a relative symlink to own child. Affects lots of
Python infrastructure, for example meson and setuptools. You've already
run into this issue, since cp.test has a todo. It's from 2008 though, so
I guess I'll bump with an expanded test case. Libc is musl-1.1.22.
>From 5c03a1673a271ad3de92dd3ec4070fa9af11651c Mon Sep 17 00:00:00 2001
From: makepost <[email protected]>
Date: Mon, 10 Jun 2019 04:53:28 +0300
Subject: [PATCH] Add failing test for cp -r dir/. symlink child.

Gentoo packages that build multiple variants, like once for every
version of a slotted dependency, currently fail to install if their
source dir includes a relative symlink to own child. Affects lots of
Python infrastructure, for example meson and setuptools. You've already
run into this issue, since cp.test has a todo. It's from 2008 though, so
I guess I'll bump with an expanded test case. Libc is musl-1.1.22.
---
 tests/cp.test | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/tests/cp.test b/tests/cp.test
index a720d1f5..c7d445c0 100755
--- a/tests/cp.test
+++ b/tests/cp.test
@@ -89,6 +89,15 @@ testing "-r dir1/* dir2" \
 	"cp -r one/* dir2 && diff -r one dir2 && echo yes" "yes\n" "" ""
 rm -rf one dir dir2
 
+mkdir one; touch one/two; cp one/two one/three
+cp -r one/ one_ # Succeeds twice in a row
+testing "-r dir/." "cp -r one/. one_ && echo yes" "yes\n" "" ""
+rm -rf one one_
+mkdir one; touch one/two; ln -s two one/three
+cp -r one/ one_ # First time ok, but second will fail with "File exists"
+testing "-r dir/. symlink child" "cp -r one/. one_ && echo yes" "yes\n" "" ""
+rm -rf one one_
+
 touch walrus
 chmod 644 walrus
 ln -s walrus woot
@@ -99,6 +108,5 @@ testing "symlink dest permissions" "cp woot carpenter && stat -c %A carpenter" \
 # cp -r ../source destdir
 # cp -r one/two/three missing
 # cp -r one/two/three two
-# mkdir one; touch one/two; ln -s two one/three
 # cp file1 file2 dir
 # cp file1 missing file2 -> dir
_______________________________________________
Toybox mailing list
[email protected]
http://lists.landley.net/listinfo.cgi/toybox-landley.net

Reply via email to