You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
ExtUtils::ParseXS breaks compilation of XS modules on 5.8.5 with -Duseithreads -Doptimize='-g' -DDEBUGGING on gcc5.3.1 #15236
Building and testing Devel-PPPort-3.32 ... cp PPPort.pm
blib/lib/Devel/PPPort.pm
Running Mkbootstrap for Devel::PPPort ()
chmod 644 "PPPort.bs"
"/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/bin/perl" "-Iblib/arch"
"-Iblib/lib" PPPort_xs.PL RealPPPort.xs
adding XS code from parts/inc/sv_xpvf
"/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/bin/perl"
"/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/lib/5.8.5/ExtUtils/xsubpp"
-noprototypes -typemap
"/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/lib/5.8.5/ExtUtils/typemap"
-typemap "typemap" RealPPPort.xs > RealPPPort.xsc && mv RealPPPort.xsc
RealPPPort.c
"/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/bin/perl" "-Iblib/arch"
"-Iblib/lib" ppport_h.PL ppport.h
cc -c -D_REENTRANT -D_GNU_SOURCE -DDEBUGGING -fno-strict-aliasing
-pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g
-DVERSION=\"3.32\" -DXS_VERSION=\"3.32\" -fpic
"-I/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/lib/5.8.5/x86_64-linux-thread-multi/CORE"
RealPPPort.c
In file included from RealPPPort.xs:31:0:
RealPPPort.c: In function ‘S_croak_xs_usage’:
/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/lib/5.8.5/x86_64-linux-thread-multi/CORE/perl.h:115:18:
error: ‘my_perl’ undeclared (first use in this function)
# define aTHX my_perl
^
/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/lib/5.8.5/x86_64-linux-thread-multi/CORE/perl.h:2619:40:
note: in definition of macro ‘PERL_DEB’
# define PERL_DEB(a) a
^
/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/lib/5.8.5/x86_64-linux-thread-multi/CORE/perl.h:120:18:
note: in expansion of macro ‘aTHX’
# define aTHX_ aTHX,
^
/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/lib/5.8.5/x86_64-linux-thread-multi/CORE/perl.h:2773:17:
note: in expansion of macro ‘aTHX_’
Perl_croak(aTHX_ "Assertion " STRINGIFY(what) " failed: file
\"%s\", line %d", \
^
RealPPPort.c:423:41: note: in expansion of macro ‘assert’
#define PERL_ARGS_ASSERT_CROAK_XS_USAGE assert(cv); assert(params)
^
RealPPPort.c:434:5: note: in expansion of macro
‘PERL_ARGS_ASSERT_CROAK_XS_USAGE’
PERL_ARGS_ASSERT_CROAK_XS_USAGE;
^
/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/lib/5.8.5/x86_64-linux-thread-multi/CORE/perl.h:115:18:
note: each undeclared identifier is reported only once for each function it
appears in
# define aTHX my_perl
^
/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/lib/5.8.5/x86_64-linux-thread-multi/CORE/perl.h:2619:40:
note: in definition of macro ‘PERL_DEB’
# define PERL_DEB(a) a
^
/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/lib/5.8.5/x86_64-linux-thread-multi/CORE/perl.h:120:18:
note: in expansion of macro ‘aTHX’
# define aTHX_ aTHX,
^
/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/lib/5.8.5/x86_64-linux-thread-multi/CORE/perl.h:2773:17:
note: in expansion of macro ‘aTHX_’
Perl_croak(aTHX_ "Assertion " STRINGIFY(what) " failed: file
\"%s\", line %d", \
^
RealPPPort.c:423:41: note: in expansion of macro ‘assert’
#define PERL_ARGS_ASSERT_CROAK_XS_USAGE assert(cv); assert(params)
^
RealPPPort.c:434:5: note: in expansion of macro
‘PERL_ARGS_ASSERT_CROAK_XS_USAGE’
PERL_ARGS_ASSERT_CROAK_XS_USAGE;
^
Makefile:349: recipe for target 'RealPPPort.o' failed
make: *** [RealPPPort.o] Error 1
It turned out to be that the latest ExtUtils::ParseXS was installed, and
xsubpp is filling in a croak_xs that looks like:
Building and testing Devel-PPPort-3.32 ... cp PPPort.pm
blib/lib/Devel/PPPort.pm
Running Mkbootstrap for Devel::PPPort ()
chmod 644 "PPPort.bs"
"/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/bin/perl" "-Iblib/arch"
"-Iblib/lib" PPPort_xs.PL RealPPPort.xs
adding XS code from parts/inc/sv_xpvf
"/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/bin/perl"
"/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/lib/5.8.5/ExtUtils/xsubpp"
-noprototypes -typemap
"/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/lib/5.8.5/ExtUtils/typemap"
-typemap "typemap" RealPPPort.xs > RealPPPort.xsc && mv
RealPPPort.xsc
RealPPPort.c
"/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/bin/perl" "-Iblib/arch"
"-Iblib/lib" ppport_h.PL ppport.h
cc -c -D_REENTRANT -D_GNU_SOURCE -DDEBUGGING -fno-strict-aliasing
-pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
-g
-DVERSION=\"3.32\" -DXS_VERSION=\"3.32\" -fpic
"-I/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/lib/5.8.5/x86_64-linux-
thread-multi/CORE"
RealPPPort.c
In file included from RealPPPort.xs:31:0:
RealPPPort.c: In function ‘S_croak_xs_usage’:
/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/lib/5.8.5/x86_64-linux-
thread-multi/CORE/perl.h:115:18:
error: ‘my_perl’ undeclared (first use in this function)
# define aTHX my_perl
^
/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/lib/5.8.5/x86_64-linux-
thread-multi/CORE/perl.h:2619:40:
note: in definition of macro ‘PERL_DEB’
# define PERL_DEB(a) a
^
/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/lib/5.8.5/x86_64-linux-
thread-multi/CORE/perl.h:120:18:
note: in expansion of macro ‘aTHX’
# define aTHX_ aTHX,
^
/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/lib/5.8.5/x86_64-linux-
thread-multi/CORE/perl.h:2773:17:
note: in expansion of macro ‘aTHX_’
Perl_croak(aTHX_ "Assertion " STRINGIFY(what) " failed: file
\"%s\", line %d", \
^
RealPPPort.c:423:41: note: in expansion of macro ‘assert’
#define PERL_ARGS_ASSERT_CROAK_XS_USAGE assert(cv);
assert(params)
^
RealPPPort.c:434:5: note: in expansion of macro
‘PERL_ARGS_ASSERT_CROAK_XS_USAGE’
PERL_ARGS_ASSERT_CROAK_XS_USAGE;
^
/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/lib/5.8.5/x86_64-linux-
thread-multi/CORE/perl.h:115:18:
note: each undeclared identifier is reported only once for each
function it
appears in
# define aTHX my_perl
^
/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/lib/5.8.5/x86_64-linux-
thread-multi/CORE/perl.h:2619:40:
note: in definition of macro ‘PERL_DEB’
# define PERL_DEB(a) a
^
/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/lib/5.8.5/x86_64-linux-
thread-multi/CORE/perl.h:120:18:
note: in expansion of macro ‘aTHX’
# define aTHX_ aTHX,
^
/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/lib/5.8.5/x86_64-linux-
thread-multi/CORE/perl.h:2773:17:
note: in expansion of macro ‘aTHX_’
Perl_croak(aTHX_ "Assertion " STRINGIFY(what) " failed: file
\"%s\", line %d", \
^
RealPPPort.c:423:41: note: in expansion of macro ‘assert’
#define PERL_ARGS_ASSERT_CROAK_XS_USAGE assert(cv);
assert(params)
^
RealPPPort.c:434:5: note: in expansion of macro
‘PERL_ARGS_ASSERT_CROAK_XS_USAGE’
PERL_ARGS_ASSERT_CROAK_XS_USAGE;
^
Makefile:349: recipe for target 'RealPPPort.o' failed
make: *** [RealPPPort.o] Error 1
It turned out to be that the latest ExtUtils::ParseXS was installed,
and
xsubpp is filling in a croak_xs that looks like:
@wolfsage, can you review this ticket for closability?
In your most recent comment, you referred to S_croak_xs_usage, noting that it was found in file vutil.h. However, this appears to no longer be the case.
Nor does this function still appear in the upstream version.pm:
$ ack S_croak_xs_usage .
$
# no output
Since (i) @xsawyerx is planning a new CPAN release of EU::PXS, and (ii) there are other EU::PXS issues pending, we should see if we can clean up older tickets for this distro.
Maybe it's better to do the release without it so as to not stress anyone to wrap something up for the release. Once one is done, it's easier to do the next one.
Maybe it's better to do the release without it so as to not stress anyone to wrap something up for the release. Once one is done, it's easier to do the next one.
That's cool. Your volunteering to do a CPAN release just got me to look at old tickets, and this appeared to be the most closable.
I think the steps (for anyone) to confirm if this is still an issue are:
* For a threaded and non-threaded build:
* Build perl 5.8.5
* Install ExtUtils::ParseXS
* Attempt to install an XS module like Devel::PPPort
If it still fails similarly, some work could be done (if we want to support 5.8.5 still, assuming this issue also doesn't affect other perl versions)
I tried to build perl-5.8.5 from source and failed twice. The first time was from the tag for that release in the GH repository. The second was by obtaining buildperl.pl and calling:
cc -L/usr/local/lib -o miniperl \
miniperlmain.o opmini.o libperl.a
opmini.o: In function `Perl_scalar':
/home/jkeenan/Downloads/perl-5.8.5/opmini.c:602: undefined reference to `pthread_getspecific'
/home/jkeenan/Downloads/perl-5.8.5/opmini.c:613: undefined reference to `pthread_getspecific'
opmini.o: In function `Perl_list':
/home/jkeenan/Downloads/perl-5.8.5/opmini.c:906: undefined reference to `pthread_getspecific'
/home/jkeenan/Downloads/perl-5.8.5/opmini.c:916: undefined reference to `pthread_getspecific'
opmini.o: In function `S_apply_attrs':
/home/jkeenan/Downloads/perl-5.8.5/opmini.c:1491: undefined reference to `pthread_getspecific'
opmini.o:/home/jkeenan/Downloads/perl-5.8.5/opmini.c:1524: more undefined references to `pthread_getspecific' follow
libperl.a(perl.o): In function `perl_alloc':
/home/jkeenan/Downloads/perl-5.8.5/perl.c:203: undefined reference to `pthread_key_create'
/home/jkeenan/Downloads/perl-5.8.5/perl.c:203: undefined reference to `pthread_setspecific'
/home/jkeenan/Downloads/perl-5.8.5/perl.c:203: undefined reference to `pthread_setspecific'
libperl.a(perl.o): In function `perl_construct':
/home/jkeenan/Downloads/perl-5.8.5/perl.c:382: undefined reference to `pthread_getspecific'
libperl.a(perl.o): In function `perl_destruct':
/home/jkeenan/Downloads/perl-5.8.5/perl.c:514: undefined reference to `pthread_getspecific'
libperl.a(perl.o): In function `perl_parse':
/home/jkeenan/Downloads/perl-5.8.5/perl.c:1284: undefined reference to `pthread_getspecific'
libperl.a(perl.o): In function `S_parse_body':
/home/jkeenan/Downloads/perl-5.8.5/perl.c:1794: undefined reference to `pthread_getspecific'
/home/jkeenan/Downloads/perl-5.8.5/perl.c:1802: undefined reference to `pthread_getspecific'
libperl.a(perl.o):/home/jkeenan/Downloads/perl-5.8.5/perl.c:1848: more undefined references to `pthread_getspecific' follow
libperl.a(util.o): In function `Perl_set_context':
/home/jkeenan/Downloads/perl-5.8.5/util.c:2865: undefined reference to `pthread_setspecific'
libperl.a(mg.o): In function `Perl_magic_get':
/home/jkeenan/Downloads/perl-5.8.5/mg.c:840: undefined reference to `pthread_getspecific'
libperl.a(mg.o): In function `Perl_magic_clearsig':
/home/jkeenan/Downloads/perl-5.8.5/mg.c:1152: undefined reference to `pthread_getspecific'
/home/jkeenan/Downloads/perl-5.8.5/mg.c:1174: undefined reference to `pthread_getspecific'
/home/jkeenan/Downloads/perl-5.8.5/mg.c:1178: undefined reference to `pthread_getspecific'
libperl.a(mg.o): In function `Perl_csighandler':
/home/jkeenan/Downloads/perl-5.8.5/mg.c:1199: undefined reference to `pthread_getspecific'
libperl.a(mg.o):/home/jkeenan/Downloads/perl-5.8.5/mg.c:1301: more undefined references to `pthread_getspecific' follow
libperl.a(sv.o): In function `perl_clone':
/home/jkeenan/Downloads/perl-5.8.5/sv.c:10695: undefined reference to `pthread_setspecific'
/home/jkeenan/Downloads/perl-5.8.5/sv.c:11281: undefined reference to `pthread_getspecific'
/home/jkeenan/Downloads/perl-5.8.5/sv.c:11425: undefined reference to `pthread_getspecific'
/home/jkeenan/Downloads/perl-5.8.5/sv.c:11432: undefined reference to `pthread_getspecific'
libperl.a(sv.o): In function `Perl_sv_recode_to_utf8':
/home/jkeenan/Downloads/perl-5.8.5/sv.c:11469: undefined reference to `pthread_getspecific'
/home/jkeenan/Downloads/perl-5.8.5/sv.c:11499: undefined reference to `pthread_getspecific'
libperl.a(sv.o):/home/jkeenan/Downloads/perl-5.8.5/sv.c:11528: more undefined references to `pthread_getspecific' follow
libperl.a(pp.o): In function `Perl_pp_pow':
/home/jkeenan/Downloads/perl-5.8.5/pp.c:1015: undefined reference to `pow'
libperl.a(pp.o): In function `Perl_pp_modulo':
/home/jkeenan/Downloads/perl-5.8.5/pp.c:1338: undefined reference to `floor'
/home/jkeenan/Downloads/perl-5.8.5/pp.c:1341: undefined reference to `floor'
/home/jkeenan/Downloads/perl-5.8.5/pp.c:1353: undefined reference to `fmod'
libperl.a(pp.o): In function `Perl_pp_atan2':
/home/jkeenan/Downloads/perl-5.8.5/pp.c:2690: undefined reference to `atan2'
libperl.a(pp.o): In function `Perl_pp_sin':
/home/jkeenan/Downloads/perl-5.8.5/pp.c:2701: undefined reference to `sin'
libperl.a(pp.o): In function `Perl_pp_cos':
/home/jkeenan/Downloads/perl-5.8.5/pp.c:2713: undefined reference to `cos'
libperl.a(pp.o): In function `Perl_pp_exp':
/home/jkeenan/Downloads/perl-5.8.5/pp.c:2773: undefined reference to `exp'
libperl.a(pp.o): In function `Perl_pp_log':
/home/jkeenan/Downloads/perl-5.8.5/pp.c:2789: undefined reference to `log'
libperl.a(pp.o): In function `Perl_pp_sqrt':
/home/jkeenan/Downloads/perl-5.8.5/pp.c:2805: undefined reference to `sqrt'
libperl.a(pp.o): In function `Perl_pp_int':
/home/jkeenan/Downloads/perl-5.8.5/pp.c:2836: undefined reference to `floor'
/home/jkeenan/Downloads/perl-5.8.5/pp.c:2843: undefined reference to `ceil'
libperl.a(pp.o): In function `Perl_pp_splice':
/home/jkeenan/Downloads/perl-5.8.5/pp.c:4083: undefined reference to `pthread_getspecific'
/home/jkeenan/Downloads/perl-5.8.5/pp.c:4085: undefined reference to `pthread_getspecific'
libperl.a(pp.o): In function `Perl_pp_push':
/home/jkeenan/Downloads/perl-5.8.5/pp.c:4280: undefined reference to `pthread_getspecific'
/home/jkeenan/Downloads/perl-5.8.5/pp.c:4282: undefined reference to `pthread_getspecific'
libperl.a(pp.o): In function `Perl_pp_unshift':
/home/jkeenan/Downloads/perl-5.8.5/pp.c:4336: undefined reference to `pthread_getspecific'
libperl.a(pp.o):/home/jkeenan/Downloads/perl-5.8.5/pp.c:4338: more undefined references to `pthread_getspecific' follow
libperl.a(pp_pack.o): In function `S_pack_rec':
/home/jkeenan/Downloads/perl-5.8.5/pp_pack.c:2435: undefined reference to `floor'
/home/jkeenan/Downloads/perl-5.8.5/pp_pack.c:2437: undefined reference to `floor'
libperl.a(pp_sort.o): In function `Perl_pp_sort':
/home/jkeenan/Downloads/perl-5.8.5/pp_sort.c:1434: undefined reference to `pthread_getspecific'
/home/jkeenan/Downloads/perl-5.8.5/pp_sort.c:1579: undefined reference to `pthread_getspecific'
/home/jkeenan/Downloads/perl-5.8.5/pp_sort.c:1627: undefined reference to `pthread_getspecific'
libperl.a(pp_sort.o): In function `sortcv':
/home/jkeenan/Downloads/perl-5.8.5/pp_sort.c:1649: undefined reference to `pthread_getspecific'
libperl.a(pp_sort.o): In function `sortcv_stacked':
/home/jkeenan/Downloads/perl-5.8.5/pp_sort.c:1694: undefined reference to `pthread_getspecific'
libperl.a(pp_sort.o):/home/jkeenan/Downloads/perl-5.8.5/pp_sort.c:1722: more undefined references to `pthread_getspecific' follow
collect2: error: ld returned 1 exit status
makefile:239: recipe for target 'miniperl' failed
make: *** [miniperl] Error 1
make all: 512
Activity
p5pRT commentedon Mar 18, 2016
From @wolfsage
Created by WolfSage@gmail.com
Reported by ribasushi on Devel::PPPort initially (
Dual-Life/Devel-PPPort#31)
Building and testing Devel-PPPort-3.32 ... cp PPPort.pm
blib/lib/Devel/PPPort.pm
Running Mkbootstrap for Devel::PPPort ()
chmod 644 "PPPort.bs"
"/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/bin/perl" "-Iblib/arch"
"-Iblib/lib" PPPort_xs.PL RealPPPort.xs
adding XS code from parts/inc/sv_xpvf
"/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/bin/perl"
"/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/lib/5.8.5/ExtUtils/xsubpp"
-noprototypes -typemap
"/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/lib/5.8.5/ExtUtils/typemap"
-typemap "typemap" RealPPPort.xs > RealPPPort.xsc && mv RealPPPort.xsc
RealPPPort.c
"/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/bin/perl" "-Iblib/arch"
"-Iblib/lib" ppport_h.PL ppport.h
cc -c -D_REENTRANT -D_GNU_SOURCE -DDEBUGGING -fno-strict-aliasing
-pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g
-DVERSION=\"3.32\" -DXS_VERSION=\"3.32\" -fpic
"-I/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/lib/5.8.5/x86_64-linux-thread-multi/CORE"
RealPPPort.c
In file included from RealPPPort.xs:31:0:
RealPPPort.c: In function ‘S_croak_xs_usage’:
/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/lib/5.8.5/x86_64-linux-thread-multi/CORE/perl.h:115:18:
error: ‘my_perl’ undeclared (first use in this function)
# define aTHX my_perl
^
/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/lib/5.8.5/x86_64-linux-thread-multi/CORE/perl.h:2619:40:
note: in definition of macro ‘PERL_DEB’
# define PERL_DEB(a) a
^
/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/lib/5.8.5/x86_64-linux-thread-multi/CORE/perl.h:120:18:
note: in expansion of macro ‘aTHX’
# define aTHX_ aTHX,
^
/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/lib/5.8.5/x86_64-linux-thread-multi/CORE/perl.h:2773:17:
note: in expansion of macro ‘aTHX_’
Perl_croak(aTHX_ "Assertion " STRINGIFY(what) " failed: file
\"%s\", line %d", \
^
RealPPPort.c:423:41: note: in expansion of macro ‘assert’
#define PERL_ARGS_ASSERT_CROAK_XS_USAGE assert(cv); assert(params)
^
RealPPPort.c:434:5: note: in expansion of macro
‘PERL_ARGS_ASSERT_CROAK_XS_USAGE’
PERL_ARGS_ASSERT_CROAK_XS_USAGE;
^
/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/lib/5.8.5/x86_64-linux-thread-multi/CORE/perl.h:115:18:
note: each undeclared identifier is reported only once for each function it
appears in
# define aTHX my_perl
^
/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/lib/5.8.5/x86_64-linux-thread-multi/CORE/perl.h:2619:40:
note: in definition of macro ‘PERL_DEB’
# define PERL_DEB(a) a
^
/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/lib/5.8.5/x86_64-linux-thread-multi/CORE/perl.h:120:18:
note: in expansion of macro ‘aTHX’
# define aTHX_ aTHX,
^
/home/rabbit/perl5/perlbrew/perls/5.8.5_dbg/lib/5.8.5/x86_64-linux-thread-multi/CORE/perl.h:2773:17:
note: in expansion of macro ‘aTHX_’
Perl_croak(aTHX_ "Assertion " STRINGIFY(what) " failed: file
\"%s\", line %d", \
^
RealPPPort.c:423:41: note: in expansion of macro ‘assert’
#define PERL_ARGS_ASSERT_CROAK_XS_USAGE assert(cv); assert(params)
^
RealPPPort.c:434:5: note: in expansion of macro
‘PERL_ARGS_ASSERT_CROAK_XS_USAGE’
PERL_ARGS_ASSERT_CROAK_XS_USAGE;
^
Makefile:349: recipe for target 'RealPPPort.o' failed
make: *** [RealPPPort.o] Error 1
It turned out to be that the latest ExtUtils::ParseXS was installed, and
xsubpp is filling in a croak_xs that looks like:
STATIC void
S_croak_xs_usage(const CV *const cv, const char *const params)
{
const GV *const gv = CvGV(cv);
PERL_ARGS_ASSERT_CROAK_XS_USAGE;
if (gv) {
If we add dTHX; to the beginning of the function, compilation succeeds.
Does ExtUtils::ParseXS need something like:
#ifdef PERL_NO_GET_CONTEXT
dTHX;
#endif
which it has on other functions?
Perl Info
p5pRT commentedon Jan 5, 2017
From @jkeenan
On Fri, 18 Mar 2016 15:04:15 GMT, alh wrote:
I'm confused as to where in the source code you think such a change should be applied. I don't see that 'ifdef' anywhere in ExtUtils-ParseXS.
#####
$ ack -A2 'ifdef PERL_NO_GET_CONTEXT' .
cpan/Devel-PPPort/parts/inc/variables
214:#ifdef PERL_NO_GET_CONTEXT
215- dTHX;
216-#endif
cpan/Devel-PPPort/parts/inc/newCONSTSUB
75:#ifdef PERL_NO_GET_CONTEXT
76- dTHX;
77-#endif
#####
Thank you very much.
--
James E Keenan (jkeenan@cpan.org)
p5pRT commentedon Jan 5, 2017
The RT System itself - Status changed from 'new' to 'open'
p5pRT commentedon Jan 6, 2017
From @wolfsage
On Thu, Jan 5, 2017 at 4:03 PM, James E Keenan via RT
<perlbug-followup@perl.org> wrote:
I don't recall my original reasoning.
However S_croak_xs_usage in core does this:
vutil.h:S_croak_xs_usage(pTHX_ const CV *const cv, const char *const params);
vutil.h:S_croak_xs_usage(pTHX_ const CV *const cv, const char *const params)
vutil.h:#define croak_xs_usage(a,b) S_croak_xs_usage(aTHX_ a,b)
vutil.h:#define croak_xs_usage S_croak_xs_usage
Whereas ExtUtils::ParseXS only does this:
lib/ExtUtils/ParseXS/Utilities.pm:S_croak_xs_usage(const CV *const
cv, const char *const params);
lib/ExtUtils/ParseXS/Utilities.pm:S_croak_xs_usage(const CV *const
cv, const char *const params)
lib/ExtUtils/ParseXS/Utilities.pm:#define croak_xs_usage
S_croak_xs_usage
Seems to me like it's missing the pTHX depending on PERL_IMPLICIT_CONTEXT...
-- Matthew Horsfall (alh)
jkeenan commentedon Jan 2, 2022
@wolfsage, can you review this ticket for closability?
In your most recent comment, you referred to
S_croak_xs_usage, noting that it was found in filevutil.h. However, this appears to no longer be the case.Nor does this function still appear in the upstream
version.pm:Since (i) @xsawyerx is planning a new CPAN release of EU::PXS, and (ii) there are other EU::PXS issues pending, we should see if we can clean up older tickets for this distro.
Thank you very much.
Jim Keenan
xsawyerx commentedon Jan 3, 2022
Maybe it's better to do the release without it so as to not stress anyone to wrap something up for the release. Once one is done, it's easier to do the next one.
wolfsage commentedon Jan 3, 2022
I think the steps (for anyone) to confirm if this is still an issue are:
If it still fails similarly, some work could be done (if we want to support 5.8.5 still, assuming this issue also doesn't affect other perl versions)
jkeenan commentedon Jan 3, 2022
That's cool. Your volunteering to do a CPAN release just got me to look at old tickets, and this appeared to be the most closable.
jkeenan commentedon Jan 4, 2022
I tried to build perl-5.8.5 from source and failed twice. The first time was from the tag for that release in the GH repository. The second was by obtaining buildperl.pl and calling:
In both cases,
makefailed with output like this:Any suggestions?
Thank you very much.
Jim Keenan
wolfsage commentedon Jan 4, 2022
I think https://metacpan.org/pod/Devel::PatchPerl should get it to build, buildperl in Devel::PPPort always gave me trouble