How do I bisect for a build-time failure with specific config_args?

While studying https://rt.perl.org/Ticket/Display.html?id=133696 I tried 
to bisect perl between v5.26.0 and v5.28.0 to identify the commit at 
which 'make' would fail with the inclusion of 
"-Dccflags=-DNO_LOCALE_NUMERIC -DNO_LOCALE_COLLATE".

Since I was looking for a build-time failure -- not the more typical 
failure in a file in the test suite -- I thought that the '--target' 
option to Porting/bisect.pl would do the trick.  However, the following 
did not work:

#####
perl Porting/bisect.pl --start=v5.26.0 --end=v5.28.0 --target=perl 
-Dopenbsd_distribution=defined \
     -Dccflags="-DNO_LOCALE_NUMERIC -DNO_LOCALE_COLLATE"
#####

It very quickly dumped the Usage message.  Debugging inside 
Porting/bisect-runner.pl suggested that the premature exit was being 
triggered by this code:

#####
  130 pod2usage(exitval => 255, verbose => 1)
  131     unless @ARGV || $match || $options{'test-build'}
  132         || defined $options{'one-liner'} || defined $options{module}
  133         || defined $options{'test-module'};
#####

Entering line 130 above, @ARGV has been emptied and %options looks like 
this:

#####
x \%options
0  HASH(0x102c0e1c8e80)
    'check-args' => 1
    'check-shebang' => 1
    'clean' => 1
    'expect-pass' => 1
    'target' => 'perl'
#####

The config_args have vanished.  However, even if I trim the invocation 
to this:

#####
perl Porting/bisect.pl --start=v5.26.0 --end=v5.28.0 --target=perl
#####

.... the program still exits prematurely at the same point, dumping the 
usage message.

Any ideas?

Thank you very much.
Jim Keenan
0
jkeenan
11/29/2018 3:46:57 PM
perl.perl5.porters 47436 articles. 0 followers. Follow

4 Replies
20 Views

Similar Articles

[PageSpeed] 41

On 11/29/18 8:46 AM, James E Keenan wrote:
> While studying https://rt.perl.org/Ticket/Display.html?id=3D133696 I tr=
ied=20
> to bisect perl between v5.26.0 and v5.28.0 to identify the commit at=20
> which 'make' would fail with the inclusion of=20
> "-Dccflags=3D-DNO_LOCALE_NUMERIC -DNO_LOCALE_COLLATE".
>=20
> Since I was looking for a build-time failure -- not the more typical=20
> failure in a file in the test suite -- I thought that the '--target'=20
> option to Porting/bisect.pl would do the trick.=C2=A0 However, the foll=
owing=20
> did not work:
>=20
> #####
> perl Porting/bisect.pl --start=3Dv5.26.0 --end=3Dv5.28.0 --target=3Dper=
l=20
> -Dopenbsd_distribution=3Ddefined \
>  =C2=A0=C2=A0=C2=A0 -Dccflags=3D"-DNO_LOCALE_NUMERIC -DNO_LOCALE_COLLAT=
E"
> #####
>=20
> It very quickly dumped the Usage message.=C2=A0 Debugging inside=20
> Porting/bisect-runner.pl suggested that the premature exit was being=20
> triggered by this code:
>=20
> #####
>  =C2=A0130 pod2usage(exitval =3D> 255, verbose =3D> 1)
>  =C2=A0131=C2=A0=C2=A0=C2=A0=C2=A0 unless @ARGV || $match || $options{'=
test-build'}
>  =C2=A0132=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 || defined $=
options{'one-liner'} || defined $options{module}
>  =C2=A0133=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 || defined $=
options{'test-module'};
> #####
>=20
> Entering line 130 above, @ARGV has been emptied and %options looks like=
=20
> this:
>=20
> #####
> x \%options
> 0=C2=A0 HASH(0x102c0e1c8e80)
>  =C2=A0=C2=A0 'check-args' =3D> 1
>  =C2=A0=C2=A0 'check-shebang' =3D> 1
>  =C2=A0=C2=A0 'clean' =3D> 1
>  =C2=A0=C2=A0 'expect-pass' =3D> 1
>  =C2=A0=C2=A0 'target' =3D> 'perl'
> #####
>=20
> The config_args have vanished.=C2=A0 However, even if I trim the invoca=
tion=20
> to this:
>=20
> #####
> perl Porting/bisect.pl --start=3Dv5.26.0 --end=3Dv5.28.0 --target=3Dper=
l
> #####
>=20
> ... the program still exits prematurely at the same point, dumping the=20
> usage message.
>=20
> Any ideas?
>=20
> Thank you very much.
> Jim Keenan
>=20

Generally you need to say -Accflags=3D,
not -Dccflags=3D
I didn't look further.

I can't reproduce this bug on Linux, BTW.  I do get another one that is=20
easily fixed
0
public
11/29/2018 6:18:28 PM
On 11/29/18 11:18 AM, Karl Williamson wrote:
> On 11/29/18 8:46 AM, James E Keenan wrote:
>> While studying https://rt.perl.org/Ticket/Display.html?id=3D133696 I=20
>> tried to bisect perl between v5.26.0 and v5.28.0 to identify the=20
>> commit at which 'make' would fail with the inclusion of=20
>> "-Dccflags=3D-DNO_LOCALE_NUMERIC -DNO_LOCALE_COLLATE".
>>
>> Since I was looking for a build-time failure -- not the more typical=20
>> failure in a file in the test suite -- I thought that the '--target'=20
>> option to Porting/bisect.pl would do the trick.=C2=A0 However, the=20
>> following did not work:
>>
>> #####
>> perl Porting/bisect.pl --start=3Dv5.26.0 --end=3Dv5.28.0 --target=3Dpe=
rl=20
>> -Dopenbsd_distribution=3Ddefined \
>> =C2=A0=C2=A0=C2=A0=C2=A0 -Dccflags=3D"-DNO_LOCALE_NUMERIC -DNO_LOCALE_=
COLLATE"
>> #####
>>
>> It very quickly dumped the Usage message.=C2=A0 Debugging inside=20
>> Porting/bisect-runner.pl suggested that the premature exit was being=20
>> triggered by this code:
>>
>> #####
>> =C2=A0=C2=A0130 pod2usage(exitval =3D> 255, verbose =3D> 1)
>> =C2=A0=C2=A0131=C2=A0=C2=A0=C2=A0=C2=A0 unless @ARGV || $match || $opt=
ions{'test-build'}
>> =C2=A0=C2=A0132=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 || def=
ined $options{'one-liner'} || defined=20
>> $options{module}
>> =C2=A0=C2=A0133=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 || def=
ined $options{'test-module'};
>> #####
>>
>> Entering line 130 above, @ARGV has been emptied and %options looks=20
>> like this:
>>
>> #####
>> x \%options
>> 0=C2=A0 HASH(0x102c0e1c8e80)
>> =C2=A0=C2=A0=C2=A0 'check-args' =3D> 1
>> =C2=A0=C2=A0=C2=A0 'check-shebang' =3D> 1
>> =C2=A0=C2=A0=C2=A0 'clean' =3D> 1
>> =C2=A0=C2=A0=C2=A0 'expect-pass' =3D> 1
>> =C2=A0=C2=A0=C2=A0 'target' =3D> 'perl'
>> #####
>>
>> The config_args have vanished.=C2=A0 However, even if I trim the invoc=
ation=20
>> to this:
>>
>> #####
>> perl Porting/bisect.pl --start=3Dv5.26.0 --end=3Dv5.28.0 --target=3Dpe=
rl
>> #####
>>
>> ... the program still exits prematurely at the same point, dumping the=
=20
>> usage message.
>>
>> Any ideas?
>>
>> Thank you very much.
>> Jim Keenan
>>
>=20
> Generally you need to say -Accflags=3D,
> not -Dccflags=3D
> I didn't look further.
>=20
> I can't reproduce this bug on Linux, BTW.=C2=A0 I do get another one th=
at is=20
> easily fixed
>=20

Actually, I did get the collation to reproduce and it is now fixed in ble=
ad
0
public
11/29/2018 7:29:36 PM
On 11/29/18 2:29 PM, Karl Williamson wrote:
> On 11/29/18 11:18 AM, Karl Williamson wrote:
>> On 11/29/18 8:46 AM, James E Keenan wrote:
>>> While studying https://rt.perl.org/Ticket/Display.html?id=133696 I 
>>> tried to bisect perl between v5.26.0 and v5.28.0 to identify the 
>>> commit at which 'make' would fail with the inclusion of 
>>> "-Dccflags=-DNO_LOCALE_NUMERIC -DNO_LOCALE_COLLATE".
>>>
>>> Since I was looking for a build-time failure -- not the more typical 
>>> failure in a file in the test suite -- I thought that the '--target' 
>>> option to Porting/bisect.pl would do the trick.  However, the 
>>> following did not work:
>>>
>>> #####
>>> perl Porting/bisect.pl --start=v5.26.0 --end=v5.28.0 --target=perl 
>>> -Dopenbsd_distribution=defined \
>>>      -Dccflags="-DNO_LOCALE_NUMERIC -DNO_LOCALE_COLLATE"
>>> #####
>>>
>>> It very quickly dumped the Usage message.  Debugging inside 
>>> Porting/bisect-runner.pl suggested that the premature exit was being 
>>> triggered by this code:
>>>
>>> #####
>>>   130 pod2usage(exitval => 255, verbose => 1)
>>>   131     unless @ARGV || $match || $options{'test-build'}
>>>   132         || defined $options{'one-liner'} || defined 
>>> $options{module}
>>>   133         || defined $options{'test-module'};
>>> #####
>>>
>>> Entering line 130 above, @ARGV has been emptied and %options looks 
>>> like this:
>>>
>>> #####
>>> x \%options
>>> 0  HASH(0x102c0e1c8e80)
>>>     'check-args' => 1
>>>     'check-shebang' => 1
>>>     'clean' => 1
>>>     'expect-pass' => 1
>>>     'target' => 'perl'
>>> #####
>>>
>>> The config_args have vanished.  However, even if I trim the 
>>> invocation to this:
>>>
>>> #####
>>> perl Porting/bisect.pl --start=v5.26.0 --end=v5.28.0 --target=perl
>>> #####
>>>
>>> ... the program still exits prematurely at the same point, dumping 
>>> the usage message.
>>>
>>> Any ideas?
>>>
>>> Thank you very much.
>>> Jim Keenan
>>>
>>
>> Generally you need to say -Accflags=,
>> not -Dccflags=
>> I didn't look further.
>>
>> I can't reproduce this bug on Linux, BTW.  I do get another one that 
>> is easily fixed
>>
> 
> Actually, I did get the collation to reproduce and it is now fixed in blead

Karl, thanks for responding.  However, this doesn't address the problem 
I had with using Porting/bisect.pl.  There's nothing in that program's 
documentation (actually found in bisect-runner.pl) to suggest preferring 
use of '-A' to '-D'.

Thank you very much.
Jim Keenan
0
jkeenan
11/29/2018 8:00:58 PM
On Thu, Nov 29, 2018 at 10:46:57AM -0500, James E Keenan wrote:
> While studying https://rt.perl.org/Ticket/Display.html?id=133696 I tried to
> bisect perl between v5.26.0 and v5.28.0 to identify the commit at which
> 'make' would fail with the inclusion of "-Dccflags=-DNO_LOCALE_NUMERIC
> -DNO_LOCALE_COLLATE".
> 
> Since I was looking for a build-time failure -- not the more typical failure
> in a file in the test suite -- I thought that the '--target' option to
> Porting/bisect.pl would do the trick.  However, the following did not work:

--test-build

Tony
0
tony
11/29/2018 8:26:53 PM
Reply: