diff options
| author | Hannu Nyman <hannu.nyman@iki.fi> | 2017-05-18 10:48:58 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-05-18 10:48:58 +0300 |
| commit | 675585a66f48d53b8f1f7308f19d606a5664f3a7 (patch) | |
| tree | 8ca48b5730d8762ef2c498ff9b62569d3d41ca59 /lang/python/python3/files/python3-package-install.sh | |
| parent | 5c8edf89482bd2a9d192faba8ab9ee4a9d71373d (diff) | |
| parent | 68312f49c0b4456e665ed438a86a44738caa765a (diff) | |
Merge pull request #4365 from commodo/python-groupping
python packages: move all things python under lang/python
Diffstat (limited to 'lang/python/python3/files/python3-package-install.sh')
| -rw-r--r-- | lang/python/python3/files/python3-package-install.sh | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/lang/python/python3/files/python3-package-install.sh b/lang/python/python3/files/python3-package-install.sh new file mode 100644 index 000000000..cc1005189 --- /dev/null +++ b/lang/python/python3/files/python3-package-install.sh @@ -0,0 +1,69 @@ +#!/bin/sh + +process_filespec() { + local src_dir="$1" + local dst_dir="$2" + local filespec="$3" + echo "$filespec" | ( + IFS='|' + while read fop fspec fperm; do + local fop=`echo "$fop" | tr -d ' \t\n'` + if [ "$fop" = "+" ]; then + if [ ! -e "${src_dir}${fspec}" ]; then + echo "File not found '${src_dir}${fspec}'" + exit 1 + fi + dpath=`dirname "$fspec"` + if [ -z "$fperm" ]; then + dperm=`stat -c "%a" ${src_dir}${dpath}` + fi + mkdir -p -m$dperm ${dst_dir}${dpath} + echo "copying: '$fspec'" + cp -fpR ${src_dir}${fspec} ${dst_dir}${dpath}/ + if [ -n "$fperm" ]; then + chmod -R $fperm ${dst_dir}${fspec} + fi + elif [ "$fop" = "-" ]; then + echo "removing: '$fspec'" + rm -fR ${dst_dir}${fspec} + elif [ "$fop" = "=" ]; then + echo "setting permissions: '$fperm' on '$fspec'" + chmod -R $fperm ${dst_dir}${fspec} + fi + done + ) +} + +src_dir="$1" +dst_dir="$2" +python="$3" +mode="$4" +filespec="$5" + +process_filespec "$src_dir" "$dst_dir" "$filespec" || { + echo "process filespec error-ed" + exit 1 +} + +if [ "$mode" == "sources" ] ; then + # Copy only python source files + find $dst_dir -not -name "*\.py" | xargs rm -f + # Delete empty folders (if the case) + find $dst_dir/usr -type d | xargs rmdir &> /dev/null + rmdir $dst_dir/usr &> /dev/null + exit 0 +fi + +# XXX [So that you won't goof as I did] +# Note: Yes, I tried to use the -O & -OO flags here. +# However the generated byte-codes were not portable. +# So, we just stuck to un-optimized byte-codes, +# which is still way better/faster than running +# Python sources all the time. +$python -m compileall -b -d '/' $dst_dir || { + echo "python -m compileall err-ed" + exit 1 +} +# Delete source files and pyc [ un-optimized bytecode files ] +# We may want to make this optimization thing configurable later, but not sure atm +find $dst_dir -name "*\.py" | xargs rm -f |
