Install compatible php5 extensions.
[carnet-upgrade.git] / src / functions.sh
index ff90033..7511bc2 100644 (file)
@@ -451,8 +451,11 @@ check_my_version () {
 check_php_version () {
 
   if pkg php4-cn && ! pkg php5-cn; then
+    # prepare for php upgrade by installing php5 extensions
+    install_php5_extensions
+
     notice "
-Prije prelaska na Debian Etch potrebno je napraviti nadogradnju sa PHP 4 na PHP 5.
+Prije prelaska na Debian Lenny potrebno je napraviti nadogradnju sa PHP 4 na PHP 5.
 
 Pokrenite:
   # apt-get update
@@ -464,6 +467,33 @@ Nakon sto provjerite da sve web aplikacije rade ispravno, ponovno pozovite ovu s
   fi
 }
 
+# install php5 extensions based on installed php4 extensions
+install_php5_extensions () {
+  local php4_list php5_pkg
+
+  # get a list of installed php4 packages
+  php4_list=$(mktemp /var/lib/carnet-upgrade/php4_list.XXXXXX)
+  dpkg -l php4-\* | awk '/^ii/ {
+    pkg=$2; sub("^php4", "php5", pkg); print pkg }' > $php4_list
+
+  # compare it with the list of available php5 packages
+  php5_pkg=$(apt-cache search -n ^php5- | cut -d' ' -f 1 \
+    | grep -F -x -f $php4_list | grep -F -x -v php5-cn)
+
+  # handle special cases
+  if pkg php4-xslt; then
+     php5_pkg="$php5_pkg php5-xsl"
+  fi
+
+  # install the required php5 modules
+  if [ "$php5_pkg" ]; then
+     pkgadd $php5_pkg
+  fi
+
+  # cleanup
+  rm -f $php4_list
+}
+
 # if grsec is installed make sure it is fresh
 check_grsec_kernel () {
   local ver=`uname -r`
@@ -659,7 +689,7 @@ backup_slapd_db () {
     [ -x /etc/init.d/freeradius ] && /etc/init.d/freeradius start || true
   else
     log "slapd backup already at $ldap_backup, skipping."
-    notice "Backup slapd baze u $ldap_backup vec postoji!"
+    #notice "Backup slapd baze u $ldap_backup vec postoji!"
   fi
 }
 
@@ -683,7 +713,7 @@ backup_etc_dir () {
     umask $old_umask
   else
     log "/etc backup already present in $etc_backup, skipping."
-    notice "Backup /etc direktorija u $etc_backup vec postoji!"
+    #notice "Backup /etc direktorija u $etc_backup vec postoji!"
   fi
 }
 
@@ -898,6 +928,12 @@ remove_skey () {
   fi
 }
 
+# remove unsupported php version
+remove_php4 () {
+  # leave the configuration just in case
+  pkgrm_only php4-common
+}
+
 # check if package is orphaned (nothing depends on it)
 is_orphaned () {
   local package deps