diff -ruw perl-5.10.1/ext/Errno/Errno_pm.PL perl-5.10.1-haiku/ext/Errno/Errno_pm.PL --- perl-5.10.1/ext/Errno/Errno_pm.PL 2009-06-27 16:09:45.059768832 +0000 +++ perl-5.10.1-haiku/ext/Errno/Errno_pm.PL 2011-03-01 18:01:57.984350720 +0000 @@ -159,10 +159,14 @@ # we might miss out on compiler-specific ones $file{"$ENV{GUSI}include:sys:errno.h"} = 1; - } elsif ($^O eq 'beos' || $^O eq 'haiku') { + } elsif ($^O eq 'beos') { # hidden in a special place $file{'/boot/develop/headers/posix/errno.h'} = 1; + } elsif ($^O eq 'haiku') { + # hidden in a special place + $file{'/boot/system/develop/headers/posix/errno.h'} = 1; + } elsif ($^O eq 'vos') { # avoid problem where cpp returns non-POSIX pathnames $file{'/system/include_library/errno.h'} = 1; diff -ruw perl-5.10.1/hints/haiku.sh perl-5.10.1-haiku/hints/haiku.sh --- perl-5.10.1/hints/haiku.sh 2009-02-12 23:58:12.063176704 +0100 +++ perl-5.10.1-haiku/hints/haiku.sh 1970-01-01 01:00:00.000000000 +0100 @@ -1,34 +1 @@ -# Haiku hints file -# $Id$ - -prefix="/boot/common" - -libpth='/boot/home/config/lib /boot/common/lib /system/lib' -usrinc='/boot/develop/headers/posix' -locinc='/boot/home/config/include /boot/common/include /boot/develop/headers' - -libc='/system/lib/libroot.so' -libs='-lnetwork' - -# Use Haiku's malloc() by default. -case "$usemymalloc" in -'') usemymalloc='n' ;; -esac - -# Haiku generally supports hard links, but the default file system (BFS) -# doesn't. So better avoid using hard links. -d_link='undef' -dont_use_nlink='define' - -# The array syserrlst[] is useless for the most part. -# Large negative numbers really kind of suck in arrays. -d_syserrlst='undef' - -# Haiku uses gcc. -cc="gcc" -ld='gcc' - -# The runtime loader library path variable is LIBRARY_PATH. -case "$ldlibpthname" in -'') ldlibpthname=LIBRARY_PATH ;; -esac +# haiku sets all its specifics via Configure diff -ruw perl-5.10.1/installperl perl-5.10.1-haiku/installperl --- perl-5.10.1/installperl 2009-08-13 22:40:10.066846720 +0000 +++ perl-5.10.1-haiku/installperl 2011-02-28 17:24:45.324272128 +0000 @@ -409,6 +409,11 @@ mkpath("$installarchlib/CORE/mpeix", $opts{verbose}, 0777); push(@corefiles,'mpeix/mpeixish.h'); } + if ($^O eq 'haiku') { + # Haiku needs haikuish.h installed as well. + mkpath("$installarchlib/CORE/haiku", $opts{verbose}, 0777); + push(@corefiles,'haiku/haikuish.h'); + } # If they have built sperl.o... push(@corefiles,'sperl.o') if -f 'sperl.o'; } diff -ruw perl-5.10.1/lib/File/Temp/t/lock.t perl-5.10.1-haiku/lib/File/Temp/t/lock.t --- perl-5.10.1/lib/File/Temp/t/lock.t 2009-02-12 22:58:13.009699328 +0000 +++ perl-5.10.1-haiku/lib/File/Temp/t/lock.t 2011-02-28 17:24:45.354418688 +0000 @@ -8,7 +8,8 @@ BEGIN { # see if we have O_EXLOCK eval { &Fcntl::O_EXLOCK; }; - if ($@) { + if ($@ || $^O eq 'haiku') { + # haiku doesn't implement O_EXLOCK yet (but it defines the value) plan skip_all => 'Do not seem to have O_EXLOCK'; } else { plan tests => 4; diff -ruw perl-5.10.1/lib/File/Temp.pm perl-5.10.1-haiku/lib/File/Temp.pm --- perl-5.10.1/lib/File/Temp.pm 2009-06-30 13:13:54.013369344 +0000 +++ perl-5.10.1-haiku/lib/File/Temp.pm 2011-02-28 17:24:45.347602944 +0000 @@ -1978,7 +1978,8 @@ # on Win9x the link count remains 1 # On NFS the link count may still be 1 but we cant know that # we are on NFS - return ( $fh[3] == 0 or $^O eq 'cygwin' ? 1 : 0); + # On haiku, the link count seems to be always 1 (at least for BFS) + return ( $fh[3] == 0 or $^O eq 'cygwin' or $^O eq 'haiku' ? 1 : 0); } else { _deferred_unlink($fh, $path, 0); diff -ruw perl-5.10.1/t/run/exit.t perl-5.10.1-haiku/t/run/exit.t --- perl-5.10.1/t/run/exit.t 2009-08-04 15:48:30.014155776 +0000 +++ perl-5.10.1-haiku/t/run/exit.t 2011-02-28 17:24:45.362283008 +0000 @@ -57,18 +57,18 @@ if (!$vms_exit_mode) { my $posix_ok = eval { require POSIX; }; my $wait_macros_ok = defined &POSIX::WIFEXITED; - eval { POSIX::WIFEXITED(${^CHILD_ERROR_NATIVE}) }; + eval { POSIX::WIFEXITED($?) }; $wait_macros_ok = 0 if $@; $exit = run('exit 42'); is( $exit >> 8, 42, 'Non-zero exit' ); is( $exit, $?, 'Non-zero exit $?' ); - isnt( !${^CHILD_ERROR_NATIVE}, 0, 'Non-zero exit ${^CHILD_ERROR_NATIVE}' ); + isnt( ${^CHILD_ERROR_NATIVE}, 0, 'Non-zero exit ${^CHILD_ERROR_NATIVE}' ); SKIP: { skip("No POSIX", 3) unless $posix_ok; skip("No POSIX wait macros", 3) unless $wait_macros_ok; - ok(POSIX::WIFEXITED(${^CHILD_ERROR_NATIVE}), "WIFEXITED"); - ok(!POSIX::WIFSIGNALED(${^CHILD_ERROR_NATIVE}), "WIFSIGNALED"); - is(POSIX::WEXITSTATUS(${^CHILD_ERROR_NATIVE}), 42, "WEXITSTATUS"); + ok(POSIX::WIFEXITED($?), "WIFEXITED"); + ok(!POSIX::WIFSIGNALED($?), "WIFSIGNALED"); + is(POSIX::WEXITSTATUS($?), 42, "WEXITSTATUS"); } SKIP: { @@ -87,9 +87,9 @@ SKIP: { skip("No POSIX", 3) unless $posix_ok; skip("No POSIX wait macros", 3) unless $wait_macros_ok; - ok(!POSIX::WIFEXITED(${^CHILD_ERROR_NATIVE}), "WIFEXITED"); - ok(POSIX::WIFSIGNALED(${^CHILD_ERROR_NATIVE}), "WIFSIGNALED"); - is(POSIX::WTERMSIG(${^CHILD_ERROR_NATIVE}), 15, "WTERMSIG"); + ok(!POSIX::WIFEXITED($?), "WIFEXITED"); + ok(POSIX::WIFSIGNALED($?), "WIFSIGNALED"); + is(POSIX::WTERMSIG($?), 15, "WTERMSIG"); } }