mirror of
https://github.com/yann64/haikuports.git
synced 2026-04-23 04:00:05 +02:00
Patches against 5.10.0 respectively perl-current@34615. The installation
directory is now /boot/common and socket support is enabled.
This commit is contained in:
637
dev-lang/perl/perl-5.10.0.diff
Normal file
637
dev-lang/perl/perl-5.10.0.diff
Normal file
@@ -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<ext/Socket/t/socketpair.t> 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<ext/Sys/Syslog/t/syslog.t> test fails. This is due to Haiku
|
||||
+not implementing C</dev/log> support yet.
|
||||
+
|
||||
+=item *
|
||||
+
|
||||
+The tests C<lib/Net/Ping/t/450_service.t> and C<lib/Net/Ping/t/510_ping_udp.t>
|
||||
+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 <ingo_weinhold@gmx.de>.
|
||||
+
|
||||
+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 <stdarg.h>
|
||||
+
|
||||
+#include <OS.h>
|
||||
+
|
||||
+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 <ingo_weinhold@gmx.de>',
|
||||
+ 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 <sys/wait.h> or else the W* macros aren't defined in perl.h. */
|
||||
+
|
||||
+#include <sys/wait.h>
|
||||
+
|
||||
+#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 <posix/fcntl.h>
|
||||
+/* BeOS 5.0 and Haiku R1 seem to define S_IREAD and S_IWRITE in <posix/fcntl.h>
|
||||
* which would get included through <sys/file.h >, 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;
|
||||
}
|
||||
697
dev-lang/perl/perl-current.diff
Normal file
697
dev-lang/perl/perl-current.diff
Normal file
@@ -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<ext/Socket/t/socketpair.t> 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<ext/Sys/Syslog/t/syslog.t> test fails. This is due to Haiku
|
||||
+not implementing C</dev/log> support yet.
|
||||
+
|
||||
+=item *
|
||||
+
|
||||
+The tests C<lib/Net/Ping/t/450_service.t> and C<lib/Net/Ping/t/510_ping_udp.t>
|
||||
+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 <ingo_weinhold@gmx.de>.
|
||||
+
|
||||
+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 <stdarg.h>
|
||||
+
|
||||
+#include <OS.h>
|
||||
+
|
||||
+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 <ingo_weinhold@gmx.de>',
|
||||
+ 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 <sys/wait.h> or else the W* macros aren't defined in perl.h. */
|
||||
+
|
||||
+#include <sys/wait.h>
|
||||
+
|
||||
+#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 <posix/fcntl.h>
|
||||
+/* BeOS 5.0 and Haiku R1 seem to define S_IREAD and S_IWRITE in <posix/fcntl.h>
|
||||
* which would get included through <sys/file.h >, 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;
|
||||
}
|
||||
Reference in New Issue
Block a user