[vim/vim] Vim HEAD (e40d75f) doesn't build with --enable-perlinterp=dynamic with perl 5.22.2 or 5.24.0 (#810)

22 views
Skip to first unread message

Rob Hoelz

unread,
May 16, 2016, 4:21:39 PM5/16/16
to vim/vim

To reproduce:

$ perlbrew install -Duseshrplib 5.22.2 # I use perlbrew to install perls; you don't need to use it if you don't want to
$ perlbrew use perl-5.22.2
$ perl -v 

This is perl 5, version 22, subversion 2 (v5.22.2) built for x86_64-linux

...
$ git clone https://github.com/vim/vim
$ cd vim/
$ ./configure --enable-perlinterp=dynamic
$ make

Build output:

Starting make in the src directory.
If there are problems, cd to the src directory and run make there
cd src && make first
make[1]: Entering directory '/tmp/vim/src'
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libdrm -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include   -g -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       -DDYNAMIC_PERL_DLL=\"libperl.so\"  -fwrapv  -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -I/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE  -o objects/if_perl.o auto/if_perl.c
if_perl.xs:183:0: warning: "Perl_croak_nocontext" redefined
 #  define Perl_croak_nocontext dll_Perl_croak_nocontext

In file included from /home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/perl.h:5609:0,
                 from if_perl.xs:58:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/embed.h:1913:0: note: this is the location of the previous definition
 #  define Perl_croak_nocontext Perl_croak

In file included from if_perl.xs:610:0:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_av_top_index’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:20:5: error: ‘PERL_ARGS_ASSERT_AV_TOP_INDEX’ undeclared (first use in this function)
     PERL_ARGS_ASSERT_AV_TOP_INDEX;
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:20:5: note: each undeclared identifier is reported only once for each function it appears in
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_append_utf8_from_native_byte’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:242:5: error: ‘PERL_ARGS_ASSERT_APPEND_UTF8_FROM_NATIVE_BYTE’ undeclared (first use in this function)
     PERL_ARGS_ASSERT_APPEND_UTF8_FROM_NATIVE_BYTE;
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S__is_utf8_char_slow’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:274:5: error: ‘PERL_ARGS_ASSERT__IS_UTF8_CHAR_SLOW’ undeclared (first use in this function)
     PERL_ARGS_ASSERT__IS_UTF8_CHAR_SLOW;
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_is_safe_syscall’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:305:5: error: ‘PERL_ARGS_ASSERT_IS_SAFE_SYSCALL’ undeclared (first use in this function)
     PERL_ARGS_ASSERT_IS_SAFE_SYSCALL;
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_sv_only_taint_gmagic’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:390:5: error: ‘PERL_ARGS_ASSERT_SV_ONLY_TAINT_GMAGIC’ undeclared (first use in this function)
     PERL_ARGS_ASSERT_SV_ONLY_TAINT_GMAGIC;
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_cx_pushblock’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:414:5: error: ‘PERL_ARGS_ASSERT_CX_PUSHBLOCK’ undeclared (first use in this function)
     PERL_ARGS_ASSERT_CX_PUSHBLOCK;
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_cx_popblock’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:439:5: error: ‘PERL_ARGS_ASSERT_CX_POPBLOCK’ undeclared (first use in this function)
     PERL_ARGS_ASSERT_CX_POPBLOCK;
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_cx_topblock’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:464:5: error: ‘PERL_ARGS_ASSERT_CX_TOPBLOCK’ undeclared (first use in this function)
     PERL_ARGS_ASSERT_CX_TOPBLOCK;
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_cx_pushsub’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:481:5: error: ‘PERL_ARGS_ASSERT_CX_PUSHSUB’ undeclared (first use in this function)
     PERL_ARGS_ASSERT_CX_PUSHSUB;
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_cx_popsub_common’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:501:5: error: ‘PERL_ARGS_ASSERT_CX_POPSUB_COMMON’ undeclared (first use in this function)
     PERL_ARGS_ASSERT_CX_POPSUB_COMMON;
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_cx_popsub_args’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:520:5: error: ‘PERL_ARGS_ASSERT_CX_POPSUB_ARGS’ undeclared (first use in this function)
     PERL_ARGS_ASSERT_CX_POPSUB_ARGS;
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_cx_popsub’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:540:5: error: ‘PERL_ARGS_ASSERT_CX_POPSUB’ undeclared (first use in this function)
     PERL_ARGS_ASSERT_CX_POPSUB;
     ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:546:9: warning: implicit declaration of function ‘cx_popsub_args’ [-Wimplicit-function-declaration]
         cx_popsub_args(cx);
         ^~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:547:5: warning: implicit declaration of function ‘cx_popsub_common’ [-Wimplicit-function-declaration]
     cx_popsub_common(cx);
     ^~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_cx_pushformat’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:554:5: error: ‘PERL_ARGS_ASSERT_CX_PUSHFORMAT’ undeclared (first use in this function)
     PERL_ARGS_ASSERT_CX_PUSHFORMAT;
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_cx_popformat’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:575:5: error: ‘PERL_ARGS_ASSERT_CX_POPFORMAT’ undeclared (first use in this function)
     PERL_ARGS_ASSERT_CX_POPFORMAT;
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_cx_pusheval’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:595:5: error: ‘PERL_ARGS_ASSERT_CX_PUSHEVAL’ undeclared (first use in this function)
     PERL_ARGS_ASSERT_CX_PUSHEVAL;
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_cx_popeval’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:615:5: error: ‘PERL_ARGS_ASSERT_CX_POPEVAL’ undeclared (first use in this function)
     PERL_ARGS_ASSERT_CX_POPEVAL;
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_cx_pushloop_plain’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:642:5: error: ‘PERL_ARGS_ASSERT_CX_PUSHLOOP_PLAIN’ undeclared (first use in this function)
     PERL_ARGS_ASSERT_CX_PUSHLOOP_PLAIN;
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_cx_pushloop_for’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:654:5: error: ‘PERL_ARGS_ASSERT_CX_PUSHLOOP_FOR’ undeclared (first use in this function)
     PERL_ARGS_ASSERT_CX_PUSHLOOP_FOR;
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_cx_poploop’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:672:5: error: ‘PERL_ARGS_ASSERT_CX_POPLOOP’ undeclared (first use in this function)
     PERL_ARGS_ASSERT_CX_POPLOOP;
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_cx_pushwhen’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:705:5: error: ‘PERL_ARGS_ASSERT_CX_PUSHWHEN’ undeclared (first use in this function)
     PERL_ARGS_ASSERT_CX_PUSHWHEN;
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_cx_popwhen’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:714:5: error: ‘PERL_ARGS_ASSERT_CX_POPWHEN’ undeclared (first use in this function)
     PERL_ARGS_ASSERT_CX_POPWHEN;
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_cx_pushgiven’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:725:5: error: ‘PERL_ARGS_ASSERT_CX_PUSHGIVEN’ undeclared (first use in this function)
     PERL_ARGS_ASSERT_CX_PUSHGIVEN;
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h: In function ‘S_cx_popgiven’:
/home/rob/.perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE/inline.h:737:5: error: ‘PERL_ARGS_ASSERT_CX_POPGIVEN’ undeclared (first use in this function)
     PERL_ARGS_ASSERT_CX_POPGIVEN;
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
Makefile:2859: recipe for target 'objects/if_perl.o' failed
make[1]: *** [objects/if_perl.o] Error 1
make[1]: Leaving directory '/tmp/vim/src'
Makefile:26: recipe for target 'first' failed
make: *** [first] Error 2

When digging into this, I noticed some trickery in if_perl.xs that dealt with inline macros; it appears that PERL_NO_INLINE_FUNCTIONS is defined before perl.h is included, and then inline.h, which relies on some of the macros defined in perl.h if PERL_NO_INLINE_FUNCTIONS is not defined, is included later.


You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub

Peter Mattern

unread,
May 16, 2016, 5:03:25 PM5/16/16
to vim/vim

Basically this is already discussed in #790. Not that obvious as that issue was initially based on some wrong assumptions and the title hasn't bee adjusted yet.
In particular see #790 (comment).

Rob Hoelz

unread,
May 16, 2016, 5:31:04 PM5/16/16
to vim/vim

Ah, sorry for the duplicate! I did a cursory search for perl on the issues, but at first glance that one didn't seem related.

Rob Hoelz

unread,
May 16, 2016, 5:31:53 PM5/16/16
to vim/vim

Closed #810.

Reply all
Reply to author
Forward
0 new messages