Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dtrace build of perl-5.30.0 uses undefined $(ECHO) #17057

Closed
p5pRT opened this issue Jun 21, 2019 · 11 comments
Closed

dtrace build of perl-5.30.0 uses undefined $(ECHO) #17057

p5pRT opened this issue Jun 21, 2019 · 11 comments

Comments

@p5pRT
Copy link
Collaborator

@p5pRT p5pRT commented Jun 21, 2019

Migrated from rt.perl.org#134218 (status was 'pending release')

Searchable as RT134218$

@p5pRT

This comment has been minimized.

Copy link
Collaborator Author

@p5pRT p5pRT commented Jun 21, 2019

From Tim.Mooney@ndsu.edu

Created by tim.mooney@ndsu.edu

Hi!

I'm using perlbug from 5.22.4, but I'm attempting to build perl 5.30.0
on OpenIndiana, one of the Illumos (formerly OpenSolaris) distributions.

The build fails in the dtrace Makefile logic (which was improved at 5.26.2),
with the following output​:

----

LD_LIBRARY_PATH=/export/home/mooney/oi-userland/components/perl/perl-530/build/amd64 ./miniperl -Ilib -MExtUtils​::Miniperl -e 'writemain(\"perlmain.c", @​ARGV)' DynaLoader
/usr/gcc/6/bin/gcc -m64 -c -DPERL_CORE -D_REENTRANT -m64 -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -D_LARGEFILE64_SOURCE -D_FORTIFY_SOURCE=2 -DPERL_USE_SAFE_PUTENV -O -Wall -Werror=declaration-after-statement -Werror=pointer-arith -Wextra -Wc++-compat -Wwrite-strings -fPIC perlmain.c
rm -rf maindtrace
mkdir maindtrace
cp perlmain.o maindtrace/
/usr/sbin/dtrace -xnolibs -G -s perldtrace.d -o dtrace_main.o maindtrace/perlmain.o || \
  ( "No probes in perlmain.o, generating a dummy dtrace_main.o " && \
  >dtrace_main.c && \
  `sh cflags "optimize='-O'" dtrace_main.o` -fPIC dtrace_main.c && \
  rm -f dtrace_main.c )
dtrace​: failed to link script perldtrace.d​: No probe sites found for declared provider
/bin/sh[2]​: No probes in perlmain.o, generating a dummy dtrace_main.o : not found [No such file or directory]
make[1]​: *** [makefile​:368​: dtrace_main.o] Error 127

----

If you examine that output closely, you'll see that there's no echo or
printf before the "No probes in perlmain.o..." string.

Tracing this back to the "Makefile", it's coming from this section of
code in the generated Makefile​:

----

$(DTRACE_MAIN_O)​: perldtrace.d perlmain$(OBJ_EXT)
  -rm -rf maindtrace
  mkdir maindtrace
  cp perlmain$(OBJ_EXT) maindtrace/
  $(DTRACE) -G -s perldtrace.d -o $(DTRACE_MAIN_O) $(perlmain_dtrace_objs) || \
  ( $(ECHO) "No probes in perlmain$(OBJ_EXT), generating a dummy $(DTRACE_MAIN_O)" && \
  $(ECHO) >dtrace_main.c && \
  `$(CCCMD)` $(PLDLFLAGS) dtrace_main.c && \
  rm -f dtrace_main.c )

----

As you can see, the Makefile has $(ECHO) in a couple of places, but it's
not actually defined anywhere in the generated Makefile, so it's coming
up empty when the Makefile is run, and triggering the issue.

The fix is straightforward. In Makefile.SH, in the section where other
settings like CC, LD, CPS, RMS, etc. are set, we just need a

ECHO = $echo

$echo *is* being set by Configure and added to config.sh, it's just that
Makefile.SH and hence Makefile are using $(ECHO) in one and only one place​: the dtrace probes.

If you agree this is the right fix, I can submit the trivial patch to fix it.

Thanks,

Tim

Perl Info

Flags:
    category=install
    severity=medium

Site configuration information for perl 5.22.4:

Configured by perl-bugs at Thu May 24 21:32:52 UTC 2018.

Summary of my perl5 (revision 5 version 22 subversion 4) configuration:
   
  Platform:
    osname=solaris, osvers=2.11, archname=i86pc-solaris-64int
    uname='sunos hipster.openindiana.org 5.11 illumos-017c366d7c i86pc i386 i86pc '
    config_args='-de -Dmksymlinks -Ulocincpth= -Uloclibpth= -Dbin=/usr/perl5/5.22/bin -Dcc=/usr/gcc/6/bin/gcc -m32 -Dccflags=-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Dcf_email=oi-dev@openindiana.org -Dcf_by=perl-bugs -Dlibperl=libperl.so -Dmyhostname=localhost -Dprefix=/usr/perl5/5.22 -Dprivlib=/usr/perl5/5.22/lib -Dsitelib=/usr/perl5/site_perl/5.22 -Dsiteprefix=/usr/perl5/5.22 -Dvendorlib=/usr/perl5/vendor_perl/5.22 -Dvendorprefix=/usr/perl5/5.22 -Duse64bitint -Duseshrplib -Dusedtrace -Uuselargefiles'
    hint=recommended, useposix=true, d_sigaction=define
    useithreads=undef, usemultiplicity=undef
    use64bitint=define, use64bitall=undef, uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='/usr/gcc/6/bin/gcc -m32', ccflags ='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DPTR_IS_LONG -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -DPERL_USE_SAFE_PUTENV',
    optimize='-O',
    cppflags='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DPTR_IS_LONG -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong'
    ccversion='', gccversion='6.4.0', gccosandvers=''
    intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=12345678, doublekind=3
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12, longdblkind=3
    ivtype='long long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
    alignbytes=4, prototype=define
  Linker and Libraries:
    ld='/usr/gcc/6/bin/gcc -m32', ldflags =' -fstack-protector-strong'
    libpth=/usr/gcc/6/lib /usr/lib /usr/ccs/lib
    libs=-lpthread -lsocket -lnsl -lgdbm -ldb -ldl -lm -lc
    perllibs=-lpthread -lsocket -lnsl -ldl -lm -lc
    libc=/lib/libc.so, so=so, useshrplib=true, libperl=libperl.so
    gnulibc_version=''
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='  -R /usr/perl5/5.22/lib/i86pc-solaris-64int/CORE'
    cccdlflags='-fPIC -DPIC', lddlflags='-shared -fstack-protector -fstack-protector-strong'



@INC for perl 5.22.4:
    /usr/perl5/site_perl/5.22/i86pc-solaris-64int
    /usr/perl5/site_perl/5.22
    /usr/perl5/vendor_perl/5.22/i86pc-solaris-64int
    /usr/perl5/vendor_perl/5.22
    /usr/perl5/5.22/lib/i86pc-solaris-64int
    /usr/perl5/5.22/lib


Environment for perl 5.22.4:
    HOME=/export/home/mooney
    LANG=en_US.UTF-8
    LANGUAGE (unset)
    LD_LIBRARY_PATH (unset)
    LOGDIR (unset)
    PATH=/usr/java/bin:/opt/SUNWspro/bin:/usr/bin/amd64:/usr/bin:/usr/ccs/bin:/usr/sbin:/sbin:/usr/sadm/bin:/usr/gnu/bin:/usr/perl5/bin:/usr/games:/export/home/mooney/bin:/usr/X11/bin:/usr/openwin/bin:/usr/dt/bin:.
    PERL_BADLANG (unset)
    SHELL=/bin/bash

@p5pRT

This comment has been minimized.

Copy link
Collaborator Author

@p5pRT p5pRT commented Jun 21, 2019

From @jkeenan

On Fri, 21 Jun 2019 19​:55​:57 GMT, enchanter wrote​:

This is a bug report for perl from tim.mooney@​ndsu.edu,
generated with the help of perlbug 1.40 running under perl 5.22.4.

-----------------------------------------------------------------
[Please describe your issue here]

Hi!

I'm using perlbug from 5.22.4, but I'm attempting to build perl 5.30.0
on OpenIndiana, one of the Illumos (formerly OpenSolaris)
distributions.

Can you supply the full ./Configure command you used to configure this perl?

The build fails in the dtrace Makefile logic (which was improved at
5.26.2),
with the following output​:

----

LD_LIBRARY_PATH=/export/home/mooney/oi-userland/components/perl/perl-
530/build/amd64 ./miniperl -Ilib -MExtUtils​::Miniperl -e
'writemain(\"perlmain.c", @​ARGV)' DynaLoader
/usr/gcc/6/bin/gcc -m64 -c -DPERL_CORE -D_REENTRANT -m64 -fwrapv -fno-
strict-aliasing -pipe -fstack-protector-strong -D_LARGEFILE64_SOURCE
-D_FORTIFY_SOURCE=2 -DPERL_USE_SAFE_PUTENV -O -Wall
-Werror=declaration-after-statement -Werror=pointer-arith -Wextra
-Wc++-compat -Wwrite-strings -fPIC perlmain.c
rm -rf maindtrace
mkdir maindtrace
cp perlmain.o maindtrace/
/usr/sbin/dtrace -xnolibs -G -s perldtrace.d -o dtrace_main.o
maindtrace/perlmain.o || \
( "No probes in perlmain.o, generating a dummy dtrace_main.o " &&
\

dtrace_main.c && \
`sh cflags "optimize='-O'" dtrace_main.o` -fPIC dtrace_main.c &&
\
rm -f dtrace_main.c )
dtrace​: failed to link script perldtrace.d​: No probe sites found for
declared provider
/bin/sh[2]​: No probes in perlmain.o, generating a dummy dtrace_main.o
: not found [No such file or directory]
make[1]​: *** [makefile​:368​: dtrace_main.o] Error 127

----

If you examine that output closely, you'll see that there's no echo or
printf before the "No probes in perlmain.o..." string.

Tracing this back to the "Makefile", it's coming from this section of
code in the generated Makefile​:

----

$(DTRACE_MAIN_O)​: perldtrace.d perlmain$(OBJ_EXT)
-rm -rf maindtrace
mkdir maindtrace
cp perlmain$(OBJ_EXT) maindtrace/
$(DTRACE) -G -s perldtrace.d -o $(DTRACE_MAIN_O)
$(perlmain_dtrace_objs) || \
( $(ECHO) "No probes in perlmain$(OBJ_EXT), generating a
dummy $(DTRACE_MAIN_O)" && \
$(ECHO) >dtrace_main.c &&
\
`$(CCCMD)` $(PLDLFLAGS) dtrace_main.c &&
\
rm -f dtrace_main.c )

----

As you can see, the Makefile has $(ECHO) in a couple of places, but
it's
not actually defined anywhere in the generated Makefile, so it's
coming
up empty when the Makefile is run, and triggering the issue.

The fix is straightforward. In Makefile.SH, in the section where
other
settings like CC, LD, CPS, RMS, etc. are set, we just need a

ECHO = $echo

$echo *is* being set by Configure and added to config.sh, it's just
that
Makefile.SH and hence Makefile are using $(ECHO) in one and only one
place​: the dtrace probes.

If you agree this is the right fix, I can submit the trivial patch to
fix it.

Thanks,

Tim

I don't have any Solaris available -- we could really use some smoke-testers on those systems -- but I do have FreeBSD with dtrace.

#####
[p5p] $ dtrace -V
dtrace​: Sun D 1.13
[p5p] $ uname -mrs
FreeBSD 11.2-STABLE amd64
#####

I configured on this machine at 3 different commits​:

tag v5.24.3
tag v5.26.2
HEAD 1f51249

In each case I configured as follows​:

sh ./Configure -des -Dusedevel -Duseithreads -Dusedtrace

Only in the case of 5.24.3 did 'make' fail to complete. I got the following line in the 'make' output for each​:

dtrace​: failed to link script perldtrace.d​: No probe sites found for declared provider

Two thoughts​:

1. C
--
James E Keenan (jkeenan@​cpan.org)

@p5pRT

This comment has been minimized.

Copy link
Collaborator Author

@p5pRT p5pRT commented Jun 21, 2019

The RT System itself - Status changed from 'new' to 'open'

@p5pRT

This comment has been minimized.

Copy link
Collaborator Author

@p5pRT p5pRT commented Jun 21, 2019

From @jkeenan

On Fri, 21 Jun 2019 19​:55​:57 GMT, enchanter wrote​:

This is a bug report for perl from tim.mooney@​ndsu.edu,
generated with the help of perlbug 1.40 running under perl 5.22.4.

-----------------------------------------------------------------
[Please describe your issue here]

Hi!

I'm using perlbug from 5.22.4, but I'm attempting to build perl 5.30.0
on OpenIndiana, one of the Illumos (formerly OpenSolaris)
distributions.

The build fails in the dtrace Makefile logic (which was improved at
5.26.2),
with the following output​:

----

LD_LIBRARY_PATH=/export/home/mooney/oi-userland/components/perl/perl-
530/build/amd64 ./miniperl -Ilib -MExtUtils​::Miniperl -e
'writemain(\"perlmain.c", @​ARGV)' DynaLoader
/usr/gcc/6/bin/gcc -m64 -c -DPERL_CORE -D_REENTRANT -m64 -fwrapv -fno-
strict-aliasing -pipe -fstack-protector-strong -D_LARGEFILE64_SOURCE
-D_FORTIFY_SOURCE=2 -DPERL_USE_SAFE_PUTENV -O -Wall
-Werror=declaration-after-statement -Werror=pointer-arith -Wextra
-Wc++-compat -Wwrite-strings -fPIC perlmain.c
rm -rf maindtrace
mkdir maindtrace
cp perlmain.o maindtrace/
/usr/sbin/dtrace -xnolibs -G -s perldtrace.d -o dtrace_main.o
maindtrace/perlmain.o || \
( "No probes in perlmain.o, generating a dummy dtrace_main.o " &&
\

dtrace_main.c && \
`sh cflags "optimize='-O'" dtrace_main.o` -fPIC dtrace_main.c &&
\
rm -f dtrace_main.c )
dtrace​: failed to link script perldtrace.d​: No probe sites found for
declared provider
/bin/sh[2]​: No probes in perlmain.o, generating a dummy dtrace_main.o
: not found [No such file or directory]
make[1]​: *** [makefile​:368​: dtrace_main.o] Error 127

----

If you examine that output closely, you'll see that there's no echo or
printf before the "No probes in perlmain.o..." string.

Tracing this back to the "Makefile", it's coming from this section of
code in the generated Makefile​:

----

$(DTRACE_MAIN_O)​: perldtrace.d perlmain$(OBJ_EXT)
-rm -rf maindtrace
mkdir maindtrace
cp perlmain$(OBJ_EXT) maindtrace/
$(DTRACE) -G -s perldtrace.d -o $(DTRACE_MAIN_O)
$(perlmain_dtrace_objs) || \
( $(ECHO) "No probes in perlmain$(OBJ_EXT), generating a
dummy $(DTRACE_MAIN_O)" && \
$(ECHO) >dtrace_main.c &&
\
`$(CCCMD)` $(PLDLFLAGS) dtrace_main.c &&
\
rm -f dtrace_main.c )

----

As you can see, the Makefile has $(ECHO) in a couple of places, but
it's
not actually defined anywhere in the generated Makefile, so it's
coming
up empty when the Makefile is run, and triggering the issue.

The fix is straightforward. In Makefile.SH, in the section where
other
settings like CC, LD, CPS, RMS, etc. are set, we just need a

ECHO = $echo

$echo *is* being set by Configure and added to config.sh, it's just
that
Makefile.SH and hence Makefile are using $(ECHO) in one and only one
place​: the dtrace probes.

If you agree this is the right fix, I can submit the trivial patch to
fix it.

Thanks,

Tim

[previous post was incomplete]

I don't have any Solaris available -- we could really use some smoke-testers on those systems -- but I do have FreeBSD with dtrace.

#####
[p5p] $ dtrace -V
dtrace​: Sun D 1.13
[p5p] $ uname -mrs
FreeBSD 11.2-STABLE amd64
#####

I configured on this machine at 3 different commits​:

#####
tag v5.24.3
tag v5.26.2
HEAD 1f51249
#####

In each case I configured as follows​:

#####
sh ./Configure -des -Dusedevel -Duseithreads -Dusedtrace
#####

Only in the case of 5.24.3 did 'make' fail to complete. I got the following line in the 'make' output for each​:

#####
dtrace​: failed to link script perldtrace.d​: No probe sites found for declared provider
#####

Could the problem be not just in -Dusedtrace but in the interaction between that switch and the others you might have used? Can you try configuring (5.30.0 or HEAD) with just '-des -Dusedevel -Duseithreads -Dusedtrace'?

--
James E Keenan (jkeenan@​cpan.org)

@p5pRT

This comment has been minimized.

Copy link
Collaborator Author

@p5pRT p5pRT commented Jun 21, 2019

From Tim.Mooney@ndsu.edu

In regard to​: [perl #134218] dtrace build of perl-5.30.0 uses undefined...​:

On Fri, 21 Jun 2019 19​:55​:57 GMT, enchanter wrote​:

This is a bug report for perl from tim.mooney@​ndsu.edu,
generated with the help of perlbug 1.40 running under perl 5.22.4.

-----------------------------------------------------------------
[Please describe your issue here]

Hi!

I'm using perlbug from 5.22.4, but I'm attempting to build perl 5.30.0
on OpenIndiana, one of the Illumos (formerly OpenSolaris)
distributions.

Can you supply the full ./Configure command you used to configure this perl?

  /export/home/mooney/oi-userland/components/perl/perl-530/perl-5.30.0/Configure -de -Dmksymlinks -Ulocincpth= -Uloclibpth= -Dbin=/usr/perl5/5.30/bin -Dcc="/usr/gcc/6/bin/gcc -m64" -Dcf_email="oi-dev@​openindiana.org" -Dcf_by="perl-bugs" -Dlibperl=libperl.so -Dmyhostname="localhost" -Dprefix=/usr/perl5/5.30 -Dprivlib=/usr/perl5/5.30/lib -Dsitelib=/usr/perl5/site_perl/5.30 -Dsiteprefix=/usr/perl5/5.30 -Dvendorlib=/usr/perl5/vendor_perl/5.30 -Dvendorprefix=/usr/perl5/5.30 -Duse64bitall -Duseshrplib -Dusedtrace -Dusethreads -Dlibpth="/lib/64 /usr/lib/64")

I'm actually building 5.30.0 using the same recipe that the packaged perl
for OI uses, just updated for 5.30.0. It's part of 'oi-userland', and
you can find the whole thing here​:

  https://github.com/OpenIndiana/oi-userland

and the older perl-522 and perl-524 packages are generated using the
Makefiles in here​:

  https://github.com/OpenIndiana/oi-userland/tree/oi/hipster/components/perl/perl-522
  https://github.com/OpenIndiana/oi-userland/tree/oi/hipster/components/perl/perl-524

----

LD_LIBRARY_PATH=/export/home/mooney/oi-userland/components/perl/perl-
530/build/amd64 ./miniperl -Ilib -MExtUtils​::Miniperl -e
'writemain(\"perlmain.c", @​ARGV)' DynaLoader
/usr/gcc/6/bin/gcc -m64 -c -DPERL_CORE -D_REENTRANT -m64 -fwrapv -fno-
strict-aliasing -pipe -fstack-protector-strong -D_LARGEFILE64_SOURCE
-D_FORTIFY_SOURCE=2 -DPERL_USE_SAFE_PUTENV -O -Wall
-Werror=declaration-after-statement -Werror=pointer-arith -Wextra
-Wc++-compat -Wwrite-strings -fPIC perlmain.c
rm -rf maindtrace
mkdir maindtrace
cp perlmain.o maindtrace/
/usr/sbin/dtrace -xnolibs -G -s perldtrace.d -o dtrace_main.o
maindtrace/perlmain.o || \
( "No probes in perlmain.o, generating a dummy dtrace_main.o " &&
\

dtrace_main.c && \
`sh cflags "optimize='-O'" dtrace_main.o` -fPIC dtrace_main.c &&
\
rm -f dtrace_main.c )
dtrace​: failed to link script perldtrace.d​: No probe sites found for
declared provider
/bin/sh[2]​: No probes in perlmain.o, generating a dummy dtrace_main.o
: not found [No such file or directory]
make[1]​: *** [makefile​:368​: dtrace_main.o] Error 127

----

If you examine that output closely, you'll see that there's no echo or
printf before the "No probes in perlmain.o..." string.

Tracing this back to the "Makefile", it's coming from this section of
code in the generated Makefile​:

----

$(DTRACE_MAIN_O)​: perldtrace.d perlmain$(OBJ_EXT)
-rm -rf maindtrace
mkdir maindtrace
cp perlmain$(OBJ_EXT) maindtrace/
$(DTRACE) -G -s perldtrace.d -o $(DTRACE_MAIN_O)
$(perlmain_dtrace_objs) || \
( $(ECHO) "No probes in perlmain$(OBJ_EXT), generating a
dummy $(DTRACE_MAIN_O)" && \
$(ECHO) >dtrace_main.c &&
\
`$(CCCMD)` $(PLDLFLAGS) dtrace_main.c &&
\
rm -f dtrace_main.c )

----

As you can see, the Makefile has $(ECHO) in a couple of places, but
it's
not actually defined anywhere in the generated Makefile, so it's
coming
up empty when the Makefile is run, and triggering the issue.

The fix is straightforward. In Makefile.SH, in the section where
other
settings like CC, LD, CPS, RMS, etc. are set, we just need a

ECHO = $echo

$echo *is* being set by Configure and added to config.sh, it's just
that
Makefile.SH and hence Makefile are using $(ECHO) in one and only one
place​: the dtrace probes.

If you agree this is the right fix, I can submit the trivial patch to
fix it.

Thanks,

Tim

I don't have any Solaris available -- we could really use some smoke-testers on those systems -- but I do have FreeBSD with dtrace.

FreeBSD uses the other branch of the ||, based on my reading of the
comments in the 5.26.2 delta, so I'm moderately certain it's only Solaris
and Solaris-like systems that are going to trigger the code path that
wants $(ECHO).

If you visually inspect Makefile.SH , though, you'll see that it's used
without ever being defined earlier.

Thanks,

Tim
--
Tim Mooney Tim.Mooney@​ndsu.edu
Enterprise Computing & Infrastructure 701-231-1076 (Voice)
Room 242-J6, Quentin Burdick Building 701-231-8541 (Fax)
North Dakota State University, Fargo, ND 58105-5164

@p5pRT

This comment has been minimized.

Copy link
Collaborator Author

@p5pRT p5pRT commented Jun 22, 2019

From @jkeenan

On Fri, 21 Jun 2019 20​:56​:11 GMT, enchanter wrote​:

In regard to​: [perl #134218] dtrace build of perl-5.30.0 uses
undefined...​:

On Fri, 21 Jun 2019 19​:55​:57 GMT, enchanter wrote​:

This is a bug report for perl from tim.mooney@​ndsu.edu,
generated with the help of perlbug 1.40 running under perl 5.22.4.

-----------------------------------------------------------------
[Please describe your issue here]

[snip]

Can you supply the full ./Configure command you used to configure
this perl?

/export/home/mooney/oi-userland/components/perl/perl-530/perl-
5.30.0/Configure -de -Dmksymlinks -Ulocincpth= -Uloclibpth=
-Dbin=/usr/perl5/5.30/bin -Dcc="/usr/gcc/6/bin/gcc -m64"
-Dcf_email="oi-dev@​openindiana.org" -Dcf_by="perl-bugs"
-Dlibperl=libperl.so -Dmyhostname="localhost" -Dprefix=/usr/perl5/5.30
-Dprivlib=/usr/perl5/5.30/lib -Dsitelib=/usr/perl5/site_perl/5.30
-Dsiteprefix=/usr/perl5/5.30 -Dvendorlib=/usr/perl5/vendor_perl/5.30
-Dvendorprefix=/usr/perl5/5.30 -Duse64bitall -Duseshrplib -Dusedtrace
-Dusethreads -Dlibpth="/lib/64 /usr/lib/64")

I'm actually building 5.30.0 using the same recipe that the packaged
perl
for OI uses, just updated for 5.30.0. It's part of 'oi-userland', and
you can find the whole thing here​:

https://github.com/OpenIndiana/oi-userland

and the older perl-522 and perl-524 packages are generated using the
Makefiles in here​:

https://github.com/OpenIndiana/oi-
userland/tree/oi/hipster/components/perl/perl-522
https://github.com/OpenIndiana/oi-
userland/tree/oi/hipster/components/perl/perl-524

[snip]

The fix is straightforward. In Makefile.SH, in the section where
other
settings like CC, LD, CPS, RMS, etc. are set, we just need a

ECHO = $echo

$echo *is* being set by Configure and added to config.sh, it's just
that
Makefile.SH and hence Makefile are using $(ECHO) in one and only one
place​: the dtrace probes.

If you agree this is the right fix, I can submit the trivial patch
to
fix it.

[snip]

I don't have any Solaris available -- we could really use some smoke-
testers on those systems -- but I do have FreeBSD with dtrace.

FreeBSD uses the other branch of the ||, based on my reading of the
comments in the 5.26.2 delta, so I'm moderately certain it's only
Solaris
and Solaris-like systems that are going to trigger the code path that
wants $(ECHO).

If you visually inspect Makefile.SH , though, you'll see that it's
used
without ever being defined earlier.

If you can supply a patch (as attachment), preferably drawn against perl 5 blead (HEAD of git checkout), we'll have it evaluated by people who know more about these things than I do.

Thank you very much.

--
James E Keenan (jkeenan@​cpan.org)

@p5pRT

This comment has been minimized.

Copy link
Collaborator Author

@p5pRT p5pRT commented Jun 27, 2019

From @tonycoz

On Fri, 21 Jun 2019 13​:56​:11 -0700, enchanter wrote​:

FreeBSD uses the other branch of the ||, based on my reading of the
comments in the 5.26.2 delta, so I'm moderately certain it's only
Solaris
and Solaris-like systems that are going to trigger the code path that
wants $(ECHO).

If you visually inspect Makefile.SH , though, you'll see that it's
used
without ever being defined earlier.

That change was originally made for FreeBSD where make appears to predefine ECHO to echo, so the code worked.

The attached should fix this for Solaris-ish makes.

Tony

@p5pRT

This comment has been minimized.

Copy link
Collaborator Author

@p5pRT p5pRT commented Jun 27, 2019

From @tonycoz

0001-perl-134218-make-sure-ECHO-is-defined.patch
From 14c42ff2dcfacabe9f2a08081bf6a15f4ad7ab1a Mon Sep 17 00:00:00 2001
From: Tony Cook <tony@develop-help.com>
Date: Thu, 27 Jun 2019 15:00:47 +1000
Subject: (perl #134218) make sure ECHO is defined

This is used in dtrace rules originally needed on FreeBSD,
which appears to define ECHO to echo by default for Makefiles.

But this isn't the case for Solaris-derived system makes.
---
 Makefile.SH | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Makefile.SH b/Makefile.SH
index bd8ac8f2cd..2a92ed308f 100755
--- a/Makefile.SH
+++ b/Makefile.SH
@@ -281,6 +281,7 @@ LNS = $lns
 CPS = $cp
 RMS = rm -f
 ranlib = $ranlib
+ECHO = echo
 
 # The following are mentioned only to make metaconfig include the
 # appropriate questions in Configure.  If you want to change these,
-- 
2.11.0

@p5pRT

This comment has been minimized.

Copy link
Collaborator Author

@p5pRT p5pRT commented Jun 27, 2019

From Tim.Mooney@ndsu.edu

In regard to​: [perl #134218] dtrace build of perl-5.30.0 uses undefined...​:

On Fri, 21 Jun 2019 13​:56​:11 -0700, enchanter wrote​:

FreeBSD uses the other branch of the ||, based on my reading of the
comments in the 5.26.2 delta, so I'm moderately certain it's only
Solaris
and Solaris-like systems that are going to trigger the code path that
wants $(ECHO).

If you visually inspect Makefile.SH , though, you'll see that it's
used
without ever being defined earlier.

That change was originally made for FreeBSD where make appears to predefine ECHO to echo, so the code worked.

The attached should fix this for Solaris-ish makes.

My patch (which I had not submitted yet) is basically the same, except
I used

ECHO = $echo

since config.sh is guaranteed to have $echo set for the system.

Yours will work fine, and will certainly address the issue for Solaris-ish
systems.

Thanks!

Tim
--
Tim Mooney Tim.Mooney@​ndsu.edu
Enterprise Computing & Infrastructure 701-231-1076 (Voice)
Room 242-J6, Quentin Burdick Building 701-231-8541 (Fax)
North Dakota State University, Fargo, ND 58105-5164

@p5pRT

This comment has been minimized.

Copy link
Collaborator Author

@p5pRT p5pRT commented Jul 1, 2019

From @tonycoz

On Thu, 27 Jun 2019 11​:15​:59 -0700, enchanter wrote​:

In regard to​: [perl #134218] dtrace build of perl-5.30.0 uses
undefined...​:

On Fri, 21 Jun 2019 13​:56​:11 -0700, enchanter wrote​:

FreeBSD uses the other branch of the ||, based on my reading of the
comments in the 5.26.2 delta, so I'm moderately certain it's only
Solaris
and Solaris-like systems that are going to trigger the code path
that
wants $(ECHO).

If you visually inspect Makefile.SH , though, you'll see that it's
used
without ever being defined earlier.

That change was originally made for FreeBSD where make appears to
predefine ECHO to echo, so the code worked.

The attached should fix this for Solaris-ish makes.

My patch (which I had not submitted yet) is basically the same, except
I used

ECHO = $echo

since config.sh is guaranteed to have $echo set for the system.

Yours will work fine, and will certainly address the issue for
Solaris-ish
systems.

Applied with ECHO = $echo as c0ad3f0.

Tony

@p5pRT

This comment has been minimized.

Copy link
Collaborator Author

@p5pRT p5pRT commented Jul 1, 2019

@tonycoz - Status changed from 'open' to 'pending release'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
1 participant
You can’t perform that action at this time.