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@lists.fedoraproject.org

To unsubscribe send an email to 
devel-leave@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.