[bug #41813] Mult-line override define failing on VMS.
Update of bug #41813 (project make): Status:None = Fixed Assigned to:None = psmith Open/Closed:Open = Closed Fixed Release:None = 4.1 ___ Reply to this item at: http://savannah.gnu.org/bugs/?41813 ___ Message sent via/by Savannah http://savannah.gnu.org/ ___ Bug-make mailing list Bug-make@gnu.org https://lists.gnu.org/mailman/listinfo/bug-make
[bug #41813] Mult-line override define failing on VMS.
Follow-up Comment #1, bug #41813 (project make): This test has been passing on VMS for a while. The patch to fix bs-nl handling on VMS submitted on November 27, 2014 may have totally replaced the previous code in place and the test still passes. This issue can be closed. ___ Reply to this item at: http://savannah.gnu.org/bugs/?41813 ___ Message sent via/by Savannah http://savannah.gnu.org/ ___ 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/18/2014 11:30 AM, h.becker wrote: On 03/17/2014 11:34 PM, John E. Malmberg wrote: On 3/16/2014 4:13 PM, h.becker wrote: Appended is a temporary fix for the multiline problem. The fix appears to work. I think your comment about it breaking the echo being defined as sys$output is wrong though. I tested it with no echo symbol and with echo as a symbol and it generates the expected output now in both cases. It seems you aren't using plain VMS, which has no echo command nor echo symbol. I'm talking about the make variable ECHO as defined for VMS in: The test works as long as echo is a foreign command because no macro substition is done. Because of a bug in my copy of the test harness, I was not seeing the errors about undefined symbols. The broken ECHO is one reason I flagged the fix temporary. It seems, there should be a builtin_echo for VMS. Shouldn't be too hard, but I haven't looked at it. That way some old VMS makefile which make use of ECHO will continue to work. The question is, whether one would want to support DCL symbols within the to be echoed text. Another question is how much of the Unix environment should be simulated when running Gnu make from DCL? 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 03/17/2014 11:34 PM, John E. Malmberg wrote: On 3/16/2014 4:13 PM, h.becker wrote: Appended is a temporary fix for the multiline problem. The fix appears to work. I think your comment about it breaking the echo being defined as sys$output is wrong though. I tested it with no echo symbol and with echo as a symbol and it generates the expected output now in both cases. It seems you aren't using plain VMS, which has no echo command nor echo symbol. I'm talking about the make variable ECHO as defined for VMS in: $ search [.make]default.c ECHO/exact/wind=(20,0) #ifdef VMS #ifdef __ALPHA ARCH, ALPHA, #endif #ifdef __ia64 ARCH, IA64, #endif #ifdef __VAX ARCH, VAX, #endif AR, library/obj, ARFLAGS, /replace, AS, macro, MACRO, macro, #ifdef GCC_IS_NATIVE CC, gcc, #else CC, cc, #endif CD, builtin_cd, ECHO, write sys$$output \, $ and that is obviously broken with my fix: $ ty echo-symbol.mf define foo @$(ECHO) first @$(ECHO) second endef all: ; $(foo) echo: ; @write sys$$output $(ECHO) $ $ mcr [.make]mcr -f echo-symbol.mf echo write sys$output $ mcr [.make]mcr -f echo-symbol.mf all %DCL-W-UNDSYM, undefined symbol - check validity and spelling \SECOND\ $ $ pipe mcr [.make]mcr -df echo-symbol.mf all |search sys$pipe Must remake targe t/wind=(0,4) Must remake target 'all'. child_execute_job (write sys$output first @write sys$output second) %DCL-W-UNDSYM, undefined symbol - check validity and spelling \SECOND\ $ $ pipe mcr [.make]mcr -df echo-symbol.mf all ECHO=assign/job whatever |search sys$pipe Must remake target/wind=(0,20) Must remake target 'all'. child_execute_job (assign/job whatever first) Putting child D9FF0 (all) PID 150035 on the chain. Live child D9FF0 (all) PID 150035 Reaping winning child D9FF0 PID 150035 child_execute_job (assign/job whatever second) Live child D9FF0 (all) PID 155156 Reaping winning child D9FF0 PID 155156 Removing child D9FF0 PID 155156 from chain. Successfully remade target file 'all'. $ $ sh log/job first,second FIRST = whatever (LNM$JOB_8232E3C0) SECOND = whatever (LNM$JOB_8232E3C0) $ The broken ECHO is one reason I flagged the fix temporary. It seems, there should be a builtin_echo for VMS. Shouldn't be too hard, but I haven't looked at it. That way some old VMS makefile which make use of ECHO will continue to work. The question is, whether one would want to support DCL symbols within the to be echoed text. ___ 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. The fix appears to work. I think your comment about it breaking the echo being defined as sys$output is wrong though. I tested it with no echo symbol and with echo as a symbol and it generates the expected output now in both cases. The next line is just processed as the next line in the recipe. Before this fix and with echo :== $gnv$gnu:[bin]gnv$echo: 60 Tests in 29 Categories Failed (See .diff* files in work dir for details) :-( After this fix, and with or with out a foreign command for echo: 54 Tests in 27 Categories Failed (See .diff* files in work dir for details) :-( 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.
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: [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: [bug #41813] Mult-line override define failing on VMS.
On 03/09/2014 08:26 PM, John Malmberg wrote: URL: http://savannah.gnu.org/bugs/?41813 Summary: Mult-line override define failing on VMS. Project: make Submitted by: wb8tyw Submitted on: Sun 09 Mar 2014 07:26:57 PM GMT Severity: 3 - Normal Item Group: Bug Status: None Privacy: Public Assigned to: None Open/Closed: Open Discussion Lock: Any Component Version: 4.0 Operating System: VMS Fixed Release: None Triage Status: None ___ This problem is independent of override. For VMS the interior prefix chars [@+-] aren't removed. For Unix this is done in construct_command_argv_internal(); this function is not called in VMS. It seems for VMS multi-line variables are broken or were never correctly implemented. ___ Bug-make mailing list Bug-make@gnu.org https://lists.gnu.org/mailman/listinfo/bug-make
[bug #41813] Mult-line override define failing on VMS.
URL: http://savannah.gnu.org/bugs/?41813 Summary: Mult-line override define failing on VMS. Project: make Submitted by: wb8tyw Submitted on: Sun 09 Mar 2014 07:26:57 PM GMT Severity: 3 - Normal Item Group: Bug Status: None Privacy: Public Assigned to: None Open/Closed: Open Discussion Lock: Any Component Version: 4.0 Operating System: VMS Fixed Release: None Triage Status: None ___ Details: The second line of a multi-line override is failing on VMS. It is passing through to the operating system the @ character that is supposed to be inhibiting reporting of the recipe line. This is causing VMS to look for a command file instead of the command. run_command_with_output(/lcl_root/make/tests/work/features/override.log_3,): mak e -f /lcl_root/make/tests/work/features/override.mk_2 foo=Hello run_command_with_output returned 512. Error running make (expected 0; got 512): make -f /lcl_root/make/tests/work/feat ures/override.mk_2 foo=Hello Comparing Output FAILED (3/4 passed) EAGLE make -f /lcl_root/make/tests/work/features/override.mk_2 foo=Hello First comes the definition. %DCL-E-OPENIN, error opening LCL_ROOT:[make.tests]echo.COM; as input -RMS-E-FNF, file not found /lcl_root/make/tests/work/features/override.mk_2:6: recipe for target 'all' failed ___ Reply to this item at: http://savannah.gnu.org/bugs/?41813 ___ Message sent via/by Savannah http://savannah.gnu.org/ ___ Bug-make mailing list Bug-make@gnu.org https://lists.gnu.org/mailman/listinfo/bug-make