aboutsummaryrefslogtreecommitdiff
path: root/doc/bugs/2.45_Compilation_error.mdwn
blob: 85e6fdeb4f23a5098713feb6b0c4871885dbc253 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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]]

[[done]]