114 lines
4.6 KiB
Bash
Executable File
114 lines
4.6 KiB
Bash
Executable File
#!/bin/bash
|
|
# -*- mode: sh; fill-column: 75; tab-width: 8; coding: utf-8-unix -*-
|
|
|
|
. /usr/local/bin/usr_local_tput.bash || exit 2
|
|
PREFIX=$PREFIX
|
|
ROLE=testforge
|
|
|
|
# too early
|
|
[ -f /usr/local/etc/testforge/testforge.bash ] || exit 0
|
|
|
|
. /usr/local/etc/testforge/testforge.bash || exit 1
|
|
|
|
[ -n "$TESTF_VAR_LOCAL" ] && PREFIX=$TESTF_VAR_LOCAL
|
|
|
|
if uname -a | grep entoo ; then
|
|
GENTOO=0
|
|
else
|
|
GENTOO=1
|
|
fi
|
|
UBUNTU=$( [ -d /etc/apt ] )
|
|
|
|
for PYTHON_MINOR in $BASE_PYTHON2_MINOR $BASE_PYTHON3_MINOR ; do
|
|
[ -z "$PYTHON_MINOR" ] && continue
|
|
# [ "$PYTHON_MINOR" = "$BASE_PYTHON2_MINOR" ] && PYMAJOR=2 || PYMAJOR=3
|
|
PYVER="${PYTHON_MINOR:0:1}"
|
|
|
|
cd $BASE_USR_LOCAL/$LIB/python${PYTHON_MINOR}/site-packages/ || exit $PYVER
|
|
[ -f __init__.py ] || touch __init__.py
|
|
INFO $PYVER GENTOO=$GENTOO $BASE_USR_LOCAL/$LIB/python${PYTHON_MINOR}/site-packages/
|
|
ls -1d * | \
|
|
grep -v '__init__.py\|~$\|egg-info\|__pycache__\|egg-link\|dist-info\|pyc$\|pyo$\|pth$\|.sh$$\|.so$\|.egg$\|.tar$\|.log$\|.lis$\|.err$' | \
|
|
sed -e 's/\.py$//' | \
|
|
while read elt ; do
|
|
[ -z "$elt" ] && continue
|
|
[ $elt = cachecontrol ] && mod=CacheControl || mod=$elt
|
|
|
|
#exceptions
|
|
[ $elt = pip ] && echo "INFO: $PYTHON_MINOR Skipped OK - $elt" && continue
|
|
[ $elt = ansible ] && echo "INFO: $PYTHON_MINOR Skipped OK - $elt" && continue
|
|
#?FixMe: - we are now allowing site.py
|
|
[ $elt = site ] && echo "INFO: $PYTHON_MINOR Skipped OK - $elt" && continue
|
|
# broken for MarkupSafe-1.1.1-py2.7.egg-info
|
|
[ $elt = markupsafe ] && echo "INFO: $PYTHON_MINOR Skipped OK - $elt" && continue
|
|
# broken for PyYAML-5.3.1-py2.7.egg-info
|
|
[ $elt = yaml ] && echo "INFO: $PYTHON_MINOR Skipped OK - $elt" && continue
|
|
# Pygments-2.5.2-py2.7.egg-info
|
|
[ $elt = pygments ] && echo "INFO: $PYTHON_MINOR Skipped OK - $elt" && continue
|
|
|
|
# FixMe: what about the selenium patches
|
|
[ $elt = selenium ] && continue
|
|
|
|
# FixMe:
|
|
if [ $GENTOO -eq 0 ] && eix -r ^dev-python/${elt}$ | grep "Installed.*[\" ]$PYTHON_MINOR" ; then
|
|
DBUG $PYVER $elt is Installed
|
|
elif [ $GENTOO -eq 0 ] && eix ^dev-python/py${elt}$ | grep "Installed.*[\" ]$PYTHON_MINOR" ; then
|
|
DBUG $PYVER py$elt is Installed
|
|
elif [ -e /usr/$LIB/python$PYTHON_MINOR/$elt ] ; then
|
|
[ $elt = sitecustomize ] && echo WHY?: in /usr/$LIB/python$PYTHON_MINOR/$elt && continue
|
|
echo "DEBUG: $PYVER $elt is in /usr/$LIB/python$PYTHON_MINOR/$elt"
|
|
# The python$PYVER -s is crucial - otherwise
|
|
# /root/.local/lib64/python2.7/site-packages precedes
|
|
# /usr/lib64/python2.7/site-packageson sys.path
|
|
elif python$PYVER -s -c "import $mod,os; print os.path.realpath($mod.__path__[0])" 2>/dev/null | grep /usr/$LIB/ ; then
|
|
echo "DEBUG: $PYVER $elt is in /usr/$LIB/"
|
|
else
|
|
echo "INFO: $PYTHON_MINOR Checked OK - $elt"
|
|
continue
|
|
fi
|
|
|
|
WARN "$PYTHON_MINOR deleting - $elt"
|
|
|
|
if [ -d $elt ] ; then
|
|
INFO rm -rf *${elt}* .*${elt}*
|
|
rm -rf *${elt}* .*${elt}*
|
|
elif file $elt | grep 'empty' ; then
|
|
INFO rm -rf ${elt}
|
|
rm -rf ${elt}
|
|
elif [ -f "$elt.py" ] ; then
|
|
INFO rm ${elt}.py*
|
|
rm ${elt}.py*
|
|
elif [ -f "$elt.pyo" ] || [ -f "$elt.pyc" ] ; then
|
|
INFO rm -f ${elt}.pyc ${elt}.pyo
|
|
rm -f ${elt}.pyc ${elt}.pyo
|
|
else
|
|
echo "ERROR: oddball not a dir or file $( file $elt ) - \"$elt\""
|
|
fi
|
|
done
|
|
# FixMe: these are missed and crucial
|
|
[ -f /usr/local/lib64/python$PYTHON_MINOR7/site-packages/pkg_resources/__init__.py -a \
|
|
-f /usr/lib64/python$PYTHON_MINOR/site-packages/pkg_resources/__init__.py ] &&
|
|
rm -rf /usr/local/lib64/python$PYTHON_MINOR/site-packages/pkg_resources/
|
|
/usr/local/bin/python$PYVER.sh -c 'from pkg_resources import ensure_directory, ContextualZipFile' || \
|
|
WARN "from pkg_resources import ensure_directory, ContextualZipFile "
|
|
done
|
|
|
|
cd /usr/local/bin
|
|
for file in * ; do
|
|
[ -x $file ] || continue
|
|
[ -e /usr/bin/$file -o -e /usr/sbin/$file -o -e /usr/bin/$file.py ] || continue
|
|
# ls -l /usr/bin/$file $file
|
|
root=$( basename $file .py )
|
|
[[ $file =~ .*2.py$ ]] && DBUG $file && continue
|
|
[[ $file =~ .*2$ ]] && DBUG $file && continue
|
|
if file $file | grep -q 'Python script' && head -2 $file | grep -q '/python2' ; then
|
|
[[ $file =~ .*.py$ ]] && INFO mv $file ${root}2.py && mv $file ${root}2.py && continue
|
|
[ -e /usr/bin/$file.py ] && INFO mv $file ${file}2 && mv $file ${file}2 &&z \
|
|
INFO ln -s /usr/bin/$file.py $file && ln -s /usr/bin/$file.py $file && continue
|
|
WARN $file not python ; continue
|
|
fi
|
|
INFO mv $file ${file}2; mv $file ${file}2
|
|
done
|
|
|
|
exit 0
|