Re: [bug #41813] Mult-line override define failing on VMS.
Appended is a temporary fix for the multiline problem. diff --git a/job.c b/job.c index e4a40ac..da6a877 100644 --- a/job.c +++ b/job.c @@ -1214,6 +1214,25 @@ start_job_command (struct child *child) char *end = 0; #ifdef VMS argv = p; +/* Multiline fix. + This (quick) fix is incompatible with the definition of ECHO as + 'write sys$$output ', defined in default.c. In my opinion that was + a hack, anyway, and supporting multilines breaks it: obviously, the hack + relied on VMS/DCL to tolerate a missing, matching '' at the end of the + line and now with multilines and ECHO the end of the line is within a string! */ +{ +char *s = p; +int instring=0; +while (*s) { +if (*s=='') +instring = !instring; +else if (*s=='\n' !instring) { +end=s; +break; +} +++s; +} +} #else argv = construct_command_argv (p, end, child-file, child-file-cmds-lines_flags[child-command_line - 1], ___ Bug-make mailing list Bug-make@gnu.org https://lists.gnu.org/mailman/listinfo/bug-make
Re: Make recursion does not appear working in VMS
On 3/13/2014 8:14 AM, h.becker wrote: It looks like execve uses argv[0] to run make. With a VMS/DCL-style version of the Makefile and my mcr version of make it seems to work: I changed from the wrapper code to code that sets the makefile name, and temporarily set a local symbol as a foreign command. At exit the symbol is either deleted or replaced with the original value, which leaves argv[0] alone. I also found that the vms_exit() code had a bug in it, because it was written with the expectation of getting a UNIX exit status, and GNU make is passing it VMS exit statuses. As only codes 0, 1, 2 are defined for GNU make status, and the lowest failure status from VMS is 8, for GNU make, the conversion to VMS status should only be done for codes 1-7, the rest should be passed through. With that those two changes, I now have: EAGLE del lcl_root:[...]*.*;*/exc=(*.dir,*.pm) EAGLE perl run_make_tests.pl features/parallelism -- Running tests for GNU make on VMS GNU Make 4.0.90 -- Clearing /lcl_root/make/tests/work... Making work dirs... features/parallelism Error running make (expected 0; got 512): make -f /lcl_root/make/tests/work/features/parallelism.mk_1 -j4 Error running make (expected 512; got 0): make -f /lcl_root/make/tests/work/features/parallelism.mk_3 -rR -j5 FAILED (6/8 passed) 2 Tests in 1 Category Failed (See .diff* files in work dir for details) :-( The first failure is that the recursion is not happening: The 1.inc and 2.inc recipe lines are probably wrapped in the e-mail client. LCL_ROOT:[make.tests.work.features]parallelism.log_1;1 THREE.inc ONE.inc TWO.inc make: *** No rule to make target '1', needed by 'all'. Stop. LCL_ROOT:[make.tests.work.features]parallelism.mk_1;1 all : 1 2 ; @echo success -include 1.inc 2.inc 1.inc : ; @pipe echo ONE.inc ; sleep 3 ; echo TWO.inc ; define/user sys$$output $@ ; echo 1 : ; @pipe echo ONE ; sleep 2 ; echo TWO ; close sys$$output 2.inc : ; @pipe sleep 2 ; echo THREE.inc ; define/user sys$$output $@ ; echo 2: ; @pipe sleep 1 ; echo THREE ; close sys$$output LCL_ROOT:[make.tests.work.features]parallelism.run_1;1 make -f /lcl_root/make/tests/work/features/parallelism.mk_1 -j4 The second failure is that the make prematurely exits on the first fail. It should have 3 failures. The test script currently converts the 0x1035a00a to 1 so that it matches. That should probably be done by Make. There should be 3 failure lines, not just one. EAGLE type LCL_ROOT:[make.tests.work.features]parallelism.*_3 LCL_ROOT:[make.tests.work.features]parallelism.log_3;1 Fail /lcl_root/make/tests/work/features/parallelism.mk_3:6: recipe for target 'fail.1 ' failed make: *** [fail.1] Error 0x1035a00a LCL_ROOT:[make.tests.work.features]parallelism.mk_3;1 .PHONY: all fail.1 fail.2 fail.3 ok all: fail.1 ok fail.2 fail.3 fail.1 fail.2 fail.3: @sleep $(patsubst fail.%,%,$@) @echo Fail @exit 271949834; ok: @sleep 4 @echo Ok done LCL_ROOT:[make.tests.work.features]parallelism.run_3;1 make -f /lcl_root/make/tests/work/features/parallelism.mk_3 -rR -j5 Regards, -John ___ Bug-make mailing list Bug-make@gnu.org https://lists.gnu.org/mailman/listinfo/bug-make
Re: Test harness on VMS, running 511 tests, 34 tests failing.
On 3/13/2014 12:08 AM, John E. Malmberg wrote: On 3/10/2014 11:00 PM, John E. Malmberg wrote: I changed from the wrapper code to code that sets the makefile name, and temporarily set a local symbol as a foreign command. At exit the symbol is either deleted or replaced with the original value, which leaves argv[0] alone. I also found that the vms_exit() code had a bug in it, because it was written with the expectation of getting a UNIX exit status, and GNU make is passing it VMS exit statuses. As only codes 0, 1, 2 are defined for GNU make status, and the lowest failure status from VMS is 8, for GNU make, the conversion to VMS status should only be done for codes 1-7, the rest should be passed through. I had to fix a VMS specific timeout value on the parallelism test. With that those two changes, currently the status is 34 failures in 22 categoriesout of 511 test log files found. I do not know why the category count changed from just skipping one test in a file. It also appears the some tests result counts are affected by the -keep qualifier since it leaves files around that other tests expect not to be there. So there may be a few more or less failures. With out -keep, 33 Tests in 21 Categories Failed, as an example, but then I do not get a count of all the log files. The 5 archive tests now pass, which means that Ticket 41761 can probably be closed All the override tests also now pass even though multi-line defines not correctly implemented on VMS. Ticket 41813. Of the 9 parallelism tests, 6 work, 2 fail, and one is not current valid to run on VMS. 1. Make recursion appears not to be working, at least with parallelism enabled. 2. Parallelism is not working the same on VMS as UNIX. Needs more investigation. The feature patternrules still has one failure that needs to be investigated along with the other failures I have not yet gotten to. Regards, -John ___ Bug-make mailing list Bug-make@gnu.org https://lists.gnu.org/mailman/listinfo/bug-make
Re: [bug #41813] Mult-line override define failing on VMS.
On 3/16/2014 4:13 PM, h.becker wrote: Appended is a temporary fix for the multiline problem. As I mentioned in the make recursion thread: I changed from the wrapper code to code that sets the makefile name, and temporarily set a local symbol as a foreign command. At exit the symbol is either deleted or replaced with the original value, which leaves argv[0] alone. I also found that the vms_exit() code had a bug in it, because it was written with the expectation of getting a UNIX exit status, and GNU make is passing it VMS exit statuses. As only codes 0, 1, 2 are defined for GNU make status, and the lowest failure status from VMS is 8, for GNU make, the conversion to VMS status should only be done for codes 1-7, the rest should be passed through. EAGLE del lcl_root:[...]*.*;*/exc=(*.dir,*.pm) EAGLE perl run_make_tests.pl features/override -- Running tests for GNU make on VMS GNU Make 4.0.90 -- Clearing /lcl_root/make/tests/work... Making work dirs... features/override ... ok (4 passed) The archive tests are also now all passing. Regards, -John ___ Bug-make mailing list Bug-make@gnu.org https://lists.gnu.org/mailman/listinfo/bug-make
Re: Make recursion does not appear working in VMS
On 3/16/2014 6:14 PM, John E. Malmberg wrote: On 3/13/2014 8:14 AM, h.becker wrote: It looks like execve uses argv[0] to run make. With a VMS/DCL-style version of the Makefile and my mcr version of make it seems to work: I changed from the wrapper code to code that sets the makefile name, and temporarily set a local symbol as a foreign command. At exit the symbol is either deleted or replaced with the original value, which leaves argv[0] alone. I also found that the vms_exit() code had a bug in it, because it was written with the expectation of getting a UNIX exit status, and GNU make is passing it VMS exit statuses. As only codes 0, 1, 2 are defined for GNU make status, and the lowest failure status from VMS is 8, for GNU make, the conversion to VMS status should only be done for codes 1-7, the rest should be passed through. With that those two changes, I now have: EAGLE del lcl_root:[...]*.*;*/exc=(*.dir,*.pm) EAGLE perl run_make_tests.pl features/parallelism -- Running tests for GNU make on VMS GNU Make 4.0.90 -- Clearing /lcl_root/make/tests/work... Making work dirs... features/parallelism Error running make (expected 0; got 512): make -f /lcl_root/make/tests/work/features/parallelism.mk_1 -j4 Error running make (expected 512; got 0): make -f /lcl_root/make/tests/work/features/parallelism.mk_3 -rR -j5 FAILED (6/8 passed) 2 Tests in 1 Category Failed (See .diff* files in work dir for details) :-( The first failure is that the recursion is not happening: The 1.inc and 2.inc recipe lines are probably wrapped in the e-mail client. LCL_ROOT:[make.tests.work.features]parallelism.log_1;1 THREE.inc ONE.inc TWO.inc make: *** No rule to make target '1', needed by 'all'. Stop. LCL_ROOT:[make.tests.work.features]parallelism.mk_1;1 all : 1 2 ; @echo success -include 1.inc 2.inc 1.inc : ; @pipe echo ONE.inc ; sleep 3 ; echo TWO.inc ; define/user sys$$output $@ ; echo 1 : ; @pipe echo ONE ; sleep 2 ; echo TWO ; close sys$$output 2.inc : ; @pipe sleep 2 ; echo THREE.inc ; define/user sys$$output $@ ; echo 2: ; @pipe sleep 1 ; echo THREE ; close sys$$output LCL_ROOT:[make.tests.work.features]parallelism.run_1;1 make -f /lcl_root/make/tests/work/features/parallelism.mk_1 -j4 The second failure is that the make prematurely exits on the first fail. It should have 3 failures. The test script currently converts the 0x1035a00a to 1 so that it matches. That should probably be done by Make. There should be 3 failure lines, not just one. Found another bug in the exit_failure routine, and now second test is passing. So only the parallelism_mk_1 test is failing out of the set. Regards, -John ___ Bug-make mailing list Bug-make@gnu.org https://lists.gnu.org/mailman/listinfo/bug-make
Re: Test harness on VMS, running 511 tests, 60 tests failing.
On 3/16/2014 6:34 PM, John E. Malmberg wrote: On 3/13/2014 12:08 AM, John E. Malmberg wrote: On 3/10/2014 11:00 PM, John E. Malmberg wrote: The previous vms_exit fix was incorrectly changing some failures to success status. With that correction, I am back to 60 tests failing in 29 categories failing if I use the -keep option. With out -keep, 58 tests failiing in 38 categories fail. Only 3/10 archive tests are passing again, so ticket 41761 still applies. The override test is now failing with out the new fix from h.becker applied yet. Ticket 41813. Of the 9 parallelism tests, 7 work, 1 fails, and one is not currently valid to run on VMS. The feature patternrules is now working. It is what exposed the error in vms_exit. Regards -John ___ Bug-make mailing list Bug-make@gnu.org https://lists.gnu.org/mailman/listinfo/bug-make
Re: Test harness on VMS, running 511 tests, 60 tests failing.
On Sun, 2014-03-16 at 21:43 -0500, John E. Malmberg wrote: With that correction, I am back to 60 tests failing in 29 categories failing if I use the -keep option. You should never use -keep when invoking the full test suite. Using -keep will cause other tests to fail, on all platforms: it's an invalid mode of operation. -keep is only if you want to run one specific test to reproduce a problem, and keep the results for further testing (re-running the test with a debugger or similar). Cheers! ___ Bug-make mailing list Bug-make@gnu.org https://lists.gnu.org/mailman/listinfo/bug-make