Re: "make check" failure on Solaris 10 with make 4.2.91
On Sat, 2019-09-21 at 12:09 -0700, Paul Eggert wrote: > On 9/21/19 10:55 AM, Paul Smith wrote: > > perl -we 'use File::Spec; my @o = File::Spec->splitpath("../make"); > > print "@o\n"' > > It outputs a single line containing " ../ make". > > Hmm, I already wrote that, in one of my comments here: > > https://lists.gnu.org/r/bug-make/2019-09/msg00101.html > > Perhaps you didn't see that email? Nope, that was different. I had asked you to run a different command: > > perl -we 'use File::Spec::Functions qw(splitpath); my @o = > > splitpath("../make"); print "@o\n"' and in that email you replied it output: > A single line " ../make". Note there is no space between the "../" and "make", which is bad; it means that command did not work properly at all in your version. This time I asked you to run this Perl command: > perl -we 'use File::Spec; my @o = File::Spec->splitpath("../make"); print > "@o\n"' and above you report it returns: > It outputs a single line containing " ../ make". Note here there IS a space between "../" and "make", which is good; that means it worked correctly. Thanks, that's what I needed to know! I will convert my usage of File::Spec to use the object-oriented version instead of File::Spec::Functions to increase portability. ___ Bug-make mailing list Bug-make@gnu.org https://lists.gnu.org/mailman/listinfo/bug-make
Re: "make check" failure on Solaris 10 with make 4.2.91
On 9/21/19 10:55 AM, Paul Smith wrote: perl -we 'use File::Spec; my @o = File::Spec->splitpath("../make"); print "@o\n"' It outputs a single line containing " ../ make". Hmm, I already wrote that, in one of my comments here: https://lists.gnu.org/r/bug-make/2019-09/msg00101.html Perhaps you didn't see that email? ___ Bug-make mailing list Bug-make@gnu.org https://lists.gnu.org/mailman/listinfo/bug-make
Re: "make check" failure on Solaris 10 with make 4.2.91
On Mon, 2019-09-16 at 15:49 -0400, Paul Smith wrote: > Ugh, that's wrong. It should be " ../ make" (note the space before > "make"). File::Spec is not correctly splitting the directory from the > file, apparently. Bogus!! Can you try this one: > > perl -we 'use File::Spec; my @o = File::Spec->splitpath("../make"); print > "@o\n"' > > and see what that says? Paul (or someone else with Solaris 10) did you have a chance to run this last command and send me the output? Thanks! ___ Bug-make mailing list Bug-make@gnu.org https://lists.gnu.org/mailman/listinfo/bug-make
Re: "make check" failure on Solaris 10 with make 4.2.91
On Mon, 2019-09-16 at 12:23 -0700, Paul Eggert wrote: > > Can you run this and tell me what it prints: > > > >perl -we 'use File::Spec::Functions qw(splitpath); my @o = > splitpath("../make"); print "@o\n"' > > A single line " ../make". Ugh, that's wrong. It should be " ../ make" (note the space before "make"). File::Spec is not correctly splitting the directory from the file, apparently. Bogus!! Can you try this one: perl -we 'use File::Spec; my @o = File::Spec->splitpath("../make"); print "@o\n"' and see what that says? > > and also this: > > > >perl -we 'use File::Spec; print "$File::Spec::VERSION\n";' > > A single line "0.87". Hm. This should be OK. I must admit I'm not really familiar with the full history of File::Spec and what was/wasn't supported. Regarding your errors: I'm not sure about the output-sync tests. Could be timing, could be something else. I'd be a little surprised if it was timing; I thought I had made those timeouts more than long enough; they're supposed to just be sanity checks. If you want you can up them by changing: $tmout = 30; in tests/scipts/features/output-sync. The vpathplus difference is due to endian issues; our hash function returns a different order between big/little endian. There's a patch out there to test this in Perl and adjust the expected output. I'm still thinking about it. The wildcard one is probably because Solaris struct dirent doesn't have a d_type field, or else autoconf can't find it. Google makes me suspect the former. In that situation our current glob library just doesn't try to tell the difference between files and directories, rather than falling back to an explicit stat() or something, and so some of these wildcard tests fail. I may not fix this before the 4.3 release... it's not a regression; these tests would fail with the 4.2.1 release as well. I may wait until the next release and pull in the latest gnulib glob code instead of continuing to keep a local, old and crusty version. The downside is gnulib glob yanks in A LOT of extra stuff and that makes the non-POSIX ports (native Windows, VMS, DOS, etc.) much more difficult. Maybe I should keep the old glob code for those platforms. Hm. ___ Bug-make mailing list Bug-make@gnu.org https://lists.gnu.org/mailman/listinfo/bug-make
Re: "make check" failure on Solaris 10 with make 4.2.91
On 9/16/19 11:20 AM, psm...@nuodb.com wrote: On Mon, 2019-09-16 at 11:04 -0700, Paul Eggert wrote: syntax error at ./run_make_tests.pl line 473, near "or continue" Ugh. Can you change this line: -x $prog or continue; to this: -x $prog or next; Thanks, that got the tests to start up. However, 6 tests failed, with diagnostics reported below. Can you run this and tell me what it prints: perl -we 'use File::Spec::Functions qw(splitpath); my @o = splitpath("../make"); print "@o\n"' A single line " ../make". and also this: perl -we 'use File::Spec; print "$File::Spec::VERSION\n";' A single line "0.87". The failures were the following: features/vpathplus .. FAILED (3/4 passed) functions/shell . FAILED (7/8 passed) functions/wildcard .. FAILED (8/9 passed) plus the following three timeouts in features/output-sync, perhaps because the hardware is reasonably old and slow (a circa-2005 Sun Fire 280R with 750 MHz UltraSPARC III CPUs). features/output-sync Test timed out after 30 seconds Error running /var/run/rpc_door/eggert/make-4.2.91/tests/../make (expected 0; got 14): /var/run/rpc_door/eggert/make-4.2.91/tests/../make -f work/features/output-sync.mk -j -Orecurse Caught signal 14! Test timed out after 30 seconds Error running /var/run/rpc_door/eggert/make-4.2.91/tests/../make (expected 0; got 14): /var/run/rpc_door/eggert/make-4.2.91/tests/../make -f work/features/output-sync.mk.1 -j --output-sync=target Caught signal 14! Test timed out after 30 seconds Error running /var/run/rpc_door/eggert/make-4.2.91/tests/../make (expected 0; got 14): /var/run/rpc_door/eggert/make-4.2.91/tests/../make -f work/features/output-sync.mk.1 -j --output-sync=target x= Caught signal 14! FAILED (12/15 passed) I'm attaching a copy of the *.*diff* files. :: tests/work/functions/shell.diff.7 :: *** work/functions/shell.base.7 Mon Sep 16 12:14:33 2019 --- work/functions/shell.log.7 Mon Sep 16 12:14:33 2019 *** *** 1 ! SIG=130 --- 1 ! SIG=208 :: tests/work/functions/wildcard.diff.6 :: *** work/functions/wildcard.base.6 Mon Sep 16 12:14:33 2019 --- work/functions/wildcard.log.6 Mon Sep 16 12:14:33 2019 *** *** 1,13 hellod hellof ! hellod/ hellod/worldd hellod/worldf ! hellod/worldd/ hellod hellof hellod/worldd hellod/worldf ! hellod/ hellod/worldd/ hellod/worldd hellod/worldf ! hellod/worldd/ hellod/worldd hellod/worldf hellod/worldd/ ! hellod/worldd/kend1/ hellod/worldd/kend2/ hellod/worldd/kend1 hellod/worldd/kend2 hellod/worldd/kenf1 hellod/worldd/kenf2 ! hellod/worldd/kend1/ hellod/worldd/kend2/ --- 1,13 hellod hellof ! hellod/ hellof hellod/worldd hellod/worldf ! hellod/worldd/ hellod/worldf hellod hellof hellod/worldd hellod/worldf ! hellod/ hellof hellod/worldd/ hellod/worldf hellod/worldd hellod/worldf ! hellod/worldd/ hellod/worldf hellod/worldd hellod/worldf hellod/worldd/ ! hellod/worldd/kend1/ hellod/worldd/kend2/ hellod/worldd/kenf1 hellod/worldd/kenf2 hellod/worldd/kend1 hellod/worldd/kend2 hellod/worldd/kenf1 hellod/worldd/kenf2 ! hellod/worldd/kend1/ hellod/worldd/kend2/ hellod/worldd/kenf1 hellod/worldd/kenf2 :: tests/work/features/output-sync.diff :: *** work/features/output-sync.base Mon Sep 16 12:13:07 2019 --- work/features/output-sync.log Mon Sep 16 12:12:37 2019 *** *** 1,12 - /var/run/rpc_door/eggert/make-4.2.91/tests/../make -C foo - make[1]: Entering directory '/var/run/rpc_door/eggert/make-4.2.91/tests/foo' - foo: start - foo: end - make[1]: Leaving directory '/var/run/rpc_door/eggert/make-4.2.91/tests/foo' - /var/run/rpc_door/eggert/make-4.2.91/tests/../make -C bar - make[1]: Entering directory '/var/run/rpc_door/eggert/make-4.2.91/tests/bar' - bar: start - bar: end - baz: start - baz: end - make[1]: Leaving directory '/var/run/rpc_door/eggert/make-4.2.91/tests/bar' --- 0 :: tests/work/features/output-sync.diff.1 :: *** work/features/output-sync.base.1Mon Sep 16 12:13:37 2019 --- work/features/output-sync.log.1 Mon Sep 16 12:13:09 2019 *** *** 4,14 bar: start bar: end make[1]: Leaving directory '/var/run/rpc_door/eggert/make-4.2.91/tests/bar' - make[1]: Entering directory '/var/run/rpc_door/eggert/make-4.2.91/tests/foo' - foo: start - foo: end - make[1]: Leaving directory '/var/run/rpc_door/eggert/make-4.2.91/tests/foo' - make[1]: Entering directory '/var/run/rpc_door/eggert/make-4.2.91/tests/bar' - baz: start - baz: end - make[1]: Leaving directory '/var/run/rpc_door/eggert/make-4.2.91/tests/bar' --- 4,6 :: tests/work/features/output-sync.diff.2 :: *** work/features/output-sync.base.2Mon Sep 16 12:14:08 2019 ---
Re: "make check" failure on Solaris 10 with make 4.2.91
On Mon, 2019-09-16 at 11:04 -0700, Paul Eggert wrote: > syntax error at ./run_make_tests.pl line 473, near "or continue" Ugh. Can you change this line: -x $prog or continue; to this: -x $prog or next; ? That's a dumb syntax error. Too many different languages. However, I don't think we should ever be in this situation. The only way we can ever get here is if you ran with "-make make" but you clearly ran with "-make ../make" so we can't get into this loop. Can you run this and tell me what it prints: perl -we 'use File::Spec::Functions qw(splitpath); my @o = splitpath("../make"); print "@o\n"' and also this: perl -we 'use File::Spec; print "$File::Spec::VERSION\n";' Thanks! ___ Bug-make mailing list Bug-make@gnu.org https://lists.gnu.org/mailman/listinfo/bug-make
"make check" failure on Solaris 10 with make 4.2.91
On Solaris 10 sparc, "make check" fails with the attached output. Solaris 10 has Perl v5.8.4 (with 46 registered patches), which is still maintained by Oracle (most recently updated in 2016). I guess the GNU Make test procedure currently requires a later version of Perl. If so, it'd be helpful for it to skip tests that require a newer version of Perl than what's installed. Or if it's easy to port to v5.8.4 that'd be good too. $ make check Making check in lib make check-recursive Making check in po Making check in doc make check-local cd tests && perl ./run_make_tests.pl -srcdir /var/run/rpc_door/eggert/make-4.2.91 -make ../make syntax error at ./run_make_tests.pl line 473, near "or continue" Execution of ./run_make_tests.pl aborted due to compilation errors. *** Error code 255 The following command caused the error: if test -f './tests/run_make_tests'; then \ ulimit -n 128; \ if perl -v >/dev/null 2>&1; then \ case `cd '.'; pwd` in `pwd`) : ;; \ *) test -d tests || mkdir tests; \ rm -f srctests; \ if ln -s './tests' srctests; then \ for f in run_make_tests run_make_tests.pl test_driver.pl scripts jhelp.pl; do \ rm -f tests/$f; ln -s ../srctests/$f tests; \ done; fi ;; \ esac; \ echo "cd tests && perl ./run_make_tests.pl -srcdir /var/run/rpc_door/eggert/make-4.2.91 -make ../make "; \ cd tests && perl ./run_make_tests.pl -srcdir '/var/run/rpc_door/eggert/make-4.2.91' -make '../make' ; \ else \ echo "Can't find a working Perl (perl); the test suite requires Perl."; \ fi; \ else \ echo "Can't find the GNU Make test suite (./tests)."; \ fi make: Fatal error: Command failed for target `check-regression' Current working directory /var/run/rpc_door/eggert/make-4.2.91 *** Error code 1 make: Fatal error: Command failed for target `check-am' Current working directory /var/run/rpc_door/eggert/make-4.2.91 *** Error code 1 The following command caused the error: fail=; \ if (target_option=k; case ${target_option-} in ?) ;; *) echo "am__make_running_with_option: internal error: invalid" "target option '${target_option-}' specified" >&2; exit 1;; esac; has_opt=no; sane_makeflags=$MAKEFLAGS; if { if test -z ''; then false; elif test -n 'sparc-sun-solaris2.10'; then true; elif test -n '' && test -n ''; then true; else false; fi; }; then sane_makeflags=$MFLAGS; else case $MAKEFLAGS in *\\[\ \ ]*) bs=\\; sane_makeflags=`printf '%s\n' "$MAKEFLAGS" | sed "s/$bs$bs[$bs $bs]*//g"`;; esac; fi; skip_next=no; strip_trailopt () { flg=`printf '%s\n' "$flg" | sed "s/$1.*$//"`; }; for flg in $sane_makeflags; do test $skip_next = yes && { skip_next=no; continue; }; case $flg in *=*|--*) continue;; -*I) strip_trailopt 'I'; skip_next=yes;; -*I?*) strip_trailopt 'I';; -*O) strip_trailopt 'O'; skip_next=yes;; -*O?*) strip_trailopt 'O';; -*l) strip_trailopt 'l'; skip_next=yes;; -*l?*) strip_trailopt 'l';; -[dEDm]) skip_next=yes;; -[JT]) skip_next=yes;; esac; case $flg in *$target_option*) has_opt=yes; break;; esac; done; test $has_opt = yes); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo check-recursive | sed s/-recursive//`; \ case "check-recursive" in \ distclean-* | maintainer-clean-*) list='lib po doc' ;; \ *) list='lib po doc' ;; \ esac; \ for subdir in $list; do \ echo "Making $target in $subdir"; \ if test "$subdir" = "."; then \ dot_seen=yes; \ local_target="$target-am"; \ else \ local_target="$target"; \ fi; \ (CDPATH="${ZSH_VERSION+.}:" && cd $subdir && make $local_target) \ || eval $failcom; \ done; \ if test "$dot_seen" = "no"; then \ make "$target-am" || exit 1; \ fi; test -z "$fail" make: Fatal error: Command failed for target `check-recursive' ___ Bug-make mailing list Bug-make@gnu.org https://lists.gnu.org/mailman/listinfo/bug-make