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 +}