commit:     460af21306dcef36204adfa5098b21f6bcbd2379
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue Nov 17 20:32:36 2015 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue Nov 17 20:32:36 2015 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=460af213

app-eselect/eselect-python: Preserve previous python[23] selection

 .../eselect-python/eselect-python-20151117.ebuild  | 37 ++++++++++++++++++----
 .../eselect-python/eselect-python-99999999.ebuild  | 37 ++++++++++++++++++----
 2 files changed, 62 insertions(+), 12 deletions(-)

diff --git a/app-eselect/eselect-python/eselect-python-20151117.ebuild 
b/app-eselect/eselect-python/eselect-python-20151117.ebuild
index 9968e7f..86e9a3c 100644
--- a/app-eselect/eselect-python/eselect-python-20151117.ebuild
+++ b/app-eselect/eselect-python/eselect-python-20151117.ebuild
@@ -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
 }

diff --git a/app-eselect/eselect-python/eselect-python-99999999.ebuild 
b/app-eselect/eselect-python/eselect-python-99999999.ebuild
index 9968e7f..86e9a3c 100644
--- a/app-eselect/eselect-python/eselect-python-99999999.ebuild
+++ b/app-eselect/eselect-python/eselect-python-99999999.ebuild
@@ -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
 }

Reply via email to