summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--IkiWiki/Render.pm7
-rw-r--r--debian/README.Debian8
-rwxr-xr-xdebian/postinst28
-rwxr-xr-xdebian/rules1
-rw-r--r--doc/todo/done/upgradehooks.mdwn (renamed from doc/todo/upgradehooks.mdwn)0
5 files changed, 41 insertions, 3 deletions
diff --git a/IkiWiki/Render.pm b/IkiWiki/Render.pm
index 4e2caa6ce..e6d0bc510 100644
--- a/IkiWiki/Render.pm
+++ b/IkiWiki/Render.pm
@@ -315,9 +315,9 @@ sub check_overwrite ($$) { #{{{
} #}}}
sub mtime ($) { #{{{
- my $page=shift;
+ my $file=shift;
- return (stat($page))[9];
+ return (stat($file))[9];
} #}}}
sub findlinks ($$) { #{{{
@@ -418,7 +418,8 @@ sub refresh () { #{{{
push @add, $file;
$links{$page}=[];
$pagesources{$page}=$file;
- $pagectime{$page}=time unless exists $pagectime{$page};
+ $pagectime{$page}=mtime("$config{srcdir}/$file")
+ unless exists $pagectime{$page};
}
}
my @del;
diff --git a/debian/README.Debian b/debian/README.Debian
new file mode 100644
index 000000000..3bdeb2a3a
--- /dev/null
+++ b/debian/README.Debian
@@ -0,0 +1,8 @@
+It's a good idea, and in some cases a requirement, to rebuild your wiki
+when upgrading to a new version of ikiwiki. If you have a lot of different
+wikis on a system, this can be a pain to do by hand, and it's a good idea
+to automate it anyway.
+
+This Debian package of ikiwiki supports rebuilding wikis on upgrade. The
+file /etc/ikiwiki/wikilist lists the setup files of wikis to rebuild, as
+well as the user who owns the wiki.
diff --git a/debian/postinst b/debian/postinst
new file mode 100755
index 000000000..e716fb2f5
--- /dev/null
+++ b/debian/postinst
@@ -0,0 +1,28 @@
+#!/bin/sh
+set -e
+#DEBHELPER#
+
+wikilist=/etc/ikiwiki/wikilist
+
+processline () {
+ user="$1"
+ setup="$2"
+
+ if [ -z "$user" ] || [ -z "$setup" ]; then
+ echo "parse failure in /etc/ikiwiki/wikilist, line: '$user $setup'" >&2
+ exit 1
+ fi
+
+ if [ ! -f "$setup" ]; then
+ echo "warning: $setup specified in /etc/ikiwiki/wikilist does not exist, skipping" >&2
+ else
+ echo "Rebuilding $setup as user $user ..."
+ su "$user" -c "ikiwiki -setup $setup"
+ fi
+}
+
+if [ "$1" = configure ] && [ -e $wikilist ]; then
+ grep -v '^#' $wikilist | grep -v '^$' | while read line; do
+ processline $line
+ done
+fi
diff --git a/debian/rules b/debian/rules
index 6ca612c9e..fc703fc90 100755
--- a/debian/rules
+++ b/debian/rules
@@ -23,6 +23,7 @@ binary-indep: build
dh_clean -k
$(MAKE) pure_install INSTALLDIRS=vendor \
PREFIX=$(shell pwd)/debian/ikiwiki/$(shell perl -MConfig -e 'print $$Config{prefix}')
+ dh_install debian/wikilist etc/ikiwiki
dh_installdocs html
dh_link usr/share/common-licenses/GPL usr/share/doc/ikiwiki/html/GPL
dh_link usr/share/ikiwiki/basewiki \
diff --git a/doc/todo/upgradehooks.mdwn b/doc/todo/done/upgradehooks.mdwn
index 90ef725ae..90ef725ae 100644
--- a/doc/todo/upgradehooks.mdwn
+++ b/doc/todo/done/upgradehooks.mdwn