Closed p5pRT closed 11 years ago
make fails for Perl 5.12.1 on BeOS with this error:
/configure.gnu --prefix=/boot/home/config make LDLOADLIBS="-lnet" ...
cc -L/usr/local/lib -o miniperl \ malloc.o gv.o toke.o perly.o pad.o regcomp.o dump.o util.o mg.o reentr.o mro.o hv.o av.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys.o doop.o doio.o regexec.o utf8.o taint.o deb.o universal.o globals.o perlio.o perlapi.o numeric.o mathoms.o locale.o pp_pack.o pp_sort.o \ miniperlmain.o opmini.o perlmini.o util.o: In function `Perl_rsignal': util.o(.text+0x2748): undefined reference to `beos_sigaction' util.o: In function `Perl_rsignal_state': util.o(.text+0x2786): undefined reference to `beos_sigaction' util.o: In function `Perl_rsignal_save': util.o(.text+0x27d8): undefined reference to `beos_sigaction' util.o: In function `Perl_rsignal_restore': util.o(.text+0x2803): undefined reference to `beos_sigaction' util.o: In function `Perl_wait4pid': util.o(.text+0x298a): undefined reference to `beos_waitpid' doio.o: In function `Perl_apply': doio.o(.text+0x34e4): undefined reference to `beos_kill' doio.o(.text+0x358b): undefined reference to `beos_kill' perlmini.o: In function `Perl_my_unexec': perlmini.o(.text+0x4ced): undefined reference to `beos_kill' collect2: ld returned 1 exit status make: *** [miniperl] Error 1
The problem is that the code in the beos directory isn't being compiled in.
I think that this patch fixes the compilation problem:
*** OConfigure Thu Aug 26 13:20:58 2010 --- Configure Thu Aug 26 13:22:46 2010 *************** *** 3235\,3240 **** --- 3235\,3243 ---- bsd386) osname=bsd386 osvers=`$uname -r` ;; + beos) osname=beos + osvers=`$uname -r` + ;; cygwin*) osname=cygwin osvers="$3" ;;
-Nigel
The next failure is in Sys::Syslog:
Running Mkbootstrap for Sys::Syslog () /boot/home/perl-5.12.1/cpan/Sys-Syslog/../../miniperl "-I../../lib" "-I../../lib" -MExtUtils::Command -e 'chmod' -- 644 Syslog.bs /boot/home/perl-5.12.1/cpan/Sys-Syslog/../../miniperl "-I../../lib" "-I../../lib" -MExtUtils::Command -e 'rm_f' -- ../../lib/auto/Sys/Syslog/Syslog.so gcc -nostart -L/boot/home/config/lib Syslog.o -o ../../lib/auto/Sys/Syslog/Syslog.so \ ../../libperl.so -lnet -lflock \
Syslog.o: In function `XS_Sys__Syslog_openlog_xs': Syslog.o(.text+0x893): undefined reference to `openlog' Syslog.o: In function `XS_Sys__Syslog_syslog_xs': Syslog.o(.text+0x974): undefined reference to `syslog' Syslog.o: In function `XS_Sys__Syslog_setlogmask_xs': Syslog.o(.text+0xa53): undefined reference to `setlogmask' Syslog.o: In function `XS_Sys__Syslog_closelog_xs': Syslog.o(.text+0xaf3): undefined reference to `closelog' collect2: ld returned 1 exit status make[1]: *** [../../lib/auto/Sys/Syslog/Syslog.so] Error 1 make[1]: Leaving directory `/boot/home/perl-5.12.1/cpan/Sys-Syslog' Unsuccessful make(cpan/Sys-Syslog): code=2 at make_ext.pl line 449. make: *** [lib/auto/Sys/Syslog/Syslog.so] Error 3
This is because it needs to include -lbe to the link line. The simplest way is to add it to LDLOADLIBS=\, though I am concerned that it may be needed later on when building CPAN modules and somehow that needs to get in to perl's configuration.
The make command now becomes:
make LDLOADLIBS="-lnet -lflock -lbe"
-- Nigel Horne. Arranger\, Adjudicator\, Band Trainer\, Composer\, Tutor\, Typesetter. NJH Music\, ICQ#20252325\, twitter: @nigelhorne njh@bandsman.co.uk http://www.bandsman.co.uk
The next failure is Time::Piece:
Running Makefile.PL in cpan/Time-Piece
../../miniperl Makefile.PL INSTALLDIRS=perl INSTALLMAN1DIR=none
INSTALLMAN3DIR=none PERL_CORE=1 LIBPERL_A=libperl.so LINKTYPE=dynamic
Writing Makefile for Time::Piece
make[1]: Entering directory `/boot/home/perl-5.12.1/cpan/Time-Piece'
make[1]: Leaving directory `/boot/home/perl-5.12.1/cpan/Time-Piece'
Making all in cpan/Time-Piece
/bin/make all PERL_CORE=1 LIBPERL_A=libperl.so LINKTYPE=dynamic
make[1]: Entering directory `/boot/home/perl-5.12.1/cpan/Time-Piece'
cp Seconds.pm ../../lib/Time/Seconds.pm
cp Piece.pm ../../lib/Time/Piece.pm
../../miniperl "-I../../lib" "-I../../lib" ../../lib/ExtUtils/xsubpp
-typemap ../../lib/ExtUtils/typemap Piece.xs > Piece.xsc &&
/boot/home/perl-5.12.1/cpan/Time-Piece/../../miniperl "-I../../lib"
"-I../../lib" -MExtUtils::Command -e 'mv' -- Piece.xsc Piece.c
cc -c -I/boot/home/flock_server/src/headers -fno-strict-aliasing -pipe
-I/usr/local/include -O -DVERSION=\"1.15_01\" -DXS_VERSION=\"1.15_01\"
-fpic "-I../.." Piece.c
Running Mkbootstrap for Time::Piece ()
/boot/home/perl-5.12.1/cpan/Time-Piece/../../miniperl "-I../../lib"
"-I../../lib" -MExtUtils::Command -e 'chmod' -- 644 Piece.bs
/boot/home/perl-5.12.1/cpan/Time-Piece/../../miniperl "-I../../lib"
"-I../../lib" -MExtUtils::Command -e 'rm_f' --
../../lib/auto/Time/Piece/Piece.so
gcc -nostart -L/boot/home/config/lib Piece.o -o
../../lib/auto/Time/Piece/Piece.so \
../../libperl.so -lnet -lflock -lbe \
Piece.o: In function `XS_Time__Piece__strptime': Piece.o(.text+0xa89): undefined reference to `strptime' collect2: ld returned 1 exit status make[1]: *** [../../lib/auto/Time/Piece/Piece.so] Error 1 make[1]: Leaving directory `/boot/home/perl-5.12.1/cpan/Time-Piece' Unsuccessful make(cpan/Time-Piece): code=2 at make_ext.pl line 449. make: *** [lib/auto/Time/Piece/Piece.so] Error 3
Piece.xs has this statement: "/* Assume everyone has strptime except Win32 and QNX4 */"\, which is an incorrect assumption :-(
There is also an undocumented assumption that all platforms without strptime use strnicmp instead of strncasecmp - this is not the case.
This patch fixes these problems:
*** OPiece.xs Thu Aug 26 15:37:24 2010 --- Piece.xs Thu Aug 26 15:37:55 2010 *************** *** 306\,318 **** #ifndef HAS_STRPTIME /* Assume everyone has strptime except Win32 and QNX4 */ # define HAS_STRPTIME 1 ! # if defined(WIN32) || (defined(__QNX__) && defined(__WATCOMC__)) # undef HAS_STRPTIME # endif #endif
#ifndef HAS_STRPTIME #define strncasecmp(x\,y\,n) strnicmp(x\,y\,n)
#if defined(WIN32) #if defined(__BORLANDC__) --- 306\,320 ---- #ifndef HAS_STRPTIME /* Assume everyone has strptime except Win32 and QNX4 */ # define HAS_STRPTIME 1 ! # if defined(WIN32) || defined(__BEOS__) || (defined(__QNX__) && defined(__WATCOMC__)) # undef HAS_STRPTIME # endif #endif
#ifndef HAS_STRPTIME + #ifndef __BEOS__ #define strncasecmp(x\,y\,n) strnicmp(x\,y\,n) + #endif
#if defined(WIN32) #if defined(__BORLANDC__)
-Nigel
-- Nigel Horne. Arranger\, Adjudicator\, Band Trainer\, Composer\, Tutor\, Typesetter. NJH Music\, ICQ#20252325\, twitter: @nigelhorne njh@bandsman.co.uk http://www.bandsman.co.uk
On Thu\, 26 Aug 2010\, Nigel Horne wrote:
# New Ticket Created by Nigel Horne # Please include the string: [perl #77448] # in the subject line of all future correspondence about this issue. # \<URL: http://rt.perl.org/rt3/Ticket/Display.html?id=77448 >
make fails for Perl 5.12.1 on BeOS with this error:
/configure.gnu --prefix=/boot/home/config make LDLOADLIBS="-lnet" ...
cc -L/usr/local/lib -o miniperl \ malloc.o gv.o toke.o perly.o pad.o regcomp.o dump.o util.o mg.o reentr.o mro.o hv.o av.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys.o doop.o doio.o regexec.o utf8.o taint.o deb.o universal.o globals.o perlio.o perlapi.o numeric.o mathoms.o locale.o pp_pack.o pp_sort.o \ miniperlmain.o opmini.o perlmini.o
The problem is that the code in the beos directory isn't being compiled in.
Did you use the hints/beos.sh hint file? That is supposed to copy beos/beos.c into the current working directory\, and add beos.o to the $(ARCHOBJS) variable in makefile.
-- Andy Dougherty doughera@lafayette.edu
The RT System itself - Status changed from 'new' to 'open'
On 26/08/10 17:24\, Andy Dougherty via RT wrote:
On Thu\, 26 Aug 2010\, Nigel Horne wrote:
# New Ticket Created by Nigel Horne # Please include the string: [perl #77448] # in the subject line of all future correspondence about this issue. #\<URL: http://rt.perl.org/rt3/Ticket/Display.html?id=77448> make fails for Perl 5.12.1 on BeOS with this error:
/configure.gnu --prefix=/boot/home/config make LDLOADLIBS="-lnet" ...
cc -L/usr/local/lib -o miniperl \ malloc.o gv.o toke.o perly.o pad.o regcomp.o dump.o util.o mg.o reentr.o mro.o hv.o av.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys.o doop.o doio.o regexec.o utf8.o taint.o deb.o universal.o globals.o perlio.o perlapi.o numeric.o mathoms.o locale.o pp_pack.o pp_sort.o \ miniperlmain.o opmini.o perlmini.o The problem is that the code in the beos directory isn't being compiled in. Did you use the hints/beos.sh hint file? That is supposed to copy beos/beos.c into the current working directory\, and add beos.o to the $(ARCHOBJS) variable in makefile. I've posted a fix to the Configure script which now does just that.
-Nigel
On 26/08/10 17:32\, Nigel Horne wrote:
On 26/08/10 17:24\, Andy Dougherty via RT wrote:
On Thu\, 26 Aug 2010\, Nigel Horne wrote:
# New Ticket Created by Nigel Horne # Please include the string: [perl #77448] # in the subject line of all future correspondence about this issue. #\<URL: http://rt.perl.org/rt3/Ticket/Display.html?id=77448> make fails for Perl 5.12.1 on BeOS with this error:
/configure.gnu --prefix=/boot/home/config make LDLOADLIBS="-lnet" ...
cc -L/usr/local/lib -o miniperl \ malloc.o gv.o toke.o perly.o pad.o regcomp.o dump.o util.o mg.o reentr.o mro.o hv.o av.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys.o doop.o doio.o regexec.o utf8.o taint.o deb.o universal.o globals.o perlio.o perlapi.o numeric.o mathoms.o locale.o pp_pack.o pp_sort.o \ miniperlmain.o opmini.o perlmini.o The problem is that the code in the beos directory isn't being compiled in. Did you use the hints/beos.sh hint file? That is supposed to copy beos/beos.c into the current working directory\, and add beos.o to the $(ARCHOBJS) variable in makefile. I've posted a fix to the Configure script which now does just that.
-Nigel
CPAN doesn't load:
Can't locate Socket.pm in @INC (@INC contains: /boot/home/config/lib/perl5/site_perl/5.12.1/BePC-beos /boot/home/config/lib/perl5/site_perl/5.12.1 /boot/home/config/lib/perl5/5.12.1/BePC-beos /boot/home/config/lib/perl5/5.12.1 /boot/home/config/lib/perl5/site_perl/5.8.8 /boot/home/config/lib/perl5/site_perl .) at /boot/home/config/lib/perl5/5.12.1/BePC-beos/IO/Socket.pm line 12. BEGIN failed--compilation aborted at /boot/home/config/lib/perl5/5.12.1/BePC-beos/IO/Socket.pm line 12.
The fix is to implement the patches listed in RTs 53837 and 53838.
-Nigel
Building things under CPAN fails with
/boot/home/config/lib/perl5/5.12.1/BePC-beos/CORE/perl.h:2598: beos/beosish.h: No such file or directory
I suspect that "make install" didn't copy it across. I fixed that by hand:
mkdir ~/config/lib/perl5/5.12.1/BePC-beos/CORE/beos cp beos/beosish.h ~/config/lib/perl5/5.12.1/BePC-beos/CORE/beos
I think that "make install" should do that for me...
-Nigel
LWP fails on BeOS - you need to tell it to use send()/recv() rather than write()/send().
Fix in RT 60774.
-Nigel
On Thu Aug 26 13:05:47 2010\, njh@bandsman.co.uk wrote:
LWP fails on BeOS - you need to tell it to use send()/recv() rather than write()/send().
Fix in RT 60774.
-Nigel
Reviewing this older ticket\, it seems to have been a series of reports about problems building Perl on BeOS.
But ISTR discussion on list to the effect that we're dropping support BeOS.
Is that true? If so\, can we close this ticket?
Thank you very much. Jim Keenan
Yes\, the BeOS port has been removed\, and so I have rejected this ticket.
Thanks.
-- rjbs
Yes\, the BeOS port has been removed\, and so I have rejected this ticket.
Thanks.
-- rjbs
@rjbs - Status changed from 'open' to 'rejected'
Migrated from rt.perl.org#77448 (status was 'rejected')
Searchable as RT77448$