# New Ticket Created by Tom Wyant # Please include the string: [perl #133947] # in the subject line of all future correspondence about this issue. # <URL: https://rt.perl.org/Ticket/Display.html?id=133947 > This is a bug report for perl from wyant@cpan.org, generated with the help of perlbug 1.40 running under perl 5.26.1. ----------------------------------------------------------------- [Please describe your issue here] I was unable to build a default Perl under Haiku r1beta1. The appended patches got me through the build process, though the resultant Perl still has problems -- at least, it is unable to find the .so files build for XS modules. The patches address two issues: * The linker was unable to find symbols related to stack protection. I took the lazy way out here and edited Configure to disable stack protection. * Errno_pm.PL was unable to find errno.h. I believe it has moved since the Haiku functionality was added. The patch looks for it in both the old and new locations. Specifically, the patches are against commit 912b808cb4fcd596e07f77898c626f5567fbe994 Because of module-loading problems I was unable to run perlbug under the Perl I am reporting on. This report was generated by perlbug for the system perl. I do not know if the Haiku developers are sending you anything, but if they are it supersedes anything I tell you. Herewith the patches: diff --git a/Configure b/Configure index 0c525c22f2..3d5a22b705 100755 --- a/Configure +++ b/Configure @@ -5500,6 +5500,7 @@ default|recommended) # thing. (NWC) case "$osname" in amigaos) ;; # -fstack-protector builds but doesn't work + haiku) ;; # -fstack-protector fails to build under r1beta1 *) case "$gccversion" in ?*) set stack-protector-strong -fstack-protector-strong eval $checkccflag diff --git a/ext/Errno/Errno_pm.PL b/ext/Errno/Errno_pm.PL index 84fd151d27..2d5c7de988 100644 --- a/ext/Errno/Errno_pm.PL +++ b/ext/Errno/Errno_pm.PL @@ -142,9 +142,19 @@ sub get_files { ) { $file{$linux_errno_h} = 1; } elsif ($^O eq 'haiku') { - # hidden in a special place - $file{'/boot/develop/headers/posix/errno.h'} = 1; - + # hidden in a special place. This evidently changed between + # alpha and beta + for my $h ( qw{ + /boot/develop/headers/posix/errno.h + /boot/system/develop/headers/posix/errno.h + } ) { + -f $h + or next; + $file{$h} = 1; + last; + } + keys %file + or $file{'/boot/develop/headers/posix/errno.h'} = 1; } elsif ($^O eq 'vos') { # avoid problem where cpp returns non-POSIX pathnames $file{'/system/include_library/errno.h'} = 1; [Please do not change anything below this line] ----------------------------------------------------------------- --- Flags: category=install severity=low --- Site configuration information for perl 5.26.1: Configured by user at Wed Mar 14 20:49:44 GMT 2018. Summary of my perl5 (revision 5 version 26 subversion 1) configuration: Derived from: Platform: osname=haiku osvers=1 archname=x86_64-haiku uname='haiku shredder 1 hrev51655 dec 4 2017 12:44:17 x86_64 x86_64 haiku ' config_args='-Dprefix=/packages/perl-5.26.1-2/.self -Dprivlib=/packages/perl-5.26.1-2/.self/lib/perl5/5.26.1 -Dsiteprefix=/packages/perl-5.26.1-2/.self/non-packaged -Dsitelib=/packages/perl-5.26.1-2/.self/non-packaged/lib/perl5/site_perl/5.26 -Dvendorprefix=/packages/perl-5.26.1-2/.self -Dvendorlib=/packages/perl-5.26.1-2/.self/lib/perl5/vendor_perl/5.26 -Dcf_email=zooey@hirschkaefer.de -Uusenm -Duseshrplib -Uusemymalloc -Dlibpth=/boot/home/config/develop/lib /boot/system/develop/lib -Dusrinc=/boot/system/develop/headers/posix -Dlocinc=/boot/home/config/develop/headers /boot/system/develop/headers -Dlibc='/boot/system/lib/libroot.so' -Dlibs=-lnetwork -Dcc=gcc -Dld=gcc -Ud_link -Ddont_use_nlink -Ud_syserrlst -Dldlibpthname=LIBRARY_PATH -Dstartperl=#! perl -Dccdlflags=-Wl,-fno-stack-protector,-rpath=/packages/perl-5.26.1-2/.self/lib/perl5/5.26.1/x86_64-haiku/CORE -Dusesitecustomize -de' hint=recommended useposix=true d_sigaction=define useithreads=undef usemultiplicity=undef use64bitint=define use64bitall=define uselongdouble=undef usemymalloc=n default_inc_excludes_dot=define bincompat5005=undef Compiler: cc='gcc' ccflags ='-fwrapv -fno-strict-aliasing -pipe -D_FORTIFY_SOURCE=2' optimize='-O' cppflags='-fwrapv -fno-strict-aliasing -pipe' ccversion='' gccversion='5.4.0' gccosandvers='' intsize=4 longsize=8 ptrsize=8 doublesize=8 byteorder=12345678 doublekind=3 d_longlong=define longlongsize=8 d_longdbl=define longdblsize=16 longdblkind=3 ivtype='long' ivsize=8 nvtype='double' nvsize=8 Off_t='off_t' lseeksize=8 alignbytes=8 prototype=define Linker and Libraries: ld='gcc' ldflags ='' libpth=/boot/home/config/develop/lib /boot/system/develop/lib /boot/system/develop/tools/bin/../lib/gcc/x86_64-unknown-haiku/5.4.0/include-fixed libs=-lnetwork perllibs=-lnetwork libc=/boot/system/lib/libroot.so so=so useshrplib=true libperl=libperl.so gnulibc_version='' Dynamic Linking: dlsrc=dl_dlopen.xs dlext=so d_dlsymun=undef ccdlflags='-Wl,-fno-stack-protector,-rpath=/packages/perl-5.26.1-2/.self/lib/perl5/5.26.1/x86_64-haiku/CORE -Wl,-rpath,/packages/perl-5.26.1-2/.self/lib/perl5/5.26.1/x86_64-haiku/CORE' cccdlflags='-fpic' lddlflags='-shared' Locally applied patches: uncommitted-changes --- @INC for perl 5.26.1: /boot/home/perl5/lib/perl5/5.26.1/x86_64-haiku /boot/home/perl5/lib/perl5/5.26.1 /boot/home/perl5/lib/perl5/x86_64-haiku /boot/home/perl5/lib/perl5 /packages/perl-5.26.1-2/.self/non-packaged/lib/perl5/site_perl/5.26/x86_64-haiku /packages/perl-5.26.1-2/.self/non-packaged/lib/perl5/site_perl/5.26 /packages/perl-5.26.1-2/.self/lib/perl5/vendor_perl/5.26/x86_64-haiku /packages/perl-5.26.1-2/.self/lib/perl5/vendor_perl/5.26 /packages/perl-5.26.1-2/.self/lib/perl5/5.26.1/x86_64-haiku /packages/perl-5.26.1-2/.self/lib/perl5/5.26.1 --- Environment for perl 5.26.1: HOME=/boot/home LANG (unset) LANGUAGE (unset) LC_COLLATE=en.UTF-8 LC_CTYPE=en.UTF-8 LC_MESSAGES=en.UTF-8 LC_MONETARY=en.UTF-8 LC_NUMERIC=en.UTF-8 LC_TIME=en.UTF-8 LC_TYPE=en_US.UTF-8 LD_LIBRARY_PATH (unset) LIBRARY_PATH=%A/lib:/boot/home/config/non-packaged/lib:/boot/home/config/lib:/boot/system/non-packaged/lib:/boot/system/lib LOGDIR (unset) PATH=/boot/home/perl5/bin:/boot/home/bin:.:/boot/home/config/non-packaged/bin:/boot/home/config/bin:/boot/system/non-packaged/bin:/bin:/boot/system/apps:/boot/system/preferences PERL5LIB=/boot/home/perl5/lib/perl5 PERL5OPT= PERL5_CPANPLUS_IS_RUNNING=1178 PERL5_CPAN_IS_RUNNING=1178 PERL_BADLANG (unset) PERL_LOCAL_LIB_ROOT=/boot/home/perl5 PERL_MB_OPT=--install_base "/boot/home/perl5" PERL_MM_OPT=INSTALL_BASE=/boot/home/perl5 SHELL (unset)Thread Next