Re: [PATCH 4/4] t5002: check if unzip supports symlinks
René Scharfe wrote: Am 07.01.2013 09:52, schrieb Jonathan Nieder: Hm. Do some implementations of unzip not support symlinks, or is the problem that some systems build Info-ZIP without the SYMLINKS option? The unzip supplied with NetBSD 6.0.1, which is based on libarchive, doesn't support symlinks. It creates a file with the link target path as its only content for such entries. Ok, that makes sense. A quick search finds https://code.google.com/p/libarchive/issues/detail?id=104, which if I understand correctly was fixed in libarchive 3.0.2. NetBSD 6 uses a patched 2.8.4. [...] For the test script there is no difference: If we don't have a tool to verify symlinks in archives, we better skip that part. Yeah, I just wanted to see if there were other parts of the world that needed fixing while at it. Thanks for explaining. Ciao, Jonathan -- To unsubscribe from this list: send the line unsubscribe git in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 4/4] t5002: check if unzip supports symlinks
René Scharfe wrote: Only add a symlink to the repository if both the filesystem and unzip support symlinks. To check the latter, add a ZIP file containing a symlink, created like this with InfoZIP zip 3.0: $ echo sample text textfile $ ln -s textfile symlink $ zip -y infozip-symlinks.zip textfile symlink Hm. Do some implementations of unzip not support symlinks, or is the problem that some systems build Info-ZIP without the SYMLINKS option? -- To unsubscribe from this list: send the line unsubscribe git in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 4/4] t5002: check if unzip supports symlinks
Am 07.01.2013 09:52, schrieb Jonathan Nieder: René Scharfe wrote: Only add a symlink to the repository if both the filesystem and unzip support symlinks. To check the latter, add a ZIP file containing a symlink, created like this with InfoZIP zip 3.0: $ echo sample text textfile $ ln -s textfile symlink $ zip -y infozip-symlinks.zip textfile symlink Hm. Do some implementations of unzip not support symlinks, or is the problem that some systems build Info-ZIP without the SYMLINKS option? The unzip supplied with NetBSD 6.0.1, which is based on libarchive, doesn't support symlinks. It creates a file with the link target path as its only content for such entries. I assume that Info-ZIP is compiled with the SYMLINKS option on all platforms whose default filesystem supports symbolic links. Except on Windows perhaps, where it's complicated. For the test script there is no difference: If we don't have a tool to verify symlinks in archives, we better skip that part. René -- To unsubscribe from this list: send the line unsubscribe git in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 4/4] t5002: check if unzip supports symlinks
Only add a symlink to the repository if both the filesystem and unzip support symlinks. To check the latter, add a ZIP file containing a symlink, created like this with InfoZIP zip 3.0: $ echo sample text textfile $ ln -s textfile symlink $ zip -y infozip-symlinks.zip textfile symlink If we can extract it successfully, we add a symlink to the test repository for git archive --format=zip, or otherwise skip that step. Users can see the skipped test and perhaps run it again with a different unzip version. Signed-off-by: Rene Scharfe rene.scha...@lsrfire.ath.cx --- t/t5002-archive-zip.sh | 26 +++--- t/t5002/infozip-symlinks.zip | Bin 0 - 328 bytes 2 files changed, 19 insertions(+), 7 deletions(-) create mode 100644 t/t5002/infozip-symlinks.zip diff --git a/t/t5002-archive-zip.sh b/t/t5002-archive-zip.sh index ac9c6d4..d35aa24 100755 --- a/t/t5002-archive-zip.sh +++ b/t/t5002-archive-zip.sh @@ -12,6 +12,15 @@ test_lazy_prereq UNZIP ' test $? -ne 127 ' +test_lazy_prereq UNZIP_SYMLINKS ' + ( + mkdir unzip-symlinks + cd unzip-symlinks + $GIT_UNZIP $TEST_DIRECTORY/t5002/infozip-symlinks.zip + test -h symlink + ) +' + check_zip() { zipfile=$1.zip listfile=$1.lst @@ -40,15 +49,18 @@ test_expect_success \ cp /bin/sh a/bin printf A\$Format:%s\$O $SUBSTFORMAT a/substfile1 printf A not substituted O a/substfile2 - if test_have_prereq SYMLINKS; then - ln -s a a/l1 - else - printf %s a a/l1 - fi (p=long_path_to_a_file cd a for depth in 1 2 3 4 5; do mkdir $p cd $p; done - echo text file_with_long_path) - (cd a find .) | sort a.lst' + echo text file_with_long_path) +' + +test_expect_success SYMLINKS,UNZIP_SYMLINKS 'add symlink' ' + ln -s a a/symlink_to_a +' + +test_expect_success 'prepare file list' ' + (cd a find .) | sort a.lst +' test_expect_success \ 'add ignored file' \ diff --git a/t/t5002/infozip-symlinks.zip b/t/t5002/infozip-symlinks.zip new file mode 100644 index ..065728c631cf1f7ab20a045a83abc3e08455eeba GIT binary patch literal 328 zcmWIWW@h1H0D(ty)tzkeJdg4K*xipAj43ST2YdgnUfkC!pXp_F7Y}5gi9;985mh! zFf%Z)qyW_wC*~I9q$+@vas|LmdjM@9kbsh4zNiK4D3MDiYs$-GV`**hM5Bm0%0`6 zU={{=Gcw6B8qh;`^jMj32x7rg@*~oQY;CvT2wOgO~;~=j}p2APILS@e1c U4De=U11V+#!r4H2I*7vn0CeC%rvLx| literal 0 HcmV?d1 -- 1.7.12 -- To unsubscribe from this list: send the line unsubscribe git in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html