app-eselect/eselect-python: Preserve previous python[23] selection
authorMichał Górny <mgorny@gentoo.org>
Tue, 17 Nov 2015 20:32:36 +0000 (21:32 +0100)
committerMichał Górny <mgorny@gentoo.org>
Tue, 17 Nov 2015 20:39:09 +0000 (21:39 +0100)
app-eselect/eselect-python/eselect-python-20151117.ebuild
app-eselect/eselect-python/eselect-python-99999999.ebuild

index 9968e7fac7c4437230936cf0afcad9094f1245e1..86e9a3cf2af7c13b2dbed7343ecf3013a26c4a59 100644 (file)
@@ -40,14 +40,39 @@ src_install() {
        done
 }
 
+pkg_preinst() {
+       local py
+
+       # Copy python[23] selection from the old format (symlink)
+       for py in 2 3; do
+               # default to none
+               declare -g "PREV_PYTHON${py}"=
+
+               if [[ -L ${EROOT}/usr/bin/python${py} ]]; then
+                       local target=$(readlink "${EROOT}/usr/bin/python${py}")
+
+                       # check if it's actually old eselect symlink
+                       if [[ ${target} == python?.? ]]; then
+                               declare -g "PREV_PYTHON${py}=${target}"
+                       fi
+               fi
+       done
+}
+
 pkg_postinst() {
+       local py
+
        if has_version 'dev-lang/python'; then
                eselect python update --if-unset
        fi
-       if has_version '=dev-lang/python-2*'; then
-               eselect python update --python2 --if-unset
-       fi
-       if has_version '=dev-lang/python-3*'; then
-               eselect python update --python3 --if-unset
-       fi
+
+       for py in 2 3; do
+               local pyvar=PREV_PYTHON${py}
+               if [[ -n ${!pyvar} ]]; then
+                       einfo "Setting Python${py} to ${!pyvar}"
+                       eselect python set "--python${py}" "${!pyvar}"
+               elif has_version "=dev-lang/python-${py}*"; then
+                       eselect python update "--python${py}" --if-unset
+               fi
+       done
 }
index 9968e7fac7c4437230936cf0afcad9094f1245e1..86e9a3cf2af7c13b2dbed7343ecf3013a26c4a59 100644 (file)
@@ -40,14 +40,39 @@ src_install() {
        done
 }
 
+pkg_preinst() {
+       local py
+
+       # Copy python[23] selection from the old format (symlink)
+       for py in 2 3; do
+               # default to none
+               declare -g "PREV_PYTHON${py}"=
+
+               if [[ -L ${EROOT}/usr/bin/python${py} ]]; then
+                       local target=$(readlink "${EROOT}/usr/bin/python${py}")
+
+                       # check if it's actually old eselect symlink
+                       if [[ ${target} == python?.? ]]; then
+                               declare -g "PREV_PYTHON${py}=${target}"
+                       fi
+               fi
+       done
+}
+
 pkg_postinst() {
+       local py
+
        if has_version 'dev-lang/python'; then
                eselect python update --if-unset
        fi
-       if has_version '=dev-lang/python-2*'; then
-               eselect python update --python2 --if-unset
-       fi
-       if has_version '=dev-lang/python-3*'; then
-               eselect python update --python3 --if-unset
-       fi
+
+       for py in 2 3; do
+               local pyvar=PREV_PYTHON${py}
+               if [[ -n ${!pyvar} ]]; then
+                       einfo "Setting Python${py} to ${!pyvar}"
+                       eselect python set "--python${py}" "${!pyvar}"
+               elif has_version "=dev-lang/python-${py}*"; then
+                       eselect python update "--python${py}" --if-unset
+               fi
+       done
 }