summaryrefslogtreecommitdiff
path: root/doc/bugs/2.45_Compilation_error.mdwn
blob: f729f222d4a78c9aed37c4cdb7b21dd4ab60b5f3 (plain)

I have perl 5.10.0. Ikiwiki 2.44 compiles fine. Compiling 2.45 fails after 'make':

perl -Iblib/lib   ikiwiki.out -libdir . -setup docwiki.setup -refresh
refreshing wiki..
docwiki.setup: Failed to load plugin IkiWiki::Plugin::goodstuff: Failed to load plugin IkiWiki::Plugin::shortcut: Too many arguments for IkiWiki::srcfile at IkiWiki/Plugin/shortcut.pm line 16, near "1)"
Compilation failed in require at (eval 31) line 2.
BEGIN failed--compilation aborted at (eval 31) line 2.
BEGIN failed--compilation aborted at (eval 23) line 2.
BEGIN failed--compilation aborted at (eval 10) line 21.
make: *** [extra_build] Error 255

I can't reproduce this. It looks like your IkiWiki.pm is out of sync with your IkiWiki/Plugin/shortcut.pm. The ones distributed in 2.45 are in sync. Or your perl is failing to use the right version of Ikiwiki.pm, perhaps using a previously installed version. But the -Iblib/lib instructs perl to look in that directory first, and the Makefile puts Ikiwiki.pm there. --[[Joey]]

I removed all traces of the previous installation, and now 2.45 compiles. I don't know why it was picking up the old version of Ikiwiki.pm, but now it works. Please close this bug, and thanks for the help.

Where were the files from the old installation? I still don't understand why they would be seen, since -Iblib/lib is passed to perl. --[[Joey]]

They were under /usr/local/{bin,lib,share}. I can try to provide more info, or try to reproduce it, if you need me to.

Well, here are some things to try.

perl -Iblib/lib -V

This should have blib/lib first in the listed @INC

joey@kodama:~/src/ikiwiki>strace perl -Iblib/lib -e 'use IkiWiki' 2>&1 |grep IkiWiki.pm
stat64("blib/lib/IkiWiki.pmc", 0xbfa1594c) = -1 ENOENT (No such file or directory)
stat64("blib/lib/IkiWiki.pm", {st_mode=S_IFREG|0444, st_size=31982, ...}) = 0
open("blib/lib/IkiWiki.pm", O_RDONLY|O_LARGEFILE) = 5

This is how perl finds IkiWiki.pm here. Note that I've run "make" first.

OK, this is what I'm getting:

$ perl -Iblib/lib -V
@INC:
blib/lib
/usr/lib/perl5/site_perl/5.10.0
/usr/share/perl5/site_perl/5.10.0
/usr/lib/perl5/vendor_perl
/usr/share/perl5/vendor_perl
/usr/share/perl5/vendor_perl
/usr/lib/perl5/core_perl
/usr/share/perl5/core_perl
/usr/lib/perl5/current
/usr/lib/perl5/site_perl/current

I ran the following in my current 2.45 source dir, where the make already succeded. If you need it, I can post the output in the case where make fails.

$ strace perl -Iblib/lib -e 'use IkiWiki' 2>&1 |grep IkiWiki.pm
stat64("blib/lib/IkiWiki.pmc", 0xbfa6167c) = -1 ENOENT (No such file or directory)
stat64("blib/lib/IkiWiki.pm", {st_mode=S_IFREG|0444, st_size=31901, ...}) = 0
open("blib/lib/IkiWiki.pm", O_RDONLY|O_LARGEFILE) = 3

I need to see it in the case where it's failing. --[[Joey]]

I finally had some time to look into this again.

I wiped ikiwiki off my system, and then installed version 2.41. I tried installing 2.46 and get the same error as above, so I'll be using 2.46 below. (BTW, the debian page still lists 2.45 as current; I had to fiddle with the download link to get 2.46).

After running ./Makefile.PL I get:

$ perl -Iblib/lib -V
[bunch of lines snipped]
  @INC:
blib/lib
[bunch of paths snipped]

Running the strace:

$ strace perl -Iblib/lib -e 'use IkiWiki' 2>&1 |grep IkiWiki.pm

I get a bunch of ENOENTs and then at the end:

stat64("./IkiWiki.pmc", 0xbfa2fe5c)     = -1 ENOENT (No such file or directory)
stat64("./IkiWiki.pm", {st_mode=S_IFREG|0644, st_size=31987, ...}) = 0
open("./IkiWiki.pm", O_RDONLY|O_LARGEFILE) = 3

After running make (and having it fail as described above):

$ strace perl -Iblib/lib -e 'use IkiWiki' 2>&1 |grep IkiWiki.pm
stat64("blib/lib/IkiWiki.pmc", 0xbfd7999c) = -1 ENOENT (No such file or directory)
stat64("blib/lib/IkiWiki.pm", {st_mode=S_IFREG|0444, st_size=31901, ...}) = 0
open("blib/lib/IkiWiki.pm", O_RDONLY|O_LARGEFILE) = 3

I don't know what is going on, but I'll run any more tests you need me to.

No help.
The only further thing I can think to try is strace -f the entire failing make run (or the ikiwiki command that's failing in it, if you can reproduce the failure at the command line). --[[Joey]]

I have 2.46 installed and I can reproduce the bug reported against 2.49. The command that fails is:

$ /usr/bin/perl -Iblib/lib   ikiwiki.out -libdir . -setup docwiki.setup -refresh
docwiki.setup: Failed to load plugin IkiWiki::Plugin::inline: Too many arguments for IkiWiki::htmlize at IkiWiki/Plugin/inline.pm line 359, near "))"
Compilation failed in require at (eval 14) line 2.
BEGIN failed--compilation aborted at (eval 14) line 2.
BEGIN failed--compilation aborted at (eval 10) line 21.

strace -f produces a 112K file. I don't know enough to be comfortable analyzing it. However, lines like:

stat64("/usr/local/share/perl5/site_perl/5.10.0/IkiWiki.pm", {st_mode=S_IFREG|0444, st_size=31982, ...}) = 0

make me think the make process is not completely independent of a previous installation. Joey, should I email you the strace log file?

Email it (joey@ikiwiki.info), or post it to a website somewhere. --[[Joey]]