Re: [bug #41813] Mult-line override define failing on VMS.

2014-03-16 Thread h.becker
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

2014-03-16 Thread John E. Malmberg

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.

2014-03-16 Thread John E. Malmberg

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.

2014-03-16 Thread John E. Malmberg

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

2014-03-16 Thread John E. Malmberg

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.

2014-03-16 Thread John E. Malmberg

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.

2014-03-16 Thread Paul Smith
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