]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/commitdiff
* Rename ikiwiki.pl so MakeMaker doesn't see it, and install it.
authorjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>
Mon, 20 Nov 2006 22:12:43 +0000 (22:12 +0000)
committerjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>
Mon, 20 Nov 2006 22:12:43 +0000 (22:12 +0000)
* Add some code to the build system that tries to determine if the
  lib installation directory is in @INC. If it's not, munge ikiwiki
  to hardcode the path to the lib directory. This should allow installing
  ikiwiki in nonstandard locations, including home directories, by just
  setting PREFIX at build time.
* Fix nested examples directory in deb.

Makefile.PL
debian/changelog
debian/rules
ikiwiki.in [new file with mode: 0755]
ikiwiki.pl [deleted file]
pm_filter
t/syntax.t

index 831c13255e7733e64339566797596c17e7847716..6e75097c899c50919a9a3d9db97bf353cd052023 100755 (executable)
@@ -13,8 +13,18 @@ pure_install:: extra_install
 
 VER=$(shell perl -e '$$_=<>;print m/\((.*?)\)/'<debian/changelog)
 
+PROBABLE_INST_LIB=$(shell \\
+       if [ "$(INSTALLDIRS)" = "perl" ]; then \\
+               echo $(INSTALLPRIVLIB); \\
+       elif [ "$(INSTALLDIRS)" = "site" ]; then \\
+               echo $(INSTALLSITELIB); \\
+       elif [ "$(INSTALLDIRS)" = "vendor" ]; then \\
+               echo $(INSTALLVENDORLIB); \\
+       fi \\
+)
+
 extra_build:
-       ./ikiwiki.pl doc html --templatedir=templates --underlaydir=basewiki \
+       ./ikiwiki.in doc html --templatedir=templates --underlaydir=basewiki \
                --wikiname="ikiwiki" --verbose --no-rcs \
                --exclude=/discussion --no-discussion \
                --plugin=brokenlinks --plugin=pagecount \
@@ -24,7 +34,7 @@ extra_build:
                --plugin=template --plugin=toc --plugin=shortcut
        ./mdwn2man ikiwiki 1 doc/usage.mdwn > ikiwiki.man
        ./mdwn2man ikiwiki-mass-rebuild 8 doc/ikiwiki-mass-rebuild.mdwn > ikiwiki-mass-rebuild.man
-       ./pm_filter $(PREFIX) $(VER) < ikiwiki.pl > ikiwiki.out
+       ./pm_filter $(PREFIX) $(VER) $(PROBABLE_INST_LIB) < ikiwiki.in > ikiwiki.out
                
 extra_clean:
        rm -rf html doc/.ikiwiki
@@ -57,6 +67,6 @@ extra_install:
 WriteMakefile(
        NAME            => 'IkiWiki',
        PREFIX          => "/usr/local",
-       PM_FILTER       => './pm_filter $(PREFIX) $(VER)',
+       PM_FILTER       => './pm_filter $(PREFIX) $(VER) $(PROBABLE_INST_LIB)',
        MAN1PODS        => {},
 );
index b6f397f27030a3952f7410ae65c70a45245532e4..ed3b8fe6e7403cdba6af04f29b97ce3da8658e23 100644 (file)
@@ -20,8 +20,15 @@ ikiwiki (1.34) UNRELEASED; urgency=low
   * Split out a passwordauth module, that holds all the traditional password
     based authentication etc code. It's enabled by default, but can be disabled
     if you want only openid or some other auth method.
-
- -- Joey Hess <joeyh@debian.org>  Mon, 20 Nov 2006 09:17:07 -0500
+  * Rename ikiwiki.pl so MakeMaker doesn't see it, and install it.
+  * Add some code to the build system that tries to determine if the
+    lib installation directory is in @INC. If it's not, munge ikiwiki
+    to hardcode the path to the lib directory. This should allow installing
+    ikiwiki in nonstandard locations, including home directories, by just
+    setting PREFIX at build time.
+  * Fix nested examples directory in deb.
+
+ -- Joey Hess <joeyh@debian.org>  Mon, 20 Nov 2006 16:49:05 -0500
 
 ikiwiki (1.33) unstable; urgency=low
 
index 4e14b5ca34cb11f4580d116d1f65aa9b85f89e0e..9dedd3c452a9f5fc5997e3c7d05588e49a5b0c8c 100755 (executable)
@@ -3,7 +3,7 @@
 build: build-stamp
 build-stamp:
        dh_testdir
-       perl Makefile.PL PREFIX=/usr
+       perl Makefile.PL PREFIX=/usr INSTALLDIRS=vendor
        $(MAKE)
        $(MAKE) test
        touch build-stamp
@@ -22,11 +22,10 @@ binary-indep: build
        dh_testdir
        dh_testroot
        dh_clean -k
-       $(MAKE) pure_install INSTALLDIRS=vendor \
-               DESTDIR=$(shell pwd)/debian/ikiwiki
+       $(MAKE) pure_install DESTDIR=$(shell pwd)/debian/ikiwiki
        dh_install wikilist etc/ikiwiki
        dh_installdocs html
-       dh_installexamples doc/examples
+       dh_installexamples doc/examples/*
        dh_link usr/share/common-licenses/GPL usr/share/doc/ikiwiki/html/GPL
        dh_installchangelogs
        dh_compress -X html
diff --git a/ikiwiki.in b/ikiwiki.in
new file mode 100755 (executable)
index 0000000..7d13ab4
--- /dev/null
@@ -0,0 +1,133 @@
+#!/usr/bin/perl -T
+$ENV{PATH}="/usr/local/bin:/usr/bin:/bin";
+delete @ENV{qw{IFS CDPATH ENV BASH_ENV}};
+
+package IkiWiki;
+
+use warnings;
+use strict;
+use lib '.'; # For use in nonstandard directory, munged by Makefile.
+use IkiWiki;
+
+sub usage () { #{{{
+       die "usage: ikiwiki [options] source dest\n";
+} #}}}
+
+sub getconfig () { #{{{
+       if (! exists $ENV{WRAPPED_OPTIONS}) {
+               %config=defaultconfig();
+               eval q{use Getopt::Long};
+               Getopt::Long::Configure('pass_through');
+               GetOptions(
+                       "setup|s=s" => \$config{setup},
+                       "wikiname=s" => \$config{wikiname},
+                       "verbose|v!" => \$config{verbose},
+                       "syslog!" => \$config{syslog},
+                       "rebuild!" => \$config{rebuild},
+                       "refresh!" => \$config{refresh},
+                       "render=s" => \$config{render},
+                       "wrappers!" => \$config{wrappers},
+                       "getctime" => \$config{getctime},
+                       "wrappermode=i" => \$config{wrappermode},
+                       "rcs=s" => \$config{rcs},
+                       "no-rcs" => sub { $config{rcs}="" },
+                       "anonok!" => \$config{anonok},
+                       "rss!" => \$config{rss},
+                       "atom!" => \$config{atom},
+                       "cgi!" => \$config{cgi},
+                       "discussion!" => \$config{discussion},
+                       "w3mmode!" => \$config{w3mmode},
+                       "notify!" => \$config{notify},
+                       "url=s" => \$config{url},
+                       "cgiurl=s" => \$config{cgiurl},
+                       "historyurl=s" => \$config{historyurl},
+                       "diffurl=s" => \$config{diffurl},
+                       "svnrepo" => \$config{svnrepo},
+                       "svnpath" => \$config{svnpath},
+                       "adminemail=s" => \$config{adminemail},
+                       "timeformat=s" => \$config{timeformat},
+                       "sslcookie!" => \$config{sslcookie},
+                       "httpauth!" => \$config{httpauth},
+                       "exclude=s@" => sub {
+                               $config{wiki_file_prune_regexp}=qr/$config{wiki_file_prune_regexp}|$_[1]/;
+                       },
+                       "adminuser=s@" => sub {
+                               push @{$config{adminuser}}, $_[1]
+                       },
+                       "templatedir=s" => sub {
+                               $config{templatedir}=possibly_foolish_untaint($_[1])
+                       },
+                       "underlaydir=s" => sub {
+                               $config{underlaydir}=possibly_foolish_untaint($_[1])
+                       },
+                       "wrapper:s" => sub {
+                               $config{wrapper}=$_[1] ? $_[1] : "ikiwiki-wrap"
+                       },
+                       "plugin=s@" => sub {
+                               push @{$config{plugin}}, $_[1];
+                       },
+                       "disable-plugin=s@" => sub {
+                               $config{plugin}=[grep { $_ ne $_[1] } @{$config{plugin}}];
+                       },
+                       "pingurl=s" => sub {
+                               push @{$config{pingurl}}, $_[1];
+                       },
+                       "version" => sub {
+                               print "ikiwiki version $IkiWiki::version\n";
+                               exit;
+                       },
+               ) || usage();
+
+               if (! $config{setup} && ! $config{render}) {
+                       loadplugins();
+                       usage() unless @ARGV == 2;
+                       $config{srcdir} = possibly_foolish_untaint(shift @ARGV);
+                       $config{destdir} = possibly_foolish_untaint(shift @ARGV);
+                       checkconfig();
+               }
+       }
+       else {
+               # wrapper passes a full config structure in the environment
+               # variable
+               eval possibly_foolish_untaint($ENV{WRAPPED_OPTIONS});
+               if ($@) {
+                       error("WRAPPED_OPTIONS: $@");
+               }
+               loadplugins();
+               checkconfig();
+       }
+} #}}}
+
+sub main () { #{{{
+       getconfig();
+       
+       if ($config{cgi}) {
+               loadindex();
+               require IkiWiki::CGI;
+               cgi();
+       }
+       elsif ($config{setup}) {
+               require IkiWiki::Setup;
+               setup();
+       }
+       elsif ($config{wrapper}) {
+               lockwiki();
+               require IkiWiki::Wrapper;
+               gen_wrapper();
+       }
+       elsif ($config{render}) {
+               require IkiWiki::Render;
+               commandline_render();
+       }
+       else {
+               lockwiki();
+               loadindex();
+               require IkiWiki::Render;
+               rcs_update();
+               refresh();
+               rcs_notify() if $config{notify};
+               saveindex();
+       }
+} #}}}
+
+main;
diff --git a/ikiwiki.pl b/ikiwiki.pl
deleted file mode 100755 (executable)
index ff1da35..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-#!/usr/bin/perl -T
-$ENV{PATH}="/usr/local/bin:/usr/bin:/bin";
-delete @ENV{qw{IFS CDPATH ENV BASH_ENV}};
-
-package IkiWiki;
-
-use warnings;
-use strict;
-use lib '.'; # For use without installation, removed by Makefile.
-use IkiWiki;
-
-sub usage () { #{{{
-       die "usage: ikiwiki [options] source dest\n";
-} #}}}
-
-sub getconfig () { #{{{
-       if (! exists $ENV{WRAPPED_OPTIONS}) {
-               %config=defaultconfig();
-               eval q{use Getopt::Long};
-               Getopt::Long::Configure('pass_through');
-               GetOptions(
-                       "setup|s=s" => \$config{setup},
-                       "wikiname=s" => \$config{wikiname},
-                       "verbose|v!" => \$config{verbose},
-                       "syslog!" => \$config{syslog},
-                       "rebuild!" => \$config{rebuild},
-                       "refresh!" => \$config{refresh},
-                       "render=s" => \$config{render},
-                       "wrappers!" => \$config{wrappers},
-                       "getctime" => \$config{getctime},
-                       "wrappermode=i" => \$config{wrappermode},
-                       "rcs=s" => \$config{rcs},
-                       "no-rcs" => sub { $config{rcs}="" },
-                       "anonok!" => \$config{anonok},
-                       "rss!" => \$config{rss},
-                       "atom!" => \$config{atom},
-                       "cgi!" => \$config{cgi},
-                       "discussion!" => \$config{discussion},
-                       "w3mmode!" => \$config{w3mmode},
-                       "notify!" => \$config{notify},
-                       "url=s" => \$config{url},
-                       "cgiurl=s" => \$config{cgiurl},
-                       "historyurl=s" => \$config{historyurl},
-                       "diffurl=s" => \$config{diffurl},
-                       "svnrepo" => \$config{svnrepo},
-                       "svnpath" => \$config{svnpath},
-                       "adminemail=s" => \$config{adminemail},
-                       "timeformat=s" => \$config{timeformat},
-                       "sslcookie!" => \$config{sslcookie},
-                       "httpauth!" => \$config{httpauth},
-                       "exclude=s@" => sub {
-                               $config{wiki_file_prune_regexp}=qr/$config{wiki_file_prune_regexp}|$_[1]/;
-                       },
-                       "adminuser=s@" => sub {
-                               push @{$config{adminuser}}, $_[1]
-                       },
-                       "templatedir=s" => sub {
-                               $config{templatedir}=possibly_foolish_untaint($_[1])
-                       },
-                       "underlaydir=s" => sub {
-                               $config{underlaydir}=possibly_foolish_untaint($_[1])
-                       },
-                       "wrapper:s" => sub {
-                               $config{wrapper}=$_[1] ? $_[1] : "ikiwiki-wrap"
-                       },
-                       "plugin=s@" => sub {
-                               push @{$config{plugin}}, $_[1];
-                       },
-                       "disable-plugin=s@" => sub {
-                               $config{plugin}=[grep { $_ ne $_[1] } @{$config{plugin}}];
-                       },
-                       "pingurl=s" => sub {
-                               push @{$config{pingurl}}, $_[1];
-                       },
-                       "version" => sub {
-                               print "ikiwiki version $IkiWiki::version\n";
-                               exit;
-                       },
-               ) || usage();
-
-               if (! $config{setup} && ! $config{render}) {
-                       loadplugins();
-                       usage() unless @ARGV == 2;
-                       $config{srcdir} = possibly_foolish_untaint(shift @ARGV);
-                       $config{destdir} = possibly_foolish_untaint(shift @ARGV);
-                       checkconfig();
-               }
-       }
-       else {
-               # wrapper passes a full config structure in the environment
-               # variable
-               eval possibly_foolish_untaint($ENV{WRAPPED_OPTIONS});
-               if ($@) {
-                       error("WRAPPED_OPTIONS: $@");
-               }
-               loadplugins();
-               checkconfig();
-       }
-} #}}}
-
-sub main () { #{{{
-       getconfig();
-       
-       if ($config{cgi}) {
-               loadindex();
-               require IkiWiki::CGI;
-               cgi();
-       }
-       elsif ($config{setup}) {
-               require IkiWiki::Setup;
-               setup();
-       }
-       elsif ($config{wrapper}) {
-               lockwiki();
-               require IkiWiki::Wrapper;
-               gen_wrapper();
-       }
-       elsif ($config{render}) {
-               require IkiWiki::Render;
-               commandline_render();
-       }
-       else {
-               lockwiki();
-               loadindex();
-               require IkiWiki::Render;
-               rcs_update();
-               refresh();
-               rcs_notify() if $config{notify};
-               saveindex();
-       }
-} #}}}
-
-main;
index 89449bd914122b88f85145a7fd7223ac5635f021..f61e7810b686cc8a1995134b9f8ed75ded158044 100755 (executable)
--- a/pm_filter
+++ b/pm_filter
@@ -3,6 +3,7 @@
 BEGIN {
        $prefix=shift;
        $ver=shift;
+       $libdir=shift;
 }
 
 if (/INSTALLDIR_AUTOREPLACE/) {
@@ -12,5 +13,10 @@ elsif (/VERSION_AUTOREPLACE/) {
        $_=qq{our \$version="$ver";};
 }
 elsif (/^use lib/) {
-       $_="";
+       if (grep { $_ eq $libdir } @INC) {
+               $_="";
+       }
+       else {
+               $_="use lib '$libdir';\n";
+       }
 }
index cbbdee62f6f956d8f06f7ea948da1d07d72ebfed..20396aaae0ebb8bde572ddd35ce0aebcf07c9000 100755 (executable)
@@ -3,7 +3,7 @@ use warnings;
 use strict;
 use Test::More;
 
-my @progs="ikiwiki.pl";
+my @progs="ikiwiki.in";
 my @libs="IkiWiki.pm";
 push @libs, map { chomp; $_ } `find IkiWiki -type f -name \\*.pm`;