--- a/usr/lib/rpm/gir-python.req +++ b/usr/lib/rpm/gir-python.req @@ -21,9 +21,18 @@ . /usr/lib/rpm/rpm-build-gir.functions keyword=".*from[[:space:]]*gi.repository[[:space:]]*import" +# print "Name Version" pairs from gi.require_version("Name", "Version") calls +PyGiVersions() +{ + grep -E -o "require_version[[:space:]]*\\([[:space:]]*[\"'][A-Za-z0-9_]+[\"'][[:space:]]*,[[:space:]]*[\"'][0-9.]+[\"']" "$1" | + sed -e "s/^require_version[[:space:]]*([[:space:]]*[\"']\\([A-Za-z0-9_]*\\)[\"'][[:space:]]*,[[:space:]]*[\"']\\([0-9.]*\\)[\"']/\\1 \\2/" | + sort -u +} + PyGiReq() { - local f="$1" out=; shift + local f="$1" out= versions=; shift + versions="$(PyGiVersions "$f")" || versions= out="$(cat "$f" | grep -E -o "$keyword[[:space:]]*[A-Za-z0-9 ,]*" | sed -e ' s:'"$keyword"'\([A-Za-z ,]*\):\1: s: as .*:: @@ -47,7 +56,14 @@ if [ $1 = Peas ]; then echo "libpeas-python3-loader" fi - echo "typelib($1)" + # use the version from gi.require_version() if it is unambiguous + local ver + ver="$(printf '%s\n' "$versions" | sed -n "s/^$1 //p")" + if [ -n "$ver" ] && [ "$(printf '%s\n' "$ver" | wc -l)" = 1 ]; then + echo "typelib($1) = $ver" + else + echo "typelib($1)" + fi done done --- a/usr/lib/rpm/rpm-build-gir.functions +++ b/usr/lib/rpm/rpm-build-gir.functions @@ -25,7 +25,9 @@ while read req; do if [ -n "${RPM_TYPELIB_REQ_SKIPLIST-}" ]; then for skip in $RPM_TYPELIB_REQ_SKIPLIST; do - if [ -z "${req##$skip}" ]; then + # versioned reqs look like "typelib(Foo) = 1.0": match the name too + name="${req%% *}" + if [ -z "${req##$skip}" ] || [ -z "${name##$skip}" ]; then Debug "skipped $req due to RPM_TYPELIB_REQ_SKIPLIST pattern $skip" continue 2 fi