From a870a1c95dfb545c650cf6ffcb1a0e1781f0d5fb Mon Sep 17 00:00:00 2001 From: classabbyamp Date: Sat, 14 Dec 2024 12:20:17 -0500 Subject: [PATCH] common/hooks/pre-pkg/04-generate-provides: generate cmd: provides for executables in /usr/bin and alternatives --- common/hooks/pre-pkg/04-generate-provides.sh | 34 ++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/common/hooks/pre-pkg/04-generate-provides.sh b/common/hooks/pre-pkg/04-generate-provides.sh index 451d506ed07..ecbb938c9e4 100644 --- a/common/hooks/pre-pkg/04-generate-provides.sh +++ b/common/hooks/pre-pkg/04-generate-provides.sh @@ -26,6 +26,38 @@ generate_pkgconfig_provides() { -exec pkg-config --print-provides {} \; 2>/dev/null | sed 's/^/pc:/; s/ = /-/' | sort -u } +generate_cmd_provides() { + find "${PKGDESTDIR}/usr/bin" -maxdepth 1 -type f -printf '%f\n' 2>/dev/null \ + | sed 's/^.*$/cmd:&-'"${version}_${revision}"'/' | sort -u +} + +generate_alt_cmd_provides() { + local _alt _group _symlink _target _path + for _alt in $alternatives; do + IFS=':' read -r _group _symlink _target <<< "$_alt" + case "$_symlink" in + /usr/bin/*) + echo "${_symlink##*/}" + ;; + /*) + # skip all other absolute paths + ;; + */*) + # relative path, resolve + _path="$(realpath -m "$_target/./$_symlink")" + if [ "${_path%/*}" = /usr/bin ]; then + echo "${_path##*/}" + fi + ;; + *) + if [ "${_target%/*}" = /usr/bin ]; then + echo "${_symlink}" + fi + ;; + esac + done | sed 's/^/cmd:/' +} + hook() { local -a _provides @@ -33,6 +65,8 @@ hook() { get_explicit_provides generate_python_provides generate_pkgconfig_provides + generate_cmd_provides + generate_alt_cmd_provides ) if [ "${#_provides[@]}" -gt 0 ]; then