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

Perl 5.24.0: AIX compile error #16177

Open
p5pRT opened this issue Sep 28, 2017 · 9 comments
Open

Perl 5.24.0: AIX compile error #16177

p5pRT opened this issue Sep 28, 2017 · 9 comments

Comments

@p5pRT
Copy link

@p5pRT p5pRT commented Sep 28, 2017

Migrated from rt.perl.org#132178 (status was 'open')

Searchable as RT132178$

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Sep 28, 2017

From Christian.Tremel@itsv.at

i am in the process of doing a gcc build of Perl 5.24.0, but it wont let me through. A build with IBM's native xlc compiler is going well, but in this case gcc is necessary to not break the AIX freeware tree.

here ist the error in his full glory.

+ make

  echo @​`sh cflags "optimize='-O2 -g '" opmini.o` -DPERL_IS_MI

+NIPERL -DPERL_EXTERNAL_GLOB opmini.c

@​/usr/bin/gcc -maix32 -maix32 -c -DPERL_CORE -D_THREAD_SAFE -D_ALL_SOU

+RCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -DUSE_NATIVE_DLOPEN -DNEED_PTHRE

+AD_INIT -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LA

+RGE_FILES -O2 -g -Wall -DPERL_IS_MINIPERL -DPERL_EXTERNAL_GLOB opmini

+.c

In file included from op.h​:636​:0,

  from perl.h​:3903,

  from op.c​:103​:

reentr.h​:719​:14​: error​: field '_spent_struct' has incomplete type

  struct spwd _spent_struct;

  ^~~~~~~~~~~~~

make​: The error code from the last command is 1.

[download]<http​://www.perlmonks.org/?node_id=1200254;displaytype=displaycode;part=1;abspart=1>

the configure options

export OBJECT_MODE=32

export CC='/usr/bin/gcc -maix32'

export LDFLAGS="-s -Wl,-bmaxdata​:0x80000000 -L/opt/freeware/lib -L/usr

+/lib"

./Configure -desr -Doptimize="$RPM_OPT_FLAGS" \

  -d \

  -Dcc="$CC" -Dldflags="$LDFLAGS" \

  -Dinstallprefix=$RPM_BUILD_ROOT%{_prefix} \

  -Dprefix=%{_prefix} \

  -Duselargefiles \

  -Duseshrplib \

  -Dusethreads \

  -Darchname=%{_arch}-%{_os} \

  -A define​:ld='/usr/bin/gcc -maix32' \

  -A define​:ccdlflags='-brtl -bdynamic' \

  -A define​:lddlflags='-bexpall -G -L/opt/freeware/lib'

make

#make test

( make -k check || true )

# build 64bit mode

export OBJECT_MODE=64

cd 64bit

export CC='/usr/bin/gcc -maix64'

export LDFLAGS="-s -Wl,-bmaxdata​:0x80000000 -L/opt/freeware/lib64 -L/u

+sr/lib64 -L/opt/freeware/lib"

./Configure -desr -Doptimize="$RPM_OPT_FLAGS" \

  -d \

  -Dcc="$CC" -Dldflags="$LDFLAGS" \

  -Dinstallprefix=$RPM_BUILD_ROOT%{_prefix} \

  -Dprefix=%{_prefix} \

  -Duselargefiles \

  -Duseshrplib \

  -Dusethreads \

  -Duse64bitall \

  -Darchname=%{_arch}-%{_os} \

  -A define​:ld='/usr/bin/gcc -maix64' \

  -A define​:ccdlflags='-brtl -bdynamic' \

  -A define​:lddlflags='-bexpall -G -L/opt/freeware/lib64 -L/usr

+/lib64 -L/opt/freeware/lib'

________________________________­­­
Christian Tremel
IT-Services der Sozialversicherung GmbH

Rechenzentrum
AIX Systemadministrator
Gruberstraße 77
A - 4021 Linz
T​: +43 (0)50124 844 1266
M​: +43 (0)664 88661266
christian.tremel@​itsv.at<mailto​:christian.tremel@​itsv.at>
www.itsv.at<http​://www.itsv.at>

[https://plattform.sozvers.at/Lists/Schlagzeilen/Attachments/493/CIS-Logo-Signatur.png]

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Sep 28, 2017

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Sep 28, 2017

From Christian.Tremel@itsv.at

Am Thu, 28 Sep 2017 05​:44​:33 -0700, Christian.Tremel@​itsv.at schrieb​:

i am in the process of doing a gcc build of Perl 5.24.0, but it wont
let me through. A build with IBM's native xlc compiler is going well,
but in this case gcc is necessary to not break the AIX freeware tree.

here ist the error in his full glory.

+ make

echo @​`sh cflags "optimize='-O2 -g '" opmini.o` -DPERL_IS_MI

+NIPERL -DPERL_EXTERNAL_GLOB opmini.c

@​/usr/bin/gcc -maix32 -maix32 -c -DPERL_CORE -D_THREAD_SAFE -D_ALL_SOU

+RCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -DUSE_NATIVE_DLOPEN -DNEED_PTHRE

+AD_INIT -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LA

+RGE_FILES -O2 -g -Wall -DPERL_IS_MINIPERL -DPERL_EXTERNAL_GLOB opmini

+.c

In file included from op.h​:636​:0,

from perl.h​:3903,

from op.c​:103​:

reentr.h​:719​:14​: error​: field '_spent_struct' has incomplete type

struct spwd _spent_struct;

^~~~~~~~~~~~~

make​: The error code from the last command is 1.

[download]<http​://www.perlmonks.org/?node_id=1200254;displaytype=displaycode;part=1;abspart=1>

the configure options

export OBJECT_MODE=32

export CC='/usr/bin/gcc -maix32'

export LDFLAGS="-s -Wl,-bmaxdata​:0x80000000 -L/opt/freeware/lib -L/usr

+/lib"

./Configure -desr -Doptimize="$RPM_OPT_FLAGS" \

-d \

-Dcc="$CC" -Dldflags="$LDFLAGS" \

-Dinstallprefix=$RPM_BUILD_ROOT%{_prefix} \

-Dprefix=%{_prefix} \

-Duselargefiles \

-Duseshrplib \

-Dusethreads \

-Darchname=%{_arch}-%{_os} \

-A define​:ld='/usr/bin/gcc -maix32' \

-A define​:ccdlflags='-brtl -bdynamic' \

-A define​:lddlflags='-bexpall -G -L/opt/freeware/lib'

make

#make test

( make -k check || true )

# build 64bit mode

export OBJECT_MODE=64

cd 64bit

export CC='/usr/bin/gcc -maix64'

export LDFLAGS="-s -Wl,-bmaxdata​:0x80000000 -L/opt/freeware/lib64 -L/u

+sr/lib64 -L/opt/freeware/lib"

./Configure -desr -Doptimize="$RPM_OPT_FLAGS" \

-d \

-Dcc="$CC" -Dldflags="$LDFLAGS" \

-Dinstallprefix=$RPM_BUILD_ROOT%{_prefix} \

-Dprefix=%{_prefix} \

-Duselargefiles \

-Duseshrplib \

-Dusethreads \

-Duse64bitall \

-Darchname=%{_arch}-%{_os} \

-A define​:ld='/usr/bin/gcc -maix64' \

-A define​:ccdlflags='-brtl -bdynamic' \

-A define​:lddlflags='-bexpall -G -L/opt/freeware/lib64 -L/usr

+/lib64 -L/opt/freeware/lib'

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Sep 29, 2017

From @jkeenan

On Thu, 28 Sep 2017 12​:44​:33 GMT, Christian.Tremel@​itsv.at wrote​:

i am in the process of doing a gcc build of Perl 5.24.0, but it wont
let me through. A build with IBM's native xlc compiler is going well,
but in this case gcc is necessary to not break the AIX freeware tree.

here ist the error in his full glory.

+ make

echo @​`sh cflags "optimize='-O2 -g '" opmini.o` -DPERL_IS_MI

+NIPERL -DPERL_EXTERNAL_GLOB opmini.c

@​/usr/bin/gcc -maix32 -maix32 -c -DPERL_CORE -D_THREAD_SAFE -D_ALL_SOU

+RCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -DUSE_NATIVE_DLOPEN -DNEED_PTHRE

+AD_INIT -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LA

+RGE_FILES -O2 -g -Wall -DPERL_IS_MINIPERL -DPERL_EXTERNAL_GLOB opmini

+.c

In file included from op.h​:636​:0,

from perl.h​:3903,

from op.c​:103​:

reentr.h​:719​:14​: error​: field '_spent_struct' has incomplete type

struct spwd _spent_struct;

^~~~~~~~~~~~~

make​: The error code from the last command is 1.

[download]<http​://www.perlmonks.org/?node_id=1200254;displaytype=displaycode;part=1;abspart=1>

the configure options

export OBJECT_MODE=32

export CC='/usr/bin/gcc -maix32'

export LDFLAGS="-s -Wl,-bmaxdata​:0x80000000 -L/opt/freeware/lib -L/usr

+/lib"

./Configure -desr -Doptimize="$RPM_OPT_FLAGS" \

-d \

-Dcc="$CC" -Dldflags="$LDFLAGS" \

-Dinstallprefix=$RPM_BUILD_ROOT%{_prefix} \

-Dprefix=%{_prefix} \

-Duselargefiles \

-Duseshrplib \

-Dusethreads \

-Darchname=%{_arch}-%{_os} \

-A define​:ld='/usr/bin/gcc -maix32' \

-A define​:ccdlflags='-brtl -bdynamic' \

-A define​:lddlflags='-bexpall -G -L/opt/freeware/lib'

make

#make test

( make -k check || true )

# build 64bit mode

export OBJECT_MODE=64

cd 64bit

export CC='/usr/bin/gcc -maix64'

export LDFLAGS="-s -Wl,-bmaxdata​:0x80000000 -L/opt/freeware/lib64 -L/u

+sr/lib64 -L/opt/freeware/lib"

./Configure -desr -Doptimize="$RPM_OPT_FLAGS" \

-d \

-Dcc="$CC" -Dldflags="$LDFLAGS" \

-Dinstallprefix=$RPM_BUILD_ROOT%{_prefix} \

-Dprefix=%{_prefix} \

-Duselargefiles \

-Duseshrplib \

-Dusethreads \

-Duse64bitall \

-Darchname=%{_arch}-%{_os} \

-A define​:ld='/usr/bin/gcc -maix64' \

-A define​:ccdlflags='-brtl -bdynamic' \

-A define​:lddlflags='-bexpall -G -L/opt/freeware/lib64 -L/usr

+/lib64 -L/opt/freeware/lib'

We support AIX, but it is certainly one of our less well-understood platforms. We're only getting smoke testing reports for AIX on PPC and each of those reports is a FAIL.

Just so you know the limits of our ability to help you ... ;-)

In situations like this it is often helpful to configure perl with a very limited set of command-line switches and seeing whether 'make' and 'make test' pass with those switches; then add options until you get significant breakage.

You have submitted reports for 2 builds, AFAICT​: a 32-bit build and a 64-bit build. For heuristic purposes I recommend you select the 64-bit configuration, then configure with something as simple as this​:

#####
$> sh ./Configure -des -Dusedevel
#####

Does 'make' finish successfully with that? How about 'make test' or 'make test_harness'? If they PASS, add command-line switches to ./Configure one at a time until you get failures during either 'make' or 'make test'. Report back to us what works and what does not.

Thank you very much.

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

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Sep 29, 2017

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

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Sep 29, 2017

From Christian.Tremel@itsv.at

Am Thu, 28 Sep 2017 19​:53​:58 -0700, jkeenan schrieb​:

On Thu, 28 Sep 2017 12​:44​:33 GMT, Christian.Tremel@​itsv.at wrote​:

i am in the process of doing a gcc build of Perl 5.24.0, but it wont
let me through. A build with IBM's native xlc compiler is going well,
but in this case gcc is necessary to not break the AIX freeware tree.

here ist the error in his full glory.

+ make

echo @​`sh cflags "optimize='-O2 -g '" opmini.o` -DPERL_IS_MI

+NIPERL -DPERL_EXTERNAL_GLOB opmini.c

@​/usr/bin/gcc -maix32 -maix32 -c -DPERL_CORE -D_THREAD_SAFE
-D_ALL_SOU

+RCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -DUSE_NATIVE_DLOPEN
-DNEED_PTHRE

+AD_INIT -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include
-D_LA

+RGE_FILES -O2 -g -Wall -DPERL_IS_MINIPERL -DPERL_EXTERNAL_GLOB
opmini

+.c

In file included from op.h​:636​:0,

from perl.h​:3903,

from op.c​:103​:

reentr.h​:719​:14​: error​: field '_spent_struct' has incomplete type

struct spwd _spent_struct;

^~~~~~~~~~~~~

make​: The error code from the last command is 1.

[download]<http​://www.perlmonks.org/?node_id=1200254;displaytype=displaycode;part=1;abspart=1>

the configure options

export OBJECT_MODE=32

export CC='/usr/bin/gcc -maix32'

export LDFLAGS="-s -Wl,-bmaxdata​:0x80000000 -L/opt/freeware/lib
-L/usr

+/lib"

./Configure -desr -Doptimize="$RPM_OPT_FLAGS" \

-d \

-Dcc="$CC" -Dldflags="$LDFLAGS" \

-Dinstallprefix=$RPM_BUILD_ROOT%{_prefix} \

-Dprefix=%{_prefix} \

-Duselargefiles \

-Duseshrplib \

-Dusethreads \

-Darchname=%{_arch}-%{_os} \

-A define​:ld='/usr/bin/gcc -maix32' \

-A define​:ccdlflags='-brtl -bdynamic' \

-A define​:lddlflags='-bexpall -G -L/opt/freeware/lib'

make

#make test

( make -k check || true )

# build 64bit mode

export OBJECT_MODE=64

cd 64bit

export CC='/usr/bin/gcc -maix64'

export LDFLAGS="-s -Wl,-bmaxdata​:0x80000000 -L/opt/freeware/lib64
-L/u

+sr/lib64 -L/opt/freeware/lib"

./Configure -desr -Doptimize="$RPM_OPT_FLAGS" \

-d \

-Dcc="$CC" -Dldflags="$LDFLAGS" \

-Dinstallprefix=$RPM_BUILD_ROOT%{_prefix} \

-Dprefix=%{_prefix} \

-Duselargefiles \

-Duseshrplib \

-Dusethreads \

-Duse64bitall \

-Darchname=%{_arch}-%{_os} \

-A define​:ld='/usr/bin/gcc -maix64' \

-A define​:ccdlflags='-brtl -bdynamic' \

-A define​:lddlflags='-bexpall -G -L/opt/freeware/lib64 -L/usr

+/lib64 -L/opt/freeware/lib'

We support AIX, but it is certainly one of our less well-understood
platforms. We're only getting smoke testing reports for AIX on PPC
and each of those reports is a FAIL.

Just so you know the limits of our ability to help you ... ;-)

In situations like this it is often helpful to configure perl with a
very limited set of command-line switches and seeing whether 'make'
and 'make test' pass with those switches; then add options until you
get significant breakage.

You have submitted reports for 2 builds, AFAICT​: a 32-bit build and a
64-bit build. For heuristic purposes I recommend you select the 64-
bit configuration, then configure with something as simple as this​:

#####
$> sh ./Configure -des -Dusedevel
#####

Does 'make' finish successfully with that? How about 'make test' or
'make test_harness'? If they PASS, add command-line switches to
./Configure one at a time until you get failures during either 'make'
or 'make test'. Report back to us what works and what does not.

Thank you very much.

i tried it with a limited set of options.

<code>
root@​aixbuildhost​: /opt/freeware/src/packages/BUILD/perl-5.24.0/64bit # cat gcc_test.sh
#!/usr/bin/ksh

make clean
make distclean

export OBJECT_MODE=64

export CC='/usr/bin/gcc -maix64'

export LDFLAGS="-s -Wl,-bmaxdata​:0x80000000 -L/opt/freeware/lib64 -L/usr/lib64 -L/opt/freeware/lib -lpthreads"

./Configure -des -Dusedevel -Dcc="$CC" -Dldflags="$LDFLAGS" -Dusethreads

</code>

after running for a while it stops with the following...

<code>
  ./miniperl -Ilib make_ext.pl lib/auto/Time/HiRes/HiRes.so MAKE="make" LIBPERL_A=libperl.a LINKTYPE=dynamic
Makefile.PL​: The "xdefine" exists, skipping the configure step.
("../../miniperl Makefile.PL --configure" to force the configure step)
Warning​: No Makefile!
make​: Cannot find a rule to create target all from dependencies.
Stop.
make​: Cannot find a rule to create target all from dependencies.
Stop.
Unsuccessful make(dist/Time-HiRes)​: code=512 at make_ext.pl line 569.
make​: The error code from the last command is 2.

Stop.

</code>

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Sep 29, 2017

From @jkeenan

On Fri, 29 Sep 2017 07​:26​:18 GMT, Christian.Tremel@​itsv.at wrote​:

Am Thu, 28 Sep 2017 19​:53​:58 -0700, jkeenan schrieb​:

On Thu, 28 Sep 2017 12​:44​:33 GMT, Christian.Tremel@​itsv.at wrote​:

i am in the process of doing a gcc build of Perl 5.24.0, but it
wont
let me through. A build with IBM's native xlc compiler is going
well,
but in this case gcc is necessary to not break the AIX freeware
tree.

here ist the error in his full glory.

+ make

echo @​`sh cflags "optimize='-O2 -g '" opmini.o` -DPERL_IS_MI

+NIPERL -DPERL_EXTERNAL_GLOB opmini.c

@​/usr/bin/gcc -maix32 -maix32 -c -DPERL_CORE -D_THREAD_SAFE
-D_ALL_SOU

+RCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -DUSE_NATIVE_DLOPEN
-DNEED_PTHRE

+AD_INIT -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include
-D_LA

+RGE_FILES -O2 -g -Wall -DPERL_IS_MINIPERL -DPERL_EXTERNAL_GLOB
opmini

+.c

In file included from op.h​:636​:0,

from perl.h​:3903,

from op.c​:103​:

reentr.h​:719​:14​: error​: field '_spent_struct' has incomplete type

struct spwd _spent_struct;

^~~~~~~~~~~~~

make​: The error code from the last command is 1.

[download]<http​://www.perlmonks.org/?node_id=1200254;displaytype=displaycode;part=1;abspart=1>

the configure options

export OBJECT_MODE=32

export CC='/usr/bin/gcc -maix32'

export LDFLAGS="-s -Wl,-bmaxdata​:0x80000000 -L/opt/freeware/lib
-L/usr

+/lib"

./Configure -desr -Doptimize="$RPM_OPT_FLAGS" \

-d \

-Dcc="$CC" -Dldflags="$LDFLAGS" \

-Dinstallprefix=$RPM_BUILD_ROOT%{_prefix} \

-Dprefix=%{_prefix} \

-Duselargefiles \

-Duseshrplib \

-Dusethreads \

-Darchname=%{_arch}-%{_os} \

-A define​:ld='/usr/bin/gcc -maix32' \

-A define​:ccdlflags='-brtl -bdynamic' \

-A define​:lddlflags='-bexpall -G -L/opt/freeware/lib'

make

#make test

( make -k check || true )

# build 64bit mode

export OBJECT_MODE=64

cd 64bit

export CC='/usr/bin/gcc -maix64'

export LDFLAGS="-s -Wl,-bmaxdata​:0x80000000 -L/opt/freeware/lib64
-L/u

+sr/lib64 -L/opt/freeware/lib"

./Configure -desr -Doptimize="$RPM_OPT_FLAGS" \

-d \

-Dcc="$CC" -Dldflags="$LDFLAGS" \

-Dinstallprefix=$RPM_BUILD_ROOT%{_prefix} \

-Dprefix=%{_prefix} \

-Duselargefiles \

-Duseshrplib \

-Dusethreads \

-Duse64bitall \

-Darchname=%{_arch}-%{_os} \

-A define​:ld='/usr/bin/gcc -maix64' \

-A define​:ccdlflags='-brtl -bdynamic' \

-A define​:lddlflags='-bexpall -G -L/opt/freeware/lib64 -L/usr

+/lib64 -L/opt/freeware/lib'

We support AIX, but it is certainly one of our less well-understood
platforms. We're only getting smoke testing reports for AIX on PPC
and each of those reports is a FAIL.

Just so you know the limits of our ability to help you ... ;-)

In situations like this it is often helpful to configure perl with a
very limited set of command-line switches and seeing whether 'make'
and 'make test' pass with those switches; then add options until you
get significant breakage.

You have submitted reports for 2 builds, AFAICT​: a 32-bit build and a
64-bit build. For heuristic purposes I recommend you select the 64-
bit configuration, then configure with something as simple as this​:

#####
$> sh ./Configure -des -Dusedevel
#####

Does 'make' finish successfully with that? How about 'make test' or
'make test_harness'? If they PASS, add command-line switches to
./Configure one at a time until you get failures during either 'make'
or 'make test'. Report back to us what works and what does not.

Thank you very much.

i tried it with a limited set of options.

<code>
root@​aixbuildhost​: /opt/freeware/src/packages/BUILD/perl-5.24.0/64bit
# cat gcc_test.sh
#!/usr/bin/ksh

make clean
make distclean

export OBJECT_MODE=64

export CC='/usr/bin/gcc -maix64'

export LDFLAGS="-s -Wl,-bmaxdata​:0x80000000 -L/opt/freeware/lib64
-L/usr/lib64 -L/opt/freeware/lib -lpthreads"

./Configure -des -Dusedevel -Dcc="$CC" -Dldflags="$LDFLAGS"
-Dusethreads

</code>

after running for a while it stops with the following...

<code>
./miniperl -Ilib make_ext.pl lib/auto/Time/HiRes/HiRes.so
MAKE="make" LIBPERL_A=libperl.a LINKTYPE=dynamic
Makefile.PL​: The "xdefine" exists, skipping the configure step.
("../../miniperl Makefile.PL --configure" to force the configure step)
Warning​: No Makefile!
make​: Cannot find a rule to create target all from dependencies.
Stop.
make​: Cannot find a rule to create target all from dependencies.
Stop.
Unsuccessful make(dist/Time-HiRes)​: code=512 at make_ext.pl line 569.
make​: The error code from the last command is 2.

Stop.

</code>

A couple of observations (none of which will solve your original problem)​:

1. From your code samples I infer that you are trying to build perl-5.24.0, presumably from a tarball -- i.e., not from a git checkout. Correct? If so, then be sure to call​:

#####
$> make veryclean
#####

... after each attempt at building so that you clean out files created by that attempt. This *may* eliminate these lines of output, which I suspect are not relevant to the problem​:

#####
Makefile.PL​: The "xdefine" exists, skipping the configure step.

("../../miniperl Makefile.PL --configure" to force the configure step)
#####

2. This is a good news/bad news situation.

On the one hand, you got much farther in the 'make' process than you did with your original set of ./Configure command-line switches. In particular, you were able to build the 'miniperl' executable which is used to bootstrap later stages of 'make'. That suggests that something in the original switches is posing problems early in 'make', i.e., at the compilation of opmini.c.

On the other hand, 'make' failed during the compilation of the Time-HiRes library which is distributed along with the Perl 5 core. I don't yet see the reason why -- it may be something we don't know about AIX -- so here's where we'll have to hope that other readers of the list can help.

Thank you very much.

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

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Oct 3, 2017

From Christian.Tremel@itsv.at

Am Fri, 29 Sep 2017 06​:30​:40 -0700, jkeenan schrieb​:

On Fri, 29 Sep 2017 07​:26​:18 GMT, Christian.Tremel@​itsv.at wrote​:

Am Thu, 28 Sep 2017 19​:53​:58 -0700, jkeenan schrieb​:

On Thu, 28 Sep 2017 12​:44​:33 GMT, Christian.Tremel@​itsv.at wrote​:

i am in the process of doing a gcc build of Perl 5.24.0, but it
wont
let me through. A build with IBM's native xlc compiler is going
well,
but in this case gcc is necessary to not break the AIX freeware
tree.

here ist the error in his full glory.

+ make

echo @​`sh cflags "optimize='-O2 -g '" opmini.o` -DPERL_IS_MI

+NIPERL -DPERL_EXTERNAL_GLOB opmini.c

@​/usr/bin/gcc -maix32 -maix32 -c -DPERL_CORE -D_THREAD_SAFE
-D_ALL_SOU

+RCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -DUSE_NATIVE_DLOPEN
-DNEED_PTHRE

+AD_INIT -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include
-D_LA

+RGE_FILES -O2 -g -Wall -DPERL_IS_MINIPERL -DPERL_EXTERNAL_GLOB
opmini

+.c

In file included from op.h​:636​:0,

from perl.h​:3903,

from op.c​:103​:

reentr.h​:719​:14​: error​: field '_spent_struct' has incomplete type

struct spwd _spent_struct;

^~~~~~~~~~~~~

make​: The error code from the last command is 1.

[download]<http​://www.perlmonks.org/?node_id=1200254;displaytype=displaycode;part=1;abspart=1>

the configure options

export OBJECT_MODE=32

export CC='/usr/bin/gcc -maix32'

export LDFLAGS="-s -Wl,-bmaxdata​:0x80000000 -L/opt/freeware/lib
-L/usr

+/lib"

./Configure -desr -Doptimize="$RPM_OPT_FLAGS" \

-d \

-Dcc="$CC" -Dldflags="$LDFLAGS" \

-Dinstallprefix=$RPM_BUILD_ROOT%{_prefix} \

-Dprefix=%{_prefix} \

-Duselargefiles \

-Duseshrplib \

-Dusethreads \

-Darchname=%{_arch}-%{_os} \

-A define​:ld='/usr/bin/gcc -maix32' \

-A define​:ccdlflags='-brtl -bdynamic' \

-A define​:lddlflags='-bexpall -G -L/opt/freeware/lib'

make

#make test

( make -k check || true )

# build 64bit mode

export OBJECT_MODE=64

cd 64bit

export CC='/usr/bin/gcc -maix64'

export LDFLAGS="-s -Wl,-bmaxdata​:0x80000000 -L/opt/freeware/lib64
-L/u

+sr/lib64 -L/opt/freeware/lib"

./Configure -desr -Doptimize="$RPM_OPT_FLAGS" \

-d \

-Dcc="$CC" -Dldflags="$LDFLAGS" \

-Dinstallprefix=$RPM_BUILD_ROOT%{_prefix} \

-Dprefix=%{_prefix} \

-Duselargefiles \

-Duseshrplib \

-Dusethreads \

-Duse64bitall \

-Darchname=%{_arch}-%{_os} \

-A define​:ld='/usr/bin/gcc -maix64' \

-A define​:ccdlflags='-brtl -bdynamic' \

-A define​:lddlflags='-bexpall -G -L/opt/freeware/lib64 -L/usr

+/lib64 -L/opt/freeware/lib'

We support AIX, but it is certainly one of our less well-understood
platforms. We're only getting smoke testing reports for AIX on PPC
and each of those reports is a FAIL.

Just so you know the limits of our ability to help you ... ;-)

In situations like this it is often helpful to configure perl with
a
very limited set of command-line switches and seeing whether 'make'
and 'make test' pass with those switches; then add options until
you
get significant breakage.

You have submitted reports for 2 builds, AFAICT​: a 32-bit build and
a
64-bit build. For heuristic purposes I recommend you select the
64-
bit configuration, then configure with something as simple as this​:

#####
$> sh ./Configure -des -Dusedevel
#####

Does 'make' finish successfully with that? How about 'make test'
or
'make test_harness'? If they PASS, add command-line switches to
./Configure one at a time until you get failures during either
'make'
or 'make test'. Report back to us what works and what does not.

Thank you very much.

i tried it with a limited set of options.

<code>
root@​aixbuildhost​: /opt/freeware/src/packages/BUILD/perl-5.24.0/64bit
# cat gcc_test.sh
#!/usr/bin/ksh

make clean
make distclean

export OBJECT_MODE=64

export CC='/usr/bin/gcc -maix64'

export LDFLAGS="-s -Wl,-bmaxdata​:0x80000000 -L/opt/freeware/lib64
-L/usr/lib64 -L/opt/freeware/lib -lpthreads"

./Configure -des -Dusedevel -Dcc="$CC" -Dldflags="$LDFLAGS"
-Dusethreads

</code>

after running for a while it stops with the following...

<code>
./miniperl -Ilib make_ext.pl lib/auto/Time/HiRes/HiRes.so
MAKE="make" LIBPERL_A=libperl.a LINKTYPE=dynamic
Makefile.PL​: The "xdefine" exists, skipping the configure step.
("../../miniperl Makefile.PL --configure" to force the configure
step)
Warning​: No Makefile!
make​: Cannot find a rule to create target all from dependencies.
Stop.
make​: Cannot find a rule to create target all from dependencies.
Stop.
Unsuccessful make(dist/Time-HiRes)​: code=512 at make_ext.pl line 569.
make​: The error code from the last command is 2.

Stop.

</code>

A couple of observations (none of which will solve your original
problem)​:

1. From your code samples I infer that you are trying to build perl-
5.24.0, presumably from a tarball -- i.e., not from a git checkout.
Correct? If so, then be sure to call​:

#####
$> make veryclean
#####

... after each attempt at building so that you clean out files created
by that attempt. This *may* eliminate these lines of output, which I
suspect are not relevant to the problem​:

#####
Makefile.PL​: The "xdefine" exists, skipping the configure step.

("../../miniperl Makefile.PL --configure" to force the configure
step)
#####

2. This is a good news/bad news situation.

On the one hand, you got much farther in the 'make' process than you
did with your original set of ./Configure command-line switches. In
particular, you were able to build the 'miniperl' executable which is
used to bootstrap later stages of 'make'. That suggests that
something in the original switches is posing problems early in 'make',
i.e., at the compilation of opmini.c.

On the other hand, 'make' failed during the compilation of the Time-
HiRes library which is distributed along with the Perl 5 core. I
don't yet see the reason why -- it may be something we don't know
about AIX -- so here's where we'll have to hope that other readers of
the list can help.

Thank you very much.

after a few runs, it looks like i have reached a dead end. the former errors are gone but now the "bootstrapped" perl binary crashes.

<code>
Updating 'mktables.lst'
  ./miniperl -Ilib make_ext.pl lib/auto/Unicode/Normalize/Normalize.so MAKE="make" LIBPERL_A=libperl.a LINKTYPE=dynamic
Making header files for XS...
Generating a Unix-style Makefile
Writing Makefile for Unicode​::Normalize
  "../../miniperl" "-I../../lib" -MExtUtils​::Mksymlists -e "Mksymlists('NAME'=>\"Unicode​::Normalize\", 'DLBASE' => 'Normalize', 'DL_FUNCS' => { }, 'FUNCLIST' => [], 'IMPORTS' => { }, 'DL_VARS' => []);"
  "../../miniperl" "-I../../lib" "../../lib/ExtUtils/xsubpp" -typemap '/usr/local/src/perl-5.26.1/dist/Unicode-Normalize/../../lib/ExtUtils/typemap' Normalize.xs > Normalize.xsc
  mv Normalize.xsc Normalize.c
  chmod 644 "Normalize.bs"
Running Mkbootstrap for Normalize ()
  /usr/local/src/perl-5.26.1/dist/Unicode-Normalize/../../miniperl "-I../../lib" -MExtUtils​::Command​::MM -e 'cp_nonempty' -- Normalize.bs ../../lib/auto/Unicode/Normalize/Normalize.bs 644
  /usr/bin/gcc -maix64 -maix64 -c -D_THREAD_SAFE -D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -maix64 -DUSE_64_BIT_ALL -D_FORTIFY_SOURCE=2 -Wall -Werror=declaration-after-statement -Wextra -Wc++-compat -Wwrite-strings -O -DVERSION=\"1.25\" -DXS_VERSION=\"1.25\" "-I../.." Normalize.c
  rm -f ../../lib/auto/Unicode/Normalize/Normalize.so
  /usr/bin/gcc -maix64 -maix64 -Wl,-b64 -Wl,-bhalt​:4 -Wl,-G -Wl,-bI​:../../perl.exp -Wl,-bE​:Normalize.exp -Wl,-bnoentry -lpthreads -lc -lm -L/opt/freeware/lib64 -L/usr/lib64 -L/opt/freeware/lib -L/usr/local/lib Normalize.o -o ../../lib/auto/Unicode/Normalize/Normalize.so
  chmod 755 ../../lib/auto/Unicode/Normalize/Normalize.so
  ./perl -Ilib -I. -f pod/buildtoc -q
/bin/sh​: 21430488 Illegal instruction
make​: The error code from the last command is 132.

Stop.

</code>

root@​aixbuildhost​: /usr/local/src/perl-5.26.1 # ./perl -Ilib -I. -f pod/buildtoc -q
Illegal instruction

root@​aixbuildhost​: /usr/local/src/perl-5.26.1 # ldd ./perl
./perl needs​:
  /usr/lib/libc.a(shr_64.o)
  /usr/lib/libpthreads.a(shr_xpg5_64.o)
  /usr/lib/libnsl.a(shr_64.o)
  /usr/lib/libcrypt.a(shr_64.o)
  /usr/lib/libbind.a(shr_64.o)
  /usr/lib/libdl.a(shr_64.o)
  /unix
  /usr/lib/libthread.a(shr_64.o)
  /usr/lib/libtli.a(shr_64.o)
  /usr/lib/libC.a(shr3_64.o)
  /usr/lib/libC.a(shr2_64.o)
  /usr/lib/libc.a(pse_64.o)
  /usr/lib/libC.a(shrcore_64.o)
  /usr/lib/libC.a(ansicore_64.o)

root@​aixbuildhost​: /usr/local/src/perl-5.26.1 # file perl
perl​: 64-bit XCOFF executable or object module

@p5pRT
Copy link
Author

@p5pRT p5pRT commented Oct 4, 2017

From Christian.Tremel@itsv.at

Am Mon, 02 Oct 2017 23​:58​:24 -0700, Christian.Tremel@​itsv.at schrieb​:

Am Fri, 29 Sep 2017 06​:30​:40 -0700, jkeenan schrieb​:

On Fri, 29 Sep 2017 07​:26​:18 GMT, Christian.Tremel@​itsv.at wrote​:

Am Thu, 28 Sep 2017 19​:53​:58 -0700, jkeenan schrieb​:

On Thu, 28 Sep 2017 12​:44​:33 GMT, Christian.Tremel@​itsv.at wrote​:

i am in the process of doing a gcc build of Perl 5.24.0, but it
wont
let me through. A build with IBM's native xlc compiler is going
well,
but in this case gcc is necessary to not break the AIX freeware
tree.

here ist the error in his full glory.

+ make

echo @​`sh cflags "optimize='-O2 -g '" opmini.o` -DPERL_IS_MI

+NIPERL -DPERL_EXTERNAL_GLOB opmini.c

@​/usr/bin/gcc -maix32 -maix32 -c -DPERL_CORE -D_THREAD_SAFE
-D_ALL_SOU

+RCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -DUSE_NATIVE_DLOPEN
-DNEED_PTHRE

+AD_INIT -fwrapv -fno-strict-aliasing -pipe
-I/usr/local/include
-D_LA

+RGE_FILES -O2 -g -Wall -DPERL_IS_MINIPERL -DPERL_EXTERNAL_GLOB
opmini

+.c

In file included from op.h​:636​:0,

from perl.h​:3903,

from op.c​:103​:

reentr.h​:719​:14​: error​: field '_spent_struct' has incomplete
type

struct spwd _spent_struct;

^~~~~~~~~~~~~

make​: The error code from the last command is 1.

[download]<http​://www.perlmonks.org/?node_id=1200254;displaytype=displaycode;part=1;abspart=1>

the configure options

export OBJECT_MODE=32

export CC='/usr/bin/gcc -maix32'

export LDFLAGS="-s -Wl,-bmaxdata​:0x80000000 -L/opt/freeware/lib
-L/usr

+/lib"

./Configure -desr -Doptimize="$RPM_OPT_FLAGS" \

-d \

-Dcc="$CC" -Dldflags="$LDFLAGS" \

-Dinstallprefix=$RPM_BUILD_ROOT%{_prefix} \

-Dprefix=%{_prefix} \

-Duselargefiles \

-Duseshrplib \

-Dusethreads \

-Darchname=%{_arch}-%{_os} \

-A define​:ld='/usr/bin/gcc -maix32' \

-A define​:ccdlflags='-brtl -bdynamic' \

-A define​:lddlflags='-bexpall -G -L/opt/freeware/lib'

make

#make test

( make -k check || true )

# build 64bit mode

export OBJECT_MODE=64

cd 64bit

export CC='/usr/bin/gcc -maix64'

export LDFLAGS="-s -Wl,-bmaxdata​:0x80000000
-L/opt/freeware/lib64
-L/u

+sr/lib64 -L/opt/freeware/lib"

./Configure -desr -Doptimize="$RPM_OPT_FLAGS" \

-d \

-Dcc="$CC" -Dldflags="$LDFLAGS" \

-Dinstallprefix=$RPM_BUILD_ROOT%{_prefix} \

-Dprefix=%{_prefix} \

-Duselargefiles \

-Duseshrplib \

-Dusethreads \

-Duse64bitall \

-Darchname=%{_arch}-%{_os} \

-A define​:ld='/usr/bin/gcc -maix64' \

-A define​:ccdlflags='-brtl -bdynamic' \

-A define​:lddlflags='-bexpall -G -L/opt/freeware/lib64 -L/usr

+/lib64 -L/opt/freeware/lib'

We support AIX, but it is certainly one of our less well-
understood
platforms. We're only getting smoke testing reports for AIX on
PPC
and each of those reports is a FAIL.

Just so you know the limits of our ability to help you ... ;-)

In situations like this it is often helpful to configure perl
with
a
very limited set of command-line switches and seeing whether
'make'
and 'make test' pass with those switches; then add options until
you
get significant breakage.

You have submitted reports for 2 builds, AFAICT​: a 32-bit build
and
a
64-bit build. For heuristic purposes I recommend you select the
64-
bit configuration, then configure with something as simple as
this​:

#####
$> sh ./Configure -des -Dusedevel
#####

Does 'make' finish successfully with that? How about 'make test'
or
'make test_harness'? If they PASS, add command-line switches to
./Configure one at a time until you get failures during either
'make'
or 'make test'. Report back to us what works and what does not.

Thank you very much.

i tried it with a limited set of options.

<code>
root@​aixbuildhost​: /opt/freeware/src/packages/BUILD/perl-
5.24.0/64bit
# cat gcc_test.sh
#!/usr/bin/ksh

make clean
make distclean

export OBJECT_MODE=64

export CC='/usr/bin/gcc -maix64'

export LDFLAGS="-s -Wl,-bmaxdata​:0x80000000 -L/opt/freeware/lib64
-L/usr/lib64 -L/opt/freeware/lib -lpthreads"

./Configure -des -Dusedevel -Dcc="$CC" -Dldflags="$LDFLAGS"
-Dusethreads

</code>

after running for a while it stops with the following...

<code>
./miniperl -Ilib make_ext.pl lib/auto/Time/HiRes/HiRes.so
MAKE="make" LIBPERL_A=libperl.a LINKTYPE=dynamic
Makefile.PL​: The "xdefine" exists, skipping the configure step.
("../../miniperl Makefile.PL --configure" to force the configure
step)
Warning​: No Makefile!
make​: Cannot find a rule to create target all from dependencies.
Stop.
make​: Cannot find a rule to create target all from dependencies.
Stop.
Unsuccessful make(dist/Time-HiRes)​: code=512 at make_ext.pl line
569.
make​: The error code from the last command is 2.

Stop.

</code>

A couple of observations (none of which will solve your original
problem)​:

1. From your code samples I infer that you are trying to build perl-
5.24.0, presumably from a tarball -- i.e., not from a git checkout.
Correct? If so, then be sure to call​:

#####
$> make veryclean
#####

... after each attempt at building so that you clean out files
created
by that attempt. This *may* eliminate these lines of output, which I
suspect are not relevant to the problem​:

#####
Makefile.PL​: The "xdefine" exists, skipping the configure step.

("../../miniperl Makefile.PL --configure" to force the configure
step)
#####

2. This is a good news/bad news situation.

On the one hand, you got much farther in the 'make' process than you
did with your original set of ./Configure command-line switches. In
particular, you were able to build the 'miniperl' executable which is
used to bootstrap later stages of 'make'. That suggests that
something in the original switches is posing problems early in
'make',
i.e., at the compilation of opmini.c.

On the other hand, 'make' failed during the compilation of the Time-
HiRes library which is distributed along with the Perl 5 core. I
don't yet see the reason why -- it may be something we don't know
about AIX -- so here's where we'll have to hope that other readers of
the list can help.

Thank you very much.

after a few runs, it looks like i have reached a dead end. the former
errors are gone but now the "bootstrapped" perl binary crashes.

<code>
Updating 'mktables.lst'
./miniperl -Ilib make_ext.pl
lib/auto/Unicode/Normalize/Normalize.so MAKE="make"
LIBPERL_A=libperl.a LINKTYPE=dynamic
Making header files for XS...
Generating a Unix-style Makefile
Writing Makefile for Unicode​::Normalize
"../../miniperl" "-I../../lib" -MExtUtils​::Mksymlists -e
"Mksymlists('NAME'=>\"Unicode​::Normalize\", 'DLBASE' => 'Normalize',
'DL_FUNCS' => { }, 'FUNCLIST' => [], 'IMPORTS' => { }, 'DL_VARS' =>
[]);"
"../../miniperl" "-I../../lib" "../../lib/ExtUtils/xsubpp"
-typemap '/usr/local/src/perl-5.26.1/dist/Unicode-
Normalize/../../lib/ExtUtils/typemap' Normalize.xs > Normalize.xsc
mv Normalize.xsc Normalize.c
chmod 644 "Normalize.bs"
Running Mkbootstrap for Normalize ()
/usr/local/src/perl-5.26.1/dist/Unicode-
Normalize/../../miniperl "-I../../lib" -MExtUtils​::Command​::MM -e
'cp_nonempty' -- Normalize.bs
../../lib/auto/Unicode/Normalize/Normalize.bs 644
/usr/bin/gcc -maix64 -maix64 -c -D_THREAD_SAFE
-D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -DUSE_NATIVE_DLOPEN
-DNEED_PTHREAD_INIT -fwrapv -fno-strict-aliasing -pipe
-I/usr/local/include -maix64 -DUSE_64_BIT_ALL -D_FORTIFY_SOURCE=2
-Wall -Werror=declaration-after-statement -Wextra -Wc++-compat
-Wwrite-strings -O -DVERSION=\"1.25\" -DXS_VERSION=\"1.25\" "-
I../.." Normalize.c
rm -f ../../lib/auto/Unicode/Normalize/Normalize.so
/usr/bin/gcc -maix64 -maix64 -Wl,-b64 -Wl,-bhalt​:4 -Wl,-G
-Wl,-bI​:../../perl.exp -Wl,-bE​:Normalize.exp -Wl,-bnoentry -lpthreads
-lc -lm -L/opt/freeware/lib64 -L/usr/lib64 -L/opt/freeware/lib
-L/usr/local/lib Normalize.o -o
../../lib/auto/Unicode/Normalize/Normalize.so
chmod 755 ../../lib/auto/Unicode/Normalize/Normalize.so
./perl -Ilib -I. -f pod/buildtoc -q
/bin/sh​: 21430488 Illegal instruction
make​: The error code from the last command is 132.

Stop.

</code>

root@​aixbuildhost​: /usr/local/src/perl-5.26.1 # ./perl -Ilib -I. -f
pod/buildtoc -q
Illegal instruction

root@​aixbuildhost​: /usr/local/src/perl-5.26.1 # ldd ./perl
./perl needs​:
/usr/lib/libc.a(shr_64.o)
/usr/lib/libpthreads.a(shr_xpg5_64.o)
/usr/lib/libnsl.a(shr_64.o)
/usr/lib/libcrypt.a(shr_64.o)
/usr/lib/libbind.a(shr_64.o)
/usr/lib/libdl.a(shr_64.o)
/unix
/usr/lib/libthread.a(shr_64.o)
/usr/lib/libtli.a(shr_64.o)
/usr/lib/libC.a(shr3_64.o)
/usr/lib/libC.a(shr2_64.o)
/usr/lib/libc.a(pse_64.o)
/usr/lib/libC.a(shrcore_64.o)
/usr/lib/libC.a(ansicore_64.o)

root@​aixbuildhost​: /usr/local/src/perl-5.26.1 # file perl
perl​: 64-bit XCOFF executable or object module

surprise. after all that troubles it ultimately works (somewhat).

a few observations​:
at first it does not like gnu make but insists on the aix make command. it also bails out on preset LD FLAGS. it recognizes the right flags for the aix ld, but passes it to gcc instead of ld.gcc of course does not understand this and aborts with unknown options error.
so here is the build script i used.

<code>
#!/usr/bin/bash

make veryclean

export OBJECT_MODE=64

dobuild()

{
/bin/sh ./Configure \
  -desr \
  -Dusedevel \
  -Dcc="$1" \
  -Dldflags="$2" \
  -Duseshrplib=true \
  -Dusethreads \
  -Dld="ld" \
  -Dccflags='-D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT -I/opt/freeware/include -D_LARGE_FILES' \
  -Dccflags_uselargefiles='-D_LARGE_FILES' \
  -Doptimize='-O' \
  -Dalignbytes=8 \
  -Dso=a \
  -Dshrpldflags='-Wl,-H512 -Wl,-T512 -Wl,-bhalt​:4 -Wl,-bM​:SRE -Wl,-bE​:perl.exp' \
  -Dlddlflags='-Wl,-bhalt​:4 -Wl,-bM​:SRE -Wl,-bI​:$(PERL_INC)/perl.exp -Wl,-bE​:$(BASEEXT).exp -Wl,-bnoentry -lpthreads' \
  -Dlibperl=libperl.a \
  -Duseshrplib \
  -Duseithreads \
  -Duselargefiles \
  -Dd_semctl_semun \
  -Duseperlio \
  -Uversiononly \
  -Dinc_version_list='%{perlmodcompat}'
make -j12
}

dobuild 'gcc -maix64' '-Wl,-brtl -Wl,-b64 -L/opt/freeware/lib64 -L/opt/freeware/lib -Wl,-blibpath​:/opt/freeware/lib/perl5/5.26.1/ppc-thread-multi-64all/CORE​:/opt/freeware/lib64​:/opt/freeware/lib​:/usr/lib​:/lib'

</code>

one test is still failing, not shure why and if this is critical.

Test Summary Report


../cpan/ExtUtils-MakeMaker/t/02-xsdynamic.t (Wstat​: 1536 Tests​: 66 Failed​: 6)
  Failed tests​: 16, 23, 46, 52, 58, 64
  Non-zero exit status​: 6
Files=2562, Tests=1186192, 1114 wallclock secs (61.54 usr 8.74 sys + 358.30 cusr 40.70 csys = 469.28 CPU)
Result​: FAIL

../cpan/ExtUtils-MakeMaker/t/02-xsdynamic.t ........................ 16/66
# Failed test '"make" exited normally'
# at lib/MakeMaker/Test/Setup/XS.pm line 369.
# got​: '512'
# expected​: '0'
# cp lib/XS/typemap blib/lib/XS/typemap
# cp lib/XS/header.h blib/lib/XS/header.h
# cp lib/XS/Test.pm blib/lib/XS/Test.pm
# cp lib/XS/Other.pm blib/lib/XS/Other.pm
# cp lib/XS/Test_BS blib/lib/XS/Test_BS
# make​: Cannot find a rule to create target Test.exp from dependencies.
# Stop.
../cpan/ExtUtils-MakeMaker/t/02-xsdynamic.t ........................ 22/66
# Failed test '"make" test exited normally'
# at lib/MakeMaker/Test/Setup/XS.pm line 390.
# got​: '512'
# expected​: '0'
# cp Test.pm blib/lib/XS/Test.pm
# "/usr/local/src/perl-5.26.1/cpan/ExtUtils-MakeMaker/../../t/perl" -w "-I../../../../lib" -MExtUtils​::Mksymlists -e "Mksymlists('NAME'=>\"XS​::Test\", 'DLBASE' => 'Test', 'DL_FUNCS' => { }, 'FUNCLIST' => [], 'IMPORTS' => { }, 'DL_VARS' => []);"
# Running Mkbootstrap for Test ()
# chmod 644 "Test.bs"
# "/usr/local/src/perl-5.26.1/cpan/ExtUtils-MakeMaker/../../t/perl" -w "-I../../../../lib" -MExtUtils​::Command​::MM -e 'cp_nonempty' -- Test.bs blib/arch/auto/XS/Test/Test.bs 644
# "/usr/local/src/perl-5.26.1/cpan/ExtUtils-MakeMaker/../../t/perl" -w "-I../../../../lib" "../../../../lib/ExtUtils/xsubpp" -typemap '/usr/local/src/perl-5.26.1/cpan/ExtUtils-MakeMaker/t/XS-Testsubdirscomplex/../../../../lib/ExtUtils/typemap' -typemap '/usr/local/src/perl-5.26.1/cpan/ExtUtils-MakeMaker/t/XS-Testsubdirscomplex/typemap' -typemap '/usr/local/src/perl-5.26.1/cpan/ExtUtils-MakeMaker/t/XS-Testsubdirscomplex/typemap' Test.xs > Test.xsc
# mv Test.xsc Test.c
# gcc -maix64 -maix64 -c -Inewline -D_THREAD_SAFE -D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT -I/opt/freeware/include -D_LARGE_FILES -DNEED_PTHREAD_INIT -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -maix64 -DUSE_64_BIT_ALL -D_FORTIFY_SOURCE=2 -Wall -Werror=declaration-after-statement -Wextra -Wc++-compat -Wwrite-strings -O -DVERSION=\"1.01\" -DXS_VERSION=\"1.01\" "-I../../../.." -DINVAR=input Test.c
# rm -f blib/arch/auto/XS/Test/Test.so
# gcc -maix64 -maix64 -Wl,-b64 -Wl,-bhalt​:4 -Wl,-bM​:SRE -Wl,-bI​:../../../../perl.exp -Wl,-bE​:Test.exp -Wl,-bnoentry -lpthreads -L/opt/freeware/lib64 -L/opt/freeware/lib -L/usr/local/lib Test.o -o blib/arch/auto/XS/Test/Test.so
# chmod 755 blib/arch/auto/XS/Test/Test.so
# cd lib && gcc -maix64 -maix64 -c -Inewline -D_THREAD_SAFE -D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT -I/opt/freeware/include -D_LARGE_FILES -DNEED_PTHREAD_INIT -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -maix64 -DUSE_64_BIT_ALL -D_FORTIFY_SOURCE=2 -Wall -Werror=declaration-after-statement -Wextra -Wc++-compat -Wwrite-strings -O -DVERSION=\"1.2\" -DXS_VERSION=\"1.2\" "-I../../../../.." -DINVAR=input ../lib/file.c
#
# "/usr/local/src/perl-5.26.1/cpan/ExtUtils-MakeMaker/../../t/perl" -w "-I../../../../lib" -MExtUtils​::Command​::MM -e 'cp_nonempty' -- Test.bs blib/arch/auto/XS/Test/Test.bs 644
# "/usr/local/src/perl-5.26.1/cpan/ExtUtils-MakeMaker/../../t/perl" -w "-I../../../../../lib" -MExtUtils​::Mksymlists -e "Mksymlists('NAME'=>\"XS​::Other\", 'DLBASE' => 'Other', 'DL_FUNCS' => { }, 'FUNCLIST' => [], 'IMPORTS' => { }, 'DL_VARS' => []);"
# Running Mkbootstrap for Other ()
# chmod 644 "Other.bs"
# "/usr/local/src/perl-5.26.1/cpan/ExtUtils-MakeMaker/../../t/perl" -w "-I../../../../../lib" -MExtUtils​::Command​::MM -e 'cp_nonempty' -- Other.bs ../blib/arch/auto/XS/Other/Other.bs 644
# rm -f ../blib/arch/auto/XS/Other/Other.so
# gcc -maix64 -maix64 -Wl,-b64 -Wl,-bhalt​:4 -Wl,-bM​:SRE -Wl,-bI​:../../../../../perl.exp -Wl,-bE​:Other.exp -Wl,-bnoentry -lpthreads -L/opt/freeware/lib64 -L/opt/freeware/lib -L/usr/local/lib lib/file.o -o ../blib/arch/auto/XS/Other/Other.so
# ld​: 0711-319 WARNING​: Exported symbol not defined​: boot_XS__Other
# ld​: 0711-244 ERROR​: No csects or exported symbols have been saved.
# collect2​: error​: ld returned 8 exit status
# make​: The error code from the last command is 1.
#
#
# Stop.
# make​: The error code from the last command is 2.
#
#
# Stop.
../cpan/ExtUtils-MakeMaker/t/02-xsdynamic.t ........................ 46/66
# Failed test '"make" exited normally'
# at lib/MakeMaker/Test/Setup/XS.pm line 369.
# got​: '512'
# expected​: '0'
# cp lib/XS/Test.pm blib/lib/XS/Test.pm
# cp lib/XS/Other.pm blib/lib/XS/Other.pm
# cp lib/XS/header.h blib/lib/XS/header.h
# cp lib/XS/typemap blib/lib/XS/typemap
# make​: Cannot find a rule to create target Test.exp from dependencies.
# Stop.

# Failed test '"make" LINKTYPE=dynamic exited normally'
# at lib/MakeMaker/Test/Setup/XS.pm line 369.
# got​: '512'
# expected​: '0'
# cp lib/XS/Other.pm blib/lib/XS/Other.pm
# cp lib/XS/Test.pm blib/lib/XS/Test.pm
# cp lib/XS/typemap blib/lib/XS/typemap
# cp lib/XS/header.h blib/lib/XS/header.h
# make​: Cannot find a rule to create target Test.exp from dependencies.
# Stop.
../cpan/ExtUtils-MakeMaker/t/02-xsdynamic.t ........................ 55/66
# Failed test '"make" dynamic exited normally'
# at lib/MakeMaker/Test/Setup/XS.pm line 369.
# got​: '512'
# expected​: '0'
# make​: Cannot find a rule to create target Test.exp from dependencies.
# Stop.

# Failed test '"make" exited normally'
# at lib/MakeMaker/Test/Setup/XS.pm line 369.
# got​: '512'
# expected​: '0'
# cp lib/XS/Other.pm blib/lib/XS/Other.pm
# cp lib/XS/header.h blib/lib/XS/header.h
# cp lib/XS/Test.pm blib/lib/XS/Test.pm
# cp lib/XS/typemap blib/lib/XS/typemap
# cp lib/XS/plus1.c blib/lib/XS/plus1.c
# make​: Cannot find a rule to create target Test.exp from dependencies.
# Stop.
# Looks like you failed 6 tests of 66.
../cpan/ExtUtils-MakeMaker/t/02-xsdynamic.t ........................ Dubious, test returned 6 (wstat 1536, 0x600)
Failed 6/66 subtests
  (less 5 skipped subtests​: 55 okay)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
2 participants