From b1a2845b9e25259bfc31a7d63b50e112494f7154 Mon Sep 17 00:00:00 2001 From: Kolan Sh Date: Mon, 9 Dec 2013 15:14:07 +0400 Subject: [PATCH] Python upgrade must be before @system upgrade. --- sbin/gentoo-upgrade.sh | 87 +++++++++++++++++++++++------------------- 1 file changed, 47 insertions(+), 40 deletions(-) diff --git a/sbin/gentoo-upgrade.sh b/sbin/gentoo-upgrade.sh index 000845e..7a1e1d0 100755 --- a/sbin/gentoo-upgrade.sh +++ b/sbin/gentoo-upgrade.sh @@ -332,15 +332,57 @@ if [ $STAGE_CNT -eq $STAGE ]; then fi let STAGE_CNT++ +# Python upgrade +if [ $STAGE_CNT -eq $STAGE ]; then + echo "======= STAGE $STAGE: Python upgrade =======" + + echo 'Test and remember if we should run python-updater after Python upgrade' + if [ 0 -ne `emerge -uNp dev-lang/python 2>&1 | grep '^\[' | wc -l` ]; then + touch /etc/portage/need_upgrade_python + fi + + echo '------- Upgrading Python package -------' + emerge -uDNvt --with-bdeps=y python + [ 0 -ne $? ] && echo "Stage $STAGE: Python upgrade failed ;-( =======" && exit $STAGE + + available_python_list=`eselect python list | cut -d" " -f6 | grep -v ^$ | sort -rV` + [ "" == "$available_python_list" ] && echo "Stage $STAGE: empty available_python_list ;-( =======" && exit $STAGE + + let ndeps=0 + new_python=`echo $available_python_list | cut -d" " -f1` + + for p in $available_python_list ; do + pkgname=`echo $p | sed 's~^python~python-~'` + pkgnamever=`qlist -ICv dev-lang/$pkgname` + let ndeps_tmp=`equery d =$pkgnamever | cut -d" " -f1 | wc -l` + [ $ndeps_tmp -gt $ndeps ] && new_python=$p && let ndeps=$ndeps_tmp + done + + old_python=`eselect python show 2>/dev/null` + + if [[ "$old_python" != "$new_python" || -f /etc/portage/need_upgrade_python ]]; then + echo "Running python-updater..." + touch /etc/portage/need_upgrade_python + [ 0 != $? ] && echo "Stage $STAGE: cann't touch /etc/portage/need_upgrade_python ;-( =======" && exit $STAGE + eselect python set $new_python + [ 0 != $? ] && echo "Stage $STAGE: cann't switch to another python version ;-( =======" && exit $STAGE + + $NICE_CMD python-updater + [ 0 != $? ] && echo "Stage $STAGE: python-updater failed ;-( =======" && exit $STAGE + rm /etc/portage/need_upgrade_python + [ 0 != $? ] && echo "Stage $STAGE: cann't remove /etc/portage/need_upgrade_python ;-( =======" && exit $STAGE + else + echo "------- Not need to upgrade python -------" + fi + + let STAGE++ +fi +let STAGE_CNT++ + # @system upgrade if [ $STAGE_CNT -eq $STAGE ]; then echo "======= STAGE $STAGE: @system upgrade =======" - echo 'Test and remember if we should run python-updater after @system upgrade' - if [ 0 -ne `emerge -uNp dev-lang/python 2>&1 | grep '^\[' | wc -l` ]; then - touch /etc/portage/need_upgrade_python - fi - echo 'Test and remember if we should run perl-cleaner after @system upgrade' if [[ 0 -ne `qlist -IC dev-lang/perl | wc -l` && 0 -ne `emerge -uNp dev-lang/perl 2>&1 | grep '^\[' | wc -l` ]]; then @@ -361,41 +403,6 @@ if [ $STAGE_CNT -eq $STAGE ]; then fi let STAGE_CNT++ -# Python upgrade -if [ $STAGE_CNT -eq $STAGE ]; then - echo "======= STAGE $STAGE: Python upgrade =======" - available_python_list=`eselect python list | cut -d" " -f6 | grep -v ^$ | sort -rV` - [ "" == "$available_python_list" ] && echo "Stage $STAGE: empty available_python_list ;-( =======" && exit $STAGE - - let ndeps=0 - new_python=`echo $available_python_list | cut -d" " -f1` - - for p in $available_python_list ; do - pkgname=`echo $p | sed 's~^python~python-~'` - let tmp=`equery d =dev-lang/$pkgname | cut -d" " -f1 | wc -l` - [ $tmp -gt $ndeps ] && new_python=$p && let ndeps=$tmp - done - - old_python=`eselect python show 2>/dev/null` - - if [[ "$old_python" != "$new_python" || -f /etc/portage/need_upgrade_python ]]; then - echo "Running python-updater..." - touch /etc/portage/need_upgrade_python - [ 0 != $? ] && echo "Stage $STAGE: cann't touch /etc/portage/need_upgrade_python ;-( =======" && exit $STAGE - eselect python set $new_python - [ 0 != $? ] && echo "Stage $STAGE: cann't switch to another python version ;-( =======" && exit $STAGE - $NICE_CMD python-updater - [ 0 != $? ] && echo "Stage $STAGE: python-updater failed ;-( =======" && exit $STAGE - rm /etc/portage/need_upgrade_python - [ 0 != $? ] && echo "Stage $STAGE: cann't remove /etc/portage/need_upgrade_python ;-( =======" && exit $STAGE - else - echo "------- Not need to upgrade python -------" - fi - - let STAGE++ -fi -let STAGE_CNT++ - # Perl upgrade if [ $STAGE_CNT -eq $STAGE ]; then echo "======= STAGE $STAGE: Perl upgrade ======="