On Tue, Sep 16, 2008 at 15:33, Mohammed Adnène Trojette
<[EMAIL PROTECTED]> wrote:
> On Tue, Sep 16, 2008, Dmitry Semyonov wrote:
>> I'll provide a patch (postinst rewritten in sh) within a day or two.

The patch is in attachment.

It also fixes dependency list (libapache-mod-php4 |
libapache2-mod-php4 instead of php4),
and Version display by doku.php?do=check URL.


> I am willing to push the fix for lenny.

Me too.


-- 
...Bye..Dmitry.
diff -Naur dokuwiki-0.0.20080505.orig/debian/control dokuwiki-0.0.20080505/debian/control
--- dokuwiki-0.0.20080505.orig/debian/control	2008-09-20 14:37:25.000000000 +0400
+++ dokuwiki-0.0.20080505/debian/control	2008-09-20 14:39:48.000000000 +0400
@@ -8,7 +8,7 @@
 
 Package: dokuwiki
 Architecture: all
-Depends: ${misc:Depends}, ucf, php5 | php4
+Depends: ${misc:Depends}, ucf, php5 | libapache-mod-php4 | libapache2-mod-php4
 Recommends: imagemagick | php4-gd | php5-gd, php4-cli | php5-cli
 Description: standards compliant simple to use wiki
  DokuWiki is a wiki mainly aimed at creating documentation of any kind.
diff -Naur dokuwiki-0.0.20080505.orig/debian/postinst dokuwiki-0.0.20080505/debian/postinst
--- dokuwiki-0.0.20080505.orig/debian/postinst	2008-09-20 14:37:25.000000000 +0400
+++ dokuwiki-0.0.20080505/debian/postinst	2008-09-20 14:39:11.000000000 +0400
@@ -1,227 +1,126 @@
-#!/usr/bin/perl -w
+#!/bin/sh -e
 
 # Postinst script for Dokuwiki.
-# Based on postinst for PHPWiki written by Matthew Palmer.
-
-use strict;
-use File::Copy;
-use Debconf::Client::ConfModule ':all';
-
-# List of supported webservers
-my @webserver = ('apache', 'apache2', 'apache-ssl', 'apache-perl');
-
-if ($ARGV[0] eq "configure") {
-    if ($ARGV[1] eq '' || $ARGV[1] eq '<>')
-    {
-	
-    }
-    
-    write_apache_conf();
-    setup_acl();
-    configure_webservers();
-    # has not to be done in postinst
-    #restart_webservers();
-    
-    `/usr/bin/ucf /usr/share/dokuwiki/.htaccess /usr/share/dokuwiki/.htaccess < /dev/tty > /dev/tty`;
-    `/usr/bin/ucf /var/lib/dokuwiki/data/.htaccess /var/lib/dokuwiki/data/.htaccess < /dev/tty > /dev/tty`;
-    `/usr/bin/ucf /usr/share/dokuwiki/bin/.htaccess /usr/share/dokuwiki/bin/.htaccess < /dev/tty > /dev/tty`;
-    `/usr/bin/ucf /usr/share/dokuwiki/inc/.htaccess /usr/share/dokuwiki/inc/.htaccess < /dev/tty > /dev/tty`;
-    `/usr/bin/ucf /usr/share/dokuwiki/inc/lang/.htaccess /usr/share/dokuwiki/inc/lang/.htaccess < /dev/tty > /dev/tty`;
-
-    # Move template directory from /usr/share/dokuwiki/lib/tpl to
-    # /var/lib/dokuwiki/tpl and create a symlink to it
-    my $version = $ARGV[1];
-
-    if ( system( "dpkg --compare-versions $version lt 0\.0\.20080411\~rc\.1") )
-    {
-        if ( not -l "/usr/share/dokuwiki/lib/tpl" )
-        {
-            print STDERR "Moving template directory from /usr/share to /var/lib... ";
-            move("/usr/share/dokuwiki/lib/tpl", "/var/lib/dokuwiki/tpl")
-                or die "copy failed: $!";
-            symlink("/var/lib/dokuwiki/tpl", "/usr/share/dokuwiki/lib/tpl");
-            print STDERR  "[done]\n";
-        }
-    }
-
-}
-
-# Dirty hack of the year to fix a possible Perl 5.8 bug (for #163380)
-system('true');
 
 # Create an apache configuration file for dokuwiki
-sub write_apache_conf
+write_apache_conf()
 {
-    my $apacheconf = `tempfile`;
-    chomp($apacheconf);
-    
-    open(CONF, "> $apacheconf")
-	or die("Can't open $apacheconf: $!\n");
+    apacheconf=`tempfile`;
     
     # Get config options
-    my @ret = get("dokuwiki/system/documentroot");
-    if ($ret[0] != 0) {
-	die "Failed to get config item dokuwiki/system/documentroot: ".$ret[1]."\n";
-    }
-    my $docroot = $ret[1];
+    db_get dokuwiki/system/documentroot
+    docroot=$RET;
 
-    print CONF "Alias $docroot		/usr/share/dokuwiki\n";
+    echo "Alias $docroot		/usr/share/dokuwiki" > $apacheconf
 
     # Print directory options for /usr/share/dokuwiki
-    print CONF "<Directory /usr/share/dokuwiki/>\n";
-    print CONF "	Options +FollowSymLinks\n";
-    print CONF "	AllowOverride All\n";
-    print CONF "	order allow,deny\n";
-    @ret = get("dokuwiki/system/accessible");
-    if ($ret[0] != 0) {
-	die "Failed to get config item dokuwiki/system/accessible: $ret[1]\n";
-    }
-
-    # Globally accessible
-    if ($ret[1] eq "global") {
-	print CONF "	allow from all\n";
-
-    # Access only from localhost
-    } elsif ($ret[1] eq "localhost only") {
-	print CONF "	allow from 127.0.0.1\n";
-
-    # Access from localnet
-    } else {
-	@ret = get("dokuwiki/system/localnet");
-	if ($ret[0] != 0) {
-	    die "Failed to get config item dokuwiki/system/localnet: $ret[1]\n";
-	}
-	print CONF "    allow from 127.0.0.1\n";
-	print CONF "	allow from $ret[1]\n";
-    }
+    echo "<Directory /usr/share/dokuwiki/>" >> $apacheconf
+    echo "	Options +FollowSymLinks" >> $apacheconf
+    echo "	AllowOverride All" >> $apacheconf
+    echo "	order allow,deny" >> $apacheconf
+
+    db_get dokuwiki/system/accessible
+    if [ "$RET" = "global" ]; then  # Globally accessible
+      echo "	allow from all" >> $apacheconf
+    elif [ "$RET" = "localhost only" ]; then  # Access only from localhost
+	echo "	allow from 127.0.0.1" >> $apacheconf
+    else  # Access from localnet
+	db_get dokuwiki/system/localnet
+	echo "	allow from 127.0.0.1" >> $apacheconf
+	echo "	allow from $RET" >> $apacheconf
+    fi
     
-    print CONF "</Directory>\n";
-    close CONF;
+    echo "</Directory>" >> $apacheconf
     
-    `/usr/bin/ucf $apacheconf /etc/dokuwiki/apache.conf < /dev/tty > /dev/tty`;
+    /usr/bin/ucf $apacheconf /etc/dokuwiki/apache.conf
 
     # Remove temporary file
-    unlink $apacheconf;
+    rm $apacheconf;
 
-    chmod(0664, "/etc/dokuwiki/apache.conf")
-	or die("Could not set mode for /etc/dokuwiki/apache.conf");
+    chmod 0664 /etc/dokuwiki/apache.conf
 }
 
-# Add a configuration file and restart the http server(s)
-sub configure_webservers
+# Subroutine to set up an initial access control system
+setup_acl()
 {
-# Should not be done in postinst
-#    foreach (@webserver) {
-#	
-#	if (-e "/etc/$_/conf.d/dokuwiki.conf") {
-#	    unlink "/etc/$_/conf.d/dokuwiki.conf"
-#		or warn "Could not remove /etc/$_/conf.d/dokuwiki.conf";
-#	}
-#    }
+    # By default allow everyone read access
+    if [ ! -a /var/lib/dokuwiki/acl/acl.auth.php ]; then
+	aclauth=`tempfile`
+
+	echo '*                     @ALL        4' > $aclauth
+
+    	/usr/bin/ucf $aclauth /var/lib/dokuwiki/acl/acl.auth.php
+
+        # Remove temporary file
+        rm $aclauth;
     
-    # Get list of servers to install into
-    my @dwserver = split(", ", get("dokuwiki/webservers"));
+	chown www-data:root /var/lib/dokuwiki/acl/acl.auth.php
+    fi
     
-    foreach (@dwserver)
-    {
-	print STDERR "Installing into... [$_] \n";
-	
-	my $dir = "/etc/$_";
+    if [ ! -a /var/lib/dokuwiki/acl/users.auth.php ]; then
+	usersauth=`tempfile`;
+	> $usersauth
+    	/usr/bin/ucf $usersauth /var/lib/dokuwiki/acl/users.auth.php
+
+        # Remove temporary file
+        rm $usersauth;
+
+	chown www-data:root /var/lib/dokuwiki/acl/users.auth.php
+    fi
+}
+
+configure_webservers()
+{
+    # Get list of servers to install into
+    db_get dokuwiki/webservers
+
+    for dwserver in $RET; do
+        dir="/etc/${dwserver%,}"
+
+	echo "Installing into... [$dir]" >/dev/stderr
 	
 	# Skip servers with no configuration
-	if (! -d $dir)
-	{
-	    next;
-	}
+	[ -d $dir ] || continue
 	
 	# Link the apache configuration file to the server's
 	# conf.d directory
-	if (! -f "$dir/conf.d/dokuwiki.conf") {
-	    symlink('/etc/dokuwiki/apache.conf', "$dir/conf.d/dokuwiki.conf")
-		or die("Failed to link configuration file to $dir/conf.d/dokuwiki.conf\n");
-      }
-	
-	chmod(0644, "/etc/dokuwiki/apache.conf")
-	    or die("Failed to set permissions for /etc/dokuwiki/apache.conf\n");
-	
-    }
-}
+	ln -fs /etc/dokuwiki/apache.conf "$dir/conf.d/dokuwiki.conf"
 
-# Restart the webservers after the reconfiguration
-sub restart_webservers
-{
-    foreach (@webserver) {
-	
-	# If server binary does not exist, move to next one
-	if (! -x "/usr/sbin/$_")
-	{
-	    next;
-	}
-	
-	# Restart the server either by invoke-rc.d or init.d
-	if (-x "/usr/sbin/invoke-rc.d")
-	{
-	    (!system("/usr/sbin/invoke-rc.d $_ restart >/dev/tty 2>&1"))
-		or warn "Failed to restart $_\n";
-	}
-	else
-	{
-	    if (-x "/etc/init.d/$_") {
-		(!system("/etc/init.d/$_ restart >/dev/tty 2>&1"))
-		    or warn "Failed to restart $_\n";
-	    }
-	}
-	
-    }
+	chmod 0644 /etc/dokuwiki/apache.conf
+    done
 }
 
-# Subroutine to set up an initial access control system
-sub setup_acl
-{
-    
-    # By default allow everyone read access
-    if (! -e "/var/lib/dokuwiki/acl/acl.auth.php") {
-	my $aclauth = `tempfile`;
-	chomp($aclauth);
-
-	open(AUTHFILE, "> $aclauth")
-		or die("Can't open $aclauth: $!\n");
-
-	print AUTHFILE '*                     @ALL        4';
-	print AUTHFILE "\n";
-	close AUTHFILE;
-	my $wwwuid = getpwnam("www-data");
-	my $rootuid = getpwnam("root");
-
-    	`/usr/bin/ucf $aclauth /var/lib/dokuwiki/acl/acl.auth.php < /dev/tty > /dev/tty`;
 
-        # Remove temporary file
-        unlink $aclauth;
-    
-	chown $wwwuid, $rootuid, "/var/lib/dokuwiki/acl/acl.auth.php"
-	    or warn "Could not change owner for /var/lib/dokuwiki/acl/acl.auth.php";
-    }
-    
-    if (! -e "/var/lib/dokuwiki/acl/users.auth.php") {
-	
-	my $usersauth = `tempfile`;
-	chomp($usersauth);
+if [ $1 = "configure" ]; then
+    . /usr/share/debconf/confmodule
 
-	open(USERFILE, "> $usersauth")
-		or die("Can't open $usersauth: $!\n");
-	close USERFILE;
-	my $wwwuid = getpwnam("www-data");
-	my $rootuid = getpwnam("root");
+    write_apache_conf
+    setup_acl
+    configure_webservers
+    
+    /usr/bin/ucf /usr/share/dokuwiki/.htaccess /usr/share/dokuwiki/.htaccess
+    /usr/bin/ucf /var/lib/dokuwiki/data/.htaccess /var/lib/dokuwiki/data/.htaccess
+    /usr/bin/ucf /usr/share/dokuwiki/bin/.htaccess /usr/share/dokuwiki/bin/.htaccess
+    /usr/bin/ucf /usr/share/dokuwiki/inc/.htaccess /usr/share/dokuwiki/inc/.htaccess
+    /usr/bin/ucf /usr/share/dokuwiki/inc/lang/.htaccess /usr/share/dokuwiki/inc/lang/.htaccess
 
-    	`/usr/bin/ucf $usersauth /var/lib/dokuwiki/acl/users.auth.php < /dev/tty > /dev/tty`;
+    db_stop
 
-        # Remove temporary file
-        unlink $usersauth;
+    # TODO: Web servers have to be restarted elsewhere
 
-	chown $wwwuid, $rootuid, "/var/lib/dokuwiki/acl/users.auth.php"
-	    or warn "Could not change ownership for /var/lib/dokuwiki/acl/users.auth.php";
-    }
-    
-}
+    # Move template directory from /usr/share/dokuwiki/lib/tpl to
+    # /var/lib/dokuwiki/tpl and create a symlink to it
+    if dpkg --compare-versions "$2" lt "0.0.20080411~rc.1"; then
+        if [ ! -L /usr/share/dokuwiki/lib/tpl ]; then
+            echo -n "Moving template directory from /usr/share to /var/lib... " >/dev/stderr
+            mv /usr/share/dokuwiki/lib/tpl /var/lib/dokuwiki/tpl
+            ln -fs /var/lib/dokuwiki/tpl /usr/share/dokuwiki/lib/
+            echo "[done]" >/dev/stderr
+        fi
+    fi
+
+    # doku.php?do=check takes version from this file
+    ln -fs /usr/share/doc/dokuwiki/VERSION /usr/share/dokuwiki/
+fi
 
 #DEBHELPER#
diff -Naur dokuwiki-0.0.20080505.orig/debian/postrm dokuwiki-0.0.20080505/debian/postrm
--- dokuwiki-0.0.20080505.orig/debian/postrm	2008-09-20 14:37:25.000000000 +0400
+++ dokuwiki-0.0.20080505/debian/postrm	2008-09-20 14:39:11.000000000 +0400
@@ -65,3 +65,5 @@
     fi
 
 fi
+
+rm -f /usr/share/dokuwiki/VERSION

Reply via email to