| 1 | | [[TOC]] |
| 2 | | |
| 3 | | = PortLog: [wiki:dev-lang]/perl = |
| 4 | | |
| 5 | | http://www.perl.org/ |
| 6 | | |
| 7 | | == version 5.8.8 == |
| 8 | | |
| 9 | | ||R5||untested|| |
| 10 | | ||BONE||unstable|| |
| 11 | | ||Haiku||untested|| |
| 12 | | |
| 13 | | === revision 1 (brecht) - [BONE] === |
| 14 | | |
| 15 | | Following the instructions in the supplied README.beos, it is easy enough to build Perl on BeOS. |
| 16 | | |
| 17 | | On BONE, a large number of tests fail with an error similar to this one: |
| 18 | | |
| 19 | | {{{ |
| 20 | | load_add_on(/boot/home/Documents/code/perl-5.8.8/t/../lib/auto/PerlIO/encoding/encoding.so) : -1 (General OS error) |
| 21 | | Can't load '../lib/auto/PerlIO/encoding/encoding.so' for module PerlIO::encoding: General OS error at ../lib/XSLoader.pm line 70. |
| 22 | | at ../lib/PerlIO/encoding.pm line 14 |
| 23 | | }}} |
| 24 | | |
| 25 | | When kernel debugging is enabled, the following is printed to the syslog: |
| 26 | | |
| 27 | | {{{ |
| 28 | | KERN 'perl'[849]: clone_area_gen error |
| 29 | | }}} |
| 30 | | |
| 31 | | It seems that Firefox suffered from a similar problem at one point: http://www.bebits.com/talkback/2715?page=14. This was because of the global 32MB add-on limit in BeOS. |
| 32 | | |
| 33 | | Dynamically loading {{{encoding.so}}} in a small test application is not a problem, so that library is not to blame. When linking this small test application with libflock however, the same error occurs - '''sometimes'''! The error doesn't seem to be reproducible but random. Perhaps this has something to do with the 32MB global add-on limit in BeOS? |
| 34 | | |
| 35 | | The author of flock_server, Ingo Weinhold, only develops on R5. Hence, there could be a problem with flock_server on BONE. |
| 36 | | |
| 37 | | When compiling Perl without flock() support (removing flock.h), there are no load_add_on() errors. This does indeed support the idea that there is a problem with flock_server on BONE. |
| 38 | | |
| 39 | | When statically linking all extensions, load_add_on() is not used, and thus there is no errors. This results in a perl executable of 6MB though. |
| 40 | | |
| 41 | | To build Perl with dynamically loaded extensions, we need to find out what the incompatibility between flock_server and BONE is (ticket #38). |
| 42 | | |
| 43 | | The built perl executable will sometimes output the following warning: |
| 44 | | |
| 45 | | {{{ |
| 46 | | Can't ignore signal CHLD, forcing to default. |
| 47 | | }}} |
| 48 | | |
| 49 | | This has something to do with the SIGCHLD POSIX signal. To me, it's not entirely clear whether the perl source code is incorrect, or BeOS (ticket #40). |
| 50 | | |
| 51 | | |
| 52 | | == 5.10.0 == |
| 53 | | |
| 54 | | ||R5||untested|| |
| 55 | | ||BONE||untested|| |
| 56 | | ||Haiku||stable|| |
| 57 | | |
| 58 | | === external - [Haiku] === |
| 59 | | |
| 60 | | [http://dev.haiku-os.org/browser/buildtools/trunk/patches/perl Ported] for Haiku by Ingo Weinhold. Available as Optional Package from Haiku. |
| 61 | | |
| 62 | | TODO: According to this [http://dev.haiku-os.org/ticket/2072 ticket], it does not yet include socket support. |
| 63 | | |
| 64 | | === revision 2 (bonefish) - [Haiku] === |
| 65 | | |
| 66 | | ==== Changes ([http://ports.haiku-files.org/browser/haikuports/trunk/dev-lang/perl/perl-5.10.0.diff patch]) ==== |
| 67 | | |
| 68 | | {{{Configure}}}: |
| 69 | | - Link libraries with {{{-shared}}} on Haiku. |
| 70 | | - Build a shared libperl.so. |
| 71 | | - No other flags for building libperl.so. |
| 72 | | {{{MANIFEST}}}: |
| 73 | | - Added new files. |
| 74 | | {{{README.haiku}}}: |
| 75 | | - README for the Haiku port. |
| 76 | | {{{ext/Errno/Errno_pm.PL}}}: |
| 77 | | - Error code definitions are in the same header as in BeOS. |
| 78 | | {{{ext/Haiku/}}}: |
| 79 | | - A Haiku module providing the functions debug_printf(), ktrace_printf(), and debugger(). |
| 80 | | {{{ext/POSIX/POSIX.xs}}}: |
| 81 | | - Work-around for the incorrect use of W*() macros on the Perl-internal representation of exit statuses. |
| 82 | | {{{ext/Time/HiRes/t/HiRes.t}}}: |
| 83 | | - Haiku doesn't support VALARM yet (revisiton 28311). |
| 84 | | {{{haiku/haikuish.h}}}: |
| 85 | | - Haiku is unixish, but we need to include <sys/wait.h> so that the W*() macros are defined in perl.h. |
| 86 | | {{{hints/haiku.sh}}}: |
| 87 | | - Configuration hints for Haiku. |
| 88 | | {{{lib/CPANPLUS/Internals/Constants/Report.pm}}}, {{{lib/ExtUtils/CBuilder.pm}}}, {{{lib/ExtUtils/MM.pm}}}, {{{lib/Module/Build.pm}}}: |
| 89 | | - List Haiku, so those modules work on it correctly. |
| 90 | | {{{lib/ExtUtils/MM_Haiku.pm}}}: |
| 91 | | - MakeMaker support for Haiku. |
| 92 | | {{{perl.h}}}: |
| 93 | | - Same problem as with BeOS. S_IREAD/S_IWRITE are defined, but in <sys/file.h> which is included later. |
| 94 | | - Include haiku/haikuish.h. |
| 95 | | - Same problem as in BeOS, O_TEXT is defined, but has no effect and should lead Perl to believe we have DOS line endings. |
| 96 | | {{{pod/perlport.pod}}}: |
| 97 | | - Added Haiku. |
| 98 | | {{{t/io/fs.t}}}: |
| 99 | | - No stat::st_atime support in BFS. |
| 100 | | |
| 101 | | ==== Configuring/Building ==== |
| 102 | | {{{ |
| 103 | | ./Configure -Dcf_email=ingo_weinhold@gmx.de -de |
| 104 | | make |
| 105 | | make test |
| 106 | | }}} |
| 107 | | |
| 108 | | Replace email address with that of the porter. |
| 109 | | |
| 110 | | ==== Tests ==== |
| 111 | | |
| 112 | | Four tests fail: |
| 113 | | - {{{ext/Socket/t/socketpair.t}}}: Haiku doesn't support Unix datagram sockets yet. |
| 114 | | - {{{ext/Sys/Syslog/t/syslog.t}}}: Haiku doesn't support /dev/log yet. |
| 115 | | - {{{lib/Net/Ping/t/450_service.t}}}: Bug in TCP/network stack. |
| 116 | | - {{{lib/Net/Ping/t/510_ping_udp.t}}}: Probably a bug in UDP/network stack. |
| 117 | | |
| 118 | | ==== Install ==== |
| 119 | | {{{ |
| 120 | | make install |
| 121 | | chmod a+x /boot/common/bin/perl |
| 122 | | cd /boot/common/lib; ln -s perl5/5.10.0/BePC-haiku/CORE/libperl.so . |
| 123 | | }}} |
| 124 | | |
| 125 | | For some reason the perl executable isn't installed with executable permissions. The symlink /boot/common/lib/libperl.so is missing. |
| 126 | | |
| 127 | | |
| 128 | | == 5.11.0 (perl-current aka. blead) == |
| 129 | | |
| 130 | | ||R5||untested|| |
| 131 | | ||BONE||untested|| |
| 132 | | ||Haiku||stable|| |
| 133 | | |
| 134 | | === revision 1 (bonefish) - [Haiku] === |
| 135 | | |
| 136 | | Cf. 5.10.0 revision 2. |
| 137 | | |
| 138 | | ==== Changes ([http://ports.haiku-files.org/browser/haikuports/trunk/dev-lang/perl/perl-current.diff patch]) ==== |
| 139 | | |
| 140 | | Changes are the same as for 5.10.0 revision 2 with the exception of {{{ext/POSIX/POSIX.xs}}}, which uses the WMUNGE() macro again -- it had been dropped sometime after 5.10.0. |
| 141 | | |
| 142 | | ==== Upstreaming ==== |
| 143 | | |
| 144 | | The patch has been sent upstream and most of it was applied in perl-current 34630-34634 with some changes: |
| 145 | | - The Haiku module was moved to {{{haiku/}}}. |
| 146 | | - The {{{ext/POSIX/POSIX.xs}}} change still awaits approval. |