Fri Nov 16 05:35:12 2012: Request 81172 was acted upon. Transaction: Correspondence added by peter.smoczyn...@i-new.com Queue: Inline Subject: [rt.cpan.org #81172] using Inline with => 'Event' fails to compile Broken in: (no value) Severity: (no value) Owner: Nobody Requestors: peter.smoczyn...@i-new.com Status: open Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=81172 >
Sorry for the confusion! 1stly 0.51 does not find EventAPI.h b'of an incorrect generated gcc comandline: Sun-A3 root 259/0 (~/peter/inline_fails_to_compile)# /opt/perl5.12.2.debug/bin/perl -c compile_test_1.t /opt/perl5.12.2.debug/bin/perl /opt/perl5.12.2.debug/lib/5.12.2/ExtUtils/xsubpp -typemap "/opt/perl5.12.2.debug/lib/5.12.2/ExtUtils/typemap" -typemap "/opt/perl5.12.2.debug/lib/site_perl/5.12.2/i86pc-solaris/Event/typemap" compile_test_1_t_a7b1.xs > compile_test_1_t_a7b1.xsc && mv compile_test_1_t_a7b1.xsc compile_test_1_t_a7b1.c gcc -c -I"/root/peter/inline_fails_to_compile" "-I /opt/perl5.12.2.debug/lib/site_perl/5.12.2/i86pc-solaris/Event" -I/usr/local/include -I/usr/local/BerkeleyDB.4.5/include -DDEBUGGING -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DPERL_USE_SAFE_PUTENV -g -DVERSION=\"0.00\" -DXS_VERSION=\"0.00\" -fPIC "-I/opt/perl5.12.2.debug/lib/5.12.2/i86pc-solaris/CORE" compile_test_1_t_a7b1.c compile_test_1_t_a7b1.xs:5:22: error: EventAPI.h: No such file or directory compile_test_1_t_a7b1.xs:6: error: expected ')' before '*' token compile_test_1_t_a7b1.c: In function 'XS_main_evdmp_event_c': compile_test_1_t_a7b1.c:99: error: 'pe_event' undeclared (first use in this function) compile_test_1_t_a7b1.c:99: error: (Each undeclared identifier is reported only once compile_test_1_t_a7b1.c:99: error: for each function it appears in.) compile_test_1_t_a7b1.c:99: error: 'event' undeclared (first use in this function) compile_test_1_t_a7b1.c:99: error: expected expression before ')' token make: *** [compile_test_1_t_a7b1.o] Error 1 i.e. gcc -c -I"/root/peter/inline_fails_to_compile" "-I /opt/perl5.12.2.debug/lib/site_perl/5.12.2/i86pc-solaris/Event" -I/usr/local/include -I/usr/local/BerkeleyDB.4.5/include -DDEBUGGING -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DPERL_USE_SAFE_PUTENV -g -DVERSION=\"0.00\" -DXS_VERSION=\"0.00\" -fPIC "-I/opt/perl5.12.2.debug/lib/5.12.2/i86pc-solaris/CORE" compile_test_1_t_a7b1.c where "-I /opt/perl5.12.2.debug/lib/site_perl/5.12.2/i86pc-solaris/Event" fails to include EventAPI.h. if I change into the build directory and issue the same cmd with the -I option manually corrected to -I"/opt/perl5.12.2.debug/lib/site_perl/5.12.2/i86pc-solaris/Event" gcc now does find the EventAPI.h and since it then got the necessary definitions can resolve "pe_event" at line 6 of the generated .xs file 1 #include "EXTERN.h" 2 #include "perl.h" 3 #include "XSUB.h" 4 #include "INLINE.h" 5 #include "EventAPI.h" 6 void evdmp_event_c (pe_event * event) _Inline/build/compile_test_1_t_a7b1/compile_test_1_t_a7b1.xs :set nu i.e. Sun-A3 root 293/1 (~/peter/inline_fails_to_compile/_Inline/build/compile_test_1_t_a7b1)# gcc -c -I"/root/peter/inline_fails_to_compile" -I"/opt/perl5.12.2.debug/lib/site_perl/5.12.2/i86pc-solaris/Event" -I/usr/local/include -I/usr/local/BerkeleyDB.4.5/include -DDEBUGGING -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DPERL_USE_SAFE_PUTENV -g -DVERSION=\"0.00\" -DXS_VERSION=\"0.00\" -fPIC "-I/opt/perl5.12.2.debug/lib/5.12.2/i86pc-solaris/CORE" compile_test_1_t_a7b1.c Sun-A3 root 294/0 (~/peter/inline_fails_to_compile/_Inline/build/compile_test_1_t_a7b1)# I better should have added the code of compile_test_2.t since I did misunderstand you there..! 1 #!/opt/perl5.12.2.debug/bin/perl 2 3 use strict; 4 use warnings; 5 6 ##use Inline with => 'Event'; 7 ## 8 use Inline C => Config => 9 BUILD_NOISY => 1; 10 11 use Inline C => <<'EOC_EVDMP_EVENT_C'; 12 void evdmp_event_c (pe_event * event) 13 { 14 char *classname = HvNAME(SvSTASH(SvRV(event->mysv))); 15 16 printf("evdmp_event_c()\ne type: %s\ne hits: %d\ne prio %d\n", 17 classname, 18 event->hits, 19 event->prio 20 ); 21 22 if (strcmp(classname, (const char *) "Event::Event::Io") == 0) 23 { 24 printf("e got: %u\n", ((pe_ioevent *) event)->got); 25 } 26 27 } 28 EOC_EVDMP_EVENT_C 29 30 exit 0; 31 ~ compile_test_2.t :set nu of course if I comment-out the "##use Inline with => 'Event';" line there, no definitions for gcc and thus the error with 0.48 in my previous mail. i.e. no -I /opt/perl5.12.2.debug/lib/site_perl/5.12.2/i86pc-solaris/Event on the commandline: /opt/perl5.12.2.debug/bin/perl /opt/perl5.12.2.debug/lib/5.12.2/ExtUtils/xsubpp -typemap /opt/perl5.12.2.debug/lib/5.12.2/ExtUtils/typemap compile_test_2_t_a7b1.xs > compile_test_2_t_a7b1.xsc && mv compile_test_2_t_a7b1.xsc compile_test_2_t_a7b1.c gcc -c -I/root/peter/inline_fails_to_compile -I/usr/local/include -I/usr/local/BerkeleyDB.4.5/include -DDEBUGGING -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DPERL_USE_SAFE_PUTENV -g -DVERSION=\"0.00\" -DXS_VERSION=\"0.00\" -fPIC "-I/opt/perl5.12.2.debug/lib/5.12.2/i86pc-solaris/CORE" compile_test_2_t_a7b1.c compile_test_2_t_a7b1.xs:5: error: expected ')' before '*' token make: *** [compile_test_2_t_a7b1.o] Error 1 sorry!, for being stupid! this was not what you wanted me to do! so here is a corrected compile_test_2.t: #!/opt/perl5.12.2.debug/bin/perl use strict; use warnings; use Inline with => 'Event'; ## set build traces use Inline C => Config => BUILD_NOISY => 1; use Inline C => <<'EOC_EVDMP_EVENT_C'; void evdmp_event_c (pe_event * event) { char *classname = HvNAME(SvSTASH(SvRV(event->mysv))); printf("evdmp_event_c()\ne type: %s\ne hits: %d\ne prio %d\n", classname, event->hits, event->prio ); if (strcmp(classname, (const char *) "Event::Event::Io") == 0) { printf("e got: %u\n", ((pe_ioevent *) event)->got); } } EOC_EVDMP_EVENT_C exit 0; ~ "compile_test_2.t" 31L, 599C which yields a clean run with version 0.48: Sun-A3 root 276/0 (~/peter/inline_fails_to_compile)# /opt/perl5.12.2.debug/bin/perl compile_test_2.t 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 compile_test_2_t_a7b1 Finished "perl Makefile.PL" Stage Starting "make" Stage /opt/perl5.12.2.debug/bin/perl /opt/perl5.12.2.debug/lib/5.12.2/ExtUtils/xsubpp -typemap /opt/perl5.12.2.debug/lib/5.12.2/ExtUtils/typemap -typemap /opt/perl5.12.2.debug/lib/site_perl/5.12.2/i86pc-solaris/Event/typemap compile_test_2_t_a7b1.xs > compile_test_2_t_ a7b1.xsc && mv compile_test_2_t_a7b1.xsc compile_test_2_t_a7b1.c gcc -c -I/root/peter/inline_fails_to_compile -I /opt/perl5.12.2.debug/lib/site_perl/5.12.2/i86pc-solaris/Event -I/usr/local/include -I/usr/local/BerkeleyDB.4.5/include -DDEBUGGING -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DPERL_USE_SAFE_PUTENV -g -DVERSION=\"0.00\" -DXS_VERSION=\"0.00\" -fPIC "-I/opt/perl5.12.2.debug/lib/5.12.2/i86pc-solaris/CORE" compile_test_2_t_a7b1.c Running Mkbootstrap for compile_test_2_t_a7b1 () chmod 644 compile_test_2_t_a7b1.bs rm -f blib/arch/auto/compile_test_2_t_a7b1/compile_test_2_t_a7b1.so gcc -G -L/usr/local/lib -Wl,-R/usr/local/lib -L/usr/local/BerkeleyDB.4.5/lib -Wl,-R/usr/local/BerkeleyDB.4.5/lib -fstack-protector compile_test_2_t_a7b1.o -o blib/arch/auto/compile_test_2_t_a7b1/compile_test_2_t_a7b1.so /opt/perl5.12.2.debug/lib/site_perl/5.12.2/i86pc-solaris/auto/Event/Event.so \ \ chmod 755 blib/arch/auto/compile_test_2_t_a7b1/compile_test_2_t_a7b1.so cp compile_test_2_t_a7b1.bs blib/arch/auto/compile_test_2_t_a7b1/compile_test_2_t_a7b1.bs chmod 644 blib/arch/auto/compile_test_2_t_a7b1/compile_test_2_t_a7b1.bs Finished "make" Stage Starting "make install" Stage Files found in blib/arch: installing files in blib/lib into architecture dependent library tree Installing /root/peter/inline_fails_to_compile/_Inline/lib/auto/compile_test_2_t_a7b1/compile_test_2_t_a7b1.bs Installing /root/peter/inline_fails_to_compile/_Inline/lib/auto/compile_test_2_t_a7b1/compile_test_2_t_a7b1.so Finished "make install" Stage Starting Cleaning Up Stage Finished Cleaning Up Stage Finished Build Compile Stage Sun-A3 root 277/0 (~/peter/inline_fails_to_compile)# sorry again! cheers, peter