bug-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: vms:test variables


From: h.becker
Subject: Re: vms:test variables
Date: Tue, 08 Apr 2014 19:48:24 +0200
User-agent: Mozilla/5.0 (X11; Linux i686; rv:17.0) Gecko/20130519 Icedove/17.0.5

On 04/08/2014 07:28 AM, John E. Malmberg wrote:
> On 4/7/2014 4:37 PM, h.becker wrote:
>> $ @TEST_MAKE
>> ------------------------------------------------------------------------------
>>
>>                        Running tests for GNU make on VMS
>>                                 GNU Make 4.0.90
>> ------------------------------------------------------------------------------
>>
>>
>> Clearing work...
>> Finding tests...
>>
>> features.dir/archives ...................................
>          ^^^^^^
> 
> This is a day one bug in the older Perl on VMS versions that was fixed
> in about the Perl 5.10 timeframe, but the fix was not made the default
> behavior until Perl 5.18, as it is tied to supporting EFS character
> filenames.

test_make did not complain about the perl version so I concluded perl
is/was OK. It seems it isn't:
$ perl "-V"
Summary of my perl5 (revision 5 version 10 subversion 0) configuration:
...

> Perl 5.18 and later suppresses the incorrect ".dir" being appended to
> paths by default.  The incorrect behavior can be optionally turned on
> for existing PERL/VMS scripts that expect the buggy behavior.  I did not
> test the script with older versions of Perl, or with the older behavior
> enabled.

and can the incorrect behavior turned off in older versions? (OK,
temporarily I can change run_make_tests.pl).

>> OK, I can run one when I specify one, but it fails due to bash's ":":
> 
> It is not failing, the warning from DCL is written out, but does not
> otherwise affect the execution.  Rather than modify all the tests that
> were using ":" as null command, I changed the compare_output routine in
> the test harness to ignore it.

Make, at least the version I made, propagates the DCL warning and stops
with an error:

$ mcr USR_ODS5:[BECKER_H.MAKE.MAKE]MAKE -f work/variables/undefine.mk_2
undefined
%DCL-W-NOCOMD, no command on line - reenter with alphabetic first character
work/variables/undefine.mk_2:11: recipe for target 'all' failed
make: *** [all] Error 0x380b0
%DCL-W-NOCOMD, no command on line - reenter with alphabetic first character
$ ed "^UP^work/variables/undefine.mk_2
    1
*s/@:/@continue/W
   11       all: ;@continue
1 substitution
*exit
USR_ODS5:[BECKER_H.make.x.tests]UNDEFINE.MK_2;1 11 lines

$ rena UNDEFINE.MK_2;1 "^UP^work/variables/undefine.mk_2
$ mcr USR_ODS5:[BECKER_H.MAKE.MAKE]MAKE -f work/variables/undefine.mk_2
undefined
$

> I only made changes needed to test the feature.  GNU Make does not care
> if a command is a foreign command or a native VMS command.

> *** /lcl_root/make/tests/work/VARIABLES/UNDEFINE.base   Wed Feb  4
> 23:01:01 2015
> --- /lcl_root/make/tests/work/VARIABLES/UNDEFINE.log    Wed Feb  4
> 23:01:01 2015
> ***************
> *** 1,2 ****
>   recursive simple recursive
> ! undefined undefined undefined
> --- 1,5 ----
>   recursive simple recursive
> !
> ! undefined undefined recursive
> !
> ! %DCL-W-NOCOMD, no command on line - reenter with alphabetic first
> character
> ...
> The actual failure appear to be that the second line should be
> "undefined undefined undefined" and on VMS is showing up as "undefined
> undefined recursive".

GNU make doesn't care about the commands, but either my make (likely, or
maybe) behaves, or the used commands (I don't see any in this test case)
behave, or the test environment behaves differently:

$ mcr USR_ODS5:[BECKER_H.MAKE.MAKE]MAKE -f work/variables/undefine.mk
recursive simple recursive
undefined undefined undefined
%DCL-W-NOCOMD, no command on line - reenter with alphabetic first character
work/variables/undefine.mk:19: recipe for target 'all' failed
make: *** [all] Error 0x380b0
%DCL-W-NOCOMD, no command on line - reenter with alphabetic first character
$

and with the replacement for ":":
$ mcr USR_ODS5:[BECKER_H.MAKE.MAKE]MAKE -f work/variables/undefine.mk
recursive simple recursive
undefined undefined undefined
$

but in the log/diff created under control of the perl script there is

$ ty "^UP^work/variables/undefine.log
recursive simple recursive

undefined undefined recursive

$ ty "^UP^work/variables/undefine.diff
*** work/variables/undefine.base        Tue Apr  8 13:22:21 2014
--- work/variables/undefine.log Tue Apr  8 13:22:21 2014
***************
*** 1,2 ****
  recursive simple recursive
! undefined undefined undefined
--- 1,4 ----
  recursive simple recursive
!
! undefined undefined recursive
!
$

which matches your output. This is at least confusing, one would expect
to see the same output in a stand-alone run and in a run under the
control of the perl script.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]