reorder
[ikiwiki] / 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':
2
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
11
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]]
18
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.
22
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]]
26
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.
29
30 >>>>> Well, here are some things to try.
31
32         perl -Iblib/lib -V
33
34 >>>>> This should have blib/lib first in the listed @INC
35
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
40
41 >>>>> This is how perl finds IkiWiki.pm here. Note that I've run "make" first.
42
43 OK, this is what I'm getting:
44
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
57
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.
60
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
65
66 > I need to see it in the case where it's failing. --[[Joey]]
67
68 I finally had some time to look into this again.
69
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).
73
74 After running `./Makefile.PL` I get:
75
76     $ perl -Iblib/lib -V
77     [bunch of lines snipped]
78       @INC:
79     blib/lib
80     [bunch of paths snipped]
81
82 Running the strace:
83
84     $ strace perl -Iblib/lib -e 'use IkiWiki' 2>&1 |grep IkiWiki.pm
85
86 I get a bunch of ENOENTs and then at the end:
87
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
91
92 After running `make` (and having it fail as described above):
93
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
98
99 I don't know what is going on, but I'll run any more tests you need me to.
100
101 [[done]]