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