@@ -403,63 +403,92 @@ if [[ "${CONTINUE_SBUILD}" == "YES" ]]; then
403403 '
404404 # Remove Size0 Files
405405 find " ${SBUILD_OUTDIR} " -maxdepth 1 -type f -size 0 -delete 2> /dev/null
406- # Fix Desktop
407- find " ${SBUILD_OUTDIR} " -maxdepth 1 -type f -iname " *.desktop" -exec sed -E ' s/^[[:space:]]*[Ee]xec[[:space:]]*=[[:space:]]*[^[:space:]]+/Exec={{pkg_path}}/' -i " {}" \;
408- # Icons [Dwarfs Only]
409- unset DWARFS_PKGS ; DWARFS_PKGS=()
410- mapfile -t " DWARFS_PKGS" < <( find " ${SBUILD_OUTDIR} " -maxdepth 1 -type f -exec bash -c ' dwarfsck --input "$1" --quiet 2>/dev/null && realpath "$1"' _ " {}" \; )
411- if [[ ${# DWARFS_PKGS[@]} -ne 0 ]]; then
412- echo -e " \n[+] Extracting Media from ${SBUILD_PKG} (Dwarfs)"
413- if [[ -s " ${SBUILD_OUTDIR} /.DirIcon" ]]; then
414- rsync -achL " ${SBUILD_OUTDIR} /.DirIcon" " ${SBUILD_TMPDIR} /.DirIcon.bak"
415- fi
416- if [[ -s " ${SBUILD_OUTDIR} /${PKG} .png" ]]; then
417- rsync -achL " ${SBUILD_OUTDIR} /${PKG} .png" " ${SBUILD_TMPDIR} /${PKG} .png.bak"
418- fi
419- if [[ -s " ${SBUILD_OUTDIR} /${PKG} .svg" ]]; then
420- rsync -achL " ${SBUILD_OUTDIR} /${PKG} .svg" " ${SBUILD_TMPDIR} /${PKG} .svg.bak"
421- fi
422- pushd " ${SBUILD_TMPDIR} " & > /dev/null && \
423- for D_PKG in " ${DWARFS_PKGS[@]} " ; do
424- dwarfsextract -i " ${D_PKG} " --format=" ustar" | tar -x \
425- --dereference \
426- --no-anchored \
427- --overwrite \
428- --wildcards \
429- --wildcards-match-slash \
430- ' *.DirIcon' ' *.png' ' *.svg'
431- done
432- pushd " ${SBUILD_OUTDIR} " & > /dev/null
433- find -L " ${SBUILD_TMPDIR} " -type f,l -regex ' .*\.\(DirIcon\|png\)' \
434- -not -regex ' .*\(favicon\|/\(16x16\|22x22\|24x24\|32x32\|36x36\|48x48\|64x64\|72x72\|96x96\)/\).*' \
435- | awk ' {print length, $0}' | sort -n | awk ' NR==1 {print $2}' | xargs -I " {}" rsync -achLv " {}" " ${SBUILD_TMPDIR} /${PKG} .png"
436- if [[ ! -f " ${SBUILD_TMPDIR} /${PKG} .png" || $( stat -c%s " ${SBUILD_TMPDIR} /${PKG} .png" ) -le 3 ]]; then
437- find -L " ${SBUILD_TMPDIR} " -regex " .*\(128x128/apps\|256x256\)/.*${PKG} .*\.\(png\)" -printf " %s %p\n" -quit | sort -n | awk ' NR==1 {print $2}' | xargs -I " {}" rsync -achLv " {}" " ${SBUILD_OUTDIR} /${PKG} .png"
438- elif [[ -s " ${SBUILD_TMPDIR} /${PKG} .png" ]]; then
439- cp -fv " ${SBUILD_TMPDIR} /${PKG} .png" " ${SBUILD_OUTDIR} /${PKG} .png"
406+ # Exract Media [Dwarfs Only]
407+ if [[ " ${DWARFS_PKG_EXTRACT} " != " NO" ]]; then
408+ unset DWARFS_PKGS ; DWARFS_PKGS=()
409+ mapfile -t " DWARFS_PKGS" < <( find " ${SBUILD_OUTDIR} " -maxdepth 1 -type f -exec bash -c ' dwarfsck --input "$1" --quiet 2>/dev/null && realpath "$1"' _ " {}" \; )
410+ if [[ ${# DWARFS_PKGS[@]} -ne 0 ]]; then
411+ echo -e " \n[+] Extracting Media from ${SBUILD_PKG} (Dwarfs)"
412+ if [[ -s " ${SBUILD_OUTDIR} /${PKG} .appdata.xml" ]]; then
413+ rsync -achL " ${SBUILD_OUTDIR} /${PKG} .appdata.xml" " ${SBUILD_TMPDIR} /${PKG} .appdata.xml.bak"
440414 fi
441- if [[ ! -s " ${SBUILD_OUTDIR} /${PKG} .png" || $( stat -c%s " ${SBUILD_TMPDIR} /${PKG} .png" ) -le 3 ]]; then
442- if [[ -s " ${SBUILD_TMPDIR} /.DirIcon.bak" ]]; then
443- cp -fv " ${SBUILD_TMPDIR} /.DirIcon.bak" " ${SBUILD_OUTDIR} /.DirIcon"
444- fi
445- if [[ -s " ${SBUILD_TMPDIR} /${PKG} .png.bak" ]]; then
446- cp -fv " ${SBUILD_TMPDIR} /${PKG} .png.bak" " ${SBUILD_OUTDIR} /${PKG} .png"
447- fi
415+ if [[ -s " ${SBUILD_OUTDIR} /.DirIcon" ]]; then
416+ rsync -achL " ${SBUILD_OUTDIR} /.DirIcon" " ${SBUILD_TMPDIR} /.DirIcon.bak"
448417 fi
449- find -L " ${SBUILD_TMPDIR} " -type f,l -regex ' .*\.\(svg\)' \
450- -not -regex ' .*\(favicon\|/\(16x16\|22x22\|24x24\|32x32\|36x36\|48x48\|64x64\|72x72\|96x96\)/\).*' \
451- | awk ' {print length, $0}' | sort -n | awk ' NR==1 {print $2}' | xargs -I " {}" rsync -achLv " {}" " ${SBUILD_TMPDIR} /${PKG} .svg"
452- if [[ ! -f " ${SBUILD_TMPDIR} /${PKG} .svg" || $( stat -c%s " ${SBUILD_TMPDIR} /${PKG} .svg" ) -le 3 ]]; then
453- find -L " ${SBUILD_TMPDIR} " -regex " .*\(128x128/apps\|256x256\)/.*${PKG} .*\.\(svg\)" -printf " %s %p\n" -quit | sort -n | awk ' NR==1 {print $2}' | xargs -I " {}" rsync -achLv " {}" " ${SBUILD_OUTDIR} /${PKG} .svg"
454- elif [[ -s " ${SBUILD_TMPDIR} /${PKG} .svg" ]]; then
455- cp -fv " ${SBUILD_TMPDIR} /${PKG} .svg" " ${SBUILD_OUTDIR} /${PKG} .svg"
418+ if [[ -s " ${SBUILD_OUTDIR} /${PKG} .desktop" ]]; then
419+ rsync -achL " ${SBUILD_OUTDIR} /${PKG} .desktop" " ${SBUILD_TMPDIR} /${PKG} .desktop.bak"
456420 fi
457- if [[ ! -s " ${SBUILD_OUTDIR} /${PKG} .png" || $( stat -c%s " ${SBUILD_TMPDIR} /${PKG} .png" ) -le 3 ]]; then
458- if [[ -s " ${SBUILD_TMPDIR} /${PKG} .svg.bak" ]]; then
459- cp -fv " ${SBUILD_TMPDIR} /${PKG} .svg.bak" " ${SBUILD_OUTDIR} /${PKG} .svg"
460- fi
421+ if [[ -s " ${SBUILD_OUTDIR} /${PKG} .metainfo.xml" ]]; then
422+ rsync -achL " ${SBUILD_OUTDIR} /${PKG} .metainfo.xml" " ${SBUILD_TMPDIR} /${PKG} .metainfo.xml.bak"
423+ fi
424+ if [[ -s " ${SBUILD_OUTDIR} /${PKG} .png" ]]; then
425+ rsync -achL " ${SBUILD_OUTDIR} /${PKG} .png" " ${SBUILD_TMPDIR} /${PKG} .png.bak"
426+ fi
427+ if [[ -s " ${SBUILD_OUTDIR} /${PKG} .svg" ]]; then
428+ rsync -achL " ${SBUILD_OUTDIR} /${PKG} .svg" " ${SBUILD_TMPDIR} /${PKG} .svg.bak"
461429 fi
430+ pushd " ${SBUILD_TMPDIR} " & > /dev/null && \
431+ for D_PKG in " ${DWARFS_PKGS[@]} " ; do
432+ dwarfsextract -i " ${D_PKG} " --format=" ustar" | tar -x \
433+ --dereference \
434+ --no-anchored \
435+ --overwrite \
436+ --wildcards \
437+ --wildcards-match-slash \
438+ ' *.appdata.xml' ' *.desktop' ' *.DirIcon' ' *.metainfo.xml' ' *.png' ' *.svg' 2> /dev/null
439+ done
440+ pushd " ${SBUILD_OUTDIR} " & > /dev/null
441+ find -L " ${SBUILD_TMPDIR} " -type f,l -name " *.appdata.xml" -printf " %s %p\n" | awk ' BEGIN{matched=0}{lines[NR]=$0}tolower($2)~/share.*metainfo/{matches[NR]=1;matched=1}END{if(matched){for(i in matches)print lines[i]}else{for(i=1;i<=NR;i++)print lines[i]}}' | sort -n | awk ' NR==1 {print $2}' | xargs -I " {}" rsync -achLv " {}" " ${SBUILD_OUTDIR} /${PKG} .appdata.xml"
442+ if [[ ! -s " ${SBUILD_OUTDIR} /${PKG} .appdata.xml" || $( stat -c%s " ${SBUILD_OUTDIR} /${PKG} .appdata.xml" ) -le 3 ]]; then
443+ if [[ -s " ${SBUILD_TMPDIR} /${PKG} .appdata.xml.bak" ]]; then
444+ cp -fv " ${SBUILD_TMPDIR} /${PKG} .appdata.xml.bak" " ${SBUILD_OUTDIR} /${PKG} .appdata.xml"
445+ fi
446+ fi
447+ find -L " ${SBUILD_TMPDIR} " -type f,l -name " *.desktop" -printf " %s %p\n" | awk ' BEGIN{matched=0}{lines[NR]=$0}tolower($2)~/share.*application/{matches[NR]=1;matched=1}END{if(matched){for(i in matches)print lines[i]}else{for(i=1;i<=NR;i++)print lines[i]}}' | sort -n | awk ' NR==1 {print $2}' | xargs -I " {}" rsync -achLv " {}" " ${SBUILD_OUTDIR} /${PKG} .desktop"
448+ if [[ ! -s " ${SBUILD_OUTDIR} /${PKG} .desktop" || $( stat -c%s " ${SBUILD_OUTDIR} /${PKG} .desktop" ) -le 3 ]]; then
449+ if [[ -s " ${SBUILD_TMPDIR} /${PKG} .desktop.bak" ]]; then
450+ cp -fv " ${SBUILD_TMPDIR} /${PKG} .desktop.bak" " ${SBUILD_OUTDIR} /${PKG} .desktop"
451+ fi
452+ fi
453+ find -L " ${SBUILD_TMPDIR} " -type f,l -name " *.metainfo.xml" -printf " %s %p\n" | awk ' BEGIN{matched=0}{lines[NR]=$0}tolower($2)~/share.*metainfo/{matches[NR]=1;matched=1}END{if(matched){for(i in matches)print lines[i]}else{for(i=1;i<=NR;i++)print lines[i]}}' | sort -n | awk ' NR==1 {print $2}' | xargs -I " {}" rsync -achLv " {}" " ${SBUILD_OUTDIR} /${PKG} .metainfo.xml"
454+ if [[ ! -s " ${SBUILD_OUTDIR} /${PKG} .metainfo.xml" || $( stat -c%s " ${SBUILD_OUTDIR} /${PKG} .metainfo.xml" ) -le 3 ]]; then
455+ if [[ -s " ${SBUILD_TMPDIR} /${PKG} .metainfo.xml.bak" ]]; then
456+ cp -fv " ${SBUILD_TMPDIR} /${PKG} .metainfo.xml.bak" " ${SBUILD_OUTDIR} /${PKG} .metainfo.xml"
457+ fi
458+ fi
459+ find -L " ${SBUILD_TMPDIR} " -type f,l -regex ' .*\.\(DirIcon\|png\)' \
460+ -not -regex ' .*\(favicon\|/\(16x16\|22x22\|24x24\|32x32\|36x36\|48x48\|64x64\|72x72\|96x96\)/\).*' \
461+ | awk ' {print length, $0}' | sort -n | awk ' NR==1 {print $2}' | xargs -I " {}" rsync -achLv " {}" " ${SBUILD_TMPDIR} /${PKG} .png"
462+ if [[ ! -f " ${SBUILD_TMPDIR} /${PKG} .png" || $( stat -c%s " ${SBUILD_TMPDIR} /${PKG} .png" ) -le 3 ]]; then
463+ find -L " ${SBUILD_TMPDIR} " -regex " .*\(128x128/apps\|256x256\)/.*${PKG} .*\.\(png\)" -printf " %s %p\n" -quit | sort -n | awk ' NR==1 {print $2}' | xargs -I " {}" rsync -achLv " {}" " ${SBUILD_OUTDIR} /${PKG} .png"
464+ elif [[ -s " ${SBUILD_TMPDIR} /${PKG} .png" ]]; then
465+ cp -fv " ${SBUILD_TMPDIR} /${PKG} .png" " ${SBUILD_OUTDIR} /${PKG} .png"
466+ fi
467+ if [[ ! -s " ${SBUILD_OUTDIR} /${PKG} .png" || $( stat -c%s " ${SBUILD_TMPDIR} /${PKG} .png" ) -le 3 ]]; then
468+ if [[ -s " ${SBUILD_TMPDIR} /.DirIcon.bak" ]]; then
469+ cp -fv " ${SBUILD_TMPDIR} /.DirIcon.bak" " ${SBUILD_OUTDIR} /.DirIcon"
470+ fi
471+ if [[ -s " ${SBUILD_TMPDIR} /${PKG} .png.bak" ]]; then
472+ cp -fv " ${SBUILD_TMPDIR} /${PKG} .png.bak" " ${SBUILD_OUTDIR} /${PKG} .png"
473+ fi
474+ fi
475+ find -L " ${SBUILD_TMPDIR} " -type f,l -regex ' .*\.\(svg\)' \
476+ -not -regex ' .*\(favicon\|/\(16x16\|22x22\|24x24\|32x32\|36x36\|48x48\|64x64\|72x72\|96x96\)/\).*' \
477+ | awk ' {print length, $0}' | sort -n | awk ' NR==1 {print $2}' | xargs -I " {}" rsync -achLv " {}" " ${SBUILD_TMPDIR} /${PKG} .svg"
478+ if [[ ! -f " ${SBUILD_TMPDIR} /${PKG} .svg" || $( stat -c%s " ${SBUILD_TMPDIR} /${PKG} .svg" ) -le 3 ]]; then
479+ find -L " ${SBUILD_TMPDIR} " -regex " .*\(128x128/apps\|256x256\)/.*${PKG} .*\.\(svg\)" -printf " %s %p\n" -quit | sort -n | awk ' NR==1 {print $2}' | xargs -I " {}" rsync -achLv " {}" " ${SBUILD_OUTDIR} /${PKG} .svg"
480+ elif [[ -s " ${SBUILD_TMPDIR} /${PKG} .svg" ]]; then
481+ cp -fv " ${SBUILD_TMPDIR} /${PKG} .svg" " ${SBUILD_OUTDIR} /${PKG} .svg"
482+ fi
483+ if [[ ! -s " ${SBUILD_OUTDIR} /${PKG} .png" || $( stat -c%s " ${SBUILD_TMPDIR} /${PKG} .png" ) -le 3 ]]; then
484+ if [[ -s " ${SBUILD_TMPDIR} /${PKG} .svg.bak" ]]; then
485+ cp -fv " ${SBUILD_TMPDIR} /${PKG} .svg.bak" " ${SBUILD_OUTDIR} /${PKG} .svg"
486+ fi
487+ fi
488+ fi
462489 fi
490+ # Fix Desktop
491+ find " ${SBUILD_OUTDIR} " -maxdepth 1 -type f -iname " *.desktop" -exec sed -E ' s/^[[:space:]]*[Ee]xec[[:space:]]*=[[:space:]]*[^[:space:]]+/Exec={{pkg_path}}/' -i " {}" \;
463492 # Icons [Display using Chafa]
464493 if command -v chafa & > /dev/null; then
465494 timeout -k 10s 60s find -L " ${SBUILD_OUTDIR} " -maxdepth 1 -type f,l -regex ' .*\.\(DirIcon\|png\|svg\)' -exec bash -c ' basename "{}" && chafa "{}"' \;
0 commit comments