Merge pull request #4099 from dangowrt/freeradius3-ldap
[feed/packages.git] / lang / python / python / files / python-package-install.sh
1 #!/bin/sh
2
3 process_filespec() {
4 local src_dir="$1"
5 local dst_dir="$2"
6 local filespec="$3"
7 echo "$filespec" | (
8 IFS='|'
9 while read fop fspec fperm; do
10 local fop=`echo "$fop" | tr -d ' \t\n'`
11 if [ "$fop" = "+" ]; then
12 if [ ! -e "${src_dir}${fspec}" ]; then
13 echo "File not found '${src_dir}${fspec}'"
14 exit 1
15 fi
16 dpath=`dirname "$fspec"`
17 if [ -z "$fperm" ]; then
18 dperm=`stat -c "%a" ${src_dir}${dpath}`
19 fi
20 mkdir -p -m$dperm ${dst_dir}${dpath}
21 echo "copying: '$fspec'"
22 cp -fpR ${src_dir}${fspec} ${dst_dir}${dpath}/
23 if [ -n "$fperm" ]; then
24 chmod -R $fperm ${dst_dir}${fspec}
25 fi
26 elif [ "$fop" = "-" ]; then
27 echo "removing: '$fspec'"
28 rm -fR ${dst_dir}${fspec}
29 elif [ "$fop" = "=" ]; then
30 echo "setting permissions: '$fperm' on '$fspec'"
31 chmod -R $fperm ${dst_dir}${fspec}
32 fi
33 done
34 )
35 }
36
37 src_dir="$1"
38 dst_dir="$2"
39 python="$3"
40 mode="$4"
41 filespec="$5"
42
43 process_filespec "$src_dir" "$dst_dir" "$filespec" || {
44 echo "process filespec error-ed"
45 exit 1
46 }
47
48 if [ "$mode" == "sources" ] ; then
49 # Copy only python source files
50 find $dst_dir -not -name "*\.py" | xargs rm -f
51 # Delete empty folders (if the case)
52 find $dst_dir/usr -type d | xargs rmdir &> /dev/null
53 rmdir $dst_dir/usr &> /dev/null
54 exit 0
55 fi
56
57 # XXX [So that you won't goof as I did]
58 # Note: Yes, I tried to use the -O & -OO flags here.
59 # However the generated byte-codes were not portable.
60 # So, we just stuck to un-optimized byte-codes,
61 # which is still way better/faster than running
62 # Python sources all the time.
63 $python -m compileall -d '/' $dst_dir || {
64 echo "python -m compileall err-ed"
65 exit 1
66 }
67 # Delete source files and pyc [ un-optimized bytecode files ]
68 # We may want to make this optimization thing configurable later, but not sure atm
69 find $dst_dir -name "*\.py" | xargs rm -f
70