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

Need place for "how to build old versions of perl on new platform versions" #9352

Open
p5pRT opened this issue May 28, 2008 · 17 comments
Open

Comments

@p5pRT
Copy link

p5pRT commented May 28, 2008

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

Searchable as RT54952$

@p5pRT
Copy link
Author

p5pRT commented May 28, 2008

From david@kineticode.com

perlbug,

This is a bug report for perl from david@​kineticode.com,
generated with the help of perlbug 1.34 running under perl v5.6.2.


I tried to build 5.6.2 on Mac OS X 10.5.2 with this configuration​:

  sh Configure -des -Duseshrplib -Dprefix=/usr/local/perl-5.6.2

It failed during `make` with these errors​:

YLD_LIBRARY_PATH=/usr/local/src/perl-5.6.2 cc -L/usr/local/lib -o miniperl \
  miniperlmain.o opmini.o libperl.dylib -ldl -lm -lc -lutil
DYLD_LIBRARY_PATH=/usr/local/src/perl-5.6.2 ./miniperl -w -Ilib -MExporter -e '<?>' || make minitest
Can't locate File/Glob.pm in @​INC (@​INC contains​: lib /usr/local/perl-5.6.2/lib/5.6.2/darwin /usr/local/perl-5.6.2/lib/5.6.2 /usr/local/perl-5.6.2/lib/site_perl/5.6.2/darwin /usr/local/perl-5.6.2/lib/site_perl/5.6.2 /usr/local/perl-5.6.2/lib/site_perl .) at -e line 1.
BEGIN failed--compilation aborted at -e line 1.
rm -f lib/re.pm
cat ext/re/re.pm > lib/re.pm
You may see some irrelevant test failures if you have been unable
to build lib/Config.pm.
cd t && (rm -f perl; /bin/ln -s ../miniperl perl) \
  && DYLD_LIBRARY_PATH=/usr/local/src/perl-5.6.2 ./perl TEST base/*.t comp/*.t cmd/*.t run/*.t io/*.t op/*.t pragma/*.t </dev/tty
t/base/cond.............ok
t/base/if...............ok
t/base/lex..............ok
t/base/pat..............ok
t/base/rs...............ok
t/base/term.............Can't locate Config.pm in @​INC (@​INC contains​: ../lib) at base/term.t line 10.
BEGIN failed--compilation aborted at base/term.t line 10.
FAILED at test 0
Failed a basic test--cannot continue.
make[1]​: [minitest] Error 2 (ignored)
make​: [extra.pods] Error 1 (ignored)
DYLD_LIBRARY_PATH=/usr/local/src/perl-5.6.2 ./miniperl configpm configpm.tmp
sh mv-if-diff configpm.tmp lib/Config.pm
  AutoSplitting perl library
DYLD_LIBRARY_PATH=/usr/local/src/perl-5.6.2 ./miniperl -Ilib -e 'use AutoSplit; \
  autosplit_lib_modules(@​ARGV)' lib/*.pm lib/*/*.pm
AutoSplitting lib/Getopt/Long.pm (lib/auto/Getopt/Long)
DYLD_LIBRARY_PATH=/usr/local/src/perl-5.6.2 ./miniperl minimod.pl > minimod.tmp
sh mv-if-diff minimod.tmp lib/ExtUtils/Miniperl.pm
`sh cflags libperl.dylib perlmain.o` perlmain.c
  CCCMD = cc -DPERL_CORE -c -pipe -fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -I/usr/local/include -O3

  Making DynaLoader (static)
Writing Makefile for DynaLoader
Can't locate File/Glob.pm in @​INC (@​INC contains​: ../../lib ../../lib /usr/local/perl-5.6.2/lib/5.6.2/darwin /usr/local/perl-5.6.2/lib/5.6.2 /usr/local/perl-5.6.2/lib/site_perl/5.6.2/darwin /usr/local/perl-5.6.2/lib/site_perl/5.6.2 /usr/local/perl-5.6.2/lib/site_perl .) at ../../lib/ExtUtils/Command.pm line 57.
BEGIN failed--compilation aborted at ../../lib/ExtUtils/Command.pm line 57.
Compilation failed in require.
BEGIN failed--compilation aborted.
make[1]​: *** [../../lib/.exists] Error 2
make config failed, continuing anyway...
Can't locate File/Glob.pm in @​INC (@​INC contains​: ../../lib ../../lib /usr/local/perl-5.6.2/lib/5.6.2/darwin /usr/local/perl-5.6.2/lib/5.6.2 /usr/local/perl-5.6.2/lib/site_perl/5.6.2/darwin /usr/local/perl-5.6.2/lib/site_perl/5.6.2 /usr/local/perl-5.6.2/lib/site_perl .) at ../../lib/ExtUtils/Command.pm line 57.
BEGIN failed--compilation aborted at ../../lib/ExtUtils/Command.pm line 57.
Compilation failed in require.
BEGIN failed--compilation aborted.
make[1]​: *** [../../lib/.exists] Error 2
make​: *** [lib/auto/DynaLoader/DynaLoader.a] Error 2

When I tried again without -Duseshrplib, the build succeeded (hence the
configuration information below is about a static Perl).



Flags​:
  category=core
  severity=low


Site configuration information for perl v5.6.2​:

Configured by david at Thu May 1 17​:46​:47 PDT 2008.

Summary of my perl5 (revision 5.0 version 6 subversion 2) configuration​:
  Platform​:
  osname=darwin, osvers=9.2.2, archname=darwin
  uname='darwin benedict.local 9.2.2 darwin kernel version 9.2.2​: tue mar 4 21​:17​:34 pst 2008; root​:xnu-1228.4.31~1release_i386 i386 '
  config_args='-des -Dperladmin=david@​kineticode.com -Dcf_email=david@​kineticode.com -Dprefix=/usr/local/perl-5.6.2'
  hint=recommended, useposix=true, d_sigaction=define
  usethreads=undef use5005threads=undef useithreads=undef usemultiplicity=undef
  useperlio=undef d_sfio=undef uselargefiles=define usesocks=undef
  use64bitint=undef use64bitall=undef uselongdouble=undef
  Compiler​:
  cc='cc', ccflags ='-pipe -fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -I/usr/local/include',
  optimize='-O3',
  cppflags='-pipe -fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -I/usr/local/include'
  ccversion='', gccversion='4.0.1 (Apple Inc. build 5465)', gccosandvers=''
  intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
  d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
  ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
  alignbytes=8, usemymalloc=n, prototype=define
  Linker and Libraries​:
  ld='env MACOSX_DEPLOYMENT_TARGET=10.3 cc', ldflags =' -L/usr/local/lib'
  libpth=/usr/local/lib /usr/lib
  libs=-ldbm -ldl -lm -lc -lutil
  perllibs=-ldl -lm -lc -lutil
  libc=/usr/lib/libc.dylib, so=dylib, useshrplib=false, libperl=libperl.a
  Dynamic Linking​:
  dlsrc=dl_dyld.xs, dlext=bundle, d_dlsymun=undef, ccdlflags=' '
  cccdlflags=' ', lddlflags=' -bundle -undefined dynamic_lookup -L/usr/local/lib'

Locally applied patches​:
 


@​INC for perl v5.6.2​:
  /usr/local/perl-5.6.2/lib/5.6.2/darwin
  /usr/local/perl-5.6.2/lib/5.6.2
  /usr/local/perl-5.6.2/lib/site_perl/5.6.2/darwin
  /usr/local/perl-5.6.2/lib/site_perl/5.6.2
  /usr/local/perl-5.6.2/lib/site_perl
  .


Environment for perl v5.6.2​:
  DYLD_LIBRARY_PATH (unset)
  HOME=/Users/david
  LANG=en_US.UTF-8
  LANGUAGE (unset)
  LD_LIBRARY_PATH (unset)
  LOGDIR (unset)
  PATH=/opt/local/bin​:/usr/local/bin​:/usr/local/sbin​:/usr/bin​:/bin​:/usr/sbin​:/sbin​:/Developer/Tools​:/Users/david/bin​:/usr/local/pgsql/bin​:/usr/local/mysql/bin​:/usr/X11/bin
  PERL_BADLANG (unset)
  SHELL=/bin/zsh

@p5pRT
Copy link
Author

p5pRT commented Jun 2, 2008

From p5p@spam.wizbit.be

On Tue May 27 23​:07​:18 2008, david@​kineticode.com wrote​:

-----------------------------------------------------------------
I tried to build 5.6.2 on Mac OS X 10.5.2 with this configuration​:

sh Configure -des -Duseshrplib -Dprefix=/usr/local/perl-5.6.2

It failed during `make` with these errors​:

Can you send all the output of the make command?
And can you run ./myconfig (of the failed build)

Kind regards,

Bram

@p5pRT
Copy link
Author

p5pRT commented Jun 2, 2008

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

@p5pRT
Copy link
Author

p5pRT commented Jun 3, 2008

From david@kineticode.com

On Jun 2, 2008, at 14​:18, Bram via RT wrote​:

On Tue May 27 23​:07​:18 2008, david@​kineticode.com wrote​:

-----------------------------------------------------------------
I tried to build 5.6.2 on Mac OS X 10.5.2 with this configuration​:

sh Configure -des -Duseshrplib -Dprefix=/usr/local/perl-5.6.2

It failed during `make` with these errors​:

Can you send all the output of the make command?
And can you run ./myconfig (of the failed build)

Here is the output for Configure, make, and ./myconfig​:

HTH,

David

benedict# sh Configure -des -Duseshrplib -Dprefix=/usr/local/perl-5.6.2
First let's make sure your kit is complete. Checking...
Locating common programs...
Checking compatibility between /bin/echo and builtin echo (if any)...
Symbolic links are supported.
Checking how to test for symbolic links...
You can test for symbolic links with 'test -h'.
Good, your tr supports [​:lower​:] and [​:upper​:] to convert case.
Using [​:upper​:] and [​:lower​:] to convert case.
3b1 dynix isc_2 opus sunos_4_1
aix dynixptx linux os2 super-ux
altos486 epix lynxos os390 svr4
amigaos esix4 machten os400 svr5
apollo fps machten_2 posix-bc ti1500
atheos freebsd mint powerux titanos
aux_3 genix mips qnx ultrix_4
beos gnu mpc rhapsody umips
bsdos greenhills mpeix sco unicos
convexos hpux ncr_tower sco_2_3_0 unicosmk
cxux i386 netbsd sco_2_3_1 unisysdynix
cygwin irix_4 newsos4 sco_2_3_2 utekv
darwin irix_5 next_3 sco_2_3_3 uts
dcosx irix_6 next_3_0 sco_2_3_4 uwin
dec_osf irix_6_0 next_4 solaris_2 vmesa
dgux irix_6_1 nonstopux stellar vos
dos_djgpp isc openbsd sunos_4_0
Which of these apply, if any? [darwin]
Operating system name? [darwin]
Operating system version? [9.3.0]
Build a threading Perl? [n]
Build Perl for multiplicity? [n]
Use which C compiler? [cc]
Checking for GNU cc in disguise and/or its version number...
gccvers.c​: In function 'main'​:
gccvers.c​:10​: warning​: incompatible implicit declaration of built-in
function 'exit'
Now, how can we feed standard input to your C preprocessor...
Directories to use for library searches? [/usr/local/lib /usr/lib]
What is the file extension used for shared libraries? [dylib]
Build Perl for SOCKS? [n]
Checking for optional libraries...
What libraries to use? [-ldbm -ldl -lm -lc -lutil]
What optimizer/debugger flag should be used? [-O3]
Any additional cc flags?
[-pipe -fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -
I/usr/local/include]
Let me guess what the preprocessor flags are...
Any additional ld flags (NOT including libraries)? [ -L/usr/local/lib]
Checking your choice of C compiler and flags for coherency...
Checking to see how big your integers are...
intsize.c​: In function 'main'​:
intsize.c​:7​: warning​: incompatible implicit declaration of built-in
function 'exit'
off_t found.
Checking to see how big your file offsets are...
fpos_t found.
Checking the size of fpos_t...
try.c​: In function 'main'​:
try.c​:5​: warning​: incompatible implicit declaration of built-in
function 'exit'
Try to use 64-bit integers, if available? [n]
Try to use maximal 64-bit support, if available? [n]
Checking for GNU C Library...
gnulibc.c​: In function 'main'​:
gnulibc.c​:7​: warning​: incompatible implicit declaration of built-in
function 'exit'
Shall I use /usr/bin/nm to extract C symbols from the libraries? [y]
Where is your C library? [/usr/lib/libc.dylib]
Extracting names from the following files for later perusal​:
  /usr/lib/libc.dylib
  /usr/lib/libdbm.dylib
  /usr/lib/libdl.dylib
  /usr/lib/libm.dylib
  /usr/lib/libutil.dylib
This may take a while....done
sqrtl() found.
Try to use long doubles if available? [n]
Checking to see how big your double precision numbers are...
try.c​: In function 'main'​:
try.c​:5​: warning​: incompatible implicit declaration of built-in
function 'exit'
Checking to see if you have long double...
Checking to see how big your long doubles are...
What is your architecture name [darwin]
Installation prefix to use? (~name ok) [/usr/local/perl-5.6.2]
AFS does not seem to be running...
What installation prefix should I use for installing files? (~name ok)
[/usr/local/perl-5.6.2]
Getting the current patchlevel...
Pathname where the private library files will reside? (~name ok)
[/usr/local/perl-5.6.2/lib/5.6.2]
Where do you want to put the public architecture-dependent libraries?
(~name ok)
[/usr/local/perl-5.6.2/lib/5.6.2/darwin]
Binary compatibility with Perl 5.005? [y]
Other username to test security of setuid scripts with? [none]
I'll assume setuid scripts are *not* secure.
Does your kernel have *secure* setuid scripts? [n]
Do you want to do setuid/setgid emulation? [n]
Computing filename position in cpp output for #include directives...
<malloc.h> NOT found.
<stdlib.h> found.
Do you wish to attempt to use the malloc that comes with perl5? [n]
Your system wants malloc to return 'void *', it would seem.
Your system uses void free(), it would seem.
Installation prefix to use for add-on modules and utilities? (~name ok)
[/usr/local/perl-5.6.2]
Pathname for the site-specific library files? (~name ok)
[/usr/local/perl-5.6.2/lib/site_perl/5.6.2]
Pathname for the site-specific architecture-dependent library files?
(~name ok)
[/usr/local/perl-5.6.2/lib/site_perl/5.6.2/darwin]
Do you want to configure vendor-specific add-on directories? [n]
Colon-separated list of additional directories for perl to search?
[none]
Checking out function prototypes...
Pathname where the public executables will reside? (~name ok)
[/usr/local/perl-5.6.2/bin]
List of earlier versions to include in @​INC? [none]
Do you want to install perl as /usr/bin/perl? [n]
<dld.h> NOT found.
dlopen() found.
Do you wish to use dynamic loading? [y]
Source file to use for dynamic loading [ext/DynaLoader/dl_dyld.xs]
Any special flags to pass to cc -c to compile shared library modules?
[none]
What command should be used to create dynamic libraries?
[env MACOSX_DEPLOYMENT_TARGET=10.3 cc]
Any special flags to pass to env MACOSX_DEPLOYMENT_TARGET=10.3 cc to
create a dynamically loaded library?
[ -bundle -undefined dynamic_lookup -L/usr/local/lib]
Any special flags to pass to cc to use dynamic linking? [none]
Build a shared libperl.dylib (y/n) [y]
What name do you want to give to the shared libperl? [libperl.dylib]
System manual is in /usr/share/man/man1.
Where do the main Perl5 manual pages (source) go? (~name ok)
[/usr/local/perl-5.6.2/man/man1]
What suffix should be used for the main Perl5 man pages? [1]
You can have filenames longer than 14 characters.
Where do the perl5 library man pages (source) go? (~name ok)
[/usr/local/perl-5.6.2/man/man3]
What suffix should be used for the perl5 library man pages? [3]
Figuring out host name...
Your host name appears to be "benedict.local". Right? [y]
What is your domain name? [.local]
What is your e-mail address? [david@​benedict.local]
Perl administrator e-mail address [david@​benedict.local]
Do you want to install only the version-specific parts of perl? [n]
What shall I put after the #! to start up perl ("none" to not use #!)?
[/usr/local/perl-5.6.2/bin/perl]

WARNING​: Some systems limit the #! command to 32 characters.
If you experience difficulty running Perl scripts with #!, try
installing Perl in a directory with a shorter pathname.

Where do you keep publicly executable scripts? (~name ok)
[/usr/local/perl-5.6.2/bin]
Pathname where the add-on public executables should be installed?
(~name ok)
[/usr/local/perl-5.6.2/bin]
Use the experimental PerlIO abstraction layer? [n]
qgcvt() NOT found.
Checking how to print long doubles...
gconvert NOT found.
gcvt() found.
I'll use gcvt to convert floats into a string.
fwalk() found.
access() found.
<sys/file.h> defines the *_OK access constants.
accessx() NOT found.
alarm() found.
atolf() NOT found.
atoll() found.
Checking whether your compiler can handle __attribute__ ...
bcmp() found.
bcopy() found.
<unistd.h> found.
getpgrp() found.
You have to use getpgrp() instead of getpgrp(pid).
setpgrp() found.
You have to use setpgrp() instead of setpgrp(pid,pgrp).
bzero() found.
You have void (*signal())().
Checking whether your C compiler can cast large floats to int32.
try.c​: In function 'blech'​:
try.c​:4​: warning​: incompatible implicit declaration of built-in
function 'exit'
try.c​: In function 'main'​:
try.c​:28​: warning​: incompatible implicit declaration of built-in
function 'exit'
Checking whether your C compiler can cast negative float to unsigned.
try.c​: In function 'blech'​:
try.c​:4​: warning​: incompatible implicit declaration of built-in
function 'exit'
try.c​: In function 'blech_in_list'​:
try.c​:5​: warning​: incompatible implicit declaration of built-in
function 'exit'
try.c​: In function 'main'​:
try.c​:56​: warning​: incompatible implicit declaration of built-in
function 'exit'
vprintf() found.
Your vsprintf() returns (char*).
chown() found.
chroot() found.
chsize() NOT found.
Checking to see if your C compiler knows about "const"...
crypt() found.
cuserid() NOT found.
<limits.h> found.
<float.h> found.
DBL_DIG found.
difftime() found.
<dirent.h> found.
Your directory entries are struct dirent.
Good, your directory entry keeps length information in d_namlen.
dlerror() found.
<dlfcn.h> found.
What is the extension of dynamically loaded modules [bundle]
dup2() found.
eaccess() NOT found.
endgrent() found.
endhostent() found.
endnetent() found.
endprotoent() found.
endpwent() found.
endservent() found.
<sys/file.h> defines the O_* constants...
and you have the 3 argument form of open().
Using <string.h> instead of <strings.h>.
Figuring out the flag used by open() for non-blocking I/O...
try.c​: In function 'main'​:
try.c​:6​: warning​: incompatible implicit declaration of built-in
function 'exit'
Let's see what value errno gets from read() on a O_NONBLOCK file...
try.c​: In function 'blech'​:
try.c​:20​: warning​: incompatible implicit declaration of built-in
function 'exit'
try.c​: In function 'main'​:
try.c​:36​: warning​: incompatible implicit declaration of built-in
function 'exit'
try.c​:72​: warning​: incompatible implicit declaration of built-in
function 'exit'
fchmod() found.
fchown() found.
fcntl() found.
Hmm... Looks like you have Berkeley networking support.
socketpair() found.
Checking the availability of certain socket constants...
<sys/select.h> found.
Testing to see if we should include <time.h>, <sys/time.h> or both.
We'll include <sys/time.h>.
Well, your system knows about the normal fd_set typedef...
and you have the normal fd_set macros (just as I'd expect).
fgetpos() found.
flock() found.
fork() found.
pathconf() found.
fpathconf() found.
Checking to see if you have fpos64_t...
frexpl() found.
<sys/param.h> found.
<sys/mount.h> found.
<sys/types.h> found.
Checking to see if your system supports struct fs_data...
fseeko() found.
fsetpos() found.
fstatfs() found.
statvfs() found.
fstatvfs() found.
fsync() found.
ftello() found.
getcwd() found.
getespwnam() NOT found.
getfsstat() found.
getgrent() found.
gethostbyaddr() found.
gethostbyname() found.
gethostent() found.
gethostname() found.
uname() found.
Shall I ignore gethostname() from now on? [n]
<netdb.h> found.
getlogin() found.
getmnt() NOT found.
getmntent() NOT found.
getnetbyaddr() found.
getnetbyname() found.
getnetent() found.
getpagesize() found.
getprotobyname() found.
getprotobynumber() found.
getprotoent() found.
getpgid() found.
getpgrp2() NOT found.
getppid() found.
getpriority() found.
getprpwnam() NOT found.
getpwent() found.
getservbyname() found.
getservbyport() found.
getservent() found.
getspnam() NOT found.
gettimeofday() found.
<grp.h> found.
hasmntopt() NOT found.
<netinet/in.h> found.
<arpa/inet.h> found.
htonl() found.
strchr() found.
inet_aton() found.
<inttypes.h> found.
Checking to see if you have int64_t...
isascii() found.
isnan() found.
isnanl() NOT found.
killpg() found.
lchown() found.
LDBL_DIG found.
link() found.
localeconv() found.
lockf() found.
Checking to see if you have long long...
Checking to see how big your long longs are...
lstat() found.
madvise() found.
mblen() found.
mbstowcs() found.
mbtowc() found.
memchr() found.
memcmp() found.
memcpy() found.
memmove() found.
memset() found.
mkdir() found.
mkdtemp() found.
mkfifo() found.
mkstemp() found.
mkstemps() found.
mktime() found.
<sys/mman.h> found.
mmap() found.
and it returns (void *).
modfl() found.
mprotect() found.
msgctl() found.
msgget() found.
msgsnd() found.
msgrcv() found.
You have the full msg*(2) library.
msync() found.
munmap() found.
nice() found.
Checking which 64-bit integer type we could use...
We could use 'long long' for 64-bit integers.
Checking to see how big your characters are (hey, you never know)...
try.c​: In function 'main'​:
try.c​:5​: warning​: incompatible implicit declaration of built-in
function 'exit'
What is the size of a character (in bytes)? [1]
Checking to see if your C compiler knows about "volatile"...
Choosing the C types to be used for Perl's internal types...
Checking how many bits of your UVs your NVs can preserve...
Checking to see if you have off64_t...
<pthread.h> found.
pause() found.
pipe() found.
poll() found.
<pwd.h> found.
readdir() found.
seekdir() found.
telldir() found.
rewinddir() found.
readlink() found.
rename() found.
rmdir() found.
<memory.h> found.
Checking to see if your bcopy() can do overlapping copies...
Checking to see if your memcpy() can do overlapping copies...
Checking if your memcmp() can compare relative magnitude...
select() found.
semctl() found.
semget() found.
semop() found.
You have the full sem*(2) library.
You have union semun in <sys/sem.h>.
You can use union semun for semctl IPC_STAT.
You can also use struct semid_ds* for semctl IPC_STAT.
setegid() found.
seteuid() found.
setgrent() found.
sethostent() found.
setlinebuf() found.
setlocale() found.
setnetent() found.
setprotoent() found.
setpgid() found.
setpgrp2() NOT found.
setpriority() found.
setproctitle() NOT found.
setpwent() found.
setregid() found.
*** WHOA THERE!!! ***
  The recommended value for $d_setregid on this machine was "undef"!
  Keep the recommended value? [y]
setresgid() NOT found.
setreuid() found.
*** WHOA THERE!!! ***
  The recommended value for $d_setreuid on this machine was "undef"!
  Keep the recommended value? [y]
setresuid() NOT found.
setrgid() found.
*** WHOA THERE!!! ***
  The recommended value for $d_setrgid on this machine was "undef"!
  Keep the recommended value? [y]
setruid() found.
*** WHOA THERE!!! ***
  The recommended value for $d_setruid on this machine was "undef"!
  Keep the recommended value? [y]
setservent() found.
setsid() found.
setvbuf() found.
<sfio.h> NOT found.
libs = -ldbm -ldl -lm -lc -lutil
shmctl() found.
shmget() found.
shmat() found.
and it returns (void *).
shmdt() found.
You have the full shm*(2) library.
sigaction() found.
try.c​: In function 'main'​:
try.c​:10​: warning​: incompatible implicit declaration of built-in
function 'exit'
POSIX sigsetjmp found.
socks5_init() NOT found.
<sys/stat.h> found.
Checking to see if your struct stat has st_blocks field...
<sys/vfs.h> NOT found.
<sys/statfs.h> NOT found.
Checking to see if your system supports struct statfs...
Checking to see if your struct statfs has f_flags field...
Checking how std your stdio is...
Checking to see what happens if we set the stdio ptr...
Increasing ptr in your stdio leaves cnt unchanged. Good.
Checking how to access stdio streams by file descriptor number...
I can't figure out how to access stdio streams by file descriptor
number.
strcoll() found.
Checking to see if your C compiler can copy structs...
strerror() found.
strtod() found.
strtol() found.
strtold() found.
strtoll() found.
strtoul() found.
strtoull() found.
strtouq() found.
strxfrm() found.
symlink() found.
syscall() found.
sysconf() found.
system() found.
tcgetpgrp() found.
tcsetpgrp() found.
<sys/times.h> found.
times() found.
clock_t found.
truncate() found.
tzname[] found.
umask() found.
ustat() NOT found.
vfork() found.
Do you still want to use vfork()? [y]
<sys/dir.h> found.
<sys/ndir.h> NOT found.
closedir() found.
Checking whether closedir() returns a status...
wait4() found.
waitpid() found.
wcstombs() found.
wctomb() found.
Checking to see how your cpp does stuff like catenate tokens...
Oh! Smells like ANSI's been here.
<db.h> found.
Checking Berkeley DB version ...
try.c​: In function 'main'​:
try.c​:43​: warning​: incompatible implicit declaration of built-in
function 'exit'
Looks OK.
Checking return type needed for hash for Berkeley DB ...
Checking return type needed for prefix for Berkeley DB ...
Checking to see how well your C compiler groks the void type...
Good. It appears to support void to the level perl5 wants.
Looking for a random number function...
Good, found drand48().
Use which function to generate random numbers? [drand48]
Determining whether or not we are on an EBCDIC system...
Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF8.
Checking how to flush all pending stdio output...
Your fflush(NULL) works okay for output streams.
Let's see if it clobbers input pipes...
fflush(NULL) seems to behave okay with input streams.
Checking the size of gid_t...
try.c​: In function 'main'​:
try.c​:5​: warning​: incompatible implicit declaration of built-in
function 'exit'
Checking the sign of gid_t...
Checking how to print 64-bit integers...
Checking the format strings to be used for Perl's internal types...
Checking the format string to be used for gids...
getgroups() found.
setgroups() found.
What type pointer is the second argument to getgroups() and setgroups()?
[gid_t]
Checking if your /usr/bin/make program sets $(MAKE)...
mode_t found.
size_t found.
What is the type for the 1st argument to gethostbyaddr? [char *]
What is the type for the 2nd argument to gethostbyaddr? [size_t]
What pager is used on your system? [/usr/bin/less]
pid_t found.
Checking to see how big your pointers are...
try.c​: In function 'main'​:
try.c​:6​: warning​: incompatible implicit declaration of built-in
function 'exit'
Checking how to generate random libraries on your machine...
try.c​: In function 'main'​:
try.c​:41​: warning​: incompatible implicit declaration of built-in
function 'exit'
Your select() operates on 32 bits at a time.
Generating a list of signal names and numbers...
signal.c​: In function 'main'​:
signal.c​:211​: warning​: incompatible implicit declaration of built-in
function 'exit'
/usr/bin/sort​: open failed​: +1​: No such file or directory
Checking the size of size_t...
try.c​: In function 'main'​:
try.c​:5​: warning​: incompatible implicit declaration of built-in
function 'exit'
Checking to see if you have socklen_t...
<socks.h> NOT found.
ssize.c​: In function 'main'​:
ssize.c​:13​: warning​: incompatible implicit declaration of built-in
function 'exit'
I'll be using ssize_t for functions returning a byte count.
Your stdio uses signed chars.
time() found.
time_t found.
Checking the size of uid_t...
try.c​: In function 'main'​:
try.c​:5​: warning​: incompatible implicit declaration of built-in
function 'exit'
Checking the sign of uid_t...
Checking the format string to be used for uids...
Which compiler compiler (yacc or bison -y) shall I use? [yacc]
dbmclose() NOT found.
<sys/file.h> found.
We'll be including <sys/file.h>.
<fcntl.h> found.
We don't need to include <fcntl.h> if we include <sys/file.h>.
<ieeefp.h> NOT found.
<libutil.h> NOT found.
<locale.h> found.
<math.h> found.
<mntent.h> NOT found.
<ndbm.h> found.
dbm_open() found.
<net/errno.h> NOT found.
<netinet/tcp.h> found.
<poll.h> found.
<prot.h> NOT found.
Guessing which symbols your C compiler and preprocessor define...
tcsetattr() found.
You have POSIX termios.h... good!
<shadow.h> NOT found.
<stdarg.h> found.
<varargs.h> found.
We'll include <stdarg.h> to get va_dcl definition.
<stddef.h> found.
<sunmath.h> NOT found.
<sys/access.h> NOT found.
<sys/filio.h> found.
<sys/ioctl.h> found.
<syslog.h> found.
<sys/mode.h> NOT found.
<sys/resource.h> found.
<sys/security.h> NOT found.
<sys/statvfs.h> found.
<sys/uio.h> found.
<sys/un.h> found.
<sys/utsname.h> found.
<sys/wait.h> found.
<ustat.h> NOT found.
<utime.h> found.
<values.h> NOT found.
<vfork.h> NOT found.
<gdbm.h> NOT found.
Looking for extensions...
What extensions do you wish to load dynamically?
[B ByteLoader DB_File Data/Dumper Devel/DProf Devel/Peek Fcntl File/
Glob IO IPC/SysV NDBM_File Opcode POSIX SDBM_File Socket Sys/Hostname
Sys/Syslog attrs re]
What extensions do you wish to load statically? [none]
Stripping down executable paths...
Creating config.sh...
Doing variable substitutions on .SH files...
Extracting cflags (with variable substitutions)
Extracting config.h (with variable substitutions)
Extracting makeaperl (with variable substitutions)
Extracting makedepend (with variable substitutions)
Extracting makedir (with variable substitutions)
Extracting Makefile (with variable substitutions)
Extracting myconfig (with variable substitutions)
Extracting pod/Makefile (with variable substitutions)
Extracting Policy.sh (with variable substitutions)
Extracting writemain (with variable substitutions)
Extracting x2p/cflags (with variable substitutions)
Extracting x2p/Makefile (with variable substitutions)
Run make depend now? [y]
sh ./makedepend MAKE=make
sh writemain lib/auto/DynaLoader/DynaLoader.a > writemain.tmp
sh mv-if-diff writemain.tmp perlmain.c
echo av.c scope.c op.c doop.c doio.c dump.c hv.c mg.c perl.c perly.c
pp.c pp_hot.c pp_ctl.c pp_sys.c regcomp.c regexec.c utf8.c gv.c sv.c
taint.c toke.c util.c deb.c run.c universal.c xsutils.c globals.c
perlio.c perlapi.c miniperlmain.c perlmain.c | tr ' ' '\n' >.clist
Finding dependencies for av.o.
Finding dependencies for scope.o.
Finding dependencies for op.o.
Finding dependencies for doop.o.
Finding dependencies for doio.o.
Finding dependencies for dump.o.
Finding dependencies for hv.o.
Finding dependencies for mg.o.
Finding dependencies for perl.o.
Finding dependencies for perly.o.
Finding dependencies for pp.o.
Finding dependencies for pp_hot.o.
Finding dependencies for pp_ctl.o.
Finding dependencies for pp_sys.o.
Finding dependencies for regcomp.o.
Finding dependencies for regexec.o.
Finding dependencies for utf8.o.
Finding dependencies for gv.o.
Finding dependencies for sv.o.
Finding dependencies for taint.o.
Finding dependencies for toke.o.
Finding dependencies for util.o.
Finding dependencies for deb.o.
Finding dependencies for run.o.
Finding dependencies for universal.o.
Finding dependencies for xsutils.o.
Finding dependencies for globals.o.
Finding dependencies for perlio.o.
Finding dependencies for perlapi.o.
Finding dependencies for miniperlmain.o.
Finding dependencies for perlmain.o.
echo Makefile.SH cflags.SH config_h.SH makeaperl.SH makedepend.SH
makedir.SH myconfig.SH writemain.SH pod/Makefile.SH | tr ' ' '\n'

.shlist
Updating GNUmakefile...
test -s perlmain.c && touch perlmain.c
cd x2p; make depend
sh ../makedepend MAKE=make
echo hash.c str.c util.c walk.c | tr ' ' '\n' >.clist
Finding dependencies for hash.o.
Finding dependencies for str.o.
Finding dependencies for util.o.
Finding dependencies for walk.o.
echo Makefile.SH cflags.SH | tr ' ' '\n' >.shlist
Updating GNUmakefile...
Now you must run 'make'.

If you compile perl5 on a different machine or from a different object
directory, copy the Policy.sh file from this object directory to the
new one before you run Configure -- this will help you with most of
the policy defaults.

benedict# make
`sh cflags libperl.dylib miniperlmain.o` miniperlmain.c
  CCCMD = cc -DPERL_CORE -c -pipe -fno-common -DPERL_DARWIN -no-cpp-
precomp -fno-strict-aliasing -I/usr/local/include -O3
`sh cflags libperl.dylib perl.o` perl.c
  CCCMD = cc -DPERL_CORE -c -pipe -fno-common -DPERL_DARWIN -no-cpp-
precomp -fno-strict-aliasing -I/usr/local/include -O3
`sh cflags libperl.dylib gv.o` gv.c
  CCCMD = cc -DPERL_CORE -c -pipe -fno-common -DPERL_DARWIN -no-cpp-
precomp -fno-strict-aliasing -I/usr/local/include -O3
`sh cflags libperl.dylib toke.o` toke.c
  CCCMD = cc -DPERL_CORE -c -pipe -fno-common -DPERL_DARWIN -no-cpp-
precomp -fno-strict-aliasing -I/usr/local/include -O3
`sh cflags libperl.dylib perly.o` perly.c
  CCCMD = cc -DPERL_CORE -c -pipe -fno-common -DPERL_DARWIN -no-cpp-
precomp -fno-strict-aliasing -I/usr/local/include -O3
`sh cflags libperl.dylib op.o` op.c
  CCCMD = cc -DPERL_CORE -c -pipe -fno-common -DPERL_DARWIN -no-cpp-
precomp -fno-strict-aliasing -I/usr/local/include -O3
`sh cflags libperl.dylib regcomp.o` regcomp.c
  CCCMD = cc -DPERL_CORE -c -pipe -fno-common -DPERL_DARWIN -no-cpp-
precomp -fno-strict-aliasing -I/usr/local/include -O3
`sh cflags libperl.dylib dump.o` dump.c
  CCCMD = cc -DPERL_CORE -c -pipe -fno-common -DPERL_DARWIN -no-cpp-
precomp -fno-strict-aliasing -I/usr/local/include -O3
`sh cflags libperl.dylib util.o` util.c
  CCCMD = cc -DPERL_CORE -c -pipe -fno-common -DPERL_DARWIN -no-cpp-
precomp -fno-strict-aliasing -I/usr/local/include -O3
`sh cflags libperl.dylib mg.o` mg.c
  CCCMD = cc -DPERL_CORE -c -pipe -fno-common -DPERL_DARWIN -no-cpp-
precomp -fno-strict-aliasing -I/usr/local/include -O3
`sh cflags libperl.dylib hv.o` hv.c
  CCCMD = cc -DPERL_CORE -c -pipe -fno-common -DPERL_DARWIN -no-cpp-
precomp -fno-strict-aliasing -I/usr/local/include -O3
`sh cflags libperl.dylib av.o` av.c
  CCCMD = cc -DPERL_CORE -c -pipe -fno-common -DPERL_DARWIN -no-cpp-
precomp -fno-strict-aliasing -I/usr/local/include -O3
`sh cflags libperl.dylib run.o` run.c
  CCCMD = cc -DPERL_CORE -c -pipe -fno-common -DPERL_DARWIN -no-cpp-
precomp -fno-strict-aliasing -I/usr/local/include -O3
`sh cflags libperl.dylib pp_hot.o` pp_hot.c
  CCCMD = cc -DPERL_CORE -c -pipe -fno-common -DPERL_DARWIN -no-cpp-
precomp -fno-strict-aliasing -I/usr/local/include -O3
`sh cflags libperl.dylib sv.o` sv.c
  CCCMD = cc -DPERL_CORE -c -pipe -fno-common -DPERL_DARWIN -no-cpp-
precomp -fno-strict-aliasing -I/usr/local/include -O3
sv.c​: In function ‘Perl_sv_gets’​:
sv.c​:4472​: warning​: pointer targets in assignment differ in signedness
sv.c​:4513​: warning​: pointer targets in assignment differ in signedness
`sh cflags libperl.dylib pp.o` pp.c
  CCCMD = cc -DPERL_CORE -c -pipe -fno-common -DPERL_DARWIN -no-cpp-
precomp -fno-strict-aliasing -I/usr/local/include -O3
`sh cflags libperl.dylib scope.o` scope.c
  CCCMD = cc -DPERL_CORE -c -pipe -fno-common -DPERL_DARWIN -no-cpp-
precomp -fno-strict-aliasing -I/usr/local/include -O3
`sh cflags libperl.dylib pp_ctl.o` pp_ctl.c
  CCCMD = cc -DPERL_CORE -c -pipe -fno-common -DPERL_DARWIN -no-cpp-
precomp -fno-strict-aliasing -I/usr/local/include -O3
`sh cflags libperl.dylib pp_sys.o` pp_sys.c
  CCCMD = cc -DPERL_CORE -c -pipe -fno-common -DPERL_DARWIN -no-cpp-
precomp -fno-strict-aliasing -I/usr/local/include -O3
`sh cflags libperl.dylib doop.o` doop.c
  CCCMD = cc -DPERL_CORE -c -pipe -fno-common -DPERL_DARWIN -no-cpp-
precomp -fno-strict-aliasing -I/usr/local/include -O3
`sh cflags libperl.dylib doio.o` doio.c
  CCCMD = cc -DPERL_CORE -c -pipe -fno-common -DPERL_DARWIN -no-cpp-
precomp -fno-strict-aliasing -I/usr/local/include -O3
`sh cflags libperl.dylib regexec.o` regexec.c
  CCCMD = cc -DPERL_CORE -c -pipe -fno-common -DPERL_DARWIN -no-cpp-
precomp -fno-strict-aliasing -I/usr/local/include -O3
`sh cflags libperl.dylib utf8.o` utf8.c
  CCCMD = cc -DPERL_CORE -c -pipe -fno-common -DPERL_DARWIN -no-cpp-
precomp -fno-strict-aliasing -I/usr/local/include -O3
`sh cflags libperl.dylib taint.o` taint.c
  CCCMD = cc -DPERL_CORE -c -pipe -fno-common -DPERL_DARWIN -no-cpp-
precomp -fno-strict-aliasing -I/usr/local/include -O3
`sh cflags libperl.dylib deb.o` deb.c
  CCCMD = cc -DPERL_CORE -c -pipe -fno-common -DPERL_DARWIN -no-cpp-
precomp -fno-strict-aliasing -I/usr/local/include -O3
`sh cflags libperl.dylib universal.o` universal.c
  CCCMD = cc -DPERL_CORE -c -pipe -fno-common -DPERL_DARWIN -no-cpp-
precomp -fno-strict-aliasing -I/usr/local/include -O3
`sh cflags libperl.dylib xsutils.o` xsutils.c
  CCCMD = cc -DPERL_CORE -c -pipe -fno-common -DPERL_DARWIN -no-cpp-
precomp -fno-strict-aliasing -I/usr/local/include -O3
`sh cflags libperl.dylib globals.o` globals.c
  CCCMD = cc -DPERL_CORE -c -pipe -fno-common -DPERL_DARWIN -no-cpp-
precomp -fno-strict-aliasing -I/usr/local/include -O3
`sh cflags libperl.dylib perlio.o` perlio.c
  CCCMD = cc -DPERL_CORE -c -pipe -fno-common -DPERL_DARWIN -no-cpp-
precomp -fno-strict-aliasing -I/usr/local/include -O3
`sh cflags libperl.dylib perlapi.o` perlapi.c
  CCCMD = cc -DPERL_CORE -c -pipe -fno-common -DPERL_DARWIN -no-cpp-
precomp -fno-strict-aliasing -I/usr/local/include -O3
env MACOSX_DEPLOYMENT_TARGET=10.3 cc -o libperl.dylib -L/usr/local/lib
-dynamiclib -compatibility_version 1 -current_version
  5.0 -image_base 0x4be00000 -install_name /usr/
local/perl-5.6.2/lib/5.6.2/darwin/CORE/libperl.dylib perl.o gv.o
toke.o perly.o op.o regcomp.o dump.o util.o mg.o hv.o av.o run.o
pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys.o doop.o doio.o regexec.o
utf8.o taint.o deb.o universal.o xsutils.o globals.o perlio.o perlapi.o
rm -f opmini.c
cp op.c opmini.c
`sh cflags libperl.dylib opmini.o` -DPERL_EXTERNAL_GLOB opmini.c
  CCCMD = cc -DPERL_CORE -c -pipe -fno-common -DPERL_DARWIN -no-cpp-
precomp -fno-strict-aliasing -I/usr/local/include -O3
rm -f opmini.c
DYLD_LIBRARY_PATH=/usr/local/src/perl-5.6.2 cc -L/usr/local/lib -o
miniperl \
  miniperlmain.o opmini.o libperl.dylib -ldl -lm -lc -lutil
DYLD_LIBRARY_PATH=/usr/local/src/perl-5.6.2 ./miniperl -w -Ilib -
MExporter -e '<?>' || make minitest
Can't load module File​::Glob, dynamic loading not available in this
perl.
  (You may need to build a new perl executable which either supports
  dynamic loading or has the File​::Glob module statically linked into
it.)
  at -e line 1
Compilation failed in require at -e line 1.
BEGIN failed--compilation aborted at -e line 1.
rm -f lib/re.pm
cat ext/re/re.pm > lib/re.pm
You may see some irrelevant test failures if you have been unable
to build lib/Config.pm.
cd t && (rm -f perl; /bin/ln -s ../miniperl perl) \
  && DYLD_LIBRARY_PATH=/usr/local/src/perl-5.6.2 ./perl TEST base/*.t
comp/*.t cmd/*.t run/*.t io/*.t op/*.t pragma/*.t </dev/tty
t/base/cond.............ok
t/base/if...............ok
t/base/lex..............ok
t/base/pat..............ok
t/base/rs...............ok
t/base/term.............Can't locate Config.pm in @​INC (@​INC
contains​: ../lib) at base/term.t line 10.
BEGIN failed--compilation aborted at base/term.t line 10.
FAILED at test 0
Failed a basic test--cannot continue.
make[1]​: [minitest] Error 2 (ignored)
make​: [extra.pods] Error 1 (ignored)
DYLD_LIBRARY_PATH=/usr/local/src/perl-5.6.2 ./miniperl configpm
configpm.tmp
sh mv-if-diff configpm.tmp lib/Config.pm
  AutoSplitting perl library
DYLD_LIBRARY_PATH=/usr/local/src/perl-5.6.2 ./miniperl -Ilib -e 'use
AutoSplit; \
  autosplit_lib_modules(@​ARGV)' lib/*.pm lib/*/*.pm
AutoSplitting lib/Getopt/Long.pm (lib/auto/Getopt/Long)
DYLD_LIBRARY_PATH=/usr/local/src/perl-5.6.2 ./miniperl minimod.pl >
minimod.tmp
sh mv-if-diff minimod.tmp lib/ExtUtils/Miniperl.pm
`sh cflags libperl.dylib perlmain.o` perlmain.c
  CCCMD = cc -DPERL_CORE -c -pipe -fno-common -DPERL_DARWIN -no-cpp-
precomp -fno-strict-aliasing -I/usr/local/include -O3

  Making DynaLoader (static)
Writing Makefile for DynaLoader
Can't load module File​::Glob, dynamic loading not available in this
perl.
  (You may need to build a new perl executable which either supports
  dynamic loading or has the File​::Glob module statically linked into
it.)
  at ../../lib/ExtUtils/Command.pm line 57
Compilation failed in require at ../../lib/ExtUtils/Command.pm line 57.
BEGIN failed--compilation aborted at ../../lib/ExtUtils/Command.pm
line 57.
Compilation failed in require.
BEGIN failed--compilation aborted.
make[1]​: *** [../../lib/.exists] Error 255
make config failed, continuing anyway...
Can't load module File​::Glob, dynamic loading not available in this
perl.
  (You may need to build a new perl executable which either supports
  dynamic loading or has the File​::Glob module statically linked into
it.)
  at ../../lib/ExtUtils/Command.pm line 57
Compilation failed in require at ../../lib/ExtUtils/Command.pm line 57.
BEGIN failed--compilation aborted at ../../lib/ExtUtils/Command.pm
line 57.
Compilation failed in require.
BEGIN failed--compilation aborted.
make[1]​: *** [../../lib/.exists] Error 255
make​: *** [lib/auto/DynaLoader/DynaLoader.a] Error 2
benedict# ./myconfig
Summary of my perl5 (revision 5.0 version 6 subversion 2) configuration​:
  Platform​:
  osname=darwin, osvers=9.3.0, archname=darwin
  uname='darwin benedict.local 9.3.0 darwin kernel version 9.3.0​:
fri may 23 00​:49​:16 pdt 2008; root​:xnu-1228.5.18~1release_i386 i386 '
  config_args='-des -Duseshrplib -Dprefix=/usr/local/perl-5.6.2'
  hint=recommended, useposix=true, d_sigaction=define
  usethreads=undef use5005threads=undef useithreads=undef
usemultiplicity=undef
  useperlio=undef d_sfio=undef uselargefiles=define usesocks=undef
  use64bitint=undef use64bitall=undef uselongdouble=undef
  Compiler​:
  cc='cc', ccflags ='-pipe -fno-common -DPERL_DARWIN -no-cpp-
precomp -fno-strict-aliasing -I/usr/local/include',
  optimize='-O3',
  cppflags='-pipe -fno-common -DPERL_DARWIN -no-cpp-precomp -fno-
strict-aliasing -I/usr/local/include'
  ccversion='', gccversion='4.0.1 (Apple Inc. build 5465)',
gccosandvers=''
  intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=0xffff
  d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
  ivtype='long', ivsize=4, nvtype='double', nvsize=8,
Off_t='off_t', lseeksize=8
  alignbytes=8, usemymalloc=n, prototype=define
  Linker and Libraries​:
  ld='env MACOSX_DEPLOYMENT_TARGET=10.3 cc', ldflags =' -L/usr/
local/lib'
  libpth=/usr/local/lib /usr/lib
  libs=-ldbm -ldl -lm -lc -lutil
  perllibs=-ldl -lm -lc -lutil
  libc=/usr/lib/libc.dylib, so=dylib, useshrplib=true,
libperl=libperl.dylib
  Dynamic Linking​:
  dlsrc=dl_dyld.xs, dlext=bundle, d_dlsymun=undef, ccdlflags=' '
  cccdlflags=' ', lddlflags=' -bundle -undefined dynamic_lookup -L/
usr/local/lib'

benedict#

@p5pRT
Copy link
Author

p5pRT commented Jun 3, 2008

From p5p@perl.wizbit.be

Quoting "David E. Wheeler" <david@​kineticode.com>​:

On Jun 2, 2008, at 14​:18, Bram via RT wrote​:

On Tue May 27 23​:07​:18 2008, david@​kineticode.com wrote​:

-----------------------------------------------------------------
I tried to build 5.6.2 on Mac OS X 10.5.2 with this configuration​:

sh Configure -des -Duseshrplib -Dprefix=/usr/local/perl-5.6.2

It failed during `make` with these errors​:

Can you send all the output of the make command?
And can you run ./myconfig (of the failed build)

Here is the output for Configure, make, and ./myconfig​:

What output do you get if you run​:
./miniperl -wle 'print for glob "miniper*"'

?

Kind regards,

Bram

@p5pRT
Copy link
Author

p5pRT commented Jun 3, 2008

From @doughera88

On Tue, 27 May 2008, David Wheeler wrote​:

-----------------------------------------------------------------
I tried to build 5.6.2 on Mac OS X 10.5.2 with this configuration​:

First, do you really want 5.6.2? It's almost 5 years old. The current
release is 5.10.0.

sh Configure -des -Duseshrplib -Dprefix=/usr/local/perl-5.6.2

It failed during `make` with these errors​:

env MACOSX_DEPLOYMENT_TARGET=10.3 cc -o libperl.dylib -L/usr/local/lib
-dynamiclib -compatibility_version 1
-current_version 5.0
-image_base 0x4be00000 -install_name /usr/
local/perl-5.6.2/lib/5.6.2/darwin/CORE/libperl.dylib perl.o gv.o toke.o
perly.o op.o regcomp.o dump.o util.o mg.o hv.o av.o run.o pp_hot.o sv.o pp.o
scope.o pp_ctl.o pp_sys.o doop.o doio.o regexec.o utf8.o taint.o deb.o
universal.o xsutils.o globals.o perlio.o perlapi.o

rm -f opmini.c
cp op.c opmini.c
`sh cflags libperl.dylib opmini.o` -DPERL_EXTERNAL_GLOB opmini.c
CCCMD = cc -DPERL_CORE -c -pipe -fno-common -DPERL_DARWIN
-no-cpp-precomp -fno-strict-aliasing -I/usr/local/include -O3
rm -f opmini.c
DYLD_LIBRARY_PATH=/usr/local/src/perl-5.6.2 cc -L/usr/local/lib -o miniperl \
miniperlmain.o opmini.o libperl.dylib -ldl -lm -lc -lutil
DYLD_LIBRARY_PATH=/usr/local/src/perl-5.6.2 ./miniperl -w -Ilib -MExporter
-e '<?>' || make minitest
Can't load module File​::Glob, dynamic loading not available in this perl.
(You may need to build a new perl executable which either supports
dynamic loading or has the File​::Glob module statically linked into it.)
at -e line 1
Compilation failed in require at -e line 1.
BEGIN failed--compilation aborted at -e line 1.

This is odd. miniperl should never be loading File/Glob. Your build log clearly
shows opmini.c was correctly built with the -DPERL_EXTERNAL_GLOB flag.

[ . . . ]

When I tried again without -Duseshrplib, the build succeeded (hence the
configuration information below is about a static Perl).

Is there a pre-existing libperl already installed? If so, then perhaps
we're incorrectly picking up the pre-existing libperl.

If there is no pre-existing libperl, then I speculate the problem may be a
subtle one related to how Mac OS handles name resolution. Specifically,
it looks like it's picking up the version of Perl_ck_glob() from op.o
(which is inside libperl.dylib) instead of the version in opmini.o,
which is linked directly to miniperl. There may be some appropriate
linker flag we can use to suppress that behavior. Or, perhaps, we need
to build miniperl by directly linking against all the objects instead
of linking against libperl.dylib.

--
  Andy Dougherty doughera@​lafayette.edu

@p5pRT
Copy link
Author

p5pRT commented Jun 4, 2008

From shouldbedomo@mac.com

On 2008–05–28, at 08​:07, David Wheeler (via RT) wrote​:

I tried to build 5.6.2 on Mac OS X 10.5.2 with this configuration​:

sh Configure -des -Duseshrplib -Dprefix=/usr/local/perl-5.6.2

It failed during `make` with these errors​: ...

Just reporting a negative data point​: as hints/darwin.sh has been
preened since 5.6.2 and some of the preening touches on shared
libraries, I tried dropping that file from the 5.10.0 release into the
5.6.2 source tree, then building with your command line. No change in
failure symptoms. Damn...
--
Dominic Dunlop

@p5pRT
Copy link
Author

p5pRT commented Jun 4, 2008

From @doughera88

On Wed, 4 Jun 2008, Dominic Dunlop wrote​:

On 2008–05–28, at 08​:07, David Wheeler (via RT) wrote​:

I tried to build 5.6.2 on Mac OS X 10.5.2 with this configuration​:

sh Configure -des -Duseshrplib -Dprefix=/usr/local/perl-5.6.2

It failed during `make` with these errors​: ...

Just reporting a negative data point​: as hints/darwin.sh has been preened
since 5.6.2 and some of the preening touches on shared libraries, I tried
dropping that file from the 5.10.0 release into the 5.6.2 source tree, then
building with your command line. No change in failure symptoms. Damn...

Ah, ok. Looking at the differences between 5.6.2's Makefile.SH and
5.10.x's Makefile.SH, it looks like this problem is indeed due to
how Mac OS handles name resolution. As I speciulated previously,

Specifically,
it looks like it's picking up the version of Perl_ck_glob() from op.o
(which is inside libperl.dylib) instead of the version in opmini.o,
which is linked directly to miniperl. There may be some appropriate
linker flag we can use to suppress that behavior. Or, perhaps, we need
to build miniperl by directly linking against all the objects instead
of linking against libperl.dylib.

It looks like bleadperl currently tries both of those things on
different platforms.

It looks to me as if this might work. It simply links miniperl against
the explicit objects, instead of trying to link against libperl.dylib.

Inline Patch
--- Makefile.SH.5.6.2	2003-11-09 18:44:12.000000000 -0500
+++ Makefile.SH	2008-06-04 09:16:30.000000000 -0400
@@ -493,9 +493,10 @@
 		;;
 	*)
 		$spitshell >>Makefile <<'!NO!SUBS!'
-miniperl: $& miniperlmain$(OBJ_EXT) $(LIBPERL) opmini$(OBJ_EXT)
+miniperl: $& miniperlmain$(OBJ_EXT) $(obj) opmini$(OBJ_EXT)
 	$(LDLIBPTH) $(CC) $(CLDFLAGS) -o miniperl \
-	    miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) $(LLIBPERL) $(libs)
+	    `echo $(obj) | sed 's/ op$(OBJ_EXT) / /'` \
+	    miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) perl$(OBJ_EXT) $(libs)
 	$(LDLIBPTH) ./miniperl -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
 !NO!SUBS!
 		;;


-- 

  Andy Dougherty doughera@​lafayette.edu

@p5pRT
Copy link
Author

p5pRT commented Nov 23, 2009

From @timbunce

I've just run across this with perl 5.8.6 and 5.8.8

I've attached a patch which worked for me -- which is essentially Andy's with the addition of
perl$(OBJ_EXT) to the dependencies.

@p5pRT
Copy link
Author

p5pRT commented Nov 23, 2009

From @timbunce

rt54952.patch
--- Makefile.SH.orig	2009-11-23 21:04:57.000000000 +0000
+++ Makefile.SH	2009-11-23 21:19:15.000000000 +0000
@@ -616,10 +616,11 @@
 		    ;;
 		esac
 		$spitshell >>Makefile <<'!NO!SUBS!'
-miniperl$(EXE_EXT): $& miniperlmain$(OBJ_EXT) $(LIBPERL) opmini$(OBJ_EXT)
+miniperl$(EXE_EXT): $& miniperlmain$(OBJ_EXT) $(obj) perl$(OBJ_EXT) opmini$(OBJ_EXT)
 	-@rm -f miniperl.xok
 	$(CC) $(CLDFLAGS) $(NAMESPACEFLAGS) -o miniperl \
-	    miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) $(LLIBPERL) $(libs)
+	`echo $(obj) | sed 's/ op$(OBJ_EXT) / /'` \
+	miniperlmain$(OBJ_EXT) opmini$(OBJ_EXT) perl$(OBJ_EXT) $(libs)
 	$(LDLIBPTH) ./miniperl -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
 !NO!SUBS!
 		;;

@p5pRT
Copy link
Author

p5pRT commented Nov 23, 2009

From david@kineticode.com

Cool. Should this be applied toy blead?

David

On Nov 24, 2009, at 6​:23 AM, Tim Bunce via RT wrote​:

I've just run across this with perl 5.8.6 and 5.8.8

I've attached a patch which worked for me -- which is essentially Andy's with the addition of
perl$(OBJ_EXT) to the dependencies.
<rt54952.patch>

@p5pRT
Copy link
Author

p5pRT commented Nov 25, 2009

From @timbunce

"To blead" I presume. There's no need, perl >= 5.8.9 works fine.

We probably ought to have a well defined place to record details of
"how to build old versions of perl on new platform versions" for anyone
who is stuck with an old version, for whatever reason, and needs that
information.

Tim.

On Tue, Nov 24, 2009 at 08​:07​:21AM +0900, David E. Wheeler wrote​:

Cool. Should this be applied toy blead?

David

On Nov 24, 2009, at 6​:23 AM, Tim Bunce via RT wrote​:

I've just run across this with perl 5.8.6 and 5.8.8

I've attached a patch which worked for me -- which is essentially Andy's with the addition of
perl$(OBJ_EXT) to the dependencies.
<rt54952.patch>

@p5pRT
Copy link
Author

p5pRT commented Nov 25, 2009

From @rgarcia

2009/11/25 Tim Bunce <Tim.Bunce@​pobox.com>​:

"To blead" I presume. There's no need, perl >= 5.8.9 works fine.

We probably ought to have a well defined place to record details of
"how to build old versions of perl on new platform versions" for anyone
who is stuck with an old version, for whatever reason, and needs that
information.

Could that go on the refreshed dev.perl.org ? with some other docs,
probably, related to installation and configuration.

@p5pRT
Copy link
Author

p5pRT commented Jul 7, 2013

From @khwilliamson

I changed the subject line to reflect where this ticket ended up.
--
Karl Williamson

@p5pRT
Copy link
Author

p5pRT commented Jul 18, 2016

From @dcollinsn

Isn't this the concept behind Devel​::PatchPerl?

--
Respectfully,
Dan Collins

@p5pRT
Copy link
Author

p5pRT commented Jul 18, 2016

From @wolfsage

On Mon, Jul 18, 2016 at 10​:55 AM, Dan Collins via RT
<perlbug-followup@​perl.org> wrote​:

Isn't this the concept behind Devel​::PatchPerl?

Yeah, but we don't mention it anywhere in the p5 source.

Perhaps adding a section to perlhacktips or INSTALL mentioning it
would be helpful, this question comes up a lot.

-- Matthew Horsfall (alh)

@theory
Copy link
Contributor

theory commented Jan 31, 2020

+1 to Matthew Horsfall's suggestion to point to Devel​::PatchPerl in the INSTALL file. Maybe also mention plenv or Perlbrew?

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

No branches or pull requests

3 participants