mirror of
https://github.com/openwrt/packages.git
synced 2025-12-19 00:51:19 +00:00
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>
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user