Package: sympa
Version: sympa-5.2.1-0.1
Followup-For: Bug #336157

  * Don't "exit 1" when install-${DBTYPE}-db ends successfully.
  * Use the same tools we will use to create database to know if we
    can connect mysql without password.

If the root mysql password is in section [mysql] in .my.cnf, mysql mysql
succeds but perl DBI will fail.

diff -ur sympa-5.2.1.deb/debian/db/install-mysql-db.pl 
sympa-5.2.1/debian/db/install-mysql-db.pl
--- sympa-5.2.1.deb/debian/db/install-mysql-db.pl       2006-12-13 
23:18:16.000000000 +0100
+++ sympa-5.2.1/debian/db/install-mysql-db.pl   2006-12-14 01:25:11.000000000 
+0100
@@ -81,9 +81,17 @@
 if ($userpass ne "") {
     $command .= " IDENTIFIED BY '$userpass'";
 }
-$dbh->do($command);
+eval {$dbh->do($command)};
+
+if ($@) {
+       die "$0: failed to create $database user: [EMAIL PROTECTED]";
+       exit 1;
+}
+
 $dbh->disconnect();
 
+exit 0;
+
 sub usage {
     die "Usage: install-mysql-db.pl -d <database> [-a <adminpass>] [-u 
<userpass>] [-h <hostname>] [-p <port>] [-w <user>]\n";
 }
diff -ur sympa-5.2.1.deb/debian/postinst sympa-5.2.1/debian/postinst
--- sympa-5.2.1.deb/debian/postinst     2006-12-13 23:18:16.000000000 +0100
+++ sympa-5.2.1/debian/postinst 2006-12-14 01:25:11.000000000 +0100
@@ -284,7 +284,7 @@
                db_type="mysql"
                        if [ "$RET" = "false" ]; then
                                # Check if we can gain access to MySQL without 
password
-                               if mysql mysql </dev/null; then
+                               if perl -e 'use DBI; $dsn = 
"DBI:mysql:mysql;mysql_read_default_file=/root/.my.cnf"; $dbh = 
DBI->connect($dsn);'</dev/null; then
                                        pass_required=0
                                fi
                        fi
diff -ur sympa-5.2.1.deb/debian/prepare_db sympa-5.2.1/debian/prepare_db
--- sympa-5.2.1.deb/debian/prepare_db   2006-12-13 23:18:16.000000000 +0100
+++ sympa-5.2.1/debian/prepare_db       2006-12-14 01:25:11.000000000 +0100
@@ -89,14 +89,10 @@
                        if [ "$RET" = "Ident-based" ]; then
                                OPTS="-i $OPTS"
                        fi
-                       if /usr/share/sympa/db/install-pg-db $OPTS -d 
"$db_name" -h "$db_hostname" -u "$userpassfile"; then
-                               exit 1
-                       fi
+                       /usr/share/sympa/db/install-pg-db $OPTS -d "$db_name" 
-h "$db_hostname" -u "$userpassfile"
                    ;;
                "MySQL")
-                       if /usr/share/sympa/db/install-mysql-db $OPTS -d 
"$db_name" -h "$db_hostname" -u "$userpassfile"; then
-                               exit 1
-                       fi
+                       /usr/share/sympa/db/install-mysql-db $OPTS -d 
"$db_name" -h "$db_hostname" -u "$userpassfile"
                    ;;
        esac
 fi
diff -ur sympa-5.2.1.deb/debian/db/install-mysql-db.pl 
sympa-5.2.1/debian/db/install-mysql-db.pl
--- sympa-5.2.1.deb/debian/db/install-mysql-db.pl       2006-12-13 
23:18:16.000000000 +0100
+++ sympa-5.2.1/debian/db/install-mysql-db.pl   2006-12-14 01:25:11.000000000 
+0100
@@ -81,9 +81,17 @@
 if ($userpass ne "") {
     $command .= " IDENTIFIED BY '$userpass'";
 }
-$dbh->do($command);
+eval {$dbh->do($command)};
+
+if ($@) {
+       die "$0: failed to create $database user: [EMAIL PROTECTED]";
+       exit 1;
+}
+
 $dbh->disconnect();
 
+exit 0;
+
 sub usage {
     die "Usage: install-mysql-db.pl -d <database> [-a <adminpass>] [-u 
<userpass>] [-h <hostname>] [-p <port>] [-w <user>]\n";
 }
diff -ur sympa-5.2.1.deb/debian/postinst sympa-5.2.1/debian/postinst
--- sympa-5.2.1.deb/debian/postinst     2006-12-13 23:18:16.000000000 +0100
+++ sympa-5.2.1/debian/postinst 2006-12-14 01:25:11.000000000 +0100
@@ -284,7 +284,7 @@
                db_type="mysql"
                        if [ "$RET" = "false" ]; then
                                # Check if we can gain access to MySQL without 
password
-                               if mysql mysql </dev/null; then
+                               if perl -e 'use DBI; $dsn = 
"DBI:mysql:mysql;mysql_read_default_file=/root/.my.cnf"; $dbh = 
DBI->connect($dsn);'</dev/null; then
                                        pass_required=0
                                fi
                        fi
diff -ur sympa-5.2.1.deb/debian/prepare_db sympa-5.2.1/debian/prepare_db
--- sympa-5.2.1.deb/debian/prepare_db   2006-12-13 23:18:16.000000000 +0100
+++ sympa-5.2.1/debian/prepare_db       2006-12-14 01:25:11.000000000 +0100
@@ -89,14 +89,10 @@
                        if [ "$RET" = "Ident-based" ]; then
                                OPTS="-i $OPTS"
                        fi
-                       if /usr/share/sympa/db/install-pg-db $OPTS -d 
"$db_name" -h "$db_hostname" -u "$userpassfile"; then
-                               exit 1
-                       fi
+                       /usr/share/sympa/db/install-pg-db $OPTS -d "$db_name" 
-h "$db_hostname" -u "$userpassfile"
                    ;;
                "MySQL")
-                       if /usr/share/sympa/db/install-mysql-db $OPTS -d 
"$db_name" -h "$db_hostname" -u "$userpassfile"; then
-                               exit 1
-                       fi
+                       /usr/share/sympa/db/install-mysql-db $OPTS -d 
"$db_name" -h "$db_hostname" -u "$userpassfile"
                    ;;
        esac
 fi

Reply via email to