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

2015-07-12 Thread Paul D. Smith
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.

2014-11-28 Thread John Malmberg
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.

2014-03-20 Thread John E. Malmberg

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.

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

2014-03-17 Thread John E. Malmberg

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.

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: [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: [bug #41813] Mult-line override define failing on VMS.

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

2014-03-09 Thread John Malmberg
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