On Sat, 2020-05-09 at 10:34 -0500, Richard Shaw wrote:
After seeing multiple ways to find packages that need rebuilding
after a SONAME update and having asked once or twice for someone
(smarter than me) to document a best practice, I gave up on waiting
and took a shot at it:
I'm sure lots of improvements can be made but it "works"...
The problem is that we haven't a formula for all cases , if you don't
query source rpm you may not have the package in the repo by Exclude in
that arch .
Ff you query by devel package on source rpm, the devel package that you
are looking for may not be there because is pushed by some other
dependency
My preferred query is [1] , which is query for what requires package
name libs as described on [2]
[1]dnf --disablerepo='*'
--enablerepo=rawhide repoquery --available
--whatrequires foo-libs --alldeps --qf "%{sourcerpm}" --quiet | sed
's|\(-[^-]\+\)\{2\}src.rpm||' | sort -u
[2]
https://rpmfusion.org/ImportantDependencyLists
$ cat fed-needs-rebuilding
#!/bin/bash
provides=$(mktemp -t provides-XXXXXXXX)
requires=$(mktemp -t requires-XXXXXXXX)
# Need to figure out how to handle packages that generate lots of
subpackages.
#for pkg in $(dnf --repoid=rawhide list $1 | awk '{print $1}'); do
dnf repoquery --repoid=rawhide --provides $pkg >> $provides; done
# Determine the provides of the specified package
echo "Determining provides of package $1"
dnf -q repoquery --repoid=rawhide --provides $1 > $provides
sort -u -o $provides $provides
sed -i "/^bundled/d" $provides
echo "Found $(wc -l $provides | awk '{print $1}') provides to be
evaluated."
while read dep; do \
echo "Checking $dep"
dnf -q repoquery --repoid=rawhide --source --whatrequires
"$dep" >> $requires
done < $provides
sort -u -o $requires $requires
sed -i "/^$1/d" $requires
echo "The following packages need to be rebuilt:"
cat $requires
---
Example output:
$ ./fed-needs-rebuilding OpenImageIO
Determining provides of package OpenImageIO
Found 7 provides to be evaluated.
Checking libOpenImageIO.so.2.1
Checking libOpenImageIO.so.2.1()(64bit)
Checking libOpenImageIO_Util.so.2.1
Checking libOpenImageIO_Util.so.2.1()(64bit)
Checking OpenImageIO = 2.1.14.0-1.fc33
Checking OpenImageIO(x86-32) = 2.1.14.0-1.fc33
Checking OpenImageIO(x86-64) = 2.1.14.0-1.fc33
The following packages need to be rebuilt:
blender-2.82a-3.fc33.src.rpm
luxcorerender-2.3-2.fc33.src.rpm
OpenColorIO-1.1.1-7.fc33.src.rpm
Thanks,
Richard
_______________________________________________devel mailing list --
devel(a)lists.fedoraproject.org
To unsubscribe send an email to devel-leave(a)lists.fedoraproject.org
Fedora Code of Conduct:
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines:
https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives:
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org --
Sérgio M. B.