Discussion:
undefined symbol: PL_stack_sp
demerphq
2014-07-14 21:08:03 UTC
Permalink
Hi,

I've been encountering the error in the subject line when I try to use
Inline::C.

For instance when I build the sample code from the Inline::C docs

use Inline C;
greet('Ingy');
greet(42);
__END__
__C__
void greet(char* name) {
printf("Hello %s!\n", name);
}

I get the following error:

Had problems bootstrapping Inline module 'FOO_2bd2'

Can't load '/git_tree/perl/Porting/_Inline/lib/auto/FOO_2bd2/FOO_2bd2.so'
for module FOO_2bd2:
/git_tree/perl/Porting/_Inline/lib/auto/FOO_2bd2/FOO_2bd2.so: undefined
symbol: PL_stack_sp at /usr/lib/perl/5.14/DynaLoader.pm line 184.
at /usr/local/share/perl/5.14.2/Inline.pm line 526.


at - line 0.
INIT failed--call queue aborted.

I have searched around and there are CPANTester reports of failure due to
this. But I only see one solution, on stackoverflow, that it has to do with
32bit versus 64bit, but it doesnt say what to do to fix and I somehow doubt
it is relevant here.

I did a complete rebuild and test of the latest Inline::C and all tests
passed. So I am a bit confused what I am doing wrong.

My perl version is:

This is perl 5, version 14, subversion 2 (v5.14.2) built for
x86_64-linux-gnu-thread-multi

Complete -V output available on request.

Any ideas on what to do to fix this?

cheers.
Yves
--
perl -Mre=debug -e "/just|another|perl|hacker/"
demerphq
2014-07-17 06:45:31 UTC
Permalink
Post by demerphq
Hi,
I've been encountering the error in the subject line when I try to use
Inline::C.
For instance when I build the sample code from the Inline::C docs
use Inline C;
greet('Ingy');
greet(42);
__END__
__C__
void greet(char* name) {
printf("Hello %s!\n", name);
}
Had problems bootstrapping Inline module 'FOO_2bd2'
Can't load '/git_tree/perl/Porting/_Inline/lib/auto/FOO_2bd2/FOO_2bd2.so'
/git_tree/perl/Porting/_Inline/lib/auto/FOO_2bd2/FOO_2bd2.so: undefined
symbol: PL_stack_sp at /usr/lib/perl/5.14/DynaLoader.pm line 184.
at /usr/local/share/perl/5.14.2/Inline.pm line 526.
at - line 0.
INIT failed--call queue aborted.
I have searched around and there are CPANTester reports of failure due to
this. But I only see one solution, on stackoverflow, that it has to do with
32bit versus 64bit, but it doesnt say what to do to fix and I somehow doubt
it is relevant here.
I did a complete rebuild and test of the latest Inline::C and all tests
passed. So I am a bit confused what I am doing wrong.
This is perl 5, version 14, subversion 2 (v5.14.2) built for
x86_64-linux-gnu-thread-multi
Complete -V output available on request.
Any ideas on what to do to fix this?
Ping?

Yves
--
perl -Mre=debug -e "/just|another|perl|hacker/"
s***@public.gmane.org
2014-07-17 08:06:18 UTC
Permalink
From: demerphq
Sent: Thursday, July 17, 2014 4:45 PM
Post by demerphq
/git_tree/perl/Porting/_Inline/lib/auto/FOO_2bd2/FOO_2bd2.so: undefined
symbol: PL_stack_sp at /usr/lib/perl/5.14/DynaLoader.pm line 184.
at /usr/local/share/perl/5.14.2/Inline.pm line 526.
Looks to me that we've got two different perls getting involved here:
/usr/lib/perl/5.14/
and
/usr/local/share/perl/5.14.2

I think that's likely to be the problem.
Did they both get involved during 'make test' ?

If additional help is required the OP (whose contact details seem to be
missing) should try running:

use Inline C => Config =>
BUILD_NOISY => 1,
FORCE_BUILD => 1;
use Inline C;
greet('Ingy');
greet(42);
__END__
__C__
void greet(char* name) {
printf ("Hello %s!\n", name);
}

With the full output of that, along with perl-V output, we might be able to
offer more complete advice.

Cheers,
Rob
demerphq
2014-07-17 09:07:36 UTC
Permalink
Post by s***@public.gmane.org
From: demerphq
Sent: Thursday, July 17, 2014 4:45 PM
/git_tree/perl/Porting/_Inline/lib/auto/FOO_2bd2/FOO_2bd2.so: undefined
Post by demerphq
symbol: PL_stack_sp at /usr/lib/perl/5.14/DynaLoader.pm line 184.
at /usr/local/share/perl/5.14.2/Inline.pm line 526.
/usr/lib/perl/5.14/
and
/usr/local/share/perl/5.14.2
I think that's likely to be the problem.
Thanks, ill dig on that.
Post by s***@public.gmane.org
Did they both get involved during 'make test' ?
Make test didnt show any build output. How can I enable that?
Post by s***@public.gmane.org
If additional help is required the OP (whose contact details seem to be
missing)
I am the OP.:-)
Post by s***@public.gmane.org
use Inline C => Config =>
BUILD_NOISY => 1,
FORCE_BUILD => 1;
use Inline C;
greet('Ingy');
greet(42);
__END__
__C__
void greet(char* name) {
printf ("Hello %s!\n", name);
}
With the full output of that, along with perl-V output, we might be able
to offer more complete advice.
Here you go:

validate Stage
<-----------------------Information
Section----------------------------------->

Information about the processing of your Inline C code:

Your source code needs to be compiled. I'll use this build directory:
/git_tree/perl/Porting/_Inline/build/FOO_1ef8

and I'll install the executable as:
/git_tree/perl/Porting/_Inline/lib/auto/FOO_1ef8/FOO_1ef8.so

get_maps Stage
The following Inline C function(s) have been successfully bound to Perl:
void greet(char * name)

<-----------------------End of Information
Section---------------------------->
Starting Build Preprocess Stage
Finished Build Preprocess Stage

Starting Build Parse Stage
Finished Build Parse Stage

Starting Build Glue 1 Stage
Finished Build Glue 1 Stage

Starting Build Glue 2 Stage
Finished Build Glue 2 Stage

Starting Build Glue 3 Stage
Finished Build Glue 3 Stage

Starting Build Compile Stage
Starting "perl Makefile.PL" Stage
Generating a Unix-style Makefile
Writing Makefile for FOO_1ef8
Writing MYMETA.yml and MYMETA.json
Finished "perl Makefile.PL" Stage

Starting "make" Stage
Running Mkbootstrap for FOO_1ef8 ()
chmod 644 FOO_1ef8.bs
/usr/bin/perl /usr/share/perl/5.14/ExtUtils/xsubpp -typemap
"/usr/share/perl/5.14/ExtUtils/typemap" FOO_1ef8.xs > FOO_1ef8.xsc && mv
FOO_1ef8.xsc FOO_1ef8.c
cc -c -I"/git_tree/perl/Porting" -D_REENTRANT -D_GNU_SOURCE -DDEBIAN
-fstack-protector -fno-strict-aliasing -pipe -I/usr/local/include
-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -DVERSION=\"0.00\"
-DXS_VERSION=\"0.00\" -fPIC "-I../../../.." FOO_1ef8.c
rm -f blib/arch/auto/FOO_1ef8/FOO_1ef8.so
cc -shared -L/usr/local/lib -fstack-protector FOO_1ef8.o -o
blib/arch/auto/FOO_1ef8/FOO_1ef8.so \
\

chmod 755 blib/arch/auto/FOO_1ef8/FOO_1ef8.so
/usr/bin/perl -MExtUtils::Command::MM -e 'cp_nonempty' -- FOO_1ef8.bs
blib/arch/auto/FOO_1ef8/FOO_1ef8.bs 644
Finished "make" Stage

Starting "make install" Stage
Running Mkbootstrap for FOO_1ef8 ()
chmod 644 FOO_1ef8.bs
Files found in blib/arch: installing files in blib/lib into architecture
dependent library tree
Finished "make install" Stage

Starting Cleaning Up Stage
Finished Cleaning Up Stage

Finished Build Compile Stage

Had problems bootstrapping Inline module 'FOO_1ef8'

Can't load '/git_tree/perl/Porting/_Inline/lib/auto/FOO_1ef8/FOO_1ef8.so'
for module FOO_1ef8:
/git_tree/perl/Porting/_Inline/lib/auto/FOO_1ef8/FOO_1ef8.so: undefined
symbol: PL_stack_sp at /usr/lib/perl/5.14/DynaLoader.pm line 184.
at /usr/local/share/perl/5.14.2/Inline.pm line 526.


at - line 0.
INIT failed--call queue aborted.
$ cat test_inline.pl
use Inline C => Config =>
BUILD_NOISY => 1,
FORCE_BUILD => 1;
use Inline qw(Info NoClean);
use Inline C;
greet('Ingy');
greet(42);
__END__
__C__

void greet(char* name) {
printf("Hello %s!\n", name);
}

$ perl -V
Summary of my perl5 (revision 5 version 14 subversion 2) configuration:

Platform:
osname=linux, osvers=3.2.0-37-generic,
archname=x86_64-linux-gnu-thread-multi
uname='linux lamiak 3.2.0-37-generic #58-ubuntu smp thu jan 24 15:28:10
utc 2013 x86_64 x86_64 x86_64 gnulinux '
config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN
-D_FORTIFY_SOURCE=2 -g -O2 -fstack-protector --param=ssp-buffer-size=4
-Wformat -Werror=format-security -Dldflags= -Wl,-Bsymbolic-functions
-Wl,-z,relro -Dlddlflags=-shared -Wl,-Bsymbolic-functions -Wl,-z,relro
-Dcccdlflags=-fPIC -Darchname=x86_64-linux-gnu -Dprefix=/usr
-Dprivlib=/usr/share/perl/5.14 -Darchlib=/usr/lib/perl/5.14
-Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5
-Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local
-Dsitelib=/usr/local/share/perl/5.14.2
-Dsitearch=/usr/local/lib/perl/5.14.2 -Dman1dir=/usr/share/man/man1
-Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1
-Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl
-Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm
-Ui_libutil -DDEBUGGING=-g -Doptimize=-O2 -Duseshrplib
-Dlibperl=libperl.so.5.14.2 -des'
hint=recommended, useposix=true, d_sigaction=define
useithreads=define, usemultiplicity=define
useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
use64bitint=define, use64bitall=define, uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN
-fstack-protector -fno-strict-aliasing -pipe -I/usr/local/include
-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
optimize='-O2 -g',
cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fstack-protector
-fno-strict-aliasing -pipe -I/usr/local/include'
ccversion='', gccversion='4.7.3', gccosandvers=''
intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t',
lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='cc', ldflags =' -fstack-protector -L/usr/local/lib'
libpth=/usr/local/lib /lib/x86_64-linux-gnu /lib/../lib
/usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib /usr/lib
libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt
perllibs=-ldl -lm -lpthread -lc -lcrypt
libc=, so=so, useshrplib=true, libperl=libperl.so.5.14.2
gnulibc_version='2.17'
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib
-fstack-protector'


Characteristics of this binary (from libperl):
Compile-time options: MULTIPLICITY PERL_DONT_CREATE_GVSV
PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP
PERL_PRESERVE_IVUV USE_64_BIT_ALL USE_64_BIT_INT
USE_ITHREADS USE_LARGE_FILES USE_PERLIO
USE_PERL_ATOF
USE_REENTRANT_API
Locally applied patches:
DEBPKG:debian/arm_thread_stress_timeout - http://bugs.debian.org/501970
Raise the timeout of ext/threads/shared/t/stress.t to accommodate slower
build hosts
DEBPKG:debian/cpan_definstalldirs - Provide a sensible INSTALLDIRS default
for modules installed from CPAN.
DEBPKG:debian/db_file_ver - http://bugs.debian.org/340047 Remove overly
restrictive DB_File version check.
DEBPKG:debian/doc_info - Replace generic man(1) instructions with
Debian-specific information.
DEBPKG:debian/enc2xs_inc - http://bugs.debian.org/290336 Tweak enc2xs to
follow symlinks and ignore missing @INC directories.
DEBPKG:debian/errno_ver - http://bugs.debian.org/343351 Remove Errno
version check due to upgrade problems with long-running processes.
DEBPKG:debian/libperl_embed_doc - http://bugs.debian.org/186778 Note that
libperl-dev package is required for embedded linking
DEBPKG:fixes/respect_umask - Respect umask during installation
DEBPKG:debian/writable_site_dirs - Set umask approproately for site install
directories
DEBPKG:debian/extutils_set_libperl_path - EU:MM: Set location of libperl.a
to /usr/lib
DEBPKG:debian/no_packlist_perllocal - Don't install .packlist or
perllocal.pod for perl or vendor
DEBPKG:debian/prefix_changes - Fiddle with *PREFIX and variables written to
the makefile
DEBPKG:debian/fakeroot - Postpone LD_LIBRARY_PATH evaluation to the binary
targets.
DEBPKG:debian/instmodsh_doc - Debian policy doesn't install .packlist files
for core or vendor.
DEBPKG:debian/ld_run_path - Remove standard libs from LD_RUN_PATH as per
Debian policy.
DEBPKG:debian/libnet_config_path - Set location of libnet.cfg to
/etc/perl/Net as /usr may not be writable.
DEBPKG:debian/m68k_thread_stress - http://bugs.debian.org/517938
http://bugs.debian.org/495826 Disable some threads tests on m68k for now
due to missing TLS.
DEBPKG:debian/mod_paths - Tweak @INC ordering for Debian
DEBPKG:debian/module_build_man_extensions - http://bugs.debian.org/479460
Adjust Module::Build manual page extensions for the Debian Perl policy
DEBPKG:debian/prune_libs - http://bugs.debian.org/128355 Prune the list of
libraries wanted to what we actually need.
DEBPKG:fixes/net_smtp_docs - [rt.cpan.org #36038]
http://bugs.debian.org/100195 Document the Net::SMTP 'Port' option
DEBPKG:debian/perlivp - http://bugs.debian.org/510895 Make perlivp skip
include directories in /usr/local
DEBPKG:debian/cpanplus_definstalldirs - http://bugs.debian.org/533707
Configure CPANPLUS to use the site directories by default.
DEBPKG:debian/cpanplus_config_path - Save local versions of
CPANPLUS::Config::System into /etc/perl.
DEBPKG:debian/deprecate-with-apt - http://bugs.debian.org/580034 Point
users to Debian packages of deprecated core modules
DEBPKG:fixes/hurd-ccflags - [a190e64] http://bugs.debian.org/587901 [perl
#92244] Make hints/gnu.sh append to $ccflags rather than overriding them
DEBPKG:debian/squelch-locale-warnings - http://bugs.debian.org/508764
Squelch locale warnings in Debian package maintainer scripts
DEBPKG:debian/skip-upstream-git-tests - Skip tests specific to the upstream
Git repository
DEBPKG:fixes/extutils-cbuilder-cflags - [011e8fb]
http://bugs.debian.org/624460 [perl #89478] Append CFLAGS and LDFLAGS to
their Config.pm counterparts in EU::CBuilder
DEBPKG:fixes/module-build-home-directory - http://bugs.debian.org/624850 [
rt.cpan.org #67893] Fix failing tilde test when run under a UID without a
passwd entry
DEBPKG:debian/patchlevel - http://bugs.debian.org/567489 List packaged
patches for 5.14.2-21 in patchlevel.h
DEBPKG:fixes/h2ph-multiarch - [e7ec705] http://bugs.debian.org/625808 [perl
#90122] Make h2ph correctly search gcc include directories
DEBPKG:fixes/index-tainting - [3b36395] http://bugs.debian.org/291450 [perl
#64804] RT 64804: tainting with index() of a constant
DEBPKG:fixes/document_makemaker_ccflags - http://bugs.debian.org/628522 [
rt.cpan.org #68613] Document that CCFLAGS should include $Config{ccflags}
DEBPKG:fixes/sys-syslog-socket-timeout-kfreebsd.patch -
http://bugs.debian.org/627821 [rt.cpan.org #69997] Use a socket timeout on
GNU/kFreeBSD to catch ICMP port unreachable messages
DEBPKG:fixes/hurd-hints - http://bugs.debian.org/636609 Improve general GNU
hints, needed for GNU/Hurd.
DEBPKG:fixes/pod_fixes - [7698aed] http://bugs.debian.org/637816 Fix typos
in several pod/perl*.pod files
DEBPKG:debian/find_html2text - http://bugs.debian.org/640479 Configure
CPAN::Distribution with correct name of html2text
DEBPKG:fixes/digest_eval_hole - http://bugs.debian.org/644108 Close the
eval "require $module" security hole in Digest->new($algorithm)
DEBPKG:fixes/hurd-ndbm - [f0d0a20] [perl #102680]
http://bugs.debian.org/645989 Add GNU/Hurd hints for NDBM_File
DEBPKG:fixes/sysconf.t-posix - [8040185] [perl #102888]
http://bugs.debian.org/646016 Fix hang in ext/POSIX/t/sysconf.t on GNU/Hurd
DEBPKG:fixes/hurd-largefile - [1fda587] [perl #103014]
http://bugs.debian.org/645790 enable LFS on GNU/Hurd
DEBPKG:debian/hurd_test_todo_syslog - http://bugs.debian.org/650093 Disable
failing GNU/Hurd tests in cpan/Sys-Syslog/t/syslog.t
DEBPKG:fixes/hurd_skip_itimer_virtual - [rt.cpan.org #72754]
http://bugs.debian.org/650094 Skip interval timer tests in Time::HiRes on
GNU/Hurd
DEBPKG:debian/hurd_test_skip_sigdispatch - http://bugs.debian.org/650188
Disable failing GNU/Hurd tests op/sigdispatch.t
DEBPKG:debian/hurd_test_skip_stack - http://bugs.debian.org/650175 Disable
failing GNU/Hurd tests dist/threads/t/stack.t
DEBPKG:debian/hurd_test_skip_pipe - http://bugs.debian.org/650187 Disable
failing GNU/Hurd tests io/pipe.t
DEBPKG:debian/hurd_test_skip_io_pipe - http://bugs.debian.org/650096
Disable failing GNU/Hurd tests dist/IO/t/io_pipe.t
DEBPKG:fixes/manpage_name_CPAN - http://bugs.debian.org/650448 [rt.cpan.org
#73396] cpan/CPAN: add NAME headings in modules with POD
DEBPKG:fixes/manpage_name_CPANPLUS - http://bugs.debian.org/650450 [
rt.cpan.org #73398] cpan/CPANPLUS: add NAME headings in modules with POD
DEBPKG:fixes/manpage_name_Test-Harness - http://bugs.debian.org/650451 [
rt.cpan.org #73399] cpan/Test-Harness: add NAME headings in modules with POD
DEBPKG:fixes/manpage_name_Term-UI - http://bugs.debian.org/650452 [
rt.cpan.org #73400] cpan/Term-UI: add NAME headings in modules with POD
DEBPKG:fixes/podlators_ae_ligature_fallback - http://bugs.debian.org/652851
Fix the ASCII fallback string for AE
DEBPKG:fixes/fsf_postal_address - [de89470] Update references to the FSF's
postal address
DEBPKG:fixes/cpan_module_pod_fixes - [perl #106870] [rt.cpan.org #73447] [
rt.cpan.org #73446] Fix POD formatting in Term-Cap and Pod-Parser
DEBPKG:fixes/cgi_no_shellwords_pl - Use Text::ParseWords instead of
shellwords.pl
DEBPKG:fixes/path_max_fallback - [perl #109262]
http://bugs.debian.org/656869 Don't use _POSIX_PATH_MAX as a fallback
PATH_MAX
DEBPKG:debian/makemaker-pasthru - http://bugs.debian.org/660195 [rt.cpan.org
#28632] Make EU::MM pass LD through to recursive Makefile.PL invocations
DEBPKG:fixes/propagate_tainted_errors.patch -
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=663158 [perl #111654]
properly propagate tainted errors
DEBPKG:debian/perl5db-x-terminal-emulator.patch -
http://bugs.debian.org/668490 Invoke x-terminal-emulator rather than xterm
in perl5db.pl
DEBPKG:fixes/socket_cache_propagate -
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=659075 [rt.cpan.org
#61577] [perl #112736] sockdomain and socktype undef on newly accepted
sockets
DEBPKG:fixes/ipc_open3 - [perl #114454] http://bugs.debian.org/683894
IPC::Open3::open3(..., '-') broken
DEBPKG:fixes/string_repeat_overrun - http://bugs.debian.org/689314
[b675304] avoid calling memset with a negative count
DEBPKG:debian/cpan-missing-site-dirs - http://bugs.debian.org/688842 Fix
CPAN::FirstTime defaults with nonexisting site dirs if a parent is writable
DEBPKG:fixes/kfreebsd-overrides - http://bugs.debian.org/689713 [perl
#115324] [7dc6565] Remove unnecessary overrides in gnukfreebsd and
gnuknetbsd hints.
DEBPKG:fixes/tainted-smartmatch - [be88a5c] http://bugs.debian.org/690571
[perl #93590] $tainted ~~ [...] failing
DEBPKG:fixes/regexp-matching-starter - [6e634c5]
http://bugs.debian.org/690975 [perl #101710] Regression with /i, latin1
chars.
DEBPKG:fixes/regexp-matching-fold - [399fb9c] http://bugs.debian.org/690976
regexec.c: Fix "\x{FB01}\x{FB00}" =~ /ff/i
DEBPKG:fixes/regexp-matching-opposite-case - [dc91d5a]
http://bugs.debian.org/690979 [perl #101970] /[[:lower:]]/i matches upper
case
DEBPKG:fixes/reading-glob-copy-handle - [fd1564b]
http://bugs.debian.org/629363 [perl #92258] <$fh> hangs on a glob copy
DEBPKG:fixes/smartmatch-rhs-precedence - http://bugs.debian.org/691102
[011be0b] Enforce Any ~~ Object smartmatch precedence
DEBPKG:fixes/perlcheat-update - http://bugs.debian.org/691112 [ab0ae0a]
Update PerlCheat to 5.14
DEBPKG:fixes/cgi-cr-escaping - http://bugs.debian.org/693420 CR escaping
for P3P and Set-Cookie headers
DEBPKG:fixes/maketext-code-execution - [1735f6f]
http://bugs.debian.org/695224 Fix misparsing of maketext strings.
DEBPKG:fixes/storable-security-warning - [664f237]
http://bugs.debian.org/695223 add a note about security concerns in Storable
DEBPKG:fixes/digest-sha-doublefree - [rt.cpan.org #82655]
http://bugs.debian.org/698172 [a8c6ff7] Fix a double-free bug in Digest::SHA
DEBPKG:fixes/64bitint-signedness-wraparound - http://bugs.debian.org/698320
[94e529c] Avoid wraparound when casting unsigned size_t to signed ssize_t.
DEBPKG:fixes/stdin-sigchld - http://bugs.debian.org/700171 [perl #116621]
[be48bbe] add a couple missing LEAVEs in perlio_async_run()
DEBPKG:fixes/hsplit-rehash - [d59e31f] http://bugs.debian.org/702296
Prevent premature hsplit() calls, and only trigger REHASH after hsplit()
DEBPKG:fixes/encode-memleak - http://bugs.debian.org/702416 [5814803]
Encode: Fixed a memory leak that occurred in the UTF-8 encoding.
Built under linux
Compiled at Apr 15 2013 15:36:20
%ENV:
PERLBREW_BASHRC_VERSION="0.67"
PERLBREW_CONFIGURE_FLAGS="-de -Dcc=ccache\ gcc -Dld=gcc"
PERLBREW_HOME="/home/yorton/.perlbrew"
PERLBREW_MANPATH=""
PERLBREW_PATH="/home/yorton/perl5/perlbrew/bin"
PERLBREW_ROOT="/home/yorton/perl5/perlbrew"
PERLBREW_VERSION="0.67"
@INC:
/etc/perl
/usr/local/lib/perl/5.14.2
/usr/local/share/perl/5.14.2
/usr/lib/perl5
/usr/share/perl5
/usr/lib/perl/5.14
/usr/share/perl/5.14
/usr/local/lib/site_perl
--
perl -Mre=debug -e "/just|another|perl|hacker/"
demerphq
2014-07-17 09:25:50 UTC
Permalink
Post by demerphq
Post by s***@public.gmane.org
From: demerphq
Sent: Thursday, July 17, 2014 4:45 PM
/git_tree/perl/Porting/_Inline/lib/auto/FOO_2bd2/FOO_2bd2.so: undefined
Post by demerphq
symbol: PL_stack_sp at /usr/lib/perl/5.14/DynaLoader.pm line 184.
at /usr/local/share/perl/5.14.2/Inline.pm line 526.
/usr/lib/perl/5.14/
and
/usr/local/share/perl/5.14.2
I think that's likely to be the problem.
Thanks, ill dig on that.
My laptop system perl seems to have a confused state. In hindsight hardly
surprising.

I used perlbrew to switch to a different perl, and now I can get it to
build.

One side issue of the perlbrew version was that I had (for no good reason)
put the files I wanted to compile in the Porting directory of a perl.git
checkout. This then confused makemaker. When I moved the scripts out of a
perl build tree it started behaving properly. IMO that issue can be left at
"so dont do that". :-)

The original issue however might be handled more gracefully. A message from
Inline saying "it looks like your perl install is b0rked" would have be
useful.

Anyway, thanks for your help!

cheers,
Yves
s***@public.gmane.org
2014-07-17 12:22:23 UTC
Permalink
From: demerphq
Sent: Thursday, July 17, 2014 7:25 PM
To: Sisyphus
When I moved the scripts out of a perl build tree it started behaving
properly. IMO that issue can be left at "so dont do that". :-)
AFAICT, the only difference between building in /git_tree/perl/Porting and
/somewhere/else is that instead of doing:

cc -c -I"/git_tree/perl/Porting" -D_REENTRANT [...] FOO_1ef8.c
the build will do:
cc -c -I"/somewhere/else" -D_REENTRANT [...] FOO_1ef8.c

All other commands that get run would be the same. (You could check this by
comparing the BUILD_NOISY outputs for both situations.)

So I'm wondering whether, in the running of the above command, something was
found in "/git_tree/perl/Porting" that really ought not have been found and
loaded.

Cheers,
Rob
demerphq
2014-07-17 21:24:53 UTC
Permalink
Post by s***@public.gmane.org
From: demerphq
Sent: Thursday, July 17, 2014 7:25 PM
To: Sisyphus
When I moved the scripts out of a perl build tree it started behaving
properly. IMO that issue can be left at "so dont do that". :-)
AFAICT, the only difference between building in /git_tree/perl/Porting and
cc -c -I"/git_tree/perl/Porting" -D_REENTRANT [...] FOO_1ef8.c
cc -c -I"/somewhere/else" -D_REENTRANT [...] FOO_1ef8.c
All other commands that get run would be the same. (You could check this
by comparing the BUILD_NOISY outputs for both situations.)
So I'm wondering whether, in the running of the above command, something
was found in "/git_tree/perl/Porting" that really ought not have been found
and loaded.
Below is output from it failing and it suceeding (this is perlbrew 5.14.4):

~/git_tree/perl/Porting$ perl test_inline.pl
validate Stage
<-----------------------Information
Section----------------------------------->

Information about the processing of your Inline C code:

Your source code needs to be compiled. I'll use this build directory:
/git_tree/perl/Porting/_Inline/build/test_inline_pl_21ea2

and I'll install the executable as:
/git_tree/perl/Porting/_Inline/lib/auto/test_inline_pl_21ea2/test_inline_pl_21ea2.so

get_maps Stage
The following Inline C function(s) have been successfully bound to Perl:
void greet(char * name)

<-----------------------End of Information
Section---------------------------->
Starting Build Preprocess Stage
Finished Build Preprocess Stage

Starting Build Parse Stage
Finished Build Parse Stage

Starting Build Glue 1 Stage
Finished Build Glue 1 Stage

Starting Build Glue 2 Stage
Finished Build Glue 2 Stage

Starting Build Glue 3 Stage
Finished Build Glue 3 Stage

Starting Build Compile Stage
Starting "perl Makefile.PL" Stage
Writing Makefile for test_inline_pl_21ea2
Writing MYMETA.yml
Finished "perl Makefile.PL" Stage

Starting "make" Stage
/home/yorton/perl5/perlbrew/perls/perl-5.14.4/bin/perl
/home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/ExtUtils/xsubpp
-typemap
"/home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/ExtUtils/typemap"
test_inline_pl_21ea2.xs > test_inline_pl_21ea2.xsc && mv
test_inline_pl_21ea2.xsc test_inline_pl_21ea2.c
make: *** No rule to make target `../../../../fakethr.h', needed by
`test_inline_pl_21ea2.o'. Stop.

A problem was encountered while attempting to compile and install your
Inline
C code. The command that failed was:
"make" with error code 2

The build directory was:
/git_tree/perl/Porting/_Inline/build/test_inline_pl_21ea2

To debug the problem, cd to the build directory, and inspect the output
files.

at test_inline.pl line 0.
...propagated at
/home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/site_perl/5.14.4/Inline/C.pm
line 834.
INIT failed--call queue aborted.

#########################################################################################

If I build outside of my perl git checkout:

#########################################################################################

~/git_tree/hashy$ perl test_inline.pl
validate Stage
<-----------------------Information
Section----------------------------------->

Information about the processing of your Inline C code:

Your source code needs to be compiled. I'll use this build directory:
/git_tree/hashy/_Inline/build/test_inline_pl_21ea

and I'll install the executable as:
/git_tree/hashy/_Inline/lib/auto/test_inline_pl_21ea/test_inline_pl_21ea.so

get_maps Stage
The following Inline C function(s) have been successfully bound to Perl:
void greet(char * name)

<-----------------------End of Information
Section---------------------------->
Starting Build Preprocess Stage
Finished Build Preprocess Stage

Starting Build Parse Stage
Finished Build Parse Stage

Starting Build Glue 1 Stage
Finished Build Glue 1 Stage

Starting Build Glue 2 Stage
Finished Build Glue 2 Stage

Starting Build Glue 3 Stage
Finished Build Glue 3 Stage

Starting Build Compile Stage
Starting "perl Makefile.PL" Stage
Writing Makefile for test_inline_pl_21ea
Writing MYMETA.yml
Finished "perl Makefile.PL" Stage

Starting "make" Stage
/home/yorton/perl5/perlbrew/perls/perl-5.14.4/bin/perl
/home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/ExtUtils/xsubpp
-typemap
"/home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/ExtUtils/typemap"
test_inline_pl_21ea.xs > test_inline_pl_21ea.xsc && mv
test_inline_pl_21ea.xsc test_inline_pl_21ea.c
cc -c -I"/git_tree/hashy" -fno-strict-aliasing -pipe -fstack-protector
-I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2
-DVERSION=\"0.00\" -DXS_VERSION=\"0.00\" -fPIC
"-I/home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/x86_64-linux/CORE"
test_inline_pl_21ea.c
Running Mkbootstrap for test_inline_pl_21ea ()
chmod 644 test_inline_pl_21ea.bs
rm -f blib/arch/auto/test_inline_pl_21ea/test_inline_pl_21ea.so
cc -shared -O2 -L/usr/local/lib -fstack-protector test_inline_pl_21ea.o
-o blib/arch/auto/test_inline_pl_21ea/test_inline_pl_21ea.so \
\

chmod 755 blib/arch/auto/test_inline_pl_21ea/test_inline_pl_21ea.so
cp test_inline_pl_21ea.bs blib/arch/auto/test_inline_pl_21ea/
test_inline_pl_21ea.bs
chmod 644 blib/arch/auto/test_inline_pl_21ea/test_inline_pl_21ea.bs
Finished "make" Stage

Starting "make install" Stage
Files found in blib/arch: installing files in blib/lib into architecture
dependent library tree
Finished "make install" Stage

Starting Cleaning Up Stage
Finished Cleaning Up Stage

Finished Build Compile Stage

Hello Ingy!
Hello 42!
--
perl -Mre=debug -e "/just|another|perl|hacker/"
demerphq
2014-07-17 21:40:00 UTC
Permalink
Post by demerphq
Post by s***@public.gmane.org
From: demerphq
Sent: Thursday, July 17, 2014 7:25 PM
To: Sisyphus
When I moved the scripts out of a perl build tree it started behaving
properly. IMO that issue can be left at "so dont do that". :-)
AFAICT, the only difference between building in /git_tree/perl/Porting
cc -c -I"/git_tree/perl/Porting" -D_REENTRANT [...] FOO_1ef8.c
cc -c -I"/somewhere/else" -D_REENTRANT [...] FOO_1ef8.c
All other commands that get run would be the same. (You could check this
by comparing the BUILD_NOISY outputs for both situations.)
So I'm wondering whether, in the running of the above command, something
was found in "/git_tree/perl/Porting" that really ought not have been found
and loaded.
Starting "make" Stage
/home/yorton/perl5/perlbrew/perls/perl-5.14.4/bin/perl
/home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/ExtUtils/xsubpp
-typemap
"/home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/ExtUtils/typemap"
test_inline_pl_21ea2.xs > test_inline_pl_21ea2.xsc && mv
test_inline_pl_21ea2.xsc test_inline_pl_21ea2.c
make: *** No rule to make target `../../../../fakethr.h', needed by
`test_inline_pl_21ea2.o'. Stop.
The above shows what goes wrong. Makemaker decides that PERL_LIB is
"../../../../" instead of
"/home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4"

below is the diff of the two Makefiles, but the relevant part is as follows:

-PERL_LIB = /home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4
-PERL_ARCHLIB =
/home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/x86_64-linux
+PERL_LIB = ../../../../lib
+PERL_ARCHLIB = ../../../../lib

I am guessing that MakerMaker decides that is being used as part of
building perl, and that it should use it as the location for its header
files. I know there is special logic in MakeMaker for this kind of purpose.
In fact I have patched related logic in the perl build process. If this
were happening in a later perl I might even think this was my fault. :-)

Anyway, my bet is this isnt an Inline bug, but an unfortunate mis-feature
in MakeMaker.

$ diff -wu ~/git_tree/hashy/_Inline/build/test_inline_pl_21ea/Makefile
~/git_tree/perl/Porting/_Inline/build/test_inline_pl_21ea2/Makefile
--- /home/yorton/git_tree/hashy/_Inline/build/test_inline_pl_21ea/Makefile
2014-07-17
23:21:20.113236687 +0200
+++ ~/git_tree/perl/Porting/_Inline/build/test_inline_pl_21ea2/Makefile
2014-07-17
23:19:52.913732019 +0200
@@ -1,4 +1,4 @@
-# This Makefile is for the test_inline_pl_21ea extension to perl.
+# This Makefile is for the test_inline_pl_21ea2 extension to perl.
#
# It was generated automatically by MakeMaker version
# 6.57_05 (Revision: 65705) from the contents of
@@ -12,8 +12,8 @@
# MakeMaker Parameters:

# BUILD_REQUIRES => { }
-# INC => q[-I"/git_tree/hashy"]
-# NAME => q[test_inline_pl_21ea]
+# INC => q[-I"/git_tree/perl/Porting"]
+# NAME => q[test_inline_pl_21ea2]
# PREREQ_PM => { }
# TYPEMAPS =>
[q[/home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/ExtUtils/typemap]]
# VERSION => q[0.00]
@@ -53,8 +53,8 @@
AR_STATIC_ARGS = cr
DIRFILESEP = /
DFSEP = $(DIRFILESEP)
-NAME = test_inline_pl_21ea
-NAME_SYM = test_inline_pl_21ea
+NAME = test_inline_pl_21ea2
+NAME_SYM = test_inline_pl_21ea2
VERSION = 0.00
VERSION_MACRO = VERSION
VERSION_SYM = 0_00
@@ -78,13 +78,13 @@
VENDORPREFIX =
INSTALLPRIVLIB = /home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4
DESTINSTALLPRIVLIB = $(DESTDIR)$(INSTALLPRIVLIB)
-INSTALLSITELIB = /git_tree/hashy/_Inline/lib
+INSTALLSITELIB = /git_tree/perl/Porting/_Inline/lib
DESTINSTALLSITELIB = $(DESTDIR)$(INSTALLSITELIB)
INSTALLVENDORLIB =
DESTINSTALLVENDORLIB = $(DESTDIR)$(INSTALLVENDORLIB)
INSTALLARCHLIB =
/home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/x86_64-linux
DESTINSTALLARCHLIB = $(DESTDIR)$(INSTALLARCHLIB)
-INSTALLSITEARCH = /git_tree/hashy/_Inline/lib
+INSTALLSITEARCH = /git_tree/perl/Porting/_Inline/lib
DESTINSTALLSITEARCH = $(DESTDIR)$(INSTALLSITEARCH)
INSTALLVENDORARCH =
DESTINSTALLVENDORARCH = $(DESTDIR)$(INSTALLVENDORARCH)
@@ -112,14 +112,15 @@
DESTINSTALLSITEMAN3DIR = $(DESTDIR)$(INSTALLSITEMAN3DIR)
INSTALLVENDORMAN3DIR =
DESTINSTALLVENDORMAN3DIR = $(DESTDIR)$(INSTALLVENDORMAN3DIR)
-PERL_LIB = /home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4
-PERL_ARCHLIB =
/home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/x86_64-linux
+PERL_LIB = ../../../../lib
+PERL_ARCHLIB = ../../../../lib
LIBPERL_A = libperl.a
FIRST_MAKEFILE = Makefile
MAKEFILE_OLD = Makefile.old
MAKE_APERL_FILE = Makefile.aperl
PERLMAINCC = $(CC)
-PERL_INC =
/home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/x86_64-linux/CORE
+PERL_SRC = ../../../..
+PERL_INC = ../../../..
PERL = /home/yorton/perl5/perlbrew/perls/perl-5.14.4/bin/perl
FULLPERL = /home/yorton/perl5/perlbrew/perls/perl-5.14.4/bin/perl
ABSPERL = $(PERL)
@@ -143,21 +144,21 @@
# PARENT_NAME = NAME without BASEEXT and no trailing :: (eg Foo::Bar)
# DLBASE = Basename part of dynamic library. May be just equal BASEEXT.
MAKE = make
-FULLEXT = test_inline_pl_21ea
-BASEEXT = test_inline_pl_21ea
+FULLEXT = test_inline_pl_21ea2
+BASEEXT = test_inline_pl_21ea2
PARENT_NAME =
DLBASE = $(BASEEXT)
VERSION_FROM =
-INC = -I"/git_tree/hashy"
+INC = -I"/git_tree/perl/Porting"
OBJECT = $(BASEEXT)$(OBJ_EXT)
LDFROM = $(OBJECT)
LINKTYPE = dynamic
BOOTDEP =

# Handy lists of source code files:
-XS_FILES = test_inline_pl_21ea.xs
-C_FILES = test_inline_pl_21ea.c
-O_FILES = test_inline_pl_21ea.o
+XS_FILES = test_inline_pl_21ea2.xs
+C_FILES = test_inline_pl_21ea2.c
+O_FILES = test_inline_pl_21ea2.o
H_FILES = INLINE.h
MAN1PODS =
MAN3PODS =
@@ -204,7 +205,7 @@
XSUBPP = $(XSUBPPDIR)$(DFSEP)xsubpp
XSUBPPRUN = $(PERLRUN) $(XSUBPP)
XSPROTOARG =
-XSUBPPDEPS =
/home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/ExtUtils/typemap
/home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/ExtUtils/typemap
$(XSUBPP)
+XSUBPPDEPS = ../../../../lib/ExtUtils/typemap
/home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/ExtUtils/typemap
$(XSUBPP)
XSUBPPARGS = -typemap
"/home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/ExtUtils/typemap"
XSUBPP_EXTRA_ARGS =

@@ -260,8 +261,8 @@
RCS_LABEL = rcs -Nv$(VERSION_SYM): -q
DIST_CP = best
DIST_DEFAULT = tardist
-DISTNAME = test_inline_pl_21ea
-DISTVNAME = test_inline_pl_21ea-0.00
+DISTNAME = test_inline_pl_21ea2
+DISTVNAME = test_inline_pl_21ea2-0.00


# --- MakeMaker macro section:
@@ -280,7 +281,7 @@

# --- MakeMaker const_loadlibs section:

-# test_inline_pl_21ea might depend on some other libraries:
+# test_inline_pl_21ea2 might depend on some other libraries:
# See ExtUtils::Liblist for details
#

@@ -527,14 +528,14 @@
core.[0-9] $(INST_ARCHAUTODIR)/extralibs.all \
core.[0-9][0-9] $(BASEEXT).bso \
pm_to_blib.ts core.[0-9][0-9][0-9][0-9] \
- MYMETA.yml $(BASEEXT).x \
- $(BOOTSTRAP) perl$(EXE_EXT) \
- tmon.out *$(OBJ_EXT) \
- pm_to_blib $(INST_ARCHAUTODIR)/extralibs.ld \
- blibdirs.ts core.[0-9][0-9][0-9][0-9][0-9] \
- *perl.core core.*perl.*.? \
- $(MAKE_APERL_FILE) $(BASEEXT).def \
- test_inline_pl_21ea.c perl \
+ test_inline_pl_21ea2.c MYMETA.yml \
+ $(BASEEXT).x $(BOOTSTRAP) \
+ perl$(EXE_EXT) tmon.out \
+ *$(OBJ_EXT) pm_to_blib \
+ $(INST_ARCHAUTODIR)/extralibs.ld blibdirs.ts \
+ core.[0-9][0-9][0-9][0-9][0-9] *perl.core \
+ core.*perl.*.? $(MAKE_APERL_FILE) \
+ $(BASEEXT).def perl \
core.[0-9][0-9][0-9] mon.out \
lib$(BASEEXT).def perlmain.c \
perl.exe so_locations \
@@ -563,7 +564,7 @@
metafile : create_distdir
$(NOECHO) $(ECHO) Generating META.yml
$(NOECHO) $(ECHO) '--- #YAML:1.0' > META_new.yml
- $(NOECHO) $(ECHO) 'name: test_inline_pl_21ea' >>
META_new.yml
+ $(NOECHO) $(ECHO) 'name: test_inline_pl_21ea2' >>
META_new.yml
$(NOECHO) $(ECHO) 'version: 0.00' >> META_new.yml
$(NOECHO) $(ECHO) 'abstract: ~' >> META_new.yml
$(NOECHO) $(ECHO) 'author: []' >> META_new.yml
@@ -806,6 +807,16 @@


# --- MakeMaker perldepend section:
+# Check for unpropogated config.sh changes. Should never happen.
+# We do NOT just update config.h because that is not sufficient.
+# An out of date config.h is not fatal but complains loudly!
+$(PERL_INC)/config.h: $(PERL_SRC)/config.sh
+ -$(NOECHO) $(ECHO) "Warning: $(PERL_INC)/config.h out of date with
$(PERL_SRC)/config.sh"; $(FALSE)
+
+$(PERL_ARCHLIB)/Config.pm: $(PERL_SRC)/config.sh
+ $(NOECHO) $(ECHO) "Warning: $(PERL_ARCHLIB)/Config.pm may be out of date
with $(PERL_SRC)/config.sh"
+ cd $(PERL_SRC) && $(MAKE) lib/Config.pm
+

PERL_HDRS = \
$(PERL_INC)/EXTERN.h \
@@ -851,7 +862,7 @@

$(OBJECT) : $(PERL_HDRS)

-test_inline_pl_21ea.c : $(XSUBPPDEPS)
+test_inline_pl_21ea2.c : $(XSUBPPDEPS)


# --- MakeMaker makefile section:
--
perl -Mre=debug -e "/just|another|perl|hacker/"
s***@public.gmane.org
2014-07-18 00:58:47 UTC
Permalink
From: demerphq
Sent: Friday, July 18, 2014 7:40 AM
Post by demerphq
The above shows what goes wrong. Makemaker decides that PERL_LIB is
"../../../../" instead of
"/home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4"
-PERL_LIB = /home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4
-PERL_ARCHLIB =
/home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/x86_64-linux
+PERL_LIB = ../../../../lib
+PERL_ARCHLIB = ../../../../lib
I am guessing that MakerMaker decides that is being used as part of
building perl, and that it should use it as the location for its header
files. I know there is special logic in MakeMaker for this kind of purpose.
I didn't know that.
If we could get a handle on precisely how to detect that this problem might
arise, then we could probably have Inline issue a warning that "things might
go awry, and if they do then you should move the script to a different
(sane) location".

I tried running your demo script on Windows (as try.pl) in
C:/git_tree/perl/Porting with perl-5.14.0, EU-MM-6.62 and it still worked
fine for me.
Might there be a perlbrew component to this issue ? (I'm not at all familiar
with perlbrew. I just build my perls the old fashioned way and call them via
different shell/batch scripts.)

I see that you're running EU-MM-6.57_05. If you think it's worth the effort
I guess you could see if updating to EU-MM-6.62 fixes the problem - or do
any other digging you think might be productive. (It's actually a bit
interesting.)
Otherwise we can just settle for the "Don't do that" solution ;-)

Cheers,
Rob
s***@public.gmane.org
2014-07-19 01:15:29 UTC
Permalink
Yeah, I’ll do that tonight if it hasn’t already been done.

Cheers,
Rob

From: Ingy dot Net
Sent: Saturday, July 19, 2014 2:28 AM
To: Sisyphus
Cc: demerphq ; inline
Subject: Re: undefined symbol: PL_stack_sp
Can someone turn this into an issue here https://github.com/ingydotnet/inline-c-pm/issues


This type of discussion would do better there, as we'll get around to addressing it.


Cheers




On Thu, Jul 17, 2014 at 5:58 PM, <sisyphus1-sFbbPxZDHXw0n/***@public.gmane.org> wrote:


From: demerphq
Sent: Friday, July 18, 2014 7:40 AM



The above shows what goes wrong. Makemaker decides that PERL_LIB is "../../../../" instead of "/home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4"

below is the diff of the two Makefiles, but the relevant part is as follows:

-PERL_LIB = /home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4
-PERL_ARCHLIB = /home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/x86_64-linux
+PERL_LIB = ../../../../lib
+PERL_ARCHLIB = ../../../../lib

I am guessing that MakerMaker decides that is being used as part of building perl, and that it should use it as the location for its header files. I know there is special logic in MakeMaker for this kind of purpose.



I didn't know that.
If we could get a handle on precisely how to detect that this problem might arise, then we could probably have Inline issue a warning that "things might go awry, and if they do then you should move the script to a different (sane) location".

I tried running your demo script on Windows (as try.pl) in C:/git_tree/perl/Porting with perl-5.14.0, EU-MM-6.62 and it still worked fine for me.
Might there be a perlbrew component to this issue ? (I'm not at all familiar with perlbrew. I just build my perls the old fashioned way and call them via different shell/batch scripts.)

I see that you're running EU-MM-6.57_05. If you think it's worth the effort I guess you could see if updating to EU-MM-6.62 fixes the problem - or do any other digging you think might be productive. (It's actually a bit interesting.)
Otherwise we can just settle for the "Don't do that" solution ;-)

Cheers,
Rob
Ingy dot Net
2014-07-18 16:28:01 UTC
Permalink
Can someone turn this into an issue here
https://github.com/ingydotnet/inline-c-pm/issues

This type of discussion would do better there, as we'll get around to
addressing it.

Cheers
Post by s***@public.gmane.org
From: demerphq
Sent: Friday, July 18, 2014 7:40 AM
The above shows what goes wrong. Makemaker decides that PERL_LIB is
Post by s***@public.gmane.org
"../../../../" instead of "/home/yorton/perl5/perlbrew/
perls/perl-5.14.4/lib/5.14.4"
-PERL_LIB = /home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4
-PERL_ARCHLIB = /home/yorton/perl5/perlbrew/perls/perl-5.14.4/lib/5.14.4/
x86_64-linux
+PERL_LIB = ../../../../lib
+PERL_ARCHLIB = ../../../../lib
I am guessing that MakerMaker decides that is being used as part of
building perl, and that it should use it as the location for its header
files. I know there is special logic in MakeMaker for this kind of purpose.
I didn't know that.
If we could get a handle on precisely how to detect that this problem
might arise, then we could probably have Inline issue a warning that
"things might go awry, and if they do then you should move the script to a
different (sane) location".
I tried running your demo script on Windows (as try.pl) in
C:/git_tree/perl/Porting with perl-5.14.0, EU-MM-6.62 and it still worked
fine for me.
Might there be a perlbrew component to this issue ? (I'm not at all
familiar with perlbrew. I just build my perls the old fashioned way and
call them via different shell/batch scripts.)
I see that you're running EU-MM-6.57_05. If you think it's worth the
effort I guess you could see if updating to EU-MM-6.62 fixes the problem -
or do any other digging you think might be productive. (It's actually a bit
interesting.)
Otherwise we can just settle for the "Don't do that" solution ;-)
Cheers,
Rob
s***@public.gmane.org
2014-07-20 02:39:39 UTC
Permalink
From: Ingy dot Net
Sent: Saturday, July 19, 2014 2:28 AM
Subject: Re: undefined symbol: PL_stack_sp
Post by s***@public.gmane.org
Can someone turn this into an issue here
https://github.com/ingydotnet/inline-c-pm/issues
Done.
Please direct follow-ups to:

https://github.com/ingydotnet/inline-c-pm/issues/12

Cheers,
Rob

Loading...