python-module.sh (3070B)
1# 2# This helper is for templates installing python modules. 3# 4 5do_build() { 6 : ${python_versions:="2.7 $py3_ver"} 7 local pyver= tmp_cflags="$CFLAGS" tmp_ldflags="$LDFLAGS" 8 9 for pyver in $python_versions; do 10 if [ -n "$CROSS_BUILD" ]; then 11 CFLAGS="$tmp_cflags" 12 LDFLAGS="$tmp_ldflags" 13 ADDENV= 14 15 PYPREFIX="$XBPS_CROSS_BASE" 16 CFLAGS+=" -I${XBPS_CROSS_BASE}/include/python${pyver} -I${XBPS_CROSS_BASE}/usr/include" 17 LDFLAGS+=" -L${XBPS_CROSS_BASE}/lib/python${pyver} -L${XBPS_CROSS_BASE}/usr/lib" 18 CC="${XBPS_CROSS_TRIPLET}-gcc -pthread $CFLAGS $LDFLAGS" 19 LDSHARED="${CC} -shared $LDFLAGS" 20 case $pyver in 21 3.*) 22 for f in ${XBPS_CROSS_BASE}/${py3_lib}/_sysconfigdata_*; do 23 f=${f##*/} 24 _PYTHON_SYSCONFIGDATA_NAME=${f%.py} 25 done 26 ADDENV+=" PYTHONPATH=${XBPS_CROSS_BASE}/${py3_lib}" 27 ADDENV+=" _PYTHON_SYSCONFIGDATA_NAME="$_PYTHON_SYSCONFIGDATA_NAME"" 28 esac 29 env CC="$CC" LDSHARED="$LDSHARED" $ADDENV \ 30 PYPREFIX="$PYPREFIX" CFLAGS="$CFLAGS" \ 31 LDFLAGS="$LDFLAGS" python${pyver} setup.py \ 32 build --build-base=build-${pyver} ${make_build_args} 33 else 34 python${pyver} setup.py build --build-base=build-${pyver} ${make_build_args} 35 fi 36 done 37} 38 39do_check() { 40 : ${python_versions:="2.7 $py3_ver"} 41 42 for pyver in $python_versions; do 43 ln -s build-${pyver} build 44 if [ -z "$make_check_target" ]; then 45 if ! python${pyver} setup.py --help test >/dev/null 2>&1; then 46 msg_warn "No command 'test' defined by setup.py for python${pyver}.\n" 47 rm build 48 return 0 49 fi 50 fi 51 52 python${pyver} setup.py ${make_check_target:-test} ${make_check_args} 53 rm build 54 done 55} 56 57do_install() { 58 : ${python_versions:="2.7 $py3_ver"} 59 local pyver= 60 61 for pyver in $python_versions; do 62 if [ -n "$CROSS_BUILD" ]; then 63 ADDENV= 64 PYPREFIX="$XBPS_CROSS_BASE" 65 CFLAGS+=" -I${XBPS_CROSS_BASE}/include/python${pyver} -I${XBPS_CROSS_BASE}/usr/include" 66 LDFLAGS+=" -L${XBPS_CROSS_BASE}/lib/python${pyver} -L${XBPS_CROSS_BASE}/usr/lib" 67 CC="${XBPS_CROSS_TRIPLET}-gcc -pthread $CFLAGS $LDFLAGS" 68 LDSHARED="${CC} -shared $LDFLAGS" 69 case $pyver in 70 3.*) 71 for f in ${XBPS_CROSS_BASE}/${py3_lib}/_sysconfigdata_*; do 72 f=${f##*/} 73 _PYTHON_SYSCONFIGDATA_NAME=${f%.py} 74 done 75 ADDENV+=" PYTHONPATH=${XBPS_CROSS_BASE}/${py3_lib}" 76 ADDENV+=" _PYTHON_SYSCONFIGDATA_NAME="$_PYTHON_SYSCONFIGDATA_NAME"" 77 esac 78 env CC="$CC" LDSHARED="$LDSHARED" $ADDENV \ 79 PYPREFIX="$PYPREFIX" CFLAGS="$CFLAGS" \ 80 LDFLAGS="$LDFLAGS" python${pyver} setup.py \ 81 build --build-base=build-${pyver} \ 82 install --prefix=/usr --root=${DESTDIR} ${make_install_args} 83 else 84 python${pyver} setup.py build --build-base=build-${pyver} \ 85 install --prefix=/usr --root=${DESTDIR} ${make_install_args} 86 fi 87 88 # Rename unversioned scripts to avoid name conflicts. 89 if [ -d ${DESTDIR}/usr/bin ]; then 90 find ${DESTDIR}/usr/bin -type f ! -name "*[[:digit:]]" | while IFS= read -r f _; do 91 mv "${f}" "${f}${pyver%.*}" 92 echo "[python-module] Unversioned script renamed to '${f#$DESTDIR}${pyver%.*}'" 93 done 94 fi 95 done 96}