summaryrefslogtreecommitdiff
path: root/lang/python
diff options
context:
space:
mode:
authorAlexandru Ardelean <ardeleanalex@gmail.com>2019-02-05 12:04:43 +0200
committerAlexandru Ardelean <ardeleanalex@gmail.com>2019-02-12 12:31:54 +0200
commit1bf7679211425bb0f63f22ce00c700c7d84eb2d4 (patch)
treea737ac0d6efc2c69152e9f5973fff9d8ab0fd458 /lang/python
parent14d0a9c58dc12c089c3d2209ebb1d9b37b68abad (diff)
python,python3: make deletion tolerant for paths with spaces
Piping to xargs does not handle spaces in paths too well, because it splits up the paths. For deleting empty dirs, we also need to do several retries, otherwise `find` will try to go through the directories after they're deleted. Signed-off-by: Alexandru Ardelean <ardeleanalex@gmail.com>
Diffstat (limited to 'lang/python')
-rw-r--r--lang/python/python-package-install.sh31
-rw-r--r--lang/python/python3/files/python3-package-pip.mk5
-rw-r--r--lang/python/python3/files/python3-package-setuptools.mk5
3 files changed, 25 insertions, 16 deletions
diff --git a/lang/python/python-package-install.sh b/lang/python/python-package-install.sh
index ae6f2ef77..30373751c 100644
--- a/lang/python/python-package-install.sh
+++ b/lang/python/python-package-install.sh
@@ -40,6 +40,17 @@ process_filespec() {
)
}
+delete_empty_dirs() {
+ local dst_dir="$1"
+ if [ -d "$dst_dir/usr" ] ; then
+ for _ in $(seq 1 10) ; do
+ find "$dst_dir/usr" -empty -type d -exec rmdir {} \; || continue
+ break
+ done
+ rmdir "$dst_dir/usr" || true
+ fi
+}
+
ver="$1"
src_dir="$2"
dst_dir="$3"
@@ -47,7 +58,7 @@ python="$4"
mode="$5"
filespec="$6"
-find "$src_dir" -name "*\.exe" | xargs rm -f
+find "$src_dir" -name "*\.exe" -exec rm -f {} \;
process_filespec "$src_dir" "$dst_dir" "$filespec" || {
echo "process filespec error-ed"
@@ -56,13 +67,9 @@ process_filespec "$src_dir" "$dst_dir" "$filespec" || {
if [ "$mode" == "sources" ] ; then
# Copy only python source files
- find $dst_dir -not -type d -not -name "*\.py" | xargs rm -f
+ find "$dst_dir" -not -type d -not -name "*\.py" -exec rm -f {} \;
- # Delete empty folders (if the case)
- if [ -d "$dst_dir/usr" ] ; then
- find $dst_dir/usr -type d | xargs rmdir --ignore-fail-on-non-empty
- rmdir --ignore-fail-on-non-empty $dst_dir/usr
- fi
+ delete_empty_dirs "$dst_dir"
exit 0
fi
@@ -75,19 +82,15 @@ legacy=
# 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 $legacy -d '/' $dst_dir || {
+$python -m compileall $legacy -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 -type f -name "*\.py" | xargs rm -f
+find "$dst_dir" -type f -name "*\.py" -exec rm -f {} \;
-# Delete empty folders (if the case)
-if [ -d "$dst_dir/usr" ] ; then
- find $dst_dir/usr -type d | xargs rmdir --ignore-fail-on-non-empty
- rmdir --ignore-fail-on-non-empty $dst_dir/usr
-fi
+delete_empty_dirs "$dst_dir"
exit 0
diff --git a/lang/python/python3/files/python3-package-pip.mk b/lang/python/python3/files/python3-package-pip.mk
index 1aaeaf2ee..8e209e139 100644
--- a/lang/python/python3/files/python3-package-pip.mk
+++ b/lang/python/python3/files/python3-package-pip.mk
@@ -21,7 +21,10 @@ define Package/python3-pip/install
$(PKG_BUILD_DIR)/install-pip/lib/python$(PYTHON3_VERSION)/site-packages/pip \
$(PKG_BUILD_DIR)/install-pip/lib/python$(PYTHON3_VERSION)/site-packages/pip-$(PYTHON3_PIP_VERSION).dist-info \
$(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages/
- find $(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages/ -name __pycache__ | xargs rm -rf
+ for _ in \$(seq 1 10) ; do \
+ find $(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages/ -name __pycache__ -exec rm -rf {} \; || continue ; \
+ break ; \
+ done
endef
$(eval $(call Py3BasePackage,python3-pip, \
diff --git a/lang/python/python3/files/python3-package-setuptools.mk b/lang/python/python3/files/python3-package-setuptools.mk
index c8415cbd9..472f5a620 100644
--- a/lang/python/python3/files/python3-package-setuptools.mk
+++ b/lang/python/python3/files/python3-package-setuptools.mk
@@ -24,7 +24,10 @@ define Py3Package/python3-setuptools/install
$(PKG_BUILD_DIR)/install-setuptools/lib/python$(PYTHON3_VERSION)/site-packages/setuptools-$(PYTHON3_SETUPTOOLS_VERSION).dist-info \
$(PKG_BUILD_DIR)/install-setuptools/lib/python$(PYTHON3_VERSION)/site-packages/easy_install.py \
$(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages
- find $(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages/ -name __pycache__ | xargs rm -rf
+ for _ in \$(seq 1 10) ; do \
+ find $(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages/ -name __pycache__ -exec rm -rf {} \; || continue ; \
+ break ; \
+ done
endef
$(eval $(call Py3BasePackage,python3-setuptools, \