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"...
$ 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
#!/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
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@xxxxxxxxxxxxxxxxxxxxxxx To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx 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@xxxxxxxxxxxxxxxxxxxxxxx