2pipes has asked for the wisdom of the Perl Monks concerning the following question:

I'm trying to build perl 5.24.3 under AIX 6.1 using the following config

export OBJECT_MODE=64 rm config.sh ./Configure \ -d \ -Dcc=cc_r \ -Dcc='gcc -maix64'\ -Duseshrplib \ -Dusethreads \ -Duse64bitall \ -Dprefix=/opt/freeware/

This failed on libdb.so because Configure couldn't find the lib64 directory, so I set LIBRARY_PATH=/opt/freeware/lib64 and it ran to completion

Then things got weird. make started complaining that various module Makefiles were missing. They were there, but 0 bytes. The first two times this happened I downloaded the offending modules from CPAN and expanded them into the proper build directories. There were a lot of new files, but make didn't complain. When I hit the 3rd 'No Makefile' error I did a search for all the 0 byte Makefiles thinking to get them all off CPAN at one go.

But when I got to ./ext/Devel-Peek I found that there is no such module. Can I assume this is core perl as are the other twelve 0 byte offenders in ./ext?

./ext/Devel-Peek/Makefile.PL ./ext/File-DosGlob/Makefile.PL ./ext/Hash-Util-FieldHash/Makefile.PL ./ext/Opcode/Makefile.PL ./ext/PerlIO-encoding/Makefile.PL ./ext/PerlIO-scalar/Makefile.PL ./ext/PerlIO-via/Makefile.PL ./ext/Sys-Hostname/Makefile.PL ./ext/Tie-Hash-NamedCapture/Makefile.PL ./ext/arybase/Makefile.PL ./ext/attributes/Makefile.PL ./ext/mro/Makefile.PL

So, what's my best course? Start from scratch with a fresh download of the tarball? I admit, I didn't do a checksum before proceeding. Or should I go up to 5.26 or down to 5.22 on the off chance 5.24 really is broken? I'm already in over my head. I know enough perl to get by and do the stuff I need to do and over the years I've built enough software from the generous people who provide their source code that I can usually puzzle my way through. I've grown rusty through RPMs, though.

Your Wisdom would be greatly appreciated. Even some common sense would come in handy 'bout now.

Replies are listed 'Best First'.
Re: perl-5.24.3 build woes
by Anonymous Monk on Apr 07, 2018 at 03:33 UTC

    Your problem seems to be related to your environment. Do you have enough space to build perl?

    Post the last few lines before the "No Makefile" errors (possibly a larger portion of configure/build log output elsewhere).

      Yikes! Wisdom and Common Sense.

      You're absolutely right. The first time I ran make I ran out of room. I then ran make clean and just as I was about to move the perl-5.24.3 directory to another filesystem with much more room - believe it or not - my power went out.

      The next day I completed the relocation. I reran Configure and then make and that's when I started getting the No Makefile errors. My (apparently naive) assumption was that running make clean brought me back to the point just before I ran Configure the first time. Anyway, I've since downloaded the tarball again and this time make fails much earlier, which surprises me. I should mention that while the Makefiles were 0 bytes other files in the same directory were the same size as the files I subsequently downloaded from CPAN as modules.

      Writing Makefile for Encode::JP Generating a Unix-style Makefile Writing Makefile for Encode::KR Generating a Unix-style Makefile Writing Makefile for Encode::Symbol Generating a Unix-style Makefile Writing Makefile for Encode::TW Generating a Unix-style Makefile Writing Makefile for Encode::Unicode Generating a Unix-style Makefile Writing Makefile for Encode make[1]: Entering directory '/backups/build/perl-5.24.3/cpan/Encode' make: Not a recognized flag: w usage: make [-einqrst] [-k|-S] [-d[A|adg[1|2]mstv]] [-D variable] [-f +makefile] [-j [jobs]] [variable=value ...] [target ...] make[1]: *** [Makefile:643: subdirs] Error 2 make[1]: Leaving directory '/backups/build/perl-5.24.3/cpan/Encode' make[1]: Entering directory '/backups/build/perl-5.24.3/cpan/Encode' make: Not a recognized flag: w usage: make [-einqrst] [-k|-S] [-d[A|adg[1|2]mstv]] [-D variable] [-f +makefile] [-j [jobs]] [variable=value ...] [target ...] make[1]: *** [Makefile:643: subdirs] Error 2 make[1]: Leaving directory '/backups/build/perl-5.24.3/cpan/Encode' Unsuccessful make(cpan/Encode): code=512 at make_ext.pl line 569. make: *** [makefile:620: lib/auto/Encode/Encode.so] Error 25

      line 643 of ./cpan/Encode/Makefile looks like this:

      +636 # --- MakeMaker subdirs section: +637 +638 # The default clean, realclean and test targets in this Makefil +e +639 # have automatically been given entries for each subdir. +640 +641 +642 subdirs :: +643 $(NOECHO) cd Byte && $(MAKE) $(USEMAKEFILE) $(FIRST_MAKEFIL +E) all $(PASTHRU) +644 +645 subdirs :: +646 $(NOECHO) cd CN && $(MAKE) $(USEMAKEFILE) $(FIRST_MAKEFILE) + all $(PASTHRU) +647 +648 subdirs :: +649 $(NOECHO) cd EBCDIC && $(MAKE) $(USEMAKEFILE) $(FIRST_MAKEF +ILE) all $(PASTHRU) +650 +651 subdirs :: +652 $(NOECHO) cd JP && $(MAKE) $(USEMAKEFILE) $(FIRST_MAKEFILE) + all $(PASTHRU) +653 +654 subdirs :: +655 $(NOECHO) cd KR && $(MAKE) $(USEMAKEFILE) $(FIRST_MAKEFILE) + all $(PASTHRU)

      If this helps with the variable values:

      +8 # +9 # MakeMaker ARGV: (q[INSTALLDIRS=perl], q[INSTALLMAN1DIR=non +e], q[INSTALLMAN3DIR=none], q[PERL_CORE=1], q[LIBPERL_A=libper l.a], q[LINKTYPE=dynamic]) .... +83 PREFIX = $(PERLPREFIX) +84 PERLPREFIX = /opt/freeware ....... +127 FIRST_MAKEFILE = Makefile ..... +156 MAKE = make ........... +303 # --- MakeMaker tools_other section: +304 SHELL = /bin/sh +305 CHMOD = chmod +306 CP = cp +307 MV = mv +308 NOOP = $(TRUE) +309 NOECHO = @ ..... +330 USEMAKEFILE = -f .... +365 # --- MakeMaker cflags section: +366 +367 CCFLAGS = -D_THREAD_SAFE -D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POS +IX_SOURCE -DUSE_NATIVE_DLOPEN -DNEED_PTHREAD_INIT -fwrapv -fno -strict-aliasing -pipe -maix64 -DUSE_64_BIT_ALL -D_FORTIFY_SOURCE=2 -W +all -Werror=declaration-after-statement -Wextra -Wc++-compat - Wwrite-strings +368 OPTIMIZE = -O +369 PERLTYPE = +370 MPOLLUTE = +371 ..... +389 # --- MakeMaker pasthru section: +390 +391 PASTHRU = LIBPERL_A="$(LIBPERL_A)"\ +392 LINKTYPE="$(LINKTYPE)"\ +393 OPTIMIZE="$(OPTIMIZE)"\ +394 PREFIX="$(PREFIX)"\ +395 PASTHRU_INC="$(PASTHRU_INC)"

      To the extent I understand what is failing, it looks like make is being passed a flag 'w' that it doesn't understand, but I don't see where that is happening or where the 'w' flag is coming from. I apologize for all the detail, but I simply don't know enough to distinguish the crap from the gold.

        Missing "Makefile.PL" -- by design! -- file is created by "make" process[0] (I checked only ext/Devel-Peek on my end). Reason for 0-sized "Makefile.PL" most likely is that file system did not have enough physical disk space to populate it but just enough to create an entry (inode) in the directory.

        You would have to wait for someone else about bad "w" flag being passed to "make". (My speculation(!) is that not the right "make" is being detected or wrong "make" is being called.)