#!/bin/sh set -e # Skip while creating the reference chroot. if [ "$PIUPARTS_PHASE" = "" ]; then exit 0 fi is_installed() { local pkg="$1" dpkg-query -s "$pkg" >/dev/null 2>&1 || return 1 local status="$(dpkg-query -W -f '${Status}' $pkg)" test "$status" != "unknown ok not-installed" || return 1 test "$status" != "deinstall ok config-files" || return 1 return 0 } retry_configure_pending() { echo "" echo "Upgrade didn't go smooth, trying dpkg --configure --pending" dpkg --configure --pending } CANDIDATES= CANDIDATES="$CANDIDATES default-mysql-server" #CANDIDATES="$CANDIDATES mysql-server" CANDIDATES="$CANDIDATES postgresql" case "$PIUPARTS_DISTRIBUTION_NEXT" in buster) : # no mysql-server in buster ;; *) CANDIDATES="$CANDIDATES mysql-server" ;; esac case "$PIUPARTS_DISTRIBUTION_NEXT" in wheezy) CANDIDATES="$CANDIDATES mysql-server-5.5" CANDIDATES="$CANDIDATES postgresql-9.1" ;; jessie) CANDIDATES="$CANDIDATES mysql-server-5.5" CANDIDATES="$CANDIDATES mariadb-server-10.0" CANDIDATES="$CANDIDATES postgresql-9.4" ;; stretch) CANDIDATES="$CANDIDATES mariadb-server-10.1" CANDIDATES="$CANDIDATES postgresql-9.6" ;; buster) CANDIDATES="$CANDIDATES mariadb-server-10.3" CANDIDATES="$CANDIDATES postgresql-11" ;; bullseye|sid) CANDIDATES="$CANDIDATES mariadb-server-10.5" CANDIDATES="$CANDIDATES postgresql-13" ;; esac PACKAGES= RETRY="false" # early upgrade runs into even more trouble for some packages ... case ${PIUPARTS_OBJECTS%%=*} in med-practice|audiolink) CANDIDATES="" ;; redmine) CANDIDATES="" ;; esac if [ "$PIUPARTS_DISTRIBUTION_NEXT" = "stretch" ]; then case ${PIUPARTS_OBJECTS%%=*} in bacula-director-mysql|\ bacula-director-mysql-dbg) # (new) transitively recommended package mariadb-server-x.y gets # configured (and the server started) too late (after ourselves) RETRY="retry_configure_pending" ;; esac fi for pkg in $CANDIDATES do if is_installed "$pkg" then PACKAGES="$PACKAGES $pkg" fi done test ! -x /usr/bin/pg_lsclusters || pg_lsclusters did_apt_get_update= apt_get_update() { if [ -z "$did_apt_get_update" ] then apt-get update did_apt_get_update=true fi } if [ -n "$PACKAGES" ] then echo "Upgrading early: ${PACKAGES# }" apt_get_update apt-get -y install $PACKAGES || $RETRY fi upgrade_pg_cluster() { local from=$1 local to=$2 if ! is_installed postgresql-${from} then return 0 fi if ! is_installed postgresql-${to} then echo "" echo "Installing: postgresql-${to}" apt_get_update apt-get -y install postgresql-${to} fi if is_installed postgresql-${from} && is_installed postgresql-${to} then if [ "$3" = "--restart-first" ]; then echo "" echo "Restarting PostgreSQL (#882409)..." invoke-rc.d postgresql restart fi echo "" echo "Upgrading PostgreSQL Cluster from ${from} to ${to}" pg_dropcluster ${to} main --stop pg_upgradecluster -v ${to} ${from} main pg_dropcluster ${from} main fi } case "${PIUPARTS_DISTRIBUTION}:${PIUPARTS_DISTRIBUTION_NEXT}" in lenny:squeeze) upgrade_pg_cluster 8.3 8.4 ;; squeeze*:wheezy) upgrade_pg_cluster 8.4 9.1 ;; wheezy*:jessie) upgrade_pg_cluster 9.1 9.4 --restart-first ;; jessie*:stretch) upgrade_pg_cluster 9.4 9.6 ;; stretch*:buster) upgrade_pg_cluster 9.6 11 ;; buster*:bullseye) upgrade_pg_cluster 11 13 ;; buster:sid) upgrade_pg_cluster 11 13 ;; esac test ! -x /usr/bin/pg_lsclusters || pg_lsclusters