From 232221efafdff49c30ed288f5a97d97b9bc006cd Mon Sep 17 00:00:00 2001 From: classabbyamp <void@placeviolette.net> Date: Tue, 3 Dec 2024 15:38:14 -0500 Subject: [PATCH] common/hooks: use file for managing provides python packages use this to automatically generate provides for each module installed by the package. --- common/hooks/do-pkg/00-gen-pkg.sh | 4 ++- common/hooks/pre-pkg/04-generate-provides.sh | 29 ++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 common/hooks/pre-pkg/04-generate-provides.sh diff --git a/common/hooks/do-pkg/00-gen-pkg.sh b/common/hooks/do-pkg/00-gen-pkg.sh index aa48214dc3a..06ff08b903b 100644 --- a/common/hooks/do-pkg/00-gen-pkg.sh +++ b/common/hooks/do-pkg/00-gen-pkg.sh @@ -40,6 +40,9 @@ genpkg() { if [ -s ${XBPS_STATEDIR}/${pkgname}${suffix}-shlib-provides ]; then _shprovides="$(<${XBPS_STATEDIR}/${pkgname}${suffix}-shlib-provides)" fi + if [ -s ${XBPS_STATEDIR}/${pkgname}${suffix}-provides ]; then + _provides="$(<${XBPS_STATEDIR}/${pkgname}${suffix}-provides)" + fi if [ -s ${XBPS_STATEDIR}/${pkgname}${suffix}-shlib-requires ]; then _shrequires="$(<${XBPS_STATEDIR}/${pkgname}${suffix}-shlib-requires)" fi @@ -48,7 +51,6 @@ genpkg() { fi # Stripping whitespaces - local _provides="$(echo $provides)" local _conflicts="$(echo $conflicts)" local _replaces="$(echo $replaces)" local _reverts="$(echo $reverts)" diff --git a/common/hooks/pre-pkg/04-generate-provides.sh b/common/hooks/pre-pkg/04-generate-provides.sh new file mode 100644 index 00000000000..f9c1a68e134 --- /dev/null +++ b/common/hooks/pre-pkg/04-generate-provides.sh @@ -0,0 +1,29 @@ +# vim: set ts=4 sw=4 et: +# +# This hook executes the following tasks: +# - Generates provides file with provides entries for xbps-create(1) + +generate_python_provides() { + local py3_bin="${XBPS_MASTERDIR}/usr/bin/python3" + + if [ -z "$nopyprovides" ] && [ -d "${PKGDESTDIR}/${py3_sitelib}" ] && [ -x "${py3_bin}" ]; then + PYTHONPATH="${XBPS_MASTERDIR}/${py3_sitelib}-bootstrap" "${py3_bin}" \ + "${XBPS_COMMONDIR}"/scripts/parse-py-metadata.py \ + -S "${PKGDESTDIR}/${py3_sitelib}" -v "${pkgver}" provides + fi +} + +hook() { + local -a _provides=() + + # include explicit values from the template + read -r -a _provides <<< "$provides" + + # get the canonical python package names for each python module + mapfile -t _provides -O "${#_provides[@]}" < <( generate_python_provides ) + + if [ "${#_provides[@]}" -gt 0 ]; then + echo " ${_provides[*]}" + echo "${_provides[*]}" > "${XBPS_STATEDIR}/${pkgname}-provides" + fi +}