Great! I'm impressed. That was really quite obscure. For the record, here's how I installed Time-Object following your advice (changing the name of the two subroutines to avoid name conflicts with Perl 5.8.x)
perl -MCPAN -e 'get Time::Object' cd /tmp/.cpan/build/Time-Object-1.00 perl -pi -e "s/init_tm/time_object_init_tm/" Object.xs perl -pi -e "s/mini_mktime/time_object_mini_mktime/" Object.xs perl Makefile.PL make make install Thanks, WILL ----- Original Message ----- From: "Drieux" <[EMAIL PROTECTED]> Newsgroups: perl.beginners To: "Will Glass-Husain" <[EMAIL PROTECTED]> Cc: "Perl Beginners Mailing List" <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]> Sent: Tuesday, December 30, 2003 3:09 PM Subject: Re: make problem with xs file (Time::Object) > > On Dec 29, 2003, at 11:00 AM, Will Glass-Husain wrote: > [..] > > P.S. In case anyone else has hit this error, this was pulled directly > > from > > cpan "install Time::Object". > > > > [EMAIL PROTECTED] Time-Object-1.00]# make > > gcc -c -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBUGGING > > -fno-str > > ict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE > > -D_FILE_OFFSET_BITS=64 > > -I/usr/include/gdbm -DPERL_POLLUTE -O2 -march=i386 -mcpu=i686 -g > > -DVERSI > > ON=\"1.00\" -DXS_VERSION=\"1.00\" -fPIC > > "-I/usr/lib/perl5/5.8.0/i386-linux-thread-multi/CORE" Object.c > > Object.xs:34: parse error before '(' token > [..] > > folks are probably not going to believe what I think > is the Problem here is a bit convoluted to try to explain. > > What seems to have happened in 5.8.X is that now the > embed.h is there and it is being called out by perl.h > and it would be really nice if there were some form of > > #ifndef PERL_EMB_H > #define PERL_EMB_H > .... > #endif > > then one could modify the Makefile.PL for Time::Object > > 'XSPROTOARG' => ' -prototypes', > 'DEFINE' => '-D PERL_EMB_H', > > and it would prevent the compiler from picking up where > it is re-defining bouth init_tm() and mini_mktime() > > meatbop: 65:] grep init_tm *.h > embed.h:#define init_tm Perl_init_tm > embed.h:#define init_tm(a) Perl_init_tm(aTHX_ a) > proto.h:PERL_CALLCONV void Perl_init_tm(pTHX_ struct tm *ptm); > meatbop: 66:] grep mini_mktime *.h > embed.h:#define mini_mktime Perl_mini_mktime > embed.h:#define mini_mktime(a) Perl_mini_mktime(aTHX_ a) > proto.h:PERL_CALLCONV void Perl_mini_mktime(pTHX_ struct tm *pm); > meatbop: 67:] pwd > /usr/lib/perl5/5.8.1/i586-linux-thread-multi/CORE > meatbop: 68:] > > so the trick is to edit the Object.xs file so that > one commits the two tolks to being really the ones > that are local to the code that it will be creating > > 1,$s/init_tm/time_object_init_tm/g > 1,$s/mini_mktime/time_object_mini_mktime/g > > and now your code will not have function names that will > get into an argument. I have cc'd matt into this, in the > hope that he may have a better fix. > > ciao > drieux > > -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>