Tue, 28 Aug 2012 18:28:35 +0200
Write a explicit dependency to pkgconfig file for getaddrinfo(3). The SVR4
dependencies libsocket and libnsl are needed by libgio and libglib at least,
and allow dependent software like gmime to build unmodified.
michael@290 | 1 | #!/bin/sh |
michael@290 | 2 | ## |
michael@290 | 3 | ## davical-setup |
michael@290 | 4 | ## |
michael@290 | 5 | |
michael@290 | 6 | # command line argument sanity check |
michael@290 | 7 | prg="$0" |
michael@290 | 8 | if [ $# -eq 0 ]; then |
michael@290 | 9 | echo "$prg:ERROR: invalid command line" 1>&2 |
michael@290 | 10 | echo "$prg:USAGE: $prg install [<admin-password>]" 1>&2 |
michael@290 | 11 | echo "$prg:USAGE: $prg uninstall" 1>&2 |
michael@290 | 12 | echo "$prg:USAGE: $prg edit" 1>&2 |
michael@290 | 13 | exit 1 |
michael@290 | 14 | fi |
michael@290 | 15 | |
michael@290 | 16 | # database configuration |
michael@290 | 17 | db_dir="@l_prefix@/var/davical/db" |
michael@290 | 18 | db_name="davical" |
michael@290 | 19 | db_user="davical" |
michael@290 | 20 | db_pass="davical" |
michael@290 | 21 | db_sname=`grep "^superuser_database" @l_prefix@/var/postgresql/db/pg_superuser.conf |\ |
michael@290 | 22 | sed -e 's;^ *superuser_database="\(.*\)".*;\1;'` |
michael@290 | 23 | db_suser=`grep "^superuser_username" @l_prefix@/var/postgresql/db/pg_superuser.conf |\ |
michael@290 | 24 | sed -e 's;^ *superuser_username="\(.*\)".*;\1;'` |
michael@290 | 25 | db_spass=`grep "^superuser_password" @l_prefix@/var/postgresql/db/pg_superuser.conf |\ |
michael@290 | 26 | sed -e 's;^ *superuser_password="\(.*\)".*;\1;'` |
michael@290 | 27 | |
michael@290 | 28 | # dispatch operation |
michael@290 | 29 | cmd="${1:-"install"}" |
michael@290 | 30 | shift |
michael@290 | 31 | case "$cmd" in |
michael@290 | 32 | install ) |
michael@290 | 33 | # determine admin password |
michael@290 | 34 | admin_password="$1" |
michael@290 | 35 | if [ ".$admin_password" = . ]; then |
michael@290 | 36 | admin_password="`@l_prefix@/bin/apg -Mncl -a1 -m12 -n1`" |
michael@290 | 37 | echo "ATTENTION: using generated \"admin\" password: \"$admin_password\"" 1>&2 |
michael@290 | 38 | fi |
michael@290 | 39 | |
michael@290 | 40 | # create database |
michael@290 | 41 | ( echo "CREATE ROLE $db_user LOGIN ENCRYPTED PASSWORD '$db_pass' NOCREATEDB NOCREATEUSER;" |
michael@290 | 42 | echo "CREATE TABLESPACE $db_name OWNER $db_user LOCATION '$db_dir';" |
michael@396 | 43 | echo "CREATE DATABASE $db_name OWNER $db_user TABLESPACE $db_name TEMPLATE template0 ENCODING 'UTF8';" |
michael@290 | 44 | ) | PGPASSWORD="$db_spass" @l_prefix@/bin/psql -q -U "$db_suser" -d "$db_sname" -f- |
michael@396 | 45 | |
michael@396 | 46 | # ensure PL/PgSQL language is available |
michael@290 | 47 | PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" \ |
michael@290 | 48 | -c "CREATE LANGUAGE plpgsql;" |
michael@290 | 49 | |
michael@290 | 50 | # create schema 1/2 (from original "create_database" script) |
michael@290 | 51 | PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" -A -t \ |
michael@290 | 52 | -f "@l_prefix@/lib/davical/awl/dba/awl-tables.sql" 2>&1 | grep -v NOTICE |
michael@290 | 53 | PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" -A -t \ |
michael@290 | 54 | -f "@l_prefix@/lib/davical/awl/dba/schema-management.sql" 2>&1 | grep -v NOTICE |
michael@290 | 55 | PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" -A -t \ |
michael@290 | 56 | -f "@l_prefix@/lib/davical/davical/dba/davical.sql" 2>&1 | grep -v NOTICE |
michael@290 | 57 | PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" -A -t \ |
michael@290 | 58 | -f "@l_prefix@/lib/davical/davical/dba/base-data.sql" 2>&1 | grep -v NOTICE |
michael@290 | 59 | |
michael@396 | 60 | # create schema 2/3 (from nowhere, but required by appuser_permissions.txt below) |
michael@396 | 61 | PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" -A -t \ |
michael@396 | 62 | -f "@l_prefix@/lib/davical/davical/dba/views/dav_principal.sql" 2>&1 | grep -v NOTICE |
michael@396 | 63 | |
michael@396 | 64 | # create schema 3/3 (from original "update-davical-database" script) |
michael@290 | 65 | PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" -A -t \ |
michael@290 | 66 | -f "@l_prefix@/lib/davical/davical/dba/supported_locales.sql" 2>&1 | grep -v NOTICE |
michael@290 | 67 | PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" -A -t \ |
michael@290 | 68 | -f "@l_prefix@/lib/davical/davical/dba/caldav_functions.sql" 2>&1 | egrep -v '(NOTICE|ERROR)' |
michael@290 | 69 | PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" -A -t \ |
michael@290 | 70 | -f "@l_prefix@/lib/davical/davical/dba/rrule_functions.sql" 2>&1 | egrep -v '(NOTICE|ERROR)' |
michael@290 | 71 | PGPASSWORD="$db_spass" @l_prefix@/bin/psql -q -U "$db_suser" -d "$db_name" -A -t \ |
michael@290 | 72 | -f "@l_prefix@/lib/davical/davical/dba/appuser_permissions.txt" 2>&1 | grep -v NOTICE |
michael@290 | 73 | |
michael@290 | 74 | # set admin password |
michael@290 | 75 | PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" \ |
michael@290 | 76 | -c "UPDATE usr SET password = '**$admin_password' WHERE user_no = 1;" |
michael@290 | 77 | ;; |
michael@290 | 78 | |
michael@290 | 79 | uninstall ) |
michael@396 | 80 | # destroy PL/PgSQL language |
michael@290 | 81 | PGPASSWORD="$db_pass" @l_prefix@/bin/psql -q -U "$db_user" -d "$db_name" \ |
michael@290 | 82 | -c "DROP LANGUAGE plpgsql CASCADE;" 2>&1 | grep -v NOTICE |
michael@396 | 83 | |
michael@396 | 84 | # destroy database |
michael@290 | 85 | ( echo "DROP DATABASE $db_name;" |
michael@290 | 86 | echo "DROP TABLESPACE $db_name;" |
michael@290 | 87 | echo "DROP ROLE $db_user;" |
michael@290 | 88 | ) | PGPASSWORD="$db_spass" @l_prefix@/bin/psql -q -U "$db_suser" -d "$db_sname" -f- |
michael@290 | 89 | ;; |
michael@290 | 90 | |
michael@290 | 91 | edit ) |
michael@396 | 92 | # edit database |
michael@290 | 93 | PGPASSWORD="$db_spass" @l_prefix@/bin/psql -U "$db_suser" -d "$db_name" |
michael@290 | 94 | ;; |
michael@290 | 95 | esac |
michael@290 | 96 |