--- a/debian/littlebird-tc-sql.postinst Wed Aug 31 17:20:19 2011 +0200
+++ b/debian/littlebird-tc-sql.postinst Thu Sep 01 12:23:59 2011 +0200
@@ -1,4 +1,5 @@
#!/bin/sh
+echo "$0: $@" >&2
# postinst script for littlebird
#
# see: dh_installdeb(1)
@@ -17,41 +18,52 @@
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package
+_mysql() { mysql -h"$host" -u"$adminuser" -p"$adminpass" "$@"; }
+
case "$1" in
configure)
- db_get littlebird-tc/db/adminuser && adminuser="$RET" || true
- db_get littlebird-tc/db/adminpass && adminpass="$RET" || true
- db_get littlebird-tc/db/user && user="$RET" || true
- db_get littlebird-tc/db/pass && pass="$RET" || true
- db_get littlebird-tc/db/host && host="$RET" || true
- db_get littlebird-tc/db/name && name="$RET" || true
-# cat <<EOF
-#$@
-#adminuser/pass: $adminuser/$adminpass
-#user/pass: $user/$pass
-#db@host: $name@$host
-#EOF
- # only init the db if there is no previous version
- if test -z "$2" && test -n "$adminpass"; then
+ # only if we have admin access to the database
+ db_get littlebird-tc/db/have-admin || true
+ if test "$RET" = "true"; then
+ db_get littlebird-tc/db/adminuser && adminuser="$RET" || true
+ db_get littlebird-tc/db/adminpass && adminpass="$RET" || true
+ db_get littlebird-tc/db/host && host="$RET" || true
+ db_get littlebird-tc/db/name && name="$RET" || true
+
+ # check admin access
+ _mysql -e "" mysql || {
+ echo "Access to mysql database failed!" >&2
+ exit 1
+ }
- if test "$host" = "localhost"; then client="localhost"
- else client="%"
- fi
+ if _mysql -e "" "$name" 2>/dev/null; then
+ db_subst littlebird-tc/db/exists name "$name" || true
+ db_input medium littlebird-tc/db/exists || true
+ db_go || true
+ else
+ # ok, setup the database
+
+ db_get littlebird-tc/db/user && user="$RET" || true
+ db_get littlebird-tc/db/pass && pass="$RET" || true
+ if test "$host" = "localhost"; then client="localhost"
+ else client="%"
+ fi
- mysql -h"$host" -u"$adminuser" -p"$adminpass" <<EOF
- CREATE DATABASE IF NOT EXISTS $name;
- GRANT ALL ON $name.* TO '$user'@'$client' IDENTIFIED BY '$pass';
- FLUSH PRIVILEGES;
+ # create or update the user
+
+ _mysql <<EOF
+ CREATE DATABASE $name;
+ GRANT ALL ON $name.* TO '$user'@'$client' IDENTIFIED BY '$pass';
+ FLUSH PRIVILEGES;
EOF
- ( set -e
- cd /usr/share/littlebird/tc-sql
- ./install_test_iteration_2011-06.sh \
- "$host" "$name" \
- "$adminuser" "$adminpass" \
- "$user" "$pass"
- )
+
+ /usr/share/littlebird/tc-sql/install_test_iteration_2011-06.sh \
+ --host "$host" --db "$name" \
+ --adminuser "$adminuser" --adminpass "$adminpass" \
+ --user "$user" --pass "$pass"
+ fi
fi
;;