diff --git a/dev-lang/perl/perl-5.10.0.diff b/dev-lang/perl/perl-5.10.0.diff new file mode 100644 index 000000000..17d91b08f --- /dev/null +++ b/dev-lang/perl/perl-5.10.0.diff @@ -0,0 +1,637 @@ +diff -urN perl-5.10.0.orig/Configure perl-5.10.0/Configure +--- perl-5.10.0.orig/Configure 2007-12-18 10:47:07.000000000 +0000 ++++ perl-5.10.0/Configure 2008-10-25 22:26:22.000000000 +0000 +@@ -7864,6 +7864,7 @@ + case "$lddlflags" in + '') case "$osname" in + beos) dflt='-nostart' ;; ++ haiku) dflt='-shared' ;; + hpux) dflt='-b'; + case "$gccversion" in + '') dflt="$dflt +vnocompatwarnings" ;; +@@ -7946,7 +7947,7 @@ + ;; + *) case "$useshrplib" in + '') case "$osname" in +- svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*) ++ svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*|haiku) + dflt=y + also='Building a shared libperl is required for dynamic loading to work on your system.' + ;; +@@ -8109,6 +8110,9 @@ + beos) + # beos doesn't like the default, either. + ;; ++ haiku) ++ # Haiku doesn't like the default, either. ++ ;; + hpux*) + # hpux doesn't like the default, either. + tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\"" +diff -urN perl-5.10.0.orig/MANIFEST perl-5.10.0/MANIFEST +--- perl-5.10.0.orig/MANIFEST 2007-12-18 10:47:07.000000000 +0000 ++++ perl-5.10.0/MANIFEST 2008-10-28 15:56:53.000000000 +0000 +@@ -664,6 +664,9 @@ + ext/GDBM_File/Makefile.PL GDBM extension makefile writer + ext/GDBM_File/t/gdbm.t See if GDBM_File works + ext/GDBM_File/typemap GDBM extension interface types ++ext/Haiku/Haiku.pm Haiku extension Perl module ++ext/Haiku/Haiku.xs Haiku extension external subroutines ++ext/Haiku/Makefile.PL Haiku extension makefile writer + ext/Hash/Util/Changes Change history of Hash::Util + ext/Hash/Util/FieldHash/Changes Changes for Hash::Util::FieldHash + ext/Hash/Util/FieldHash/FieldHash.xs XS portion +@@ -1272,6 +1275,7 @@ + h2pl/README How to turn .ph files into .pl files + h2pl/tcbreak cbreak test routine using .ph + h2pl/tcbreak2 cbreak test routine using .pl ++haiku/haikuish.h Header for the Haiku port + handy.h Handy definitions + hints/3b1cc Hints for named architecture + hints/3b1.sh Hints for named architecture +@@ -1307,6 +1311,7 @@ + hints/gnuknetbsd.sh Hints for named architecture + hints/gnu.sh Hints for named architecture + hints/greenhills.sh Hints for named architecture ++hints/haiku.sh Hints for named architecture + hints/hpux.sh Hints for named architecture + hints/i386.sh Hints for named architecture + hints/interix.sh Hints for named architecture +@@ -1763,6 +1768,7 @@ + lib/ExtUtils/MM_BeOS.pm MakeMaker methods for BeOS + lib/ExtUtils/MM_Cygwin.pm MakeMaker methods for Cygwin + lib/ExtUtils/MM_DOS.pm MakeMaker methods for DOS ++lib/ExtUtils/MM_Haiku.pm MakeMaker methods for Haiku + lib/ExtUtils/MM_MacOS.pm MakeMaker methods for MacOS + lib/ExtUtils/MM_NW5.pm MakeMaker methods for NetWare + lib/ExtUtils/MM_OS2.pm MakeMaker methods for OS/2 +@@ -3282,6 +3288,7 @@ + README.dos Perl notes for DOS + README.epoc Perl notes for EPOC + README.freebsd Perl notes for FreeBSD ++README.haiku Perl notes for Haiku + README.hpux Perl notes for HP-UX + README.hurd Perl notes for Hurd + README.irix Perl notes for Irix +diff -urN perl-5.10.0.orig/README.haiku perl-5.10.0/README.haiku +--- perl-5.10.0.orig/README.haiku 1970-01-01 00:00:00.000000000 +0000 ++++ perl-5.10.0/README.haiku 2008-10-28 15:33:37.000000000 +0000 +@@ -0,0 +1,64 @@ ++If you read this file _as_is_, just ignore the funny characters you see. ++It is written in the POD format (see pod/perlpod.pod) which is specially ++designed to be readable as is. ++ ++=head1 NAME ++ ++README.haiku - Perl version 5.10+ on Haiku ++ ++=head1 DESCRIPTION ++ ++This file contains instructions how to build Perl for Haiku and lists ++known problems. ++ ++=head1 BUILD AND INSTALL ++ ++The build procedure is completely standard: ++ ++ ./Configure -de ++ make ++ make install ++ ++Make perl executable and create a symlink for libperl: ++ ++ chmod a+x /boot/common/bin/perl ++ cd /boot/common/lib; ln -s perl5/5.10.0/BePC-haiku/CORE/libperl.so . ++ ++Replace C<5.10.0> with your respective version of Perl. ++ ++=head1 KNOWN PROBLEMS ++ ++The following problems are encountered with Haiku revision 28311: ++ ++=over 4 ++ ++=item * ++ ++Perl cannot be compiled with threading support ATM. ++ ++=item * ++ ++The C test fails. More precisely: the subtests ++using datagram sockets fail. Unix datagram sockets aren't implemented in ++Haiku yet. ++ ++=item * ++ ++A subtest of the C test fails. This is due to Haiku ++not implementing C support yet. ++ ++=item * ++ ++The tests C and C ++fail. This is due to bugs in Haiku's network stack implementation. ++ ++=back ++ ++=head1 CONTACT ++ ++For Haiku specific problems contact the HaikuPorts developers: ++http://ports.haiku-files.org/ ++ ++The initial Haiku port was done by Ingo Weinhold . ++ ++Last update: 2008-10-29 +diff -urN perl-5.10.0.orig/ext/Errno/Errno_pm.PL perl-5.10.0/ext/Errno/Errno_pm.PL +--- perl-5.10.0.orig/ext/Errno/Errno_pm.PL 2007-12-18 10:47:07.000000000 +0000 ++++ perl-5.10.0/ext/Errno/Errno_pm.PL 2008-10-25 20:30:48.000000000 +0000 +@@ -155,7 +155,7 @@ + # we might miss out on compiler-specific ones + $file{"$ENV{GUSI}include:sys:errno.h"} = 1; + +- } elsif ($^O eq 'beos') { ++ } elsif ($^O eq 'beos' || $^O eq 'haiku') { + # hidden in a special place + $file{'/boot/develop/headers/posix/errno.h'} = 1; + +diff -urN perl-5.10.0.orig/ext/Haiku/Haiku.pm perl-5.10.0/ext/Haiku/Haiku.pm +--- perl-5.10.0.orig/ext/Haiku/Haiku.pm 1970-01-01 00:00:00.000000000 +0000 ++++ perl-5.10.0/ext/Haiku/Haiku.pm 2008-10-24 17:09:59.000000000 +0000 +@@ -0,0 +1,54 @@ ++package Haiku; ++ ++BEGIN { ++ use strict; ++ use vars qw|$VERSION $XS_VERSION @ISA @EXPORT @EXPORT_OK|; ++ ++ require Exporter; ++ require DynaLoader; ++ ++ @ISA = qw|Exporter DynaLoader|; ++ $VERSION = '0.34'; ++ $XS_VERSION = $VERSION; ++ $VERSION = eval $VERSION; ++ ++ @EXPORT = qw( ++ ); ++ @EXPORT_OK = qw( ++ ); ++} ++ ++bootstrap Haiku; ++ ++1; ++ ++__END__ ++ ++=head1 NAME ++ ++Haiku - Interfaces to some Haiku API Functions ++ ++=head1 DESCRIPTION ++ ++The Haiku module contains functions to access Haiku APIs. ++ ++=head2 Alphabetical Listing of Haiku Functions ++ ++=over ++ ++=item Haiku::debug_printf(FORMAT,...) ++ ++Similar to printf, but prints to system debug output. ++ ++=item Haiku::debugger(FORMAT,...) ++ ++Drops the program into the debugger. The printf like arguments define the ++debugger message. ++ ++=item Haiku::ktrace_printf(FORMAT,...) ++ ++Similar to printf, but prints to a kernel tracing entry. ++ ++=back ++ ++=cut +diff -urN perl-5.10.0.orig/ext/Haiku/Haiku.xs perl-5.10.0/ext/Haiku/Haiku.xs +--- perl-5.10.0.orig/ext/Haiku/Haiku.xs 1970-01-01 00:00:00.000000000 +0000 ++++ perl-5.10.0/ext/Haiku/Haiku.xs 2008-10-25 20:33:27.000000000 +0000 +@@ -0,0 +1,137 @@ ++#define PERL_NO_GET_CONTEXT ++#include "EXTERN.h" ++#include "perl.h" ++#include "XSUB.h" ++ ++#include ++ ++#include ++ ++static void ++haiku_do_debugger(const char* format,...) ++{ ++ char buffer[1024]; ++ va_list args; ++ va_start(args, format); ++ my_vsnprintf(buffer, sizeof(buffer), format, args); ++ va_end(args); ++ ++ debugger(buffer); ++} ++ ++static void ++haiku_do_debug_printf(pTHX_ register SV *sv, ++ void (*printfFunc)(const char*,...)) ++{ ++ dVAR; ++ ++ if (!sv) ++ return; ++ if (SvTYPE(sv) == SVt_IV && SvIOK(sv)) { ++ assert(!SvGMAGICAL(sv)); ++ if (SvIsUV(sv)) ++ (*printfFunc)("%"UVuf, (UV)SvUVX(sv)); ++ else ++ (*printfFunc)("%"IVdf, (IV)SvIVX(sv)); ++ return; ++ } ++ else { ++ STRLEN len; ++ /* Do this first to trigger any overloading. */ ++ const char *tmps = SvPV_const(sv, len); ++ U8 *tmpbuf = NULL; ++ ++ if (!SvUTF8(sv)) { ++ /* We don't modify the original scalar. */ ++ tmpbuf = bytes_to_utf8((const U8*) tmps, &len); ++ tmps = (char *) tmpbuf; ++ } ++ ++ if (len) ++ (*printfFunc)("%.*s", (int)len, tmps); ++ Safefree(tmpbuf); ++ } ++} ++ ++XS(haiku_debug_printf) ++{ ++ dVAR; ++ dXSARGS; ++ dORIGMARK; ++ SV *sv; ++ ++ if (items < 1) ++ Perl_croak(aTHX_ "usage: Haiku::debug_printf($format,...)"); ++ ++ sv = newSV(0); ++ ++ if (SvTAINTED(MARK[1])) ++ TAINT_PROPER("debug_printf"); ++ do_sprintf(sv, SP - MARK, MARK + 1); ++ ++ haiku_do_debug_printf(sv, &debug_printf); ++ ++ SvREFCNT_dec(sv); ++ SP = ORIGMARK; ++ PUSHs(&PL_sv_yes); ++} ++ ++XS(haiku_ktrace_printf) ++{ ++ dVAR; ++ dXSARGS; ++ dORIGMARK; ++ SV *sv; ++ ++ if (items < 1) ++ Perl_croak(aTHX_ "usage: Haiku::debug_printf($format,...)"); ++ ++ sv = newSV(0); ++ ++ if (SvTAINTED(MARK[1])) ++ TAINT_PROPER("ktrace_printf"); ++ do_sprintf(sv, SP - MARK, MARK + 1); ++ ++ haiku_do_debug_printf(sv, &ktrace_printf); ++ ++ SvREFCNT_dec(sv); ++ SP = ORIGMARK; ++ PUSHs(&PL_sv_yes); ++} ++ ++XS(haiku_debugger) ++{ ++ dVAR; ++ dXSARGS; ++ dORIGMARK; ++ SV *sv; ++ ++ if (items < 1) ++ Perl_croak(aTHX_ "usage: Haiku::debugger($format,...)"); ++ ++ sv = newSV(0); ++ ++ if (SvTAINTED(MARK[1])) ++ TAINT_PROPER("debugger"); ++ do_sprintf(sv, SP - MARK, MARK + 1); ++ ++ haiku_do_debug_printf(sv, &haiku_do_debugger); ++ ++ SvREFCNT_dec(sv); ++ SP = ORIGMARK; ++ PUSHs(&PL_sv_yes); ++} ++ ++MODULE = Haiku PACKAGE = Haiku ++ ++PROTOTYPES: DISABLE ++ ++BOOT: ++{ ++ char *file = __FILE__; ++ ++ newXS("Haiku::debug_printf", haiku_debug_printf, file); ++ newXS("Haiku::ktrace_printf", haiku_ktrace_printf, file); ++ newXS("Haiku::debugger", haiku_debugger, file); ++ XSRETURN_YES; ++} +diff -urN perl-5.10.0.orig/ext/Haiku/Makefile.PL perl-5.10.0/ext/Haiku/Makefile.PL +--- perl-5.10.0.orig/ext/Haiku/Makefile.PL 1970-01-01 00:00:00.000000000 +0000 ++++ perl-5.10.0/ext/Haiku/Makefile.PL 2008-10-24 17:09:59.000000000 +0000 +@@ -0,0 +1,20 @@ ++use 5.006; ++use ExtUtils::MakeMaker; ++ ++unless ($^O eq "haiku") { ++ die "OS unsupported\n"; ++} ++ ++#my @libs; ++#push @libs, '-L/lib/w32api -lole32 -lversion' if $^O eq "cygwin"; ++ ++WriteMakefile( ++ NAME => 'Haiku', ++ VERSION_FROM => 'Haiku.pm', ++# LIBS => \@libs, ++ INSTALLDIRS => ($] >= 5.008004 ? 'perl' : 'site'), ++ NO_META => 1, ++ ++ AUTHOR => 'Ingo Weinhold ', ++ ABSTRACT_FROM => 'Haiku.pm', ++); +diff -urN perl-5.10.0.orig/ext/POSIX/POSIX.xs perl-5.10.0/ext/POSIX/POSIX.xs +--- perl-5.10.0.orig/ext/POSIX/POSIX.xs 2007-12-18 10:47:07.000000000 +0000 ++++ perl-5.10.0/ext/POSIX/POSIX.xs 2008-10-25 23:00:29.000000000 +0000 +@@ -379,7 +379,7 @@ + * to follow the traditional. However, to make the POSIX + * wait W*() macros to work in BeOS, we need to unbend the + * reality back in place. --jhi */ +-#ifdef __BEOS__ ++#if defined(__BEOS__) || defined(__HAIKU__) + # define WMUNGE(x) (((x) & 0xFF00) >> 8 | ((x) & 0x00FF) << 8) + #else + # define WMUNGE(x) (x) +diff -urN perl-5.10.0.orig/ext/Time/HiRes/t/HiRes.t perl-5.10.0/ext/Time/HiRes/t/HiRes.t +--- perl-5.10.0.orig/ext/Time/HiRes/t/HiRes.t 2007-12-18 10:47:07.000000000 +0000 ++++ perl-5.10.0/ext/Time/HiRes/t/HiRes.t 2008-10-24 17:09:59.000000000 +0000 +@@ -337,7 +337,8 @@ + && defined &Time::HiRes::getitimer + && has_symbol('ITIMER_VIRTUAL') + && $Config{sig_name} =~ m/\bVTALRM\b/ +- && $^O !~ /^(nto)$/) { # nto: QNX 6 has the API but no implementation ++ && $^O !~ /^(nto)$/ # nto: QNX 6 has the API but no implementation ++ && $^O ne 'haiku') { # same for Haiku + for (18..19) { + print "ok $_ # Skip: no virtual interval timers\n"; + } +diff -urN perl-5.10.0.orig/haiku/haikuish.h perl-5.10.0/haiku/haikuish.h +--- perl-5.10.0.orig/haiku/haikuish.h 1970-01-01 00:00:00.000000000 +0000 ++++ perl-5.10.0/haiku/haikuish.h 2008-10-24 17:09:59.000000000 +0000 +@@ -0,0 +1,11 @@ ++#ifndef PERL_HAIKU_HAIKUISH_H ++#define PERL_HAIKU_HAIKUISH_H ++ ++#include "../unixish.h" ++ ++/* We need or else the W* macros aren't defined in perl.h. */ ++ ++#include ++ ++#endif ++ +diff -urN perl-5.10.0.orig/hints/haiku.sh perl-5.10.0/hints/haiku.sh +--- perl-5.10.0.orig/hints/haiku.sh 1970-01-01 00:00:00.000000000 +0000 ++++ perl-5.10.0/hints/haiku.sh 2008-10-28 02:50:53.000000000 +0000 +@@ -0,0 +1,34 @@ ++# 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 +diff -urN perl-5.10.0.orig/lib/CPANPLUS/Internals/Constants/Report.pm perl-5.10.0/lib/CPANPLUS/Internals/Constants/Report.pm +--- perl-5.10.0.orig/lib/CPANPLUS/Internals/Constants/Report.pm 2007-12-18 10:47:08.000000000 +0000 ++++ perl-5.10.0/lib/CPANPLUS/Internals/Constants/Report.pm 2008-10-24 17:09:59.000000000 +0000 +@@ -29,6 +29,7 @@ + Cygwin => 'cygwin', + Darwin => 'darwin', + EBCDIC => 'os390|os400|posix-bc|vmesa', ++ Haiku => 'haiku', + HPUX => 'hpux', + Linux => 'linux', + MSDOS => 'dos|os2|MSWin32|cygwin', +diff -urN perl-5.10.0.orig/lib/ExtUtils/CBuilder.pm perl-5.10.0/lib/ExtUtils/CBuilder.pm +--- perl-5.10.0.orig/lib/ExtUtils/CBuilder.pm 2007-12-18 10:47:07.000000000 +0000 ++++ perl-5.10.0/lib/ExtUtils/CBuilder.pm 2008-10-28 02:42:24.000000000 +0000 +@@ -36,6 +36,7 @@ + sunos Unix + cygwin Unix + os2 Unix ++ haiku Unix + + dos Windows + MSWin32 Windows +diff -urN perl-5.10.0.orig/lib/ExtUtils/MM.pm perl-5.10.0/lib/ExtUtils/MM.pm +--- perl-5.10.0.orig/lib/ExtUtils/MM.pm 2007-12-18 10:47:07.000000000 +0000 ++++ perl-5.10.0/lib/ExtUtils/MM.pm 2008-10-24 17:09:59.000000000 +0000 +@@ -69,6 +69,7 @@ + $Is{VOS} = $^O eq 'vos'; + $Is{QNX} = $^O eq 'qnx'; + $Is{AIX} = $^O eq 'aix'; ++$Is{Haiku} = $^O eq 'haiku'; + + $Is{Unix} = !grep { $_ } values %Is; + +diff -urN perl-5.10.0.orig/lib/ExtUtils/MM_Haiku.pm perl-5.10.0/lib/ExtUtils/MM_Haiku.pm +--- perl-5.10.0.orig/lib/ExtUtils/MM_Haiku.pm 1970-01-01 00:00:00.000000000 +0000 ++++ perl-5.10.0/lib/ExtUtils/MM_Haiku.pm 2008-10-24 17:09:59.000000000 +0000 +@@ -0,0 +1,62 @@ ++package ExtUtils::MM_Haiku; ++ ++use strict; ++ ++=head1 NAME ++ ++ExtUtils::MM_Haiku - methods to override UN*X behaviour in ExtUtils::MakeMaker ++ ++=head1 SYNOPSIS ++ ++ use ExtUtils::MM_Haiku; # Done internally by ExtUtils::MakeMaker if needed ++ ++=head1 DESCRIPTION ++ ++See ExtUtils::MM_Unix for a documentation of the methods provided ++there. This package overrides the implementation of these methods, not ++the semantics. ++ ++=over 4 ++ ++=cut ++ ++use ExtUtils::MakeMaker::Config; ++use File::Spec; ++require ExtUtils::MM_Any; ++require ExtUtils::MM_Unix; ++ ++use vars qw(@ISA $VERSION); ++@ISA = qw( ExtUtils::MM_Any ExtUtils::MM_Unix ); ++$VERSION = '6.42'; ++ ++ ++=item os_flavor ++ ++Haiku is Haiku. ++ ++=cut ++ ++sub os_flavor { ++ return('Haiku'); ++} ++ ++=item init_linker ++ ++libperl.a equivalent to be linked to dynamic extensions. ++ ++=cut ++ ++sub init_linker { ++ my($self) = shift; ++ ++ $self->{PERL_ARCHIVE} ||= ++ File::Spec->catdir('$(PERL_INC)',$Config{libperl}); ++ $self->{PERL_ARCHIVE_AFTER} ||= ''; ++ $self->{EXPORT_LIST} ||= ''; ++} ++ ++=back ++ ++1; ++__END__ ++ +diff -urN perl-5.10.0.orig/lib/Module/Build.pm perl-5.10.0/lib/Module/Build.pm +--- perl-5.10.0.orig/lib/Module/Build.pm 2007-12-18 10:47:07.000000000 +0000 ++++ perl-5.10.0/lib/Module/Build.pm 2008-10-24 17:09:59.000000000 +0000 +@@ -30,6 +30,7 @@ + dynixptx Unix + freebsd Unix + linux Unix ++ haiku Unix + hpux Unix + irix Unix + darwin Unix +diff -urN perl-5.10.0.orig/perl.h perl-5.10.0/perl.h +--- perl-5.10.0.orig/perl.h 2007-12-18 10:47:08.000000000 +0000 ++++ perl-5.10.0/perl.h 2008-10-25 20:42:31.000000000 +0000 +@@ -1520,15 +1520,15 @@ + # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH) + #endif + +-/* BeOS 5.0 seems to define S_IREAD and S_IWRITE in ++/* BeOS 5.0 and Haiku R1 seem to define S_IREAD and S_IWRITE in + * which would get included through , but that is 3000 + * lines in the future. --jhi */ + +-#if !defined(S_IREAD) && !defined(__BEOS__) ++#if !defined(S_IREAD) && !(defined(__BEOS__) || defined(__HAIKU__)) + # define S_IREAD S_IRUSR + #endif + +-#if !defined(S_IWRITE) && !defined(__BEOS__) ++#if !defined(S_IWRITE) && !(defined(__BEOS__) || defined(__HAIKU__)) + # define S_IWRITE S_IWUSR + #endif + +@@ -2551,7 +2551,10 @@ + # define ISHISH "macos classic" + #endif + +-#if defined(__BEOS__) ++#if defined(__HAIKU__) ++# include "haiku/haikuish.h" ++# define ISHISH "haiku" ++#elif defined(__BEOS__) + # include "beos/beosish.h" + # define ISHISH "beos" + #endif +@@ -5609,9 +5612,10 @@ + #if O_TEXT != O_BINARY + /* If you have different O_TEXT and O_BINARY and you are a CLRF shop, + * that is, you are somehow DOSish. */ +-# if defined(__BEOS__) || defined(__VOS__) || defined(__CYGWIN__) +- /* BeOS has O_TEXT != O_BINARY but O_TEXT and O_BINARY have no effect; +- * BeOS is always UNIXoid (LF), not DOSish (CRLF). */ ++# if defined(__BEOS__) || defined(__HAIKU__) || defined(__VOS__) || \ ++ defined(__CYGWIN__) ++ /* BeOS/Haiku has O_TEXT != O_BINARY but O_TEXT and O_BINARY have no effect; ++ * BeOS/Haiku is always UNIXoid (LF), not DOSish (CRLF). */ + /* VOS has O_TEXT != O_BINARY, and they have effect, + * but VOS always uses LF, never CRLF. */ + /* If you have O_TEXT different from your O_BINARY but you still are +diff -urN perl-5.10.0.orig/pod/perlport.pod perl-5.10.0/pod/perlport.pod +--- perl-5.10.0.orig/pod/perlport.pod 2007-12-18 10:47:08.000000000 +0000 ++++ perl-5.10.0/pod/perlport.pod 2008-10-28 02:37:44.000000000 +0000 +@@ -815,6 +815,7 @@ + dgux dgux AViiON-dgux + DYNIX/ptx dynixptx i386-dynixptx + FreeBSD freebsd freebsd-i386 ++ Haiku haiku BePC-haiku + Linux linux arm-linux + Linux linux i386-linux + Linux linux i586-linux +diff -urN perl-5.10.0.orig/t/io/fs.t perl-5.10.0/t/io/fs.t +--- perl-5.10.0.orig/t/io/fs.t 2007-12-18 10:47:08.000000000 +0000 ++++ perl-5.10.0/t/io/fs.t 2008-10-24 17:09:59.000000000 +0000 +@@ -275,7 +275,7 @@ + is( $atime, 500000001, 'atime' ); + is( $mtime, 500000000 + $delta, 'mtime' ); + } +- elsif ($^O eq 'beos') { ++ elsif ($^O eq 'beos' || $^O eq 'haiku') { + SKIP: { + skip "atime not updated", 1; + } diff --git a/dev-lang/perl/perl-current.diff b/dev-lang/perl/perl-current.diff new file mode 100644 index 000000000..dc984b7fc --- /dev/null +++ b/dev-lang/perl/perl-current.diff @@ -0,0 +1,697 @@ +Patch against perl-current 5.11.0@34615. +diff -urN /ReiserFS Volume (60.0 GB)/home/bonefish/tmp/perl/Configure /CrashTest/ports/perl/perl-current/Configure +--- /ReiserFS Volume (60.0 GB)/home/bonefish/tmp/perl/Configure 2008-10-27 18:36:47.000000000 +0000 ++++ /CrashTest/ports/perl/perl-current/Configure 2008-10-28 13:50:02.000000000 +0000 +@@ -8014,6 +8014,7 @@ + case "$lddlflags" in + '') case "$osname" in + beos) dflt='-nostart' ;; ++ haiku) dflt='-shared' ;; + hpux) dflt='-b'; + case "$gccversion" in + '') dflt="$dflt +vnocompatwarnings" ;; +@@ -8107,7 +8108,7 @@ + ;; + *) case "$useshrplib" in + '') case "$osname" in +- svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*) ++ svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*|haiku) + dflt=y + also='Building a shared libperl is required for dynamic loading to work on your system.' + ;; +@@ -8274,6 +8275,9 @@ + beos) + # beos doesn't like the default, either. + ;; ++ haiku) ++ # Haiku doesn't like the default, either. ++ ;; + hpux*) + # hpux doesn't like the default, either. + tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\"" +diff -urN /ReiserFS Volume (60.0 GB)/home/bonefish/tmp/perl/MANIFEST /CrashTest/ports/perl/perl-current/MANIFEST +--- /ReiserFS Volume (60.0 GB)/home/bonefish/tmp/perl/MANIFEST 2008-10-25 15:11:55.000000000 +0000 ++++ /CrashTest/ports/perl/perl-current/MANIFEST 2008-10-28 16:00:22.000000000 +0000 +@@ -677,6 +677,9 @@ + ext/GDBM_File/Makefile.PL GDBM extension makefile writer + ext/GDBM_File/t/gdbm.t See if GDBM_File works + ext/GDBM_File/typemap GDBM extension interface types ++ext/Haiku/Haiku.pm Haiku extension Perl module ++ext/Haiku/Haiku.xs Haiku extension external subroutines ++ext/Haiku/Makefile.PL Haiku extension makefile writer + ext/Hash/Util/Changes Change history of Hash::Util + ext/Hash/Util/FieldHash/Changes Changes for Hash::Util::FieldHash + ext/Hash/Util/FieldHash/FieldHash.xs XS portion +@@ -1478,6 +1481,7 @@ + h2pl/README How to turn .ph files into .pl files + h2pl/tcbreak cbreak test routine using .ph + h2pl/tcbreak2 cbreak test routine using .pl ++haiku/haikuish.h Header for the Haiku port + handy.h Handy definitions + hints/3b1cc Hints for named architecture + hints/3b1.sh Hints for named architecture +@@ -1513,6 +1517,7 @@ + hints/gnuknetbsd.sh Hints for named architecture + hints/gnu.sh Hints for named architecture + hints/greenhills.sh Hints for named architecture ++hints/haiku.sh Hints for named architecture + hints/hpux.sh Hints for named architecture + hints/i386.sh Hints for named architecture + hints/interix.sh Hints for named architecture +@@ -1982,6 +1987,7 @@ + lib/ExtUtils/MM_Cygwin.pm MakeMaker methods for Cygwin + lib/ExtUtils/MM_Darwin.pm MakeMaker methods for Darwin + lib/ExtUtils/MM_DOS.pm MakeMaker methods for DOS ++lib/ExtUtils/MM_Haiku.pm MakeMaker methods for Haiku + lib/ExtUtils/MM_MacOS.pm MakeMaker methods for MacOS + lib/ExtUtils/MM_NW5.pm MakeMaker methods for NetWare + lib/ExtUtils/MM_OS2.pm MakeMaker methods for OS/2 +@@ -3535,6 +3541,7 @@ + README.dos Perl notes for DOS + README.epoc Perl notes for EPOC + README.freebsd Perl notes for FreeBSD ++README.haiku Perl notes for Haiku + README.hpux Perl notes for HP-UX + README.hurd Perl notes for Hurd + README.irix Perl notes for Irix +diff -urN /ReiserFS Volume (60.0 GB)/home/bonefish/tmp/perl/README.haiku /CrashTest/ports/perl/perl-current/README.haiku +--- /ReiserFS Volume (60.0 GB)/home/bonefish/tmp/perl/README.haiku 1970-01-01 00:00:00.000000000 +0000 ++++ /CrashTest/ports/perl/perl-current/README.haiku 2008-10-28 15:34:37.000000000 +0000 +@@ -0,0 +1,64 @@ ++If you read this file _as_is_, just ignore the funny characters you see. ++It is written in the POD format (see pod/perlpod.pod) which is specially ++designed to be readable as is. ++ ++=head1 NAME ++ ++README.haiku - Perl version 5.10+ on Haiku ++ ++=head1 DESCRIPTION ++ ++This file contains instructions how to build Perl for Haiku and lists ++known problems. ++ ++=head1 BUILD AND INSTALL ++ ++The build procedure is completely standard: ++ ++ ./Configure -de ++ make ++ make install ++ ++Make perl executable and create a symlink for libperl: ++ ++ chmod a+x /boot/common/bin/perl ++ cd /boot/common/lib; ln -s perl5/5.10.0/BePC-haiku/CORE/libperl.so . ++ ++Replace C<5.10.0> with your respective version of Perl. ++ ++=head1 KNOWN PROBLEMS ++ ++The following problems are encountered with Haiku revision 28311: ++ ++=over 4 ++ ++=item * ++ ++Perl cannot be compiled with threading support ATM. ++ ++=item * ++ ++The C test fails. More precisely: the subtests ++using datagram sockets fail. Unix datagram sockets aren't implemented in ++Haiku yet. ++ ++=item * ++ ++A subtest of the C test fails. This is due to Haiku ++not implementing C support yet. ++ ++=item * ++ ++The tests C and C ++fail. This is due to bugs in Haiku's network stack implementation. ++ ++=back ++ ++=head1 CONTACT ++ ++For Haiku specific problems contact the HaikuPorts developers: ++http://ports.haiku-files.org/ ++ ++The initial Haiku port was done by Ingo Weinhold . ++ ++Last update: 2008-10-29 +diff -urN /ReiserFS Volume (60.0 GB)/home/bonefish/tmp/perl/ext/Errno/Errno_pm.PL /CrashTest/ports/perl/perl-current/ext/Errno/Errno_pm.PL +--- /ReiserFS Volume (60.0 GB)/home/bonefish/tmp/perl/ext/Errno/Errno_pm.PL 2008-09-19 21:04:08.000000000 +0000 ++++ /CrashTest/ports/perl/perl-current/ext/Errno/Errno_pm.PL 2008-10-28 13:50:02.000000000 +0000 +@@ -155,7 +155,7 @@ + # we might miss out on compiler-specific ones + $file{"$ENV{GUSI}include:sys:errno.h"} = 1; + +- } elsif ($^O eq 'beos') { ++ } elsif ($^O eq 'beos' || $^O eq 'haiku') { + # hidden in a special place + $file{'/boot/develop/headers/posix/errno.h'} = 1; + +diff -urN /ReiserFS Volume (60.0 GB)/home/bonefish/tmp/perl/ext/Haiku/Haiku.pm /CrashTest/ports/perl/perl-current/ext/Haiku/Haiku.pm +--- /ReiserFS Volume (60.0 GB)/home/bonefish/tmp/perl/ext/Haiku/Haiku.pm 1970-01-01 00:00:00.000000000 +0000 ++++ /CrashTest/ports/perl/perl-current/ext/Haiku/Haiku.pm 2008-10-28 13:50:02.000000000 +0000 +@@ -0,0 +1,54 @@ ++package Haiku; ++ ++BEGIN { ++ use strict; ++ use vars qw|$VERSION $XS_VERSION @ISA @EXPORT @EXPORT_OK|; ++ ++ require Exporter; ++ require DynaLoader; ++ ++ @ISA = qw|Exporter DynaLoader|; ++ $VERSION = '0.34'; ++ $XS_VERSION = $VERSION; ++ $VERSION = eval $VERSION; ++ ++ @EXPORT = qw( ++ ); ++ @EXPORT_OK = qw( ++ ); ++} ++ ++bootstrap Haiku; ++ ++1; ++ ++__END__ ++ ++=head1 NAME ++ ++Haiku - Interfaces to some Haiku API Functions ++ ++=head1 DESCRIPTION ++ ++The Haiku module contains functions to access Haiku APIs. ++ ++=head2 Alphabetical Listing of Haiku Functions ++ ++=over ++ ++=item Haiku::debug_printf(FORMAT,...) ++ ++Similar to printf, but prints to system debug output. ++ ++=item Haiku::debugger(FORMAT,...) ++ ++Drops the program into the debugger. The printf like arguments define the ++debugger message. ++ ++=item Haiku::ktrace_printf(FORMAT,...) ++ ++Similar to printf, but prints to a kernel tracing entry. ++ ++=back ++ ++=cut +diff -urN /ReiserFS Volume (60.0 GB)/home/bonefish/tmp/perl/ext/Haiku/Haiku.xs /CrashTest/ports/perl/perl-current/ext/Haiku/Haiku.xs +--- /ReiserFS Volume (60.0 GB)/home/bonefish/tmp/perl/ext/Haiku/Haiku.xs 1970-01-01 00:00:00.000000000 +0000 ++++ /CrashTest/ports/perl/perl-current/ext/Haiku/Haiku.xs 2008-10-28 13:50:02.000000000 +0000 +@@ -0,0 +1,137 @@ ++#define PERL_NO_GET_CONTEXT ++#include "EXTERN.h" ++#include "perl.h" ++#include "XSUB.h" ++ ++#include ++ ++#include ++ ++static void ++haiku_do_debugger(const char* format,...) ++{ ++ char buffer[1024]; ++ va_list args; ++ va_start(args, format); ++ my_vsnprintf(buffer, sizeof(buffer), format, args); ++ va_end(args); ++ ++ debugger(buffer); ++} ++ ++static void ++haiku_do_debug_printf(pTHX_ register SV *sv, ++ void (*printfFunc)(const char*,...)) ++{ ++ dVAR; ++ ++ if (!sv) ++ return; ++ if (SvTYPE(sv) == SVt_IV && SvIOK(sv)) { ++ assert(!SvGMAGICAL(sv)); ++ if (SvIsUV(sv)) ++ (*printfFunc)("%"UVuf, (UV)SvUVX(sv)); ++ else ++ (*printfFunc)("%"IVdf, (IV)SvIVX(sv)); ++ return; ++ } ++ else { ++ STRLEN len; ++ /* Do this first to trigger any overloading. */ ++ const char *tmps = SvPV_const(sv, len); ++ U8 *tmpbuf = NULL; ++ ++ if (!SvUTF8(sv)) { ++ /* We don't modify the original scalar. */ ++ tmpbuf = bytes_to_utf8((const U8*) tmps, &len); ++ tmps = (char *) tmpbuf; ++ } ++ ++ if (len) ++ (*printfFunc)("%.*s", (int)len, tmps); ++ Safefree(tmpbuf); ++ } ++} ++ ++XS(haiku_debug_printf) ++{ ++ dVAR; ++ dXSARGS; ++ dORIGMARK; ++ SV *sv; ++ ++ if (items < 1) ++ Perl_croak(aTHX_ "usage: Haiku::debug_printf($format,...)"); ++ ++ sv = newSV(0); ++ ++ if (SvTAINTED(MARK[1])) ++ TAINT_PROPER("debug_printf"); ++ do_sprintf(sv, SP - MARK, MARK + 1); ++ ++ haiku_do_debug_printf(sv, &debug_printf); ++ ++ SvREFCNT_dec(sv); ++ SP = ORIGMARK; ++ PUSHs(&PL_sv_yes); ++} ++ ++XS(haiku_ktrace_printf) ++{ ++ dVAR; ++ dXSARGS; ++ dORIGMARK; ++ SV *sv; ++ ++ if (items < 1) ++ Perl_croak(aTHX_ "usage: Haiku::debug_printf($format,...)"); ++ ++ sv = newSV(0); ++ ++ if (SvTAINTED(MARK[1])) ++ TAINT_PROPER("ktrace_printf"); ++ do_sprintf(sv, SP - MARK, MARK + 1); ++ ++ haiku_do_debug_printf(sv, &ktrace_printf); ++ ++ SvREFCNT_dec(sv); ++ SP = ORIGMARK; ++ PUSHs(&PL_sv_yes); ++} ++ ++XS(haiku_debugger) ++{ ++ dVAR; ++ dXSARGS; ++ dORIGMARK; ++ SV *sv; ++ ++ if (items < 1) ++ Perl_croak(aTHX_ "usage: Haiku::debugger($format,...)"); ++ ++ sv = newSV(0); ++ ++ if (SvTAINTED(MARK[1])) ++ TAINT_PROPER("debugger"); ++ do_sprintf(sv, SP - MARK, MARK + 1); ++ ++ haiku_do_debug_printf(sv, &haiku_do_debugger); ++ ++ SvREFCNT_dec(sv); ++ SP = ORIGMARK; ++ PUSHs(&PL_sv_yes); ++} ++ ++MODULE = Haiku PACKAGE = Haiku ++ ++PROTOTYPES: DISABLE ++ ++BOOT: ++{ ++ char *file = __FILE__; ++ ++ newXS("Haiku::debug_printf", haiku_debug_printf, file); ++ newXS("Haiku::ktrace_printf", haiku_ktrace_printf, file); ++ newXS("Haiku::debugger", haiku_debugger, file); ++ XSRETURN_YES; ++} +diff -urN /ReiserFS Volume (60.0 GB)/home/bonefish/tmp/perl/ext/Haiku/Makefile.PL /CrashTest/ports/perl/perl-current/ext/Haiku/Makefile.PL +--- /ReiserFS Volume (60.0 GB)/home/bonefish/tmp/perl/ext/Haiku/Makefile.PL 1970-01-01 00:00:00.000000000 +0000 ++++ /CrashTest/ports/perl/perl-current/ext/Haiku/Makefile.PL 2008-10-28 13:50:02.000000000 +0000 +@@ -0,0 +1,20 @@ ++use 5.006; ++use ExtUtils::MakeMaker; ++ ++unless ($^O eq "haiku") { ++ die "OS unsupported\n"; ++} ++ ++#my @libs; ++#push @libs, '-L/lib/w32api -lole32 -lversion' if $^O eq "cygwin"; ++ ++WriteMakefile( ++ NAME => 'Haiku', ++ VERSION_FROM => 'Haiku.pm', ++# LIBS => \@libs, ++ INSTALLDIRS => ($] >= 5.008004 ? 'perl' : 'site'), ++ NO_META => 1, ++ ++ AUTHOR => 'Ingo Weinhold ', ++ ABSTRACT_FROM => 'Haiku.pm', ++); +diff -urN /ReiserFS Volume (60.0 GB)/home/bonefish/tmp/perl/ext/POSIX/POSIX.xs /CrashTest/ports/perl/perl-current/ext/POSIX/POSIX.xs +--- /ReiserFS Volume (60.0 GB)/home/bonefish/tmp/perl/ext/POSIX/POSIX.xs 2008-09-19 21:04:09.000000000 +0000 ++++ /CrashTest/ports/perl/perl-current/ext/POSIX/POSIX.xs 2008-10-28 15:22:24.000000000 +0000 +@@ -379,7 +379,17 @@ + * to follow the traditional. However, to make the POSIX + * wait W*() macros to work in BeOS, we need to unbend the + * reality back in place. --jhi */ +-#ifdef __BEOS__ ++/* In actual fact the code below is to blame here. Perl has an internal ++ * representation of the exit status ($?), which it re-composes from the ++ * OS's representation using the W*() POSIX macros. The code below ++ * incorrectly uses the W*() macros on the internal representation, ++ * which fails for OSs that have a different representation (namely BeOS ++ * and Haiku). WMUNGE() is a hack that converts the internal ++ * representation into the OS specific one, so that the W*() macros work ++ * as expected. The better solution would be not to use the W*() macros ++ * in the first place, though. -- Ingo Weinhold ++ */ ++#if defined(__BEOS__) || defined(__HAIKU__) + # define WMUNGE(x) (((x) & 0xFF00) >> 8 | ((x) & 0x00FF) << 8) + #else + # define WMUNGE(x) (x) +@@ -664,42 +674,42 @@ + switch(ix) { + case 0: + #ifdef WEXITSTATUS +- RETVAL = WEXITSTATUS(status); ++ RETVAL = WEXITSTATUS(WMUNGE(status)); + #else + not_here("WEXITSTATUS"); + #endif + break; + case 1: + #ifdef WIFEXITED +- RETVAL = WIFEXITED(status); ++ RETVAL = WIFEXITED(WMUNGE(status)); + #else + not_here("WIFEXITED"); + #endif + break; + case 2: + #ifdef WIFSIGNALED +- RETVAL = WIFSIGNALED(status); ++ RETVAL = WIFSIGNALED(WMUNGE(status)); + #else + not_here("WIFSIGNALED"); + #endif + break; + case 3: + #ifdef WIFSTOPPED +- RETVAL = WIFSTOPPED(status); ++ RETVAL = WIFSTOPPED(WMUNGE(status)); + #else + not_here("WIFSTOPPED"); + #endif + break; + case 4: + #ifdef WSTOPSIG +- RETVAL = WSTOPSIG(status); ++ RETVAL = WSTOPSIG(WMUNGE(status)); + #else + not_here("WSTOPSIG"); + #endif + break; + case 5: + #ifdef WTERMSIG +- RETVAL = WTERMSIG(status); ++ RETVAL = WTERMSIG(WMUNGE(status)); + #else + not_here("WTERMSIG"); + #endif +diff -urN /ReiserFS Volume (60.0 GB)/home/bonefish/tmp/perl/ext/Time/HiRes/t/HiRes.t /CrashTest/ports/perl/perl-current/ext/Time/HiRes/t/HiRes.t +--- /ReiserFS Volume (60.0 GB)/home/bonefish/tmp/perl/ext/Time/HiRes/t/HiRes.t 2008-09-19 21:04:09.000000000 +0000 ++++ /CrashTest/ports/perl/perl-current/ext/Time/HiRes/t/HiRes.t 2008-10-28 13:50:02.000000000 +0000 +@@ -337,7 +337,8 @@ + && defined &Time::HiRes::getitimer + && has_symbol('ITIMER_VIRTUAL') + && $Config{sig_name} =~ m/\bVTALRM\b/ +- && $^O !~ /^(nto)$/) { # nto: QNX 6 has the API but no implementation ++ && $^O !~ /^(nto)$/ # nto: QNX 6 has the API but no implementation ++ && $^O ne 'haiku') { # same for Haiku + for (18..19) { + print "ok $_ # Skip: no virtual interval timers\n"; + } +diff -urN /ReiserFS Volume (60.0 GB)/home/bonefish/tmp/perl/haiku/haikuish.h /CrashTest/ports/perl/perl-current/haiku/haikuish.h +--- /ReiserFS Volume (60.0 GB)/home/bonefish/tmp/perl/haiku/haikuish.h 1970-01-01 00:00:00.000000000 +0000 ++++ /CrashTest/ports/perl/perl-current/haiku/haikuish.h 2008-10-28 13:50:02.000000000 +0000 +@@ -0,0 +1,11 @@ ++#ifndef PERL_HAIKU_HAIKUISH_H ++#define PERL_HAIKU_HAIKUISH_H ++ ++#include "../unixish.h" ++ ++/* We need or else the W* macros aren't defined in perl.h. */ ++ ++#include ++ ++#endif ++ +diff -urN /ReiserFS Volume (60.0 GB)/home/bonefish/tmp/perl/hints/haiku.sh /CrashTest/ports/perl/perl-current/hints/haiku.sh +--- /ReiserFS Volume (60.0 GB)/home/bonefish/tmp/perl/hints/haiku.sh 1970-01-01 00:00:00.000000000 +0000 ++++ /CrashTest/ports/perl/perl-current/hints/haiku.sh 2008-10-28 13:50:02.000000000 +0000 +@@ -0,0 +1,34 @@ ++# 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 +diff -urN /ReiserFS Volume (60.0 GB)/home/bonefish/tmp/perl/lib/CPANPLUS/Internals/Constants/Report.pm /CrashTest/ports/perl/perl-current/lib/CPANPLUS/Internals/Constants/Report.pm +--- /ReiserFS Volume (60.0 GB)/home/bonefish/tmp/perl/lib/CPANPLUS/Internals/Constants/Report.pm 2008-09-19 21:04:10.000000000 +0000 ++++ /CrashTest/ports/perl/perl-current/lib/CPANPLUS/Internals/Constants/Report.pm 2008-10-28 13:50:02.000000000 +0000 +@@ -29,6 +29,7 @@ + Cygwin => 'cygwin', + Darwin => 'darwin', + EBCDIC => 'os390|os400|posix-bc|vmesa', ++ Haiku => 'haiku', + HPUX => 'hpux', + Linux => 'linux', + MSDOS => 'dos|os2|MSWin32|cygwin', +diff -urN /ReiserFS Volume (60.0 GB)/home/bonefish/tmp/perl/lib/ExtUtils/CBuilder.pm /CrashTest/ports/perl/perl-current/lib/ExtUtils/CBuilder.pm +--- /ReiserFS Volume (60.0 GB)/home/bonefish/tmp/perl/lib/ExtUtils/CBuilder.pm 2008-09-19 21:04:11.000000000 +0000 ++++ /CrashTest/ports/perl/perl-current/lib/ExtUtils/CBuilder.pm 2008-10-28 13:51:54.000000000 +0000 +@@ -38,6 +38,7 @@ + os2 Unix + gnu Unix + gnukfreebsd Unix ++ haiku Unix + + dos Windows + MSWin32 Windows +diff -urN /ReiserFS Volume (60.0 GB)/home/bonefish/tmp/perl/lib/ExtUtils/MM.pm /CrashTest/ports/perl/perl-current/lib/ExtUtils/MM.pm +--- /ReiserFS Volume (60.0 GB)/home/bonefish/tmp/perl/lib/ExtUtils/MM.pm 2008-10-20 20:29:57.000000000 +0000 ++++ /CrashTest/ports/perl/perl-current/lib/ExtUtils/MM.pm 2008-10-28 13:52:24.000000000 +0000 +@@ -68,6 +68,7 @@ + $Is{QNX} = $^O eq 'qnx'; + $Is{AIX} = $^O eq 'aix'; + $Is{Darwin} = $^O eq 'darwin'; ++$Is{Haiku} = $^O eq 'haiku'; + + $Is{Unix} = !grep { $_ } values %Is; + +diff -urN /ReiserFS Volume (60.0 GB)/home/bonefish/tmp/perl/lib/ExtUtils/MM_Haiku.pm /CrashTest/ports/perl/perl-current/lib/ExtUtils/MM_Haiku.pm +--- /ReiserFS Volume (60.0 GB)/home/bonefish/tmp/perl/lib/ExtUtils/MM_Haiku.pm 1970-01-01 00:00:00.000000000 +0000 ++++ /CrashTest/ports/perl/perl-current/lib/ExtUtils/MM_Haiku.pm 2008-10-28 13:50:02.000000000 +0000 +@@ -0,0 +1,62 @@ ++package ExtUtils::MM_Haiku; ++ ++use strict; ++ ++=head1 NAME ++ ++ExtUtils::MM_Haiku - methods to override UN*X behaviour in ExtUtils::MakeMaker ++ ++=head1 SYNOPSIS ++ ++ use ExtUtils::MM_Haiku; # Done internally by ExtUtils::MakeMaker if needed ++ ++=head1 DESCRIPTION ++ ++See ExtUtils::MM_Unix for a documentation of the methods provided ++there. This package overrides the implementation of these methods, not ++the semantics. ++ ++=over 4 ++ ++=cut ++ ++use ExtUtils::MakeMaker::Config; ++use File::Spec; ++require ExtUtils::MM_Any; ++require ExtUtils::MM_Unix; ++ ++use vars qw(@ISA $VERSION); ++@ISA = qw( ExtUtils::MM_Any ExtUtils::MM_Unix ); ++$VERSION = '6.42'; ++ ++ ++=item os_flavor ++ ++Haiku is Haiku. ++ ++=cut ++ ++sub os_flavor { ++ return('Haiku'); ++} ++ ++=item init_linker ++ ++libperl.a equivalent to be linked to dynamic extensions. ++ ++=cut ++ ++sub init_linker { ++ my($self) = shift; ++ ++ $self->{PERL_ARCHIVE} ||= ++ File::Spec->catdir('$(PERL_INC)',$Config{libperl}); ++ $self->{PERL_ARCHIVE_AFTER} ||= ''; ++ $self->{EXPORT_LIST} ||= ''; ++} ++ ++=back ++ ++1; ++__END__ ++ +diff -urN /ReiserFS Volume (60.0 GB)/home/bonefish/tmp/perl/lib/Module/Build.pm /CrashTest/ports/perl/perl-current/lib/Module/Build.pm +--- /ReiserFS Volume (60.0 GB)/home/bonefish/tmp/perl/lib/Module/Build.pm 2008-09-30 11:29:35.000000000 +0000 ++++ /CrashTest/ports/perl/perl-current/lib/Module/Build.pm 2008-10-28 13:50:02.000000000 +0000 +@@ -30,6 +30,7 @@ + dynixptx Unix + freebsd Unix + linux Unix ++ haiku Unix + hpux Unix + irix Unix + darwin Unix +diff -urN /ReiserFS Volume (60.0 GB)/home/bonefish/tmp/perl/perl.h /CrashTest/ports/perl/perl-current/perl.h +--- /ReiserFS Volume (60.0 GB)/home/bonefish/tmp/perl/perl.h 2008-10-25 12:23:51.000000000 +0000 ++++ /CrashTest/ports/perl/perl-current/perl.h 2008-10-28 13:50:02.000000000 +0000 +@@ -1539,15 +1539,15 @@ + # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH) + #endif + +-/* BeOS 5.0 seems to define S_IREAD and S_IWRITE in ++/* BeOS 5.0 and Haiku R1 seem to define S_IREAD and S_IWRITE in + * which would get included through , but that is 3000 + * lines in the future. --jhi */ + +-#if !defined(S_IREAD) && !defined(__BEOS__) ++#if !defined(S_IREAD) && !(defined(__BEOS__) || defined(__HAIKU__)) + # define S_IREAD S_IRUSR + #endif + +-#if !defined(S_IWRITE) && !defined(__BEOS__) ++#if !defined(S_IWRITE) && !(defined(__BEOS__) || defined(__HAIKU__)) + # define S_IWRITE S_IWUSR + #endif + +@@ -2571,7 +2571,10 @@ + # define ISHISH "macos classic" + #endif + +-#if defined(__BEOS__) ++#if defined(__HAIKU__) ++# include "haiku/haikuish.h" ++# define ISHISH "haiku" ++#elif defined(__BEOS__) + # include "beos/beosish.h" + # define ISHISH "beos" + #endif +@@ -5690,9 +5693,10 @@ + #if O_TEXT != O_BINARY + /* If you have different O_TEXT and O_BINARY and you are a CLRF shop, + * that is, you are somehow DOSish. */ +-# if defined(__BEOS__) || defined(__VOS__) || defined(__CYGWIN__) +- /* BeOS has O_TEXT != O_BINARY but O_TEXT and O_BINARY have no effect; +- * BeOS is always UNIXoid (LF), not DOSish (CRLF). */ ++# if defined(__BEOS__) || defined(__HAIKU__) || defined(__VOS__) || \ ++ defined(__CYGWIN__) ++ /* BeOS/Haiku has O_TEXT != O_BINARY but O_TEXT and O_BINARY have no effect; ++ * BeOS/Haiku is always UNIXoid (LF), not DOSish (CRLF). */ + /* VOS has O_TEXT != O_BINARY, and they have effect, + * but VOS always uses LF, never CRLF. */ + /* If you have O_TEXT different from your O_BINARY but you still are +diff -urN /ReiserFS Volume (60.0 GB)/home/bonefish/tmp/perl/pod/perlport.pod /CrashTest/ports/perl/perl-current/pod/perlport.pod +--- /ReiserFS Volume (60.0 GB)/home/bonefish/tmp/perl/pod/perlport.pod 2008-09-19 21:04:18.000000000 +0000 ++++ /CrashTest/ports/perl/perl-current/pod/perlport.pod 2008-10-28 13:50:02.000000000 +0000 +@@ -815,6 +815,7 @@ + dgux dgux AViiON-dgux + DYNIX/ptx dynixptx i386-dynixptx + FreeBSD freebsd freebsd-i386 ++ Haiku haiku BePC-haiku + Linux linux arm-linux + Linux linux i386-linux + Linux linux i586-linux +diff -urN /ReiserFS Volume (60.0 GB)/home/bonefish/tmp/perl/t/io/fs.t /CrashTest/ports/perl/perl-current/t/io/fs.t +--- /ReiserFS Volume (60.0 GB)/home/bonefish/tmp/perl/t/io/fs.t 2008-09-19 21:04:20.000000000 +0000 ++++ /CrashTest/ports/perl/perl-current/t/io/fs.t 2008-10-28 13:50:02.000000000 +0000 +@@ -281,7 +281,7 @@ + is( $atime, 500000001, 'atime' ); + is( $mtime, 500000000 + $delta, 'mtime' ); + } +- elsif ($^O eq 'beos') { ++ elsif ($^O eq 'beos' || $^O eq 'haiku') { + SKIP: { + skip "atime not updated", 1; + }