]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blob - doc/bugs/2.45_Compilation_error.mdwn
web commit by buo: strace run
[git.ikiwiki.info.git] / doc / bugs / 2.45_Compilation_error.mdwn
1 I have perl 5.10.0. Ikiwiki 2.44 compiles fine. Compiling 2.45 fails after 'make':
3     perl -Iblib/lib   ikiwiki.out -libdir . -setup docwiki.setup -refresh
4     refreshing wiki..
5     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)"
6     Compilation failed in require at (eval 31) line 2.
7     BEGIN failed--compilation aborted at (eval 31) line 2.
8     BEGIN failed--compilation aborted at (eval 23) line 2.
9     BEGIN failed--compilation aborted at (eval 10) line 21.
10     make: *** [extra_build] Error 255
12 > I can't reproduce this. It looks like your IkiWiki.pm is out of sync with
13 > your IkiWiki/Plugin/shortcut.pm. The ones distributed in 2.45 are in
14 > sync. Or your perl is failing to use the right version of Ikiwiki.pm, 
15 > perhaps using a previously installed version. But the -Iblib/lib
16 > instructs perl to look in that directory first, and the Makefile
17 > puts Ikiwiki.pm there. --[[Joey]]
19 >> I removed all traces of the previous installation, and now 2.45 compiles.
20 >> I don't know why it was picking up the old version of Ikiwiki.pm, but now it
21 >> works. Please close this bug, and thanks for the help.
23 >>> Where were the files from the old installation? I still don't
24 >>> understand why they would be seen, since -Iblib/lib is passed to perl.
25 >>> --[[Joey]]
27 >>>> They were under /usr/local/{bin,lib,share}. I can try to provide more info,
28 >>>> or try to reproduce it, if you need me to.
30 >>>>> Well, here are some things to try.
32         perl -Iblib/lib -V
34 >>>>> This should have blib/lib first in the listed @INC
36         joey@kodama:~/src/ikiwiki>strace perl -Iblib/lib -e 'use IkiWiki' 2>&1 |grep IkiWiki.pm
37         stat64("blib/lib/IkiWiki.pmc", 0xbfa1594c) = -1 ENOENT (No such file or directory)
38         stat64("blib/lib/IkiWiki.pm", {st_mode=S_IFREG|0444, st_size=31982, ...}) = 0
39         open("blib/lib/IkiWiki.pm", O_RDONLY|O_LARGEFILE) = 5
41 >>>>> This is how perl finds IkiWiki.pm here. Note that I've run "make" first.
43 OK, this is what I'm getting:
45     $ perl -Iblib/lib -V
46     @INC:
47     blib/lib
48     /usr/lib/perl5/site_perl/5.10.0
49     /usr/share/perl5/site_perl/5.10.0
50     /usr/lib/perl5/vendor_perl
51     /usr/share/perl5/vendor_perl
52     /usr/share/perl5/vendor_perl
53     /usr/lib/perl5/core_perl
54     /usr/share/perl5/core_perl
55     /usr/lib/perl5/current
56     /usr/lib/perl5/site_perl/current
58 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
59 in the case where `make` fails.
61     $ strace perl -Iblib/lib -e 'use IkiWiki' 2>&1 |grep IkiWiki.pm
62     stat64("blib/lib/IkiWiki.pmc", 0xbfa6167c) = -1 ENOENT (No such file or directory)
63     stat64("blib/lib/IkiWiki.pm", {st_mode=S_IFREG|0444, st_size=31901, ...}) = 0
64     open("blib/lib/IkiWiki.pm", O_RDONLY|O_LARGEFILE) = 3
66 > I need to see it in the case where it's failing. --[[Joey]]
68 I finally had some time to look into this again.
70 I wiped ikiwiki off my system, and then installed version 2.41. I tried installing
71 2.46 and get the same error as above, so I'll be using 2.46 below. (BTW, the debian
72 page still lists 2.45 as current; I had to fiddle with the download link to get 2.46).
74 After running `./Makefile.PL` I get:
76     $ perl -Iblib/lib -V
77     [bunch of lines snipped]
78       @INC:
79     blib/lib
80     [bunch of paths snipped]
82 Running the strace:
84     $ strace perl -Iblib/lib -e 'use IkiWiki' 2>&1 |grep IkiWiki.pm
86 I get a bunch of ENOENTs and then at the end:
88     stat64("./IkiWiki.pmc", 0xbfa2fe5c)     = -1 ENOENT (No such file or directory)
89     stat64("./IkiWiki.pm", {st_mode=S_IFREG|0644, st_size=31987, ...}) = 0
90     open("./IkiWiki.pm", O_RDONLY|O_LARGEFILE) = 3
92 After running `make` (and having it fail as described above):
94     $ strace perl -Iblib/lib -e 'use IkiWiki' 2>&1 |grep IkiWiki.pm
95     stat64("blib/lib/IkiWiki.pmc", 0xbfd7999c) = -1 ENOENT (No such file or directory)
96     stat64("blib/lib/IkiWiki.pm", {st_mode=S_IFREG|0444, st_size=31901, ...}) = 0
97     open("blib/lib/IkiWiki.pm", O_RDONLY|O_LARGEFILE) = 3
99 I don't know what is going on, but I'll run any more tests you need me to.
101 > No help.  
102 > The only further thing I can think to try is `strace -f` the entire failing
103 > `make` run (or the ikiwiki command that's failing in it, if you can
104 > reproduce the failure at the command line). --[[Joey]]
106 I have 2.46 installed and I can reproduce the bug reported against 2.49. The command that fails is:
108     $ /usr/bin/perl -Iblib/lib   ikiwiki.out -libdir . -setup docwiki.setup -refresh
109     docwiki.setup: Failed to load plugin IkiWiki::Plugin::inline: Too many arguments for IkiWiki::htmlize at IkiWiki/Plugin/inline.pm line 359, near "))"
110     Compilation failed in require at (eval 14) line 2.
111     BEGIN failed--compilation aborted at (eval 14) line 2.
112     BEGIN failed--compilation aborted at (eval 10) line 21.
114 strace -f produces a 112K file. I don't know enough to be comfortable analyzing it.
115 However, lines like:
117     stat64("/usr/local/share/perl5/site_perl/5.10.0/IkiWiki.pm", {st_mode=S_IFREG|0444, st_size=31982, ...}) = 0
119 make me think the make process is not completely independent of a previous
120 installation. Joey, should I email you the strace log file?