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

Blead build failure under Debian 6/PPC: io/eintr.t fails #12680

Open
p5pRT opened this issue Jan 1, 2013 · 17 comments
Open

Blead build failure under Debian 6/PPC: io/eintr.t fails #12680

p5pRT opened this issue Jan 1, 2013 · 17 comments

Comments

@p5pRT
Copy link

p5pRT commented Jan 1, 2013

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

Searchable as RT116262$

@p5pRT
Copy link
Author

p5pRT commented Jan 1, 2013

From @Corion

Created by @Corion

I'm trying to build bleadperl on a "WD My Book Live Duo", a small
NAS embedded system, with the hope of converting it into a (slow)
smoke server later. The machine runs a Debian 6 slightly modified
by WD and has the somewhat interesting PPC architecture with a
APM82181 as its CPU.

Currently, io/eintr.t fails, which feels weird to me, as this
should be a plain Linux system, which I consider "well-tested".

Maybe the cause is some unapplied hint or something. Test failure
and log of ./Configure are appended below.

I wish you all a good start into the new year!
-max

$ sh ./Configure -Dusedevel -de && make test
...
t/x2p/s2p ..................................................... ok
Failed 1 test out of 2214, 99.95% okay.
  io/eintr.t
### Since not all tests were successful, you may want to run some of
### them individually and examine any diagnostic messages they produce.
### See the INSTALL document's section on "make test".
### You have a good chance to get more information by running
### ./perl harness
### in the 't' directory since most (>=80%) of the tests succeeded.
### You may have to set your dynamic library search path,
### LD_LIBRARY_PATH, to point to the build directory​:
### setenv LD_LIBRARY_PATH `pwd`; cd t; ./perl harness
### LD_LIBRARY_PATH=`pwd`; export LD_LIBRARY_PATH; cd t; ./perl harness
### export LD_LIBRARY_PATH=`pwd`; cd t; ./perl harness
### for csh-style shells, like tcsh; or for traditional/modern
### Bourne-style shells, like bash, ksh, and zsh, respectively.
u=56.08 s=11.60 cu=3340.06 cs=192.75 scripts=2214 tests=572906
make​: *** [test] Error 1

$ ./perl io/eintr.t
1..10
ok 1 - read/close​: sig handler close status
ok 2 - read/close​: read status
ok 3 - read/close​: close status
ok 4 - read/die​: read status
ok 5 - read/die​: close status
not ok 6 - print/close​: sig handler close status
# Failed test 6 - print/close​: sig handler close status at io/eintr.t
line 105
# got ""
# expected "nok"
not ok 7 - print/close​: print status
# Failed test 7 - print/close​: print status at io/eintr.t line 106
not ok 8 - print/close​: close status
# Failed test 8 - print/close​: close status at io/eintr.t line 107
not ok 9 - print/die​: print status
# Failed test 9 - print/die​: print status at io/eintr.t line 118
not ok 10 - print/die​: close status
# Failed test 10 - print/die​: close status at io/eintr.t line 121

The full output of Configure follows​:

Beginning of configuration questions for perl5.

Checking echo to see how to suppress newlines...
...using -n.
The star should be here-->*

First let's make sure your kit is complete. Checking...
Looks good...

Would you like to see the instructions? [n]

Locating common programs...
awk is in /usr/bin/awk.
cat is in /bin/cat.
chmod is in /bin/chmod.
comm is in /usr/bin/comm.
cp is in /bin/cp.
echo is in /bin/echo.
expr is in /usr/bin/expr.
grep is in /bin/grep.
ls is in /bin/ls.
mkdir is in /bin/mkdir.
rm is in /bin/rm.
sed is in /bin/sed.
sort is in /usr/bin/sort.
touch is in /usr/bin/touch.
tr is in /usr/bin/tr.
uniq is in /usr/bin/uniq.

Don't worry if any of the following aren't found...
ar is in /usr/bin/ar.
I don't see bison out there, offhand.
I don't see byacc out there, either.
cpp is in /usr/bin/cpp.
I don't see csh out there, either.
date is in /bin/date.
egrep is in /bin/egrep.
I don't see gmake out there, either.
gzip is in /bin/gzip.
less is in /usr/bin/less.
ln is in /bin/ln.
make is in /usr/bin/make.
more is in /bin/more.
nm is in /usr/bin/nm.
nroff is in /usr/bin/nroff.
perl is in /usr/bin/perl.
pg is in /usr/bin/pg.
test is in /usr/bin/test.
uname is in /bin/uname.
zip is in /usr/bin/zip.
Substituting less -R for less.
Using the test built into your sh.

Checking compatibility between /bin/echo and builtin echo (if any)...
They are compatible. In fact, they may be identical.
The following message is sponsored by

  Dresden.pm<--The stars should be here.

Dear Perl user, system administrator or package
maintainer, the Perl community sends greetings to
you. Do you (emblematical) greet back [Y/n]? n

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.

I see a config.sh file. Shall I use it to set the defaults? [y]
Fetching default answers from your old config.sh file...

Configure uses the operating system name and version to set some defaults.
The default value is probably right if the name rings a bell. Otherwise,
since spelling matters for me, either accept the default or answer "none"
to leave it blank.

Operating system name? [linux]

Operating system version? [2.6.32.11-svn70860]

By default, perl5 will be installed in /usr/local/bin, manual pages
under /usr/local/man, etc..., i.e. with /usr/local as prefix for all
installation directories. Typically this is something like /usr/local.
If you wish to have binaries under /usr/bin but other parts of the
installation under /usr/local, that's ok​: you will be prompted
separately for each of the installation directories, the prefix being
only used to set the defaults.

Installation prefix to use? (~name ok) [/usr/local]

AFS does not seem to be running...

In some special cases, particularly when building perl5 for distribution,
it is convenient to distinguish the directory in which files should be
installed from the directory (/usr/local) in which they will
eventually reside. For most users, these two directories are the same.

What installation prefix should I use for installing files? (~name ok)
[/usr/local]

Getting the current patchlevel...
(You have perl5 version 17 subversion 8.)

Perl can be built to take advantage of threads on some systems.
To do so, Configure can be run with -Dusethreads.

Note that Perl built with threading support runs slightly slower
and uses more memory than plain Perl. The current implementation
is believed to be stable, but it is fairly new, and so should be
treated with caution.

If this doesn't make any sense to you, just accept the default 'n'.
Build a threading Perl? [n]

Perl can be built so that multiple Perl interpreters can coexist
within the same Perl executable.

If this doesn't make any sense to you, just accept the default 'n'.
Build Perl for multiplicity? [n]

Use which C compiler? [cc]

Hmm... Looks kind of like a Version 7 system, but we'll see...

Congratulations. You aren't running Eunice.

It's not Xenix...

Nor is it Venix...

Checking for GNU cc in disguise and/or its version number...
You are using GNU cc 4.4.5.

Hmm... Doesn't look like a MIPS system.

Now, how can we feed standard input to your C preprocessor...
You used to use cc -E - so we'll use that again.
(And we'll use cc -E - to preprocess directly.)

Some systems have incompatible or broken versions of libraries. Among
the directories listed in the question below, please remove any you
know not to be holding relevant libraries, and add any that are needed.
Say "none" for none.

Directories to use for library searches?
[/usr/local/lib /opt/local/lib /lib/../lib /usr/lib/../lib /lib /usr/lib]

On some systems, shared libraries may be available. Answer 'none' if
you want to suppress searching of shared libraries for the remainder
of this configuration.

What is the file extension used for shared libraries? [so]

Perl can be built to use the SOCKS proxy protocol library. To do so,
Configure must be run with -Dusesocks. If you use SOCKS you also need
to use the PerlIO abstraction layer, this will be implicitly selected.

If this doesn't make any sense to you, just accept the default 'n'.
Build Perl for SOCKS? [n]

Perl can be built to take advantage of long doubles which
(if available) may give more accuracy and range for floating point numbers.

If this doesn't make any sense to you, just accept the default 'n'.
Try to use long doubles if available? [n]

Checking for optional libraries...
No -lsfio.
No -lsocket.
No -linet.
Found -lnsl (shared).
No -lnm.
No -lndbm.
No -lgdbm.
No -ldbm.
No -ldb.
No -lmalloc.
Found -ldl (shared).
No -ldld.
No -lld.
No -lsun.
Found -lm (shared).
Found -lcrypt (shared).
No -lsec.
Found -lutil (shared).
Found -lc (shared).
No -lcposix.
No -lposix.
No -lucb.
No -lBSD.
No -lgdbm_compat.

In order to compile perl5 on your machine, a number of libraries
are usually needed. Include any other special libraries here as well.
Say "none" for none. The default list is almost always right.

What libraries to use? [-lnsl -ldl -lm -lcrypt -lutil -lc]

By default, perl5 compiles with the -O flag to use the optimizer.
Alternately, you might want to use the symbolic debugger, which uses
the -g flag (on traditional Unix systems). Either flag can be
specified here. To use neither flag, specify the word "none".

What optimizer/debugger flag should be used? [-O1]

Your C compiler may want other flags. For this question you should include
-I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
but you should NOT include libraries or ld flags like -lwhatever. If you
want perl5 to honor its debug switch, you should include -DDEBUGGING here.
Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.

To use no flags, specify the word "none".

Any additional cc flags?
[-fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include
-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64]

Let me guess what the preprocessor flags are...
They appear to be​: -fno-strict-aliasing -pipe -fstack-protector
-I/usr/local/include -fno-strict-aliasing -pipe -fstack-protector
-I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64

Your C linker may need flags. For this question you should
include -L/whatever and any other flags used by the C linker, but you
should NOT include libraries like -lwhatever.

Make sure you include the appropriate -L/path flags if your C linker
does not normally search all of the directories you specified above,
namely
  /usr/local/lib /opt/local/lib /lib/../lib /usr/lib/../lib /lib /usr/lib
To use no flags, specify the word "none".

Any additional ld flags (NOT including libraries)?
[ -fstack-protector -L/usr/local/lib -L/opt/local/lib]

Checking your choice of C compiler and flags for coherency...
OK, that should do.

Computing filename position in cpp output for #include directives...
Your cpp writes the filename in the third field of the line.

<stdlib.h> found.

Checking to see if you have long long...
You have long long.

<inttypes.h> found.

Checking to see if you have int64_t...
You have int64_t.

Checking which 64-bit integer type we could use...
We could use 'long long' for 64-bit integers.

Perl can be built to take advantage of 64-bit integer types
on some systems. To do so, Configure can be run with -Duse64bitint.
Choosing this option will most probably introduce binary incompatibilities.

If this doesn't make any sense to you, just accept the default 'n'.
(The default has been chosen based on your configuration.)
Try to use 64-bit integers, if available? [n]

You may also choose to try maximal 64-bitness. It means using as much
64-bitness as possible on the platform. This in turn means even more
binary incompatibilities. On the other hand, your platform may not
have any more 64-bitness available than what you already have chosen.

If this doesn't make any sense to you, just accept the default 'n'.
(The default has been chosen based on your configuration.)
Try to use maximal 64-bit support, if available? [n]

Checking to see if you have long double...
You have long double.

What is your architecture name [ppc-linux]

Pathname where the public executables will reside? (~name ok)
[/usr/local/bin]

Would you like to build Perl so that the installation is relocatable, so
that
library paths in @​INC are determined relative to the path of the perl
binary?
This is not advised for system Perl installs, or if you need to run setid
scripts or scripts under taint mode.

If this doesn't make any sense to you, just accept the default 'n'.
Use relocatable @​INC? [n]

There are some auxiliary files for perl5 that need to be put into a
private library directory that is accessible by everyone.

Pathname where the private library files will reside? (~name ok)
[/usr/local/lib/perl5/5.17.8]

Perl5 contains architecture-dependent library files. If you are
sharing libraries in a heterogeneous environment, you might store
these files in a separate location. Otherwise, you can just include
them with the rest of the public library files.

Where do you want to put the public architecture-dependent libraries?
(~name ok)
[/usr/local/lib/perl5/5.17.8/ppc-linux]

Some kernels have a bug that prevents setuid #! scripts from being
secure. Some sites have disabled setuid #! scripts because of this.

First let's decide if your kernel supports secure setuid #! scripts.
(If setuid #! scripts would be secure but have been disabled anyway,
don't say that they are secure if asked.)

If you are not sure if they are secure, I can check but I'll need a
username and password different from the one you are using right now.
If you don't have such a username or don't want me to test, simply
enter 'none'.

Other username to test security of setuid scripts with? [none]
Well, the previous value is *not* secure.
Does your kernel have *secure* setuid scripts? [n]
Looking for a previously installed perl5.005 or later...
Using /usr/bin/perl.

After perl5 is installed, you may wish to install various
add-on modules and utilities. Typically, these add-ons will
be installed under /usr/local with the rest
of this package. However, you may wish to install such add-ons
elsewhere under a different prefix.

If you do not wish to put everything under a single prefix, that's
ok. You will be prompted for the individual locations; this siteprefix
is only used to suggest the defaults.

The default should be fine for most people.

Installation prefix to use for add-on modules and utilities? (~name ok)
[/usr/local]

The installation process will create a directory for
site-specific extensions and modules. Most users find it convenient
to place all site-specific files in this directory rather than in the
main distribution directory.

Pathname for the site-specific library files? (~name ok)
[/usr/local/lib/perl5/site_perl/5.17.8]

In order to ease the process of upgrading, this version of perl
can be configured to use modules built and installed with earlier
versions of perl that were installed under /usr/local. Specify here
the list of earlier versions that this version of perl should check.
If Configure detected no earlier versions of perl installed under
/usr/local, then the list will be empty. Answer 'none' to tell perl
to not search earlier versions.

The default should almost always be sensible, so if you're not sure,
just accept the default.
List of earlier versions to include in @​INC? [none]

<malloc/malloc.h> NOT found.

<malloc.h> found.

Checking to see how well your C compiler groks the void type...

Do you wish to wrap malloc calls to protect against potential overflows?
[y]

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.

The installation process will also create a directory for
architecture-dependent site-specific extensions and modules.

Pathname for the site-specific architecture-dependent library files?
(~name ok)
[/usr/local/lib/perl5/site_perl/5.17.8/ppc-linux]

The installation process will also create a directory for
vendor-supplied add-ons. Vendors who supply perl with their system
may find it convenient to place all vendor-supplied files in this
directory rather than in the main distribution directory. This will
ease upgrades between binary-compatible maintenance versions of perl.

Of course you may also use these directories in whatever way you see
fit. For example, you might use them to access modules shared over a
company-wide network.

The default answer should be fine for most people.
This causes further questions about vendor add-ons to be skipped
and no vendor-specific directories will be configured for perl.

Do you want to configure vendor-specific add-on directories? [n]

Lastly, you can have perl look in other directories for extensions and
modules in addition to those already specified.
These directories will be searched after
  /usr/local/lib/perl5/site_perl/5.17.8/ppc-linux
  /usr/local/lib/perl5/site_perl/5.17.8

Enter a colon-separated set of extra paths to include in perl's @​INC
search path, or enter 'none' for no extra paths.

Colon-separated list of additional directories for perl to search? [none]

Checking out function prototypes...
Your C compiler appears to support function prototypes.

Perl can be built to support DTrace on platforms that support it.
DTrace is a diagnosis and performance analysis tool from Sun.

If this doesn't make any sense to you, just accept the default 'none'.
Support DTrace if available? [y]

*** WHOA THERE!!! ***
  The previous value for $usedtrace on this machine was "undef"!
  Keep the previous value? [y]

Perl can be built with extra modules or bundles of modules which
will be fetched from the CPAN and installed alongside Perl.

Notice that you will need access to the CPAN; either via the Internet,
or a local copy, for example a CD-ROM or a local CPAN mirror. (You will
be asked later to configure the CPAN.pm module which will in turn do
the installation of the rest of the extra modules or bundles.)

Notice also that if the modules require any external software such as
libraries and headers (the libz library and the zlib.h header for the
Compress​::Zlib module, for example) you MUST have any such software
already installed, this configuration process will NOT install such
things for you.

If this doesn't make any sense to you, just accept the default 'n'.
Install any extra modules (y or n)? [n]

If you wish to install html files for programs in Perl5, indicate
the appropriate directory here. To skip installing html files,
answer "none".
Directory for the main Perl5 html pages? (~name ok) [none]

If you wish to install html files for modules associated with Perl5,
indicate the appropriate directory here. To skip installing html files,
answer "none".
Directory for the Perl5 module html pages? (~name ok) [ ]
(That expands to on this system.)

Many scripts expect perl to be installed as /usr/bin/perl.

If you want to, I can install the perl you are about to compile
as /usr/bin/perl (in addition to /usr/local/bin/perl).

However, please note that because you already have a /usr/bin/perl,
overwriting that with a new Perl would very probably cause problems.
Therefore I'm assuming you don't want to do that (unless you insist).

Do you want to install perl as /usr/bin/perl? [n]

Checking for GNU C Library...
You are using the GNU C Library version 2.11.3

I can use /usr/bin/nm to extract the symbols from your C libraries. This
is a time consuming task which may generate huge output on the disk (up
to 3 megabytes) but that should make the symbols extraction faster. The
alternative is to skip the 'nm' extraction part and to compile a small
test program instead to determine whether each symbol is present. If
you have a fast C compiler and/or if your 'nm' output cannot be parsed,
this may be the best solution.

You probably shouldn't let me use 'nm' if you are using the GNU C Library.

Shall I use /usr/bin/nm to extract C symbols from the libraries? [n]

<dld.h> NOT found.

Checking for C++...
You are not using a C++ compiler.

dlopen() found.

<unistd.h> found.

Do you wish to use dynamic loading? [y]
The following dynamic loading files are available​:
ext/DynaLoader/dl_aix.xs ext/DynaLoader/dl_next.xs
ext/DynaLoader/dl_dld.xs ext/DynaLoader/dl_none.xs
ext/DynaLoader/dl_dllload.xs ext/DynaLoader/dl_symbian.xs
ext/DynaLoader/dl_dlopen.xs ext/DynaLoader/dl_vms.xs
ext/DynaLoader/dl_dyld.xs ext/DynaLoader/dl_win32.xs
ext/DynaLoader/dl_hpux.xs
Source file to use for dynamic loading [ext/DynaLoader/dl_dlopen.xs]

Some systems may require passing special flags to cc -c to
compile modules that will be used to create a shared library.
To use no flags, say "none".

Any special flags to pass to cc -c to compile shared library modules?
[-fPIC]

Some systems use ld to create libraries that can be dynamically loaded,
while other systems (such as those using ELF) use cc.

What command should be used to create dynamic libraries? [cc]

Some systems may require passing special flags to cc to create a
library that can be dynamically loaded. If your ld flags include
-L/other/path options to locate libraries outside your loader's normal
search path, you may need to specify those -L options here as well. To
use no flags, say "none".

Any special flags to pass to cc to create a dynamically loaded library?
[-shared -O1 -L/usr/local/lib -L/opt/local/lib -fstack-protector]

Some systems may require passing special flags to cc to indicate that
the resulting executable will use dynamic linking. To use no flags,
say "none".

Any special flags to pass to cc to use dynamic linking? [-Wl,-E]
ld supports scripting

The perl executable is normally obtained by linking perlmain.c with
libperl.a, any static extensions (usually just DynaLoader), and
any other libraries needed on this system (such as -lm, etc.). Since
your system supports dynamic loading, it is probably possible to build
a shared libperl.so. If you will have more than one executable linked
to libperl.so, this will significantly reduce the size of each
executable, but it may have a noticeable effect on performance. The
default is probably sensible for your system.

Build a shared libperl.so (y/n) [n]

System manual is in /usr/share/man/man1.

Perl5 has manual pages available in source form.
If you don't want the manual sources installed, answer 'none'.

Where do the main Perl5 manual pages (source) go? (~name ok)
[/usr/local/man/man1]
What suffix should be used for the main Perl5 man pages? [1]

You can have filenames longer than 14 characters.

Perl5 has manual pages for many of the library modules.
If you don't want the manual sources installed, answer 'none'.

Where do the perl5 library man pages (source) go? (~name ok)
[/usr/local/man/man3]
What suffix should be used for the perl5 library man pages? [3]

Figuring out host name...
Your host name appears to be "mybookliveduo". Right? [y]

What is your domain name? [.maischein-int.de]

I need to get your e-mail address in Internet format if possible, i.e.
something like user@​host.domain. Please answer accurately since I have
no easy means to double check it. The default value provided below
is most probably close to reality but may not be valid from outside
your organization...

What is your e-mail address? [root@​mybookliveduo.maischein-int.de]

If you or somebody else will be maintaining perl at your site, please
fill in the correct e-mail address here so that they may be contacted
if necessary. Currently, the "perlbug" program included with perl
will send mail to this address in addition to perlbug@​perl.org. You may
enter "none" for no administrator.

Perl administrator e-mail address [root@​mybookliveduo.maischein-int.de]

Do you want to install only the version-specific parts of the perl
distribution? Usually you do *not* want to do this.
Do you want to install only the version-specific parts of perl? [y]
I'll use #!/usr/local/bin/perl5.17.8 to start perl scripts.

Some installations have a separate directory just for executable scripts so
that they can mount it across multiple architectures but keep the scripts in
one spot. You might, for example, have a subdirectory of /usr/share for
this.
Or you might just lump your scripts in with all your other executables.

Where do you keep publicly executable scripts? (~name ok) [/usr/local/bin]
Pathname where the add-on public executables should be installed? (~name ok)
[/usr/local/bin]
Pathname where the site-specific html pages should be installed? (~name ok)
[none]
Pathname where the site-specific library html pages should be installed?
(~name ok)
[none]
Pathname where the site-specific manual pages should be installed?
(~name ok)
[/usr/local/man/man1]
Pathname where the site-specific library manual pages should be
installed? (~name ok)
[/usr/local/man/man3]
Pathname where add-on public executable scripts should be installed?
(~name ok)
[/usr/local/bin]

Perl can be built to use 'fast stdio', which means using the stdio
library but also directly manipulating the stdio buffers to enable
faster I/O. Using stdio is better for backward compatibility (especially
for Perl extensions), but on the other hand since Perl 5.8 the 'perlio'
interface has been preferred instead of stdio.

If this doesn't make any sense to you, just accept the default 'n'.
Use the "fast stdio" if available? [n]

Checking to see how big your file offsets are...
Your file offsets are 8 bytes long.

Checking the size of fpos_t...
Your fpos_t is 16 bytes long.

Perl can be built to understand large files (files larger than 2 gigabytes)
on some systems. To do so, Configure can be run with -Duselargefiles.

If this doesn't make any sense to you, just accept the default 'y'.
Try to understand large files, if available? [y]

Using <string.h> instead of <strings.h>.

qgcvt() found.

Checking how to print long doubles...

fwalk() NOT found.

access() found.

<sys/file.h> defines the *_OK access constants.

accessx() NOT found.

aintl() NOT found.

alarm() found.

ctime64() NOT found.

localtime64() NOT found.

gmtime64() NOT found.

mktime64() NOT found.

difftime64() NOT found.

asctime64() NOT found.

<pthread.h> found.

<sys/types.h> found.

<sys/select.h> found.

Checking to see if your struct tm has tm_zone field...
Yes, it does.

Checking to see if your struct tm has tm_gmtoff field...
Yes, it does.

asctime_r() found.

*** WHOA THERE!!! ***
  The previous value for $d_asctime_r on this machine was "undef"!
  Keep the previous value? [y]

atolf() NOT found.

atoll() found.

bcmp() found.

bcopy() found.

getpgrp() found.

Checking to see which flavor of getpgrp is in use...
You have to use getpgrp() instead of getpgrp(pid).

setpgrp() found.

Checking to see which flavor of setpgrp is in use...
You have to use setpgrp() instead of setpgrp(pid,pgrp).

bzero() found.

<stdarg.h> found.

<varargs.h> found.

We'll include <stdarg.h> to get va_dcl definition.
You have <stdarg.h> and <stdlib.h>, so checking for C99 variadic macros.
You have C99 variadic macros.

You have void (*signal())().

Checking whether your C compiler can cast large floats to int32.
Yup, it can.

Checking whether your C compiler can cast negative float to unsigned.
Yup, it can.

vprintf() found.
Your vsprintf() returns (int).

chown() found.

chroot() found.

chsize() NOT found.

class() NOT found.

clearenv() found.

Hmm... Looks like you have Berkeley networking support.

socketpair() found.

Checking the availability sa_len in the sock struct ...

Checking the availability struct sockaddr_in6 ...

Checking the availability sin6_scope_id in struct sockaddr_in6 ...

Checking the availability struct ip_mreq ...

Checking the availability struct ip_mreq_source ...

Checking the availability struct ipv6_mreq ...

Checking the availability struct ipv6_mreq_source ...

Checking the availability of certain socket constants...

<sys/uio.h> found.

Checking to see if your system supports struct cmsghdr...
Yes, it does.

Checking to see if your C compiler knows about "const"...
Yup, it does.

copysignl() found.

crypt() found.

<crypt.h> found.

crypt_r() found.

*** WHOA THERE!!! ***
  The previous value for $d_crypt_r on this machine was "undef"!
  Keep the previous value? [y]

ctermid() found.

ctermid_r() NOT found.

ctime_r() found.

*** WHOA THERE!!! ***
  The previous value for $d_ctime_r on this machine was "undef"!
  Keep the previous value? [y]

cuserid() found.

<limits.h> found.

<float.h> found.

DBL_DIG found.

dbmclose() NOT found.
We won't be including <dbm.h>

dbminit() prototype NOT found.

difftime() found.

<dirent.h> found.

Your directory entries are struct dirent.

Your directory entry does not know about the d_namlen field.
Checking to see if DIR has a dd_fd member variable
No, it does not.

<sys/dir.h> found.

<sys/ndir.h> NOT found.

dirfd() found.

dlerror() found.

<dlfcn.h> found.

On a few systems, the dynamically loaded modules that perl generates and
uses
will need a different extension than shared libs. The default will probably
be appropriate.

What is the extension of dynamically loaded modules [so]

Checking whether your dlsym() needs a leading underscore ...
dlsym doesn't need a leading underscore.

drand48_r() found.

*** WHOA THERE!!! ***
  The previous value for $d_drand48_r on this machine was "undef"!
  Keep the previous value? [y]

drand48() prototype found.

dup2() found.

eaccess() found.

endgrent() found.

<grp.h> found.

endgrent_r() NOT found.

endhostent() found.

<netdb.h> found.

endhostent_r() NOT found.

endnetent() found.

endnetent_r() NOT found.

endprotoent() found.

endprotoent_r() NOT found.

endpwent() found.

<pwd.h> found.

endpwent_r() NOT found.

endservent() found.

endservent_r() NOT found.

<sys/file.h> defines the O_* constants...
and you have the 3 argument form of open().

<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>.

fork() found.

pipe() found.

Figuring out the flag used by open() for non-blocking I/O...
Using previous value O_NONBLOCK.

Let's see what value errno gets from read() on a O_NONBLOCK file...
Using previous value EAGAIN.
Your read() returns -1 when no data is present.
And you can see EOF because read() returns 0.

(Looks like you have stdio.h from Linux.)
Checking how std your stdio is...
Your stdio acts pretty std.
Checking to see what happens if we set the stdio ptr...
Increasing ptr in your stdio decreases cnt by the same amount. Good.
And its _base field acts std.
You seem to have 'fast stdio' to directly manipulate the stdio buffers.

fchdir() found.

fchmod() found.

fchown() found.

fcntl() found.

Checking if fcntl-based file locking works...
Yes, it seems to work.

Checking to see how well your C compiler handles fd_set and friends ...
Hmm, your compiler has some difficulty with fd_set. Checking further...
Well, your system has some sort of fd_set available...
and you have the normal fd_set macros.

fgetpos() found.

finite() found.

finitel() found.

flock() found.

flock() prototype found.

fp_class() NOT found.

pathconf() found.

fpathconf() found.

fpclass() NOT found.

fpclassify() NOT found.

fpclassl() NOT found.

Checking to see if you have fpos64_t...
You do not have fpos64_t.

frexpl() found.

<sys/param.h> found.

<sys/mount.h> found.

Checking to see if your system supports struct fs_data...
No, it doesn't.

fseeko() found.

fsetpos() found.

fstatfs() found.

statvfs() found.

fstatvfs() found.

fsync() found.

ftello() found.

Checking if you have a working futimes()
Yes, you have

<ndbm.h> NOT found.

<gdbm/ndbm.h> NOT found.

<gdbm-ndbm.h> NOT found.

getaddrinfo() found.

getcwd() found.

getespwnam() NOT found.

getfsstat() NOT found.

getgrent() found.

getgrent_r() found.

*** WHOA THERE!!! ***
  The previous value for $d_getgrent_r on this machine was "undef"!
  Keep the previous value? [y]

getgrgid_r() found.

*** WHOA THERE!!! ***
  The previous value for $d_getgrgid_r on this machine was "undef"!
  Keep the previous value? [y]

getgrnam_r() found.

*** WHOA THERE!!! ***
  The previous value for $d_getgrnam_r on this machine was "undef"!
  Keep the previous value? [y]

gethostbyaddr() found.

gethostbyname() found.

gethostent() found.

gethostname() found.
uname() found.

Every now and then someone has a gethostname() that lies about the hostname
but can't be fixed for political or economic reasons. If you wish, I can
pretend gethostname() isn't there and maybe compute hostname at run-time
thanks to the 'hostname' command.

Shall I ignore gethostname() from now on? [n]

gethostbyaddr_r() found.

*** WHOA THERE!!! ***
  The previous value for $d_gethostbyaddr_r on this machine was "undef"!
  Keep the previous value? [y]

gethostbyname_r() found.

*** WHOA THERE!!! ***
  The previous value for $d_gethostbyname_r on this machine was "undef"!
  Keep the previous value? [y]

gethostent_r() found.

*** WHOA THERE!!! ***
  The previous value for $d_gethostent_r on this machine was "undef"!
  Keep the previous value? [y]

gethostent() prototype found.

getitimer() found.

getlogin() found.

getlogin_r() found.

*** WHOA THERE!!! ***
  The previous value for $d_getlogin_r on this machine was "undef"!
  Keep the previous value? [y]

getmnt() NOT found.

getmntent() found.

getnameinfo() found.

getnetbyaddr() found.

getnetbyname() found.

getnetent() found.

getnetbyaddr_r() found.

*** WHOA THERE!!! ***
  The previous value for $d_getnetbyaddr_r on this machine was "undef"!
  Keep the previous value? [y]

getnetbyname_r() found.

*** WHOA THERE!!! ***
  The previous value for $d_getnetbyname_r on this machine was "undef"!
  Keep the previous value? [y]

getnetent_r() found.

*** WHOA THERE!!! ***
  The previous value for $d_getnetent_r on this machine was "undef"!
  Keep the previous value? [y]

getnetent() prototype found.

getpagesize() found.

getprotobyname() found.

getprotobynumber() found.

getprotoent() found.

getpgid() found.

getpgrp2() NOT found.

getppid() found.

getpriority() found.

getprotobyname_r() found.

*** WHOA THERE!!! ***
  The previous value for $d_getprotobyname_r on this machine was "undef"!
  Keep the previous value? [y]

getprotobynumber_r() found.

*** WHOA THERE!!! ***
  The previous value for $d_getprotobynumber_r on this machine was
"undef"!
  Keep the previous value? [y]

getprotoent_r() found.

*** WHOA THERE!!! ***
  The previous value for $d_getprotoent_r on this machine was "undef"!
  Keep the previous value? [y]

getprotoent() prototype found.

getprpwnam() NOT found.

getpwent() found.

getpwent_r() found.

*** WHOA THERE!!! ***
  The previous value for $d_getpwent_r on this machine was "undef"!
  Keep the previous value? [y]

getpwnam_r() found.

*** WHOA THERE!!! ***
  The previous value for $d_getpwnam_r on this machine was "undef"!
  Keep the previous value? [y]

getpwuid_r() found.

*** WHOA THERE!!! ***
  The previous value for $d_getpwuid_r on this machine was "undef"!
  Keep the previous value? [y]

getservbyname() found.

getservbyport() found.

getservent() found.

getservbyname_r() found.

*** WHOA THERE!!! ***
  The previous value for $d_getservbyname_r on this machine was "undef"!
  Keep the previous value? [y]

getservbyport_r() found.

*** WHOA THERE!!! ***
  The previous value for $d_getservbyport_r on this machine was "undef"!
  Keep the previous value? [y]

getservent_r() found.

*** WHOA THERE!!! ***
  The previous value for $d_getservent_r on this machine was "undef"!
  Keep the previous value? [y]

getservent() prototype found.

getspnam() found.

<shadow.h> found.

getspnam_r() found.

*** WHOA THERE!!! ***
  The previous value for $d_getspnam_r on this machine was "undef"!
  Keep the previous value? [y]

gettimeofday() found.

gmtime_r() found.

*** WHOA THERE!!! ***
  The previous value for $d_gmtime_r on this machine was "undef"!
  Keep the previous value? [y]

hasmntopt() found.

<netinet/in.h> found.

<arpa/inet.h> found.

htonl() found.

ilogbl() found.

strchr() found.

inet_aton() found.

inet_ntop() found.

inet_pton() found.

isascii() found.

isblank() found.

isfinite() NOT found.

isinf() found.

isnan() found.

isnanl() found.

killpg() found.

lchown() found.

LDBL_DIG found.

<math.h> found.

Checking to see if your libm supports _LIB_VERSION...
Yes, it does (2)

link() found.

localtime_r() found.

*** WHOA THERE!!! ***
  The previous value for $d_localtime_r on this machine was "undef"!
  Keep the previous value? [y]

localeconv() found.

lockf() found.

lseek() prototype found.

lstat() found.

madvise() found.

malloc_size() NOT found.

malloc_good_size() NOT 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 *).

sqrtl() found.

scalbnl() found.

modfl() found.

modfl() prototype found.
Checking to see whether your modfl() is okay for large values...
Your modfl() seems okay for large values.

mprotect() found.

msgctl() found.

msgget() found.

msgsnd() found.

msgrcv() found.

You have the full msg*(2) library.

Checking to see if your system supports struct msghdr...
Yes, it does.

msync() found.

munmap() found.

nice() found.

<langinfo.h> found.

nl_langinfo() found.

Checking to see if your C compiler knows about "volatile"...
Yup, it does.

Choosing the C types to be used for Perl's internal types...
(IV will be long, 4 bytes)
(UV will be unsigned long, 4 bytes)
(NV will be double, 8 bytes)
Checking how many bits of your UVs your NVs can preserve...
Your NVs can preserve all 32 bits of your UVs.
Checking to find the largest integer value your NVs can hold...
The largest integer your NVs can preserve is equal to
256.0*256.0*256.0*256.0*256.0*256.0*2.0*2.0*2.0*2.0*2.0
Checking whether NV 0.0 is all bits zero in memory...
0.0 is represented as all bits zero in memory

Checking to see if you have off64_t...
You do not have off64_t.
(Your off_t is 64 bits, so you could use that.)

pause() found.

poll() found.

prctl() found.
Your prctl (PR_SET_NAME, ...) works

readlink() found.

You have Linux-like /proc/self/exe.

vfork() found.

Perl can only use a vfork() that doesn't suffer from strict
restrictions on calling functions or modifying global data in
the child. For example, glibc-2.1 contains such a vfork()
that is unsuitable. If your system provides a proper fork()
call, chances are that you do NOT want perl to use vfork().

Do you still want to use vfork()? [n]
Ok, we won't use vfork().

pthread_attr_setscope() found.

random_r() found.

*** WHOA THERE!!! ***
  The previous value for $d_random_r on this machine was "undef"!
  Keep the previous value? [y]

readdir() found.

seekdir() found.

telldir() found.

rewinddir() found.

readdir64_r() found.

*** WHOA THERE!!! ***
  The previous value for $d_readdir64_r on this machine was "undef"!
  Keep the previous value? [y]

readdir_r() found.

*** WHOA THERE!!! ***
  The previous value for $d_readdir_r on this machine was "undef"!
  Keep the previous value? [y]

readv() found.

recvmsg() found.

rename() found.

rmdir() found.

<memory.h> found.

We won't be including <memory.h>.

I'll use memmove() instead of bcopy() for overlapping copies.

I'll use memmove() instead of memcpy() for overlapping copies.

Checking if your memcmp() can compare relative magnitude...
Yes, it can.

sbrk() prototype found.

select() found.

semctl() found.

semget() found.

semop() found.

You have the full sem*(2) library.

You do not have union semun in <sys/sem.h>.

You can use union semun for semctl IPC_STAT.
You cannot use struct semid_ds* for semctl IPC_STAT.

sendmsg() found.

setegid() found.

seteuid() found.

setgrent() found.

setgrent_r() NOT found.

sethostent() found.

sethostent_r() NOT found.

setitimer() found.

setlinebuf() found.

setlocale() found.

<locale.h> found.

setlocale_r() NOT found.

setnetent() found.

setnetent_r() NOT found.

setprotoent() found.

setpgid() found.

setpgrp2() NOT found.

setpriority() found.

setproctitle() NOT found.

setprotoent_r() NOT found.

setpwent() found.

setpwent_r() NOT found.

setregid() found.

setresgid() found.

setreuid() found.

setresuid() found.

setrgid() NOT found.

setruid() NOT found.

setservent() found.

setservent_r() NOT found.

setsid() found.

setvbuf() found.

<sfio.h> NOT found.

shmctl() found.

shmget() found.

shmat() found.
and it returns (void *).

shmdt() found.

You have the full shm*(2) library.

sigaction() found.

<sunmath.h> NOT found.
Checking to see if you have signbit() available to work on double... Yes.

sigprocmask() found.

POSIX sigsetjmp found.

snprintf() found.

vsnprintf() found.
Checking whether your snprintf() and vsnprintf() work okay...
Your snprintf() and vsnprintf() seem to be working okay.

sockatmark() found.

sockatmark() prototype found.

socks5_init() NOT found.
Checking whether sprintf returns the length of the string...
sprintf returns the length of the string (as ANSI says it should)

srand48_r() found.

*** WHOA THERE!!! ***
  The previous value for $d_srand48_r on this machine was "undef"!
  Keep the previous value? [y]

srandom_r() found.

*** WHOA THERE!!! ***
  The previous value for $d_srandom_r on this machine was "undef"!
  Keep the previous value? [y]

setresgid() prototype NOT found.

setresuid() prototype NOT found.

<sys/stat.h> found.

Checking to see if your struct stat has st_blocks field...

<sys/vfs.h> found.

<sys/statfs.h> found.

Checking to see if your system supports struct statfs...
Yes, it does.

Checking to see if your struct statfs has f_flags field...
Yes, it does.

Checking to see if your system supports static inline...
Keeping your previous value of static __inline__.
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...
Yup, it can.

strerror_r() found.

*** WHOA THERE!!! ***
  The previous value for $d_strerror_r on this machine was "undef"!
  Keep the previous value? [y]

strftime() found.

strlcat() NOT found.

strlcpy() NOT found.

strtod() found.

strtol() found.

strtold() found.

strtoll() found.
Checking whether your strtoll() works okay...
Your strtoll() seems to be working okay.

strtoq() found.

strtoul() found.
Checking whether your strtoul() works okay...
Your strtoul() seems to be working okay.

strtoull() found.
Checking whether your strtoull() works okay...
Your strtoull() seems to be working okay.

strtouq() found.
Checking whether your strtouq() works okay...
Your strtouq() seems to be working okay.

strxfrm() found.

symlink() found.

syscall() found.

syscall() prototype found.

sysconf() found.

system() found.

tcgetpgrp() found.

tcsetpgrp() found.

telldir() prototype found.

timegm() found.

<sys/times.h> found.

times() found.

tmpnam_r() found.

*** WHOA THERE!!! ***
  The previous value for $d_tmpnam_r on this machine was "undef"!
  Keep the previous value? [y]

truncate() found.

ttyname_r() found.

*** WHOA THERE!!! ***
  The previous value for $d_ttyname_r on this machine was "undef"!
  Keep the previous value? [y]

tzname[] found.

Checking to see whether you can access character data unalignedly...

ualarm() found.

umask() found.

unordered() NOT found.

unsetenv() found.

usleep() found.

usleep() prototype found.

ustat() found.

closedir() found.

Checking whether closedir() returns a status...
Yes, it does.

wait4() found.

waitpid() found.

wcstombs() found.

wctomb() found.

writev() found.

Doubles must be aligned on a how-many-byte boundary? [8]
What is the length of a character (in bits)? [8]

Checking to see how your cpp does stuff like concatenate tokens...
Oh! Smells like ANSI's been here.
We can catify or stringify, separately or together!

<db.h> NOT found.

Looking for a random number function...
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 UTF-8.

Checking how to flush all pending stdio output...

Looking for the type for group ids returned by getgid().
gid_t found.

Checking the size of gid_t...
Your gid_t is 4 bytes long.

Checking the sign of gid_t...
Your gid_t is unsigned.

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 of pointer is the second argument to getgroups() and setgroups()?
Usually this is the same as group ids, gid_t, but not always.

What type pointer is the second argument to getgroups() and setgroups()?
[gid_t]

Would you like to build with Misc Attribute Decoration? This is development
work leading to a Perl 5 to Perl 6 convertor, which imposes a space and
speed
overhead on the interpreter.

If this doesn't make any sense to you, just accept the default 'n'.
Build Perl with MAD? [n]

Checking if your /usr/bin/make program sets $(MAKE)...
Yup, it does.

It seems that va_copy() or similar will be needed.

What pager is used on your system? [/usr/bin/less -R]

Checking how to generate random libraries on your machine...
/usr/bin/ar appears to generate random libraries itself.

<values.h> found.
Checking max offsets that gmtime () accepts
Checking max offsets that localtime () accepts

Generating a list of signal names and numbers...
The following 65 signals are available​:

SIGZERO SIGHUP SIGINT SIGQUIT SIGILL SIGTRAP SIGABRT SIGBUS SIGFPE
SIGKILL SIGUSR1 SIGSEGV SIGUSR2 SIGPIPE SIGALRM SIGTERM SIGSTKFLT
SIGCHLD SIGCONT SIGSTOP SIGTSTP SIGTTIN SIGTTOU SIGURG SIGXCPU
SIGXFSZ SIGVTALRM SIGPROF SIGWINCH SIGIO SIGPWR SIGSYS SIGNUM32
SIGNUM33 SIGRTMIN SIGNUM35 SIGNUM36 SIGNUM37 SIGNUM38 SIGNUM39
SIGNUM40 SIGNUM41 SIGNUM42 SIGNUM43 SIGNUM44 SIGNUM45 SIGNUM46
SIGNUM47 SIGNUM48 SIGNUM49 SIGNUM50 SIGNUM51 SIGNUM52 SIGNUM53
SIGNUM54 SIGNUM55 SIGNUM56 SIGNUM57 SIGNUM58 SIGNUM59 SIGNUM60
SIGNUM61 SIGNUM62 SIGNUM63 SIGRTMAX SIGIOT SIGCLD SIGPOLL SIGUNUSED

Checking the size of size_t...
Your size_t size is 4 bytes.

Checking to see if you have socklen_t...
You have socklen_t.

<socks.h> NOT found.

Checking to see what type is the last argument of accept().

I'll be using ssize_t for functions returning a byte count.

Checking the size of st_ino...
Your st_ino is 8 bytes long.

Checking the sign of st_ino...
Your st_ino is unsigned.

Your stdio uses signed chars.

Looking for the type for user ids returned by getuid().
uid_t found.

Checking the size of uid_t...
Your uid_t is 4 bytes long.

Checking the sign of uid_t...
Your uid_t is unsigned.

Checking the format string to be used for uids...

Determining whether we can use sysctl with KERN_PROC_PATHNAME to find
executing program...
I'm unable to compile the test program.
I'll assume no sysctl with KERN_PROC_PATHNAME here.

Determining whether we can use _NSGetExecutablePath to find executing
program...
I'm unable to compile the test program.
I'll assume no _NSGetExecutablePath here.

It appears we'll be able to prototype varargs functions.

Which compiler compiler (yacc) shall I use? [yacc]

<assert.h> found.

<fp.h> NOT found.

<fp_class.h> NOT found.

<gdbm.h> NOT found.

<libutil.h> NOT found.

<mntent.h> 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...
Your C compiler and pre-processor define these symbols​:
__gnu_linux__
__linux
__linux__
__unix
__unix__
linux
unix

Your C pre-processor also defines the following symbols​:
PPC
_ARCH_PPC
_BIG_ENDIAN
_CALL_SYSV
_FILE_OFFSET_BITS
_LARGEFILE_SOURCE
_POSIX_C_SOURCE
_POSIX_SOURCE
__BIGGEST_ALIGNMENT__
__BIG_ENDIAN__
__CHAR16_TYPE__
__CHAR32_TYPE__
__CHAR_BIT__
__CHAR_UNSIGNED__
__DBL_DENORM_MIN__
__DBL_DIG__
__DBL_EPSILON__
__DBL_HAS_DENORM__
__DBL_HAS_INFINITY__
__DBL_HAS_QUIET_NAN__
__DBL_MANT_DIG__
__DBL_MAX_10_EXP__
__DBL_MAX_EXP__
__DBL_MAX__
__DBL_MIN_10_EXP__
__DBL_MIN_EXP__
__DBL_MIN__
__DEC128_EPSILON__
__DEC128_MANT_DIG__
__DEC128_MAX_EXP__
__DEC128_MAX__
__DEC128_MIN_EXP__
__DEC128_MIN__
__DEC128_SUBNORMAL_MIN__
__DEC32_EPSILON__
__DEC32_MANT_DIG__
__DEC32_MAX_EXP__
__DEC32_MAX__
__DEC32_MIN_EXP__
__DEC32_MIN__
__DEC32_SUBNORMAL_MIN__
__DEC64_EPSILON__
__DEC64_MANT_DIG__
__DEC64_MAX_EXP__
__DEC64_MAX__
__DEC64_MIN_EXP__
__DEC64_MIN__
__DEC64_SUBNORMAL_MIN__
__DECIMAL_DIG__
__DEC_EVAL_METHOD__
__ELF__
__FINITE_MATH_ONLY__
__FLT_DENORM_MIN__
__FLT_DIG__
__FLT_EPSILON__
__FLT_EVAL_METHOD__
__FLT_HAS_DENORM__
__FLT_HAS_INFINITY__
__FLT_HAS_QUIET_NAN__
__FLT_MANT_DIG__
__FLT_MAX_10_EXP__
__FLT_MAX_EXP__
__FLT_MAX__
__FLT_MIN_10_EXP__
__FLT_MIN_EXP__
__FLT_MIN__
__FLT_RADIX__
__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1
__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2
__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4
__GLIBC_MINOR__
__GLIBC__
__GNUC_GNU_INLINE__
__GNUC_MINOR__
__GNUC_PATCHLEVEL__
__GNUC__
__GNU_LIBRARY__
__GXX_ABI_VERSION
__INTMAX_MAX__
__INTMAX_TYPE__
__INT_MAX__
__LDBL_DENORM_MIN__
__LDBL_DIG__
__LDBL_EPSILON__
__LDBL_HAS_DENORM__
__LDBL_HAS_INFINITY__
__LDBL_HAS_QUIET_NAN__
__LDBL_MANT_DIG__
__LDBL_MAX_10_EXP__
__LDBL_MAX_EXP__
__LDBL_MAX__
__LDBL_MIN_10_EXP__
__LDBL_MIN_EXP__
__LDBL_MIN__
__LONGDOUBLE128
__LONG_DOUBLE_128__
__LONG_LONG_MAX__
__LONG_MAX__
__PPC
__PPC__
__PTRDIFF_TYPE__
__REGISTER_PREFIX__
__SCHAR_MAX__
__SHRT_MAX__
__SIZEOF_DOUBLE__
__SIZEOF_FLOAT__
__SIZEOF_INT__
__SIZEOF_LONG_DOUBLE__
__SIZEOF_LONG_LONG__
__SIZEOF_LONG__
__SIZEOF_POINTER__
__SIZEOF_PTRDIFF_T__
__SIZEOF_SHORT__
__SIZEOF_SIZE_T__
__SIZEOF_WCHAR_T__
__SIZEOF_WINT_T__
__SIZE_TYPE__
__STDC_HOSTED__
__STDC__
__UINTMAX_TYPE__
__USER_LABEL_PREFIX__
__USE_BSD
__USE_FILE_OFFSET64
__USE_LARGEFILE
__USE_MISC
__USE_POSIX199309
__USE_POSIX199506
__USE_POSIX2
__USE_POSIX
__USE_SVID
__VERSION__
__WCHAR_MAX__
__WCHAR_TYPE__
__WINT_TYPE__
__powerpc
__powerpc__
powerpc

Your C compiler further defines the following cpp symbols​:
system=linux
system=posix
system=unix

tcsetattr() found.

You have POSIX termios.h... good!

<stdbool.h> found.

<stddef.h> found.

<sys/access.h> NOT found.

<sys/filio.h> NOT found.

<sys/ioctl.h> found.

<sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.

<syslog.h> found.

<sys/mode.h> NOT found.

<sys/poll.h> found.

<sys/resource.h> found.

<sys/security.h> NOT found.

<sys/statvfs.h> found.

<sys/un.h> found.

<sys/utsname.h> found.

<sys/wait.h> found.

<ustat.h> found.

<utime.h> found.

Looking for extensions...
A number of extensions are supplied with perl5. You may choose to
compile these extensions for dynamic loading (the default), compile
them into the perl5 executable (static loading), or not include
them at all. Answer "none" to include no extensions.
Note that DynaLoader is always built and need not be mentioned here.

What extensions do you wish to load dynamically?
[B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd Data/Dumper Devel/PPPort
Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob
Filter/Util/Call Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV
List/Util MIME/Base64 Math/BigInt/FastCalc Opcode POSIX PerlIO/encoding
PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable
Sys/Hostname Sys/Syslog Text/Soundex Tie/Hash/NamedCapture Time/HiRes
Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap
arybase attributes mro re threads threads/shared]
What extensions do you wish to load statically? [ ]

End of configuration questions.

Stripping down executable paths...

Creating config.sh...
Hmm...You had some extra variables I don't know about...I'll try to keep
'em...
  Propagating previous variable $libdb_needs_pthread...

Doing variable substitutions on .SH files...
Extracting cflags (with variable substitutions)
Extracting config.h (with variable substitutions)
Extracting makedepend (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 runtests (with variable substitutions)
Extracting utils/Makefile (with variable substitutions)
Extracting x2p/cflags (with variable substitutions)
Extracting x2p/Makefile (with variable substitutions)

Now you need to generate make dependencies by running "make depend".
You might prefer to run it in background​: "make depend > makedepend.out &"
It can take a while, so you might not want to run it right now.

Run make depend now? [y]
sh ./makedepend MAKE=make
make[1]​: Entering directory `/DataVolume/home/perl-smoke/perl-git'
echo av.c scope.c op.c doop.c doio.c dump.c gv.c hv.c mg.c reentr.c
mro.c perl.c perly.c pp.c pp_hot.c pp_ctl.c pp_sys.c regcomp.c regexec.c
utf8.c sv.c taint.c toke.c util.c deb.c run.c universal.c pad.c
globals.c keywords.c perlio.c perlapi.c numeric.c mathoms.c locale.c
pp_pack.c pp_sort.c miniperlmain.c opmini.c perlmini.c | tr ' ' '\n'

.clist
make[1]​: Leaving directory `/DataVolume/home/perl-smoke/perl-git'
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 gv.o.
Finding dependencies for hv.o.
Finding dependencies for mg.o.
Finding dependencies for reentr.o.
Finding dependencies for mro.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 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 pad.o.
Finding dependencies for globals.o.
Finding dependencies for keywords.o.
Finding dependencies for perlio.o.
Finding dependencies for perlapi.o.
Finding dependencies for numeric.o.
Finding dependencies for mathoms.o.
Finding dependencies for locale.o.
Finding dependencies for pp_pack.o.
Finding dependencies for pp_sort.o.
Finding dependencies for miniperlmain.o.
Finding dependencies for opmini.o.
Finding dependencies for perlmini.o.
make[1]​: Entering directory `/DataVolume/home/perl-smoke/perl-git'
echo Makefile.SH cflags.SH config_h.SH makedepend.SH myconfig.SH
pod/Makefile.SH | tr ' ' '\n' >.shlist
make[1]​: Leaving directory `/DataVolume/home/perl-smoke/perl-git'
Updating makefile...
cd x2p; make depend
make[1]​: Entering directory `/DataVolume/home/perl-smoke/perl-git/x2p'
sh ../makedepend MAKE=make
make[2]​: Entering directory `/DataVolume/home/perl-smoke/perl-git/x2p'
echo hash.c str.c util.c walk.c | tr ' ' '\n' >.clist
make[2]​: Leaving directory `/DataVolume/home/perl-smoke/perl-git/x2p'
Finding dependencies for hash.o.
Finding dependencies for str.o.
Finding dependencies for util.o.
Finding dependencies for walk.o.
make[2]​: Entering directory `/DataVolume/home/perl-smoke/perl-git/x2p'
echo Makefile.SH cflags.SH | tr ' ' '\n' >.shlist
make[2]​: Leaving directory `/DataVolume/home/perl-smoke/perl-git/x2p'
Updating makefile...
make[1]​: Leaving directory `/DataVolume/home/perl-smoke/perl-git/x2p'
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.

Perl Info

Flags:
     category=core
     severity=medium

Site configuration information for perl 5.17.8:

Configured by root at Mon Dec 31 14:42:33 CET 2012.

Summary of my perl5 (revision 5 version 17 subversion 8) configuration:
   Commit id: 1feab43956f936b2526693e4394a9653fcea6079
   Platform:
     osname=linux, osvers=2.6.32.11-svn70860, archname=ppc-linux
     uname='linux mybookliveduo 2.6.32.11-svn70860 #1 wed apr 25 
11:48:35 pdt 2012 ppc gnulinux '
     config_args='-Dusedevel -de'
     hint=recommended, useposix=true, d_sigaction=define
     useithreads=undef, usemultiplicity=undef
     useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
     use64bitint=undef, use64bitall=undef, uselongdouble=undef
     usemymalloc=n, bincompat5005=undef
   Compiler:
     cc='cc', ccflags ='-fno-strict-aliasing -pipe -fstack-protector 
-I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
     optimize='-O1',
     cppflags='-fno-strict-aliasing -pipe -fstack-protector 
-I/usr/local/include'
     ccversion='', gccversion='4.4.5', gccosandvers=''
     intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=4321
     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, prototype=define
   Linker and Libraries:
     ld='cc', ldflags =' -fstack-protector -L/usr/local/lib 
-L/opt/local/lib'
     libpth=/usr/local/lib /opt/local/lib /lib/../lib /usr/lib/../lib 
/lib /usr/lib
     libs=-lnsl -ldl -lm -lcrypt -lutil -lc
     perllibs=-lnsl -ldl -lm -lcrypt -lutil -lc
     libc=/lib/libc-2.11.3.so, so=so, useshrplib=false, libperl=libperl.a
     gnulibc_version='2.11.3'
   Dynamic Linking:
     dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
     cccdlflags='-fPIC', lddlflags='-shared -O1 -L/usr/local/lib 
-L/opt/local/lib -fstack-protector'

Locally applied patches:



@INC for perl 5.17.8:
     lib
     /usr/local/lib/perl5/site_perl/5.17.8/ppc-linux
     /usr/local/lib/perl5/site_perl/5.17.8
     /usr/local/lib/perl5/5.17.8/ppc-linux
     /usr/local/lib/perl5/5.17.8
     .


Environment for perl 5.17.8:
     HOME=/DataVolume/home/perl-smoke/
     LANG (unset)
     LANGUAGE (unset)
     LD_LIBRARY_PATH (unset)
     LOGDIR (unset)
 
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/opt/sbin:/root/.bin:/root/.bin:/opt/bin:/opt/sbin:/root/.bin:/root/.bin
     PERL_BADLANG (unset)
     SHELL=/bin/sh

@p5pRT
Copy link
Author

p5pRT commented Jan 1, 2013

From @Corion

... too early this year

I meant "test failure", not "build failure"...

-max

@p5pRT
Copy link
Author

p5pRT commented Jan 6, 2013

From @jkeenan

On Tue Jan 01 10​:34​:05 2013, corion@​cpan.org wrote​:

This is a bug report for perl from corion@​cpan.org,
generated with the help of perlbug 1.39 running under perl 5.17.8.

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

I'm trying to build bleadperl on a "WD My Book Live Duo", a small
NAS embedded system, with the hope of converting it into a (slow)
smoke server later. The machine runs a Debian 6 slightly modified
by WD and has the somewhat interesting PPC architecture with a
APM82181 as its CPU.

Currently, io/eintr.t fails, which feels weird to me, as this
should be a plain Linux system, which I consider "well-tested".

Maybe the cause is some unapplied hint or something. Test failure
and log of ./Configure are appended below.

I wish you all a good start into the new year!
-max

$ sh ./Configure -Dusedevel -de && make test
...
t/x2p/s2p ..................................................... ok
Failed 1 test out of 2214, 99.95% okay.
io/eintr.t

Thanks for your report. This is not the only circumstance where
t/io/eintr.t is problematic. For many months -- perhaps for more than a
year now -- on Darwin/PPC I have had to patch t/io/eintr.t to not run on
this older Macintosh system. If I fail to do so, 'make test' hangs
indefinitely when it gets to t/io/eintr.t.

ISTR requesting that the following patch be applied and being told No​:

$ diff t/io/eintr.t ~/learn/perl/eintr.t
53,54c53,55
< ($^O eq 'solaris' && $Config{osvers} eq '2.8')
< || ((int($]*1000) & 1) == 0)


 \($^O eq 'solaris' && $Config\{osvers\} eq '2\.8'\) ||
 \($^O eq 'darwin' && $Config\{osvers\} lt '9\.0'\) ||
\(\(int\($\]\*1000\) & 1\) == 0\)

I don't claim to know what t/io/eintr.t is all about, but I'm not
surprised that other people/systems find it to be a PITA as well.

Thank you very much.
Jim Keenan

@p5pRT
Copy link
Author

p5pRT commented Jan 6, 2013

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

@p5pRT
Copy link
Author

p5pRT commented Jan 6, 2013

From @jmdh

On Sat, Jan 05, 2013 at 06​:09​:42PM -0800, James E Keenan via RT wrote​:

On Tue Jan 01 10​:34​:05 2013, corion@​cpan.org wrote​:

This is a bug report for perl from corion@​cpan.org,
generated with the help of perlbug 1.39 running under perl 5.17.8.

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

I'm trying to build bleadperl on a "WD My Book Live Duo", a small
NAS embedded system, with the hope of converting it into a (slow)
smoke server later. The machine runs a Debian 6 slightly modified
by WD and has the somewhat interesting PPC architecture with a
APM82181 as its CPU.

Currently, io/eintr.t fails, which feels weird to me, as this
should be a plain Linux system, which I consider "well-tested".

Maybe the cause is some unapplied hint or something. Test failure
and log of ./Configure are appended below.

I wish you all a good start into the new year!
-max

$ sh ./Configure -Dusedevel -de && make test
...
t/x2p/s2p ..................................................... ok
Failed 1 test out of 2214, 99.95% okay.
io/eintr.t

Thanks for your report. This is not the only circumstance where
t/io/eintr.t is problematic. For many months -- perhaps for more than a
year now -- on Darwin/PPC I have had to patch t/io/eintr.t to not run on
this older Macintosh system. If I fail to do so, 'make test' hangs
indefinitely when it gets to t/io/eintr.t.

ISTR requesting that the following patch be applied and being told No​:

$ diff t/io/eintr.t ~/learn/perl/eintr.t
53,54c53,55
< ($^O eq 'solaris' && $Config{osvers} eq '2.8')
< || ((int($]*1000) & 1) == 0)
---

 \($^O eq 'solaris' && $Config\{osvers\} eq '2\.8'\) ||
 \($^O eq 'darwin' && $Config\{osvers\} lt '9\.0'\) ||
\(\(int\($\]\*1000\) & 1\) == 0\)

I don't claim to know what t/io/eintr.t is all about, but I'm not
surprised that other people/systems find it to be a PITA as well.

FWIW, current bleadperl (8379978)
passes all tests on partch.debian.org (LPAR on an IBM Power 730 Express)
on both a squeeze (Debian 6) and sid (unstable) chroot (kernel
2.6.32-5-powerpc64).

--
Dominic Hargreaves | http​://www.larted.org.uk/~dom/
PGP key 5178E2A5 from the.earth.li (keyserver,web,email)

@p5pRT
Copy link
Author

p5pRT commented Jan 7, 2013

From @iabyn

On Sat, Jan 05, 2013 at 06​:09​:42PM -0800, James E Keenan via RT wrote​:

Thanks for your report. This is not the only circumstance where
t/io/eintr.t is problematic. For many months -- perhaps for more than a
year now -- on Darwin/PPC I have had to patch t/io/eintr.t to not run on
this older Macintosh system. If I fail to do so, 'make test' hangs
indefinitely when it gets to t/io/eintr.t.

ISTR requesting that the following patch be applied and being told No​:

$ diff t/io/eintr.t ~/learn/perl/eintr.t
53,54c53,55
< ($^O eq 'solaris' && $Config{osvers} eq '2.8')
< || ((int($]*1000) & 1) == 0)
---

 \($^O eq 'solaris' && $Config\{osvers\} eq '2\.8'\) ||
 \($^O eq 'darwin' && $Config\{osvers\} lt '9\.0'\) ||
\(\(int\($\]\*1000\) & 1\) == 0\)

I don't claim to know what t/io/eintr.t is all about, but I'm not
surprised that other people/systems find it to be a PITA as well.

It's supposed to test, on platforms where it happens, that when an
I/O-related system call gets interrupted, perl calling a signal handler
wont cause corruption.

On platforms where reads and writes aren't interruptible, the test will
hang; thus on these platforms, the tests should be skipped.

If Darwin < 9.0 is one of these platforms, then I have no objection to
your patch being applied. Note that I can't find your diff in the p5p
archives for 2010, 2011 or 2012.

--
Britain, Britain, Britain! Discovered by Sir Henry Britain in
sixteen-oh-ten. Sold to Germany a year later for a pfennig and the promise
of a kiss. Destroyed in eighteen thirty-forty two, and rebuilt a week
later by a man. This we know. Hello. But what of the people of Britain?
Who they? What do? And why? -- "Little Britain"

@p5pRT
Copy link
Author

p5pRT commented Jan 8, 2013

From @jkeenan

On Mon Jan 07 07​:07​:54 2013, davem wrote​:

On Sat, Jan 05, 2013 at 06​:09​:42PM -0800, James E Keenan via RT wrote​:

Thanks for your report. This is not the only circumstance where
t/io/eintr.t is problematic. For many months -- perhaps for more than a
year now -- on Darwin/PPC I have had to patch t/io/eintr.t to not run on
this older Macintosh system. If I fail to do so, 'make test' hangs
indefinitely when it gets to t/io/eintr.t.

ISTR requesting that the following patch be applied and being told No​:

$ diff t/io/eintr.t ~/learn/perl/eintr.t
53,54c53,55
< ($^O eq 'solaris' && $Config{osvers} eq '2.8')
< || ((int($]*1000) & 1) == 0)
---

 \($^O eq 'solaris' && $Config\{osvers\} eq '2\.8'\) ||
 \($^O eq 'darwin' && $Config\{osvers\} lt '9\.0'\) ||
\(\(int\($\]\*1000\) & 1\) == 0\)

I don't claim to know what t/io/eintr.t is all about, but I'm not
surprised that other people/systems find it to be a PITA as well.

It's supposed to test, on platforms where it happens, that when an
I/O-related system call gets interrupted, perl calling a signal handler
wont cause corruption.

On platforms where reads and writes aren't interruptible, the test will
hang; thus on these platforms, the tests should be skipped.

If Darwin < 9.0 is one of these platforms, then I have no objection to
your patch being applied. Note that I can't find your diff in the p5p
archives for 2010, 2011 or 2012.

Please see patch attached. Note that this only addresses the issue I
just raised, not the issues raised by the OP.

Thank you very much.
Jim Keenan

@p5pRT
Copy link
Author

p5pRT commented Jan 8, 2013

From @jkeenan

From 3e1b4a546dd37569e408a4940b5b749e6bd1923e Mon Sep 17 00​:00​:00 2001
From​: James E Keenan <jkeenan@​cpan.org>
Date​: Mon, 7 Jan 2013 20​:55​:24 -0500
Subject​: [PATCH] Skip t/io/eintr.t on older Darwins.

For RT #116262


t/io/eintr.t | 5 +++--
1 files changed, 3 insertions(+), 2 deletions(-)

Inline Patch
diff --git a/t/io/eintr.t b/t/io/eintr.t
index 966922b..900c038 100644
--- a/t/io/eintr.t
+++ b/t/io/eintr.t
@@ -50,8 +50,9 @@ if (exists $ENV{PERLIO} && $ENV{PERLIO} =~ /stdio/  ) {
 # platforms
 
 if ($^O eq 'VMS' || $^O eq 'MSWin32' || $^O eq 'cygwin' || $^O =~ /freebsd/ || 
-     ($^O eq 'solaris' && $Config{osvers} eq '2.8')
-	|| ((int($]*1000) & 1) == 0)
+     ($^O eq 'solaris' && $Config{osvers} eq '2.8') ||
+     ($^O eq 'darwin' && $Config{osvers} lt '9.0') ||
+    ((int($]*1000) & 1) == 0)
 ) {
 	skip_all('various portability issues');
 	exit 0;
-- 
1.6.3.2

@p5pRT
Copy link
Author

p5pRT commented Jan 9, 2013

From @tonycoz

On Tue, Jan 08, 2013 at 04​:58​:42AM -0800, James E Keenan via RT wrote​:

On Mon Jan 07 07​:07​:54 2013, davem wrote​:

If Darwin < 9.0 is one of these platforms, then I have no objection to
your patch being applied. Note that I can't find your diff in the p5p
archives for 2010, 2011 or 2012.

Please see patch attached. Note that this only addresses the issue I
just raised, not the issues raised by the OP.

+ ($^O eq 'darwin' && $Config{osvers} lt '9.0') ||

That should probably be < rather than lt.

neptune​:~ tony$ uname -rmns
Darwin neptune.local 12.2.0 x86_64
neptune​:~ tony$ perl -MConfig -le 'print $Config{osvers} lt "9.0"'
1

Tony

@p5pRT
Copy link
Author

p5pRT commented Jan 9, 2013

From @jkeenan

On Tue Jan 08 18​:20​:00 2013, tonyc wrote​:

On Tue, Jan 08, 2013 at 04​:58​:42AM -0800, James E Keenan via RT wrote​:

On Mon Jan 07 07​:07​:54 2013, davem wrote​:

If Darwin < 9.0 is one of these platforms, then I have no objection to
your patch being applied. Note that I can't find your diff in the p5p
archives for 2010, 2011 or 2012.

Please see patch attached. Note that this only addresses the issue I
just raised, not the issues raised by the OP.

+ ($^O eq 'darwin' && $Config{osvers} lt '9.0') ||

That should probably be < rather than lt.

neptune​:~ tony$ uname -rmns
Darwin neptune.local 12.2.0 x86_64
neptune​:~ tony$ perl -MConfig -le 'print $Config{osvers} lt "9.0"'
1

Hmm, that suggests that the other comparisons to $Config{osvers} in the
preceding lines ought to be numeric comparisons rather than string
comparisons. (I was simply following the example of the 'eq' in Cygwin
and Solaris clauses.)

This needs further investigation, which I'll try to do if no one else
beats me to it.

Thank you very much.
Jim Keenan

@p5pRT
Copy link
Author

p5pRT commented Jan 10, 2013

From @tonycoz

On Wed, Jan 09, 2013 at 05​:08​:28AM -0800, James E Keenan via RT wrote​:

On Tue Jan 08 18​:20​:00 2013, tonyc wrote​:

On Tue, Jan 08, 2013 at 04​:58​:42AM -0800, James E Keenan via RT wrote​:

On Mon Jan 07 07​:07​:54 2013, davem wrote​:

If Darwin < 9.0 is one of these platforms, then I have no objection to
your patch being applied. Note that I can't find your diff in the p5p
archives for 2010, 2011 or 2012.

Please see patch attached. Note that this only addresses the issue I
just raised, not the issues raised by the OP.

+ ($^O eq 'darwin' && $Config{osvers} lt '9.0') ||

That should probably be < rather than lt.

neptune​:~ tony$ uname -rmns
Darwin neptune.local 12.2.0 x86_64
neptune​:~ tony$ perl -MConfig -le 'print $Config{osvers} lt "9.0"'
1

Hmm, that suggests that the other comparisons to $Config{osvers} in the
preceding lines ought to be numeric comparisons rather than string
comparisons. (I was simply following the example of the 'eq' in Cygwin
and Solaris clauses.)

This needs further investigation, which I'll try to do if no one else
beats me to it.

The only other version comparison is an exact test against solaris
2.8, which is safe (safer than a floating point comparison.)

Tony

@p5pRT
Copy link
Author

p5pRT commented Jan 11, 2013

From @jkeenan

On Wed Jan 09 05​:08​:27 2013, jkeenan wrote​:

On Tue Jan 08 18​:20​:00 2013, tonyc wrote​:

On Tue, Jan 08, 2013 at 04​:58​:42AM -0800, James E Keenan via RT wrote​:

On Mon Jan 07 07​:07​:54 2013, davem wrote​:

If Darwin < 9.0 is one of these platforms, then I have no
objection to
your patch being applied. Note that I can't find your diff in
the p5p
archives for 2010, 2011 or 2012.

Please see patch attached. Note that this only addresses the issue I
just raised, not the issues raised by the OP.

+ ($^O eq 'darwin' && $Config{osvers} lt '9.0') ||

That should probably be < rather than lt.

neptune​:~ tony$ uname -rmns
Darwin neptune.local 12.2.0 x86_64
neptune​:~ tony$ perl -MConfig -le 'print $Config{osvers} lt "9.0"'
1

Hmm, that suggests that the other comparisons to $Config{osvers} in the
preceding lines ought to be numeric comparisons rather than string
comparisons. (I was simply following the example of the 'eq' in Cygwin
and Solaris clauses.)

This needs further investigation, which I'll try to do if no one else
beats me to it.

I would argue that the patch is correct as it stands. $Config{osvers}
is a string, not a number. And its format varies from OS to OS​:
#####
my %config = (
  linux => '2.6.18.8-linode22',
  darwin => '8.11.0',
);
#####
So we won't be able to write any one-size-fits-all code for comparisons
to $Config{osvers}.

But I think we're okay for Darwin, which appears to use a M.m.p version
format​:
#####
my $guess;
$guess = '9.0';
cmp_ok($config{darwin}, 'lt', $guess, "'lt' works with $guess");

cmp_ok($config{darwin}, '<', $guess, "'lt' works with $guess");

$guess = '9.0.0';
cmp_ok($config{darwin}, 'lt', $guess, "'lt' works with $guess");
done_testing();
#####
Output​:
#####
$ prove -v 116262_config.pl
116262_config.pl ..
ok 1 - 'lt' works with 9.0
ok 2 - 'lt' works with 9.0
ok 3 - 'lt' works with 9.0.0
1..3
Argument "8.11.0" isn't numeric in numeric lt (<) at (eval in cmp_ok)
116262_config.pl line 18.
ok
All tests successful.
Files=1, Tests=3, 0 wallclock secs ( 0.03 usr 0.01 sys + 0.05 cusr
0.00 csys = 0.09 CPU)
Result​: PASS
#####

Thank you very much.
Jim Keenan

@p5pRT
Copy link
Author

p5pRT commented Jan 11, 2013

From @tonycoz

On Thu, Jan 10, 2013 at 04​:21​:54PM -0800, James E Keenan via RT wrote​:

On Wed Jan 09 05​:08​:27 2013, jkeenan wrote​:

On Tue Jan 08 18​:20​:00 2013, tonyc wrote​:

On Tue, Jan 08, 2013 at 04​:58​:42AM -0800, James E Keenan via RT wrote​:

On Mon Jan 07 07​:07​:54 2013, davem wrote​:

If Darwin < 9.0 is one of these platforms, then I have no
objection to
your patch being applied. Note that I can't find your diff in
the p5p
archives for 2010, 2011 or 2012.

Please see patch attached. Note that this only addresses the issue I
just raised, not the issues raised by the OP.

+ ($^O eq 'darwin' && $Config{osvers} lt '9.0') ||

That should probably be < rather than lt.

neptune​:~ tony$ uname -rmns
Darwin neptune.local 12.2.0 x86_64
neptune​:~ tony$ perl -MConfig -le 'print $Config{osvers} lt "9.0"'
1

Hmm, that suggests that the other comparisons to $Config{osvers} in the
preceding lines ought to be numeric comparisons rather than string
comparisons. (I was simply following the example of the 'eq' in Cygwin
and Solaris clauses.)

This needs further investigation, which I'll try to do if no one else
beats me to it.

I would argue that the patch is correct as it stands. $Config{osvers}
is a string, not a number. And its format varies from OS to OS​:
#####
my %config = (
linux => '2.6.18.8-linode22',
darwin => '8.11.0',
);
#####
So we won't be able to write any one-size-fits-all code for comparisons
to $Config{osvers}.

But I think we're okay for Darwin, which appears to use a M.m.p version
format​:

Except that it forces a skip on 10.x, 11.x, 12.x where the skip isn't
required (since "11" lt "9").

There's no need to make it a table lookup.

To avoid the warning we could extract the first two digits of
$Config{osvers}, either before the if​:

  my ($osmajmin) = $Config{osvers} =~ /^(\d+\.\d+)/;
...
  ($^O eq 'darwin' && $osmajmin < 9)

or within the condition​:

  ($^O eq 'darwin' && ($Config{osvers} =~ /^(\d+\.\d+)/)[0] < 9)

(I prefer the first.)

Tony

@p5pRT
Copy link
Author

p5pRT commented Jan 12, 2013

From @jkeenan

On Thu Jan 10 17​:01​:50 2013, tonyc wrote​:

Except that it forces a skip on 10.x, 11.x, 12.x where the skip isn't
required (since "11" lt "9").

There's no need to make it a table lookup.

To avoid the warning we could extract the first two digits of
$Config{osvers}, either before the if​:

my ($osmajmin) = $Config{osvers} =~ /^(\d+\.\d+)/;
...
($^O eq 'darwin' && $osmajmin < 9)

or within the condition​:

($^O eq 'darwin' && ($Config{osvers} =~ /^(\d+\.\d+)/)[0] < 9)

(I prefer the first.)

Take 3, attached.

@p5pRT
Copy link
Author

p5pRT commented Jan 12, 2013

From @jkeenan

From 6f8957895c59f45f4b5765493ecc6c0d019626c8 Mon Sep 17 00​:00​:00 2001
From​: James E Keenan <jkeenan@​cpan.org>
Date​: Mon, 7 Jan 2013 20​:55​:24 -0500
Subject​: [PATCH] Skip t/io/eintr.t on older Darwins.

Identify the OS version by capturing the first two parts of the M.m.p version
number.

For RT #116262


t/io/eintr.t | 6 ++++--
1 files changed, 4 insertions(+), 2 deletions(-)

Inline Patch
diff --git a/t/io/eintr.t b/t/io/eintr.t
index 966922b..5804f34 100644
--- a/t/io/eintr.t
+++ b/t/io/eintr.t
@@ -49,9 +49,11 @@ if (exists $ENV{PERLIO} && $ENV{PERLIO} =~ /stdio/  ) {
 # Also skip on release builds, to avoid other possibly problematic
 # platforms
 
+my ($osmajmin) = $Config{osvers} =~ /^(\d+\.\d+)/;
 if ($^O eq 'VMS' || $^O eq 'MSWin32' || $^O eq 'cygwin' || $^O =~ /freebsd/ || 
-     ($^O eq 'solaris' && $Config{osvers} eq '2.8')
-	|| ((int($]*1000) & 1) == 0)
+     ($^O eq 'solaris' && $Config{osvers} eq '2.8') ||
+     ($^O eq 'darwin' && $osmajmin < 9) ||
+    ((int($]*1000) & 1) == 0)
 ) {
 	skip_all('various portability issues');
 	exit 0;
-- 
1.6.3.2

@p5pRT
Copy link
Author

p5pRT commented Jan 18, 2013

From @tonycoz

On Fri, Jan 11, 2013 at 05​:35​:57PM -0800, James E Keenan via RT wrote​:

Take 3, attached.

...

# Also skip on release builds, to avoid other possibly problematic
# platforms

+my ($osmajmin) = $Config{osvers} =~ /^(\d+\.\d+)/;
if ($^O eq 'VMS' || $^O eq 'MSWin32' || $^O eq 'cygwin' || $^O =~ /freebsd/ ||
- ($^O eq 'solaris' && $Config{osvers} eq '2.8')
- || ((int($]*1000) & 1) == 0)
+ ($^O eq 'solaris' && $Config{osvers} eq '2.8') ||
+ ($^O eq 'darwin' && $osmajmin < 9) ||
+ ((int($]*1000) & 1) == 0)
) {

Sorry, this got lost in the swamp that is my Inbox.

This looks sane.

Thanks,
Tony

@p5pRT
Copy link
Author

p5pRT commented Jan 19, 2013

From @jkeenan

On Thu Jan 17 17​:43​:53 2013, tonyc wrote​:

On Fri, Jan 11, 2013 at 05​:35​:57PM -0800, James E Keenan via RT wrote​:

Take 3, attached.

This looks sane.

Thanks,
Tony

I applied my patch in commit f24e984.

We now return you to the original subject of this RT as posted by corion​:

I'm trying to build bleadperl on a "WD My Book Live Duo", a small
NAS embedded system, with the hope of converting it into a (slow)
smoke server later. The machine runs a Debian 6 slightly modified
by WD and has the somewhat interesting PPC architecture with a
APM82181 as its CPU.

Currently, io/eintr.t fails, which feels weird to me, as this
should be a plain Linux system, which I consider "well-tested".

Maybe the cause is some unapplied hint or something. Test failure
and log of ./Configure are appended below.

I wish you all a good start into the new year!
-max

Thank you very much.
Jim Keenan

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

2 participants