on a uclibc/hardened host, building git with FEATURES="test" fails : *** t3001-ls-files-others-exclude.sh *** * FAIL 1: git-ls-files --others with various exclude options. git-ls-files --others \ --exclude=\*.6 \ --exclude-per-directory=.gitignore \ --exclude-from=.git/ignore \ >output && git diff expect output * FAIL 2: git-ls-files --others with \r\n line endings. git-ls-files --others \ --exclude=\*.6 \ --exclude-per-directory=.gitignore \ --exclude-from=.git/ignore \ >output && git diff expect output * ok 3: git-status honours core.excludesfile * failed 2 among 3 test(s) Reproducible: Always
Created attachment 121470 [details] build.log complete build log
Created attachment 121471 [details] emerge.info emerge --info
Hi, If you unpack the tarball yourself, edit t/Makefile and UNcomment the line that reads: #GIT_TEST_OPTS=--verbose --debug Then run 'make -C t t3001-ls-files-others-exclude.sh' and paste that result here. Thanks. - ferdy
Please test a newer version and provide the info needed to track this issue down. Reopen with the result. Thanks. - ferdy
Created attachment 132079 [details] git-1.5.2.5_error_log.txt test suite error log with git-1.5.2.5
sorry for the slackiness, I hope you can see the problem with the verbose logging ... Cheers Aurélien
Looks like a bug in uclibc's fnmatch. Care to run the attached test? Thanks. - ferdy
Created attachment 133872 [details] uclibc-fnmatch.c Desired output: --- 8< --- $ ./uclibc-fnmatch && echo $? fnmatch(*.foo, a.foo, 1) = 0 -> Ok fnmatch(*.foo, a.foo, 0) = 0 -> Ok fnmatch(*.foo, bar/a.foo, 1) = FNM_NOMATCH -> Ok fnmatch(*.foo, bar/a.foo, 0) = 0 -> Ok 0 --- 8< ---
(In reply to comment #7) > Looks like a bug in uclibc's fnmatch. Care to run the attached test? Thanks. well it fails ... ./a.out fnmatch(*.foo, a.foo, 1) = 0 -> Ok fnmatch(*.foo, a.foo, 0) = 0 -> Ok fnmatch(*.foo, bar/a.foo, 1) = 0 -> FAIL fnmatch(*.foo, bar/a.foo, 0) = 0 -> Ok and the fnmatch is the one of sys-libs/uclibc-0.9.28.3 ldd a.out libc.so.0 => /lib/libc.so.0 (0x4ccd7000) ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x4cd31000) ll /lib/libc.so.0 /lib/libc.so.0 -> libuClibc-0.9.28.so nm a.out | grep fnmatch U fnmatch and sys-libs/uclibc-0.9.28.3 was built with : -build -debug hardened -iconv ipv6 -minimal -nls -pregen -savedconfig uclibc-compat -userlocales wordexp thanks, Aurélien
Unless my understanding of POSIX's entry for fnmatch is wrong, this is a bug in uclibc: "If the FNM_PATHNAME flag is set in flags, then a slash character ( '/' ) in string shall be explicitly matched by a slash in pattern; it shall not be matched by either the asterisk or question-mark special characters, nor by a bracket expression" So '*.foo' shouldn't have matched 'bar/a.foo'. Reassigning to embedded since they maintain uclibc. - ferdy
submitter: can you please retest with 1.5.3.7-r1? But I do agree with ferdy's assessment that it's a bug in uclibc.
Created attachment 139677 [details] git_1.5.3.7-r1_error_log.txt hi , this is the error message with git 1.5.3.7-r1: *** t3001-ls-files-others-exclude.sh *** * FAIL 1: git ls-files --others with various exclude options. git ls-files --others \ --exclude=\*.6 \ --exclude-per-directory=.gitignore \ --exclude-from=.git/ignore \ >output && git diff expect output * FAIL 2: git ls-files --others with \r\n line endings. git ls-files --others \ --exclude=\*.6 \ --exclude-per-directory=.gitignore \ --exclude-from=.git/ignore \ >output && git diff expect output * ok 3: git-status honours core.excludesfile * failed 2 among 3 test(s) verbose log attached Cheers Aurélien
thx. So yeah, uclibc bug I'd say. I'm changing the summary to reflect the actual problem rather than just say git.
package was treecleaned long ago