revdep-rebuild assumes the existence of md5sum, but this is part of Linux coreutils and is not on FreeBSD. There is a utility called "md5" that should be used in md5sum's absence, and if you give it the "-q" flag (which gives the checksum only), the formatting differences (for the sake of revdep-rebuild's use) should be no issue. I will attach a patch.
Created attachment 123391 [details, diff] files/gentoolkit-0.2.4_pre5-freebsd.patch Patch to use either md5sum or md5
Created attachment 123393 [details, diff] gentoolkit-0.2.4_pre5.ebuild New ebuild using patch
P.S. Please note my comment in the else statement in my patch. Not sure what to do if nothing is found... (shouldn't happen though)
Maybe "openssl md5" :P ? Btw i think it's an useless check since you HAVE md5sum or md5.
BSD folks, can you please test the rewritten revdep-rebuild in bug #184042? I tried to install a x86-bsd system under vmware server and it kept crashing the server, so I am unable to do any basic testing. The fix for this bug is included in that rewrite.
revdep-rebuild in gentoolkit-0.2.4_pre6 should have this issue resolved. Please reopen if that is not the case.
Paul, I'm reopening this bug and changing the summary, even though the problem is not md5sum anymore. Basically, the new revdep-rebuild doesn't work on fbsd (I thought it did before, since I did not have any broken libs, but now I do). I know of two issues, and I fixed these (I'll attach the patch). One is that you need to include /etc/init.d/functions.sh to get "eerror", etc. The other is that the find() function doesn't work correctly. I believe I fixed this, but now I still get no found broken libs (and there are ones that should be found), and I get an error during configuring search environment. Here's the output from the new version: --------- WARNING WARNING *** This is a rewritten version of revdep-rebuild *** WARNING WARNING WARNING Please report any bugs to http://bugs.gentoo.org WARNING WARNING In the bug report please include the following information: WARNING emerge --info WARNING A copy of the output from the revdep-rebuild command WARNING A copy of the .revdep-rebuild* files as an attachment WARNING WARNING If the bug is severe, the previous version of revdep-rebuild is located WARNING at: /usr/lib/gentoolkit/bin/revdep-rebuild WARNING WARNING WARNING *** This is a rewritten version of revdep-rebuild *** WARNING * Configuring search environment for rdr find: /root/.rdr.*: No such file or directory * Checking reverse dependencies * Packages containing binaries and libraries broken by a package update * will be emerged. * Collecting system binaries and libraries * Generated new /root/.rdr.1_files * Collecting complete LD_LIBRARY_PATH * Generated new /root/.rdr.2_ldpath * Checking dynamic linking consistency [ 100% ] * Dynamic linking on your system is consistent... All done. ---------- Here's the output from the old program: ---------- Configuring search environment for revdep-rebuild Checking reverse dependencies... Packages containing binaries and libraries broken by a package update will be emerged. Collecting system binaries and libraries... done. (/root/.revdep-rebuild.1_files) Collecting complete LD_LIBRARY_PATH... done. (/root/.revdep-rebuild.2_ldpath) Checking dynamic linking consistency... broken /usr/bin/dbus-binding-tool (requires libexpat.so.1) broken /usr/bin/dbus-daemon (requires libexpat.so.1) broken /usr/bin/gdb (requires libexpat.so.1) broken /usr/bin/gdbtui (requires libexpat.so.1) broken /usr/bin/wxrc-2.6 (requires libexpat.so.1) broken /usr/bin/xgettext (requires libexpat.so.1) broken /usr/lib/dri/i810_dri.so (requires libexpat.so.1) broken /usr/lib/dri/i915_dri.so (requires libexpat.so.1) broken /usr/lib/dri/i915tex_dri.so (requires libexpat.so.1) broken /usr/lib/dri/i965_dri.so (requires libexpat.so.1) broken /usr/lib/libwx_base_xml-2.6.so.0.3.1 (requires libexpat.so.1) broken /usr/lib/libwx_baseu_xml-2.6.so.0.3.1 (requires libexpat.so.1) broken /usr/lib/libwx_gtk2_gizmos_xrc-2.6.so.0.3.1 (requires libexpat.so.1) broken /usr/lib/libwx_gtk2u_gizmos_xrc-2.6.so.0.3.1 (requires libexpat.so.1) done. (/root/.revdep-rebuild.3_rebuild) Assigning files to packages... /usr/bin/dbus-binding-tool -> dev-libs/dbus-glib /usr/bin/dbus-daemon -> sys-apps/dbus /usr/bin/gdb -> sys-devel/gdb /usr/bin/gdbtui -> sys-devel/gdb /usr/bin/wxrc-2.6 -> x11-libs/wxGTK /usr/bin/xgettext -> sys-devel/gettext /usr/lib/dri/i810_dri.so -> media-libs/mesa /usr/lib/dri/i915_dri.so -> media-libs/mesa /usr/lib/dri/i915tex_dri.so -> media-libs/mesa /usr/lib/dri/i965_dri.so -> media-libs/mesa /usr/lib/libwx_base_xml-2.6.so.0.3.1 -> x11-libs/wxGTK /usr/lib/libwx_baseu_xml-2.6.so.0.3.1 -> x11-libs/wxGTK /usr/lib/libwx_gtk2_gizmos_xrc-2.6.so.0.3.1 -> x11-libs/wxGTK /usr/lib/libwx_gtk2u_gizmos_xrc-2.6.so.0.3.1 -> x11-libs/wxGTK done. (/root/.revdep-rebuild.4_packages_raw, /root/.revdep-rebuild.4_package_owners) Cleaning list of packages to rebuild... done. (/root/.revdep-rebuild.4_packages) Assigning packages to ebuilds... done. (/root/.revdep-rebuild.4_ebuilds) Evaluating package order... done. (/root/.revdep-rebuild.5_order) All prepared. Starting rebuild... emerge --oneshot -p =sys-devel/gettext-0.16.1-r1 =sys-devel/gdb-6.6-r2 =media-li bs/mesa-6.5.2-r1 =sys-apps/dbus-1.0.2-r2 =dev-libs/dbus-glib-0.73 =x11-libs/wxGT K-2.6.3.3 These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild R ] sys-devel/gettext-0.16.1-r1 [ebuild R ] sys-devel/gdb-6.6-r2 [ebuild R ] media-libs/mesa-6.5.2-r1 [ebuild R ] sys-apps/dbus-1.0.2-r2 [ebuild R ] dev-libs/dbus-glib-0.73 [ebuild R ] x11-libs/wxGTK-2.6.3.3 Now you can remove -p (or --pretend) from arguments and re-run revdep-rebuild.
Created attachment 126250 [details, diff] revdep-rebuild patch This patch fixes the find() function on non-Linux and adds a source of /etc/init.d/functions.sh. Still there are problems (see last comment).
Note that I have removed the ~x86-fbsd keyword until we resolve this.
$ svn commit -m "Add patch for find from bug #183657" Sending revdep-rebuild/revdep-rebuild-rewrite Transmitting file data . Committed revision 425. I've left the source /etc/init.d/functions.sh line out for now while I figure out the best way to handle it. The file is sourced, just not before some calls to ewarn, einfo, etc. It is not being sourced until the NOCOLOR preference is known. For the issue of it not finding the broken library, can you please attach all of the /root/.rdr* files?
OK, I have just run this again to capture the issue. With the old revdep-rebuild, I get the following, but with the new one, I get "Dynamic linking on your system is consistent... All done.". I will attach the /root/.rdr.* files from the new version momentarily. Checking dynamic linking consistency... broken /usr/bin/cancel (requires libgnutls.so.15) broken /usr/bin/cupstestdsc (requires libgnutls.so.15) broken /usr/bin/cupstestppd (requires libgnutls.so.15) broken /usr/bin/lp (requires libgnutls.so.15) broken /usr/bin/lpoptions (requires libgnutls.so.15) broken /usr/bin/lppasswd (requires libgnutls.so.15) broken /usr/bin/lpq (requires libgnutls.so.15) broken /usr/bin/lpr (requires libgnutls.so.15) broken /usr/bin/lprm (requires libgnutls.so.15) broken /usr/bin/lpstat (requires libgnutls.so.15) broken /usr/lib/libcups.so.2 (requires libgnutls.so.15) broken /usr/lib/libcupsimage.so.2 (requires libgnutls.so.15) broken /usr/lib/libgnomecups-1.0.so.1 (requires libgnutls.so.15) broken /usr/lib/libgnomeprint/2.18.0/modules/libgnomeprintcups.so (requires libgnutls.so.15) broken /usr/lib/libgnutls-extra.so.16 (requires libgnutls.so.15) broken /usr/lib/libgnutls-openssl.so.16 (requires libgnutls.so.15) broken /usr/libexec/cups/backend/ipp (requires libgnutls.so.15) broken /usr/libexec/cups/backend/lpd (requires libgnutls.so.15) broken /usr/libexec/cups/backend/parallel (requires libgnutls.so.15) broken /usr/libexec/cups/backend/scsi (requires libgnutls.so.15) broken /usr/libexec/cups/backend/serial (requires libgnutls.so.15) broken /usr/libexec/cups/backend/snmp (requires libgnutls.so.15) broken /usr/libexec/cups/backend/socket (requires libgnutls.so.15) broken /usr/libexec/cups/backend/usb (requires libgnutls.so.15) broken /usr/libexec/cups/cgi-bin/admin.cgi (requires libgnutls.so.15) broken /usr/libexec/cups/cgi-bin/classes.cgi (requires libgnutls.so.15) broken /usr/libexec/cups/cgi-bin/help.cgi (requires libgnutls.so.15) broken /usr/libexec/cups/cgi-bin/jobs.cgi (requires libgnutls.so.15) broken /usr/libexec/cups/cgi-bin/printers.cgi (requires libgnutls.so.15) broken /usr/libexec/cups/daemon/cups-deviced (requires libgnutls.so.15) broken /usr/libexec/cups/daemon/cups-driverd (requires libgnutls.so.15) broken /usr/libexec/cups/daemon/cups-lpd (requires libgnutls.so.15) broken /usr/libexec/cups/daemon/cups-polld (requires libgnutls.so.15) broken /usr/libexec/cups/filter/gziptoany (requires libgnutls.so.15) broken /usr/libexec/cups/filter/hpgltops (requires libgnutls.so.15) broken /usr/libexec/cups/filter/imagetops (requires libgnutls.so.15) broken /usr/libexec/cups/filter/imagetoraster (requires libgnutls.so.15) broken /usr/libexec/cups/filter/pstops (requires libgnutls.so.15) broken /usr/libexec/cups/filter/rastertoepson (requires libgnutls.so.15) broken /usr/libexec/cups/filter/rastertohp (requires libgnutls.so.15) broken /usr/libexec/cups/filter/rastertolabel (requires libgnutls.so.15) broken /usr/libexec/cups/filter/texttops (requires libgnutls.so.15) broken /usr/libexec/cups/monitor/bcp (requires libgnutls.so.15) broken /usr/libexec/cups/monitor/tbcp (requires libgnutls.so.15) broken /usr/libexec/cups/notifier/mailto (requires libgnutls.so.15) broken /usr/libexec/cups/notifier/testnotify (requires libgnutls.so.15) broken /usr/sbin/accept (requires libgnutls.so.15) broken /usr/sbin/cupsaddsmb (requires libgnutls.so.15) broken /usr/sbin/cupsd (requires libgnutls.so.15) broken /usr/sbin/lpadmin (requires libgnutls.so.15) broken /usr/sbin/lpc (requires libgnutls.so.15) broken /usr/sbin/lpinfo (requires libgnutls.so.15) broken /usr/sbin/lpmove (requires libgnutls.so.15) done. (/root/.revdep-rebuild.3_rebuild) Assigning files to packages... /usr/bin/cancel -> net-print/cups /usr/bin/cupstestdsc -> net-print/cups /usr/bin/cupstestppd -> net-print/cups /usr/bin/lp -> net-print/cups /usr/bin/lpoptions -> net-print/cups /usr/bin/lppasswd -> net-print/cups /usr/bin/lpq -> net-print/cups /usr/bin/lpr -> net-print/cups /usr/bin/lprm -> net-print/cups /usr/bin/lpstat -> net-print/cups /usr/lib/libcups.so.2 -> net-print/cups /usr/lib/libcupsimage.so.2 -> net-print/cups /usr/lib/libgnomecups-1.0.so.1 -> net-print/libgnomecups /usr/lib/libgnomeprint/2.18.0/modules/libgnomeprintcups.so -> gnome-base/libgnomeprint /usr/lib/libgnutls-extra.so.16 -> net-libs/gnutls /usr/lib/libgnutls-openssl.so.16 -> net-libs/gnutls /usr/libexec/cups/backend/ipp -> net-print/cups /usr/libexec/cups/backend/lpd -> net-print/cups /usr/libexec/cups/backend/parallel -> net-print/cups /usr/libexec/cups/backend/scsi -> net-print/cups /usr/libexec/cups/backend/serial -> net-print/cups /usr/libexec/cups/backend/snmp -> net-print/cups /usr/libexec/cups/backend/socket -> net-print/cups /usr/libexec/cups/backend/usb -> net-print/cups /usr/libexec/cups/cgi-bin/admin.cgi -> net-print/cups /usr/libexec/cups/cgi-bin/classes.cgi -> net-print/cups /usr/libexec/cups/cgi-bin/help.cgi -> net-print/cups /usr/libexec/cups/cgi-bin/jobs.cgi -> net-print/cups /usr/libexec/cups/cgi-bin/printers.cgi -> net-print/cups /usr/libexec/cups/daemon/cups-deviced -> net-print/cups /usr/libexec/cups/daemon/cups-driverd -> net-print/cups /usr/libexec/cups/daemon/cups-lpd -> net-print/cups /usr/libexec/cups/daemon/cups-polld -> net-print/cups /usr/libexec/cups/filter/gziptoany -> net-print/cups /usr/libexec/cups/filter/hpgltops -> net-print/cups /usr/libexec/cups/filter/imagetops -> net-print/cups /usr/libexec/cups/filter/imagetoraster -> net-print/cups /usr/libexec/cups/filter/pstops -> net-print/cups /usr/libexec/cups/filter/rastertoepson -> net-print/cups /usr/libexec/cups/filter/rastertohp -> net-print/cups /usr/libexec/cups/filter/rastertolabel -> net-print/cups /usr/libexec/cups/filter/texttops -> net-print/cups /usr/libexec/cups/monitor/bcp -> net-print/cups /usr/libexec/cups/monitor/tbcp -> net-print/cups /usr/libexec/cups/notifier/mailto -> net-print/cups /usr/libexec/cups/notifier/testnotify -> net-print/cups /usr/sbin/accept -> net-print/cups /usr/sbin/cupsaddsmb -> net-print/cups /usr/sbin/cupsd -> net-print/cups /usr/sbin/lpadmin -> net-print/cups /usr/sbin/lpc -> net-print/cups /usr/sbin/lpinfo -> net-print/cups /usr/sbin/lpmove -> net-print/cups done. (/root/.revdep-rebuild.4_packages_raw, /root/.revdep-rebuild.4_package_owners) Cleaning list of packages to rebuild... done. (/root/.revdep-rebuild.4_packages) Assigning packages to ebuilds... done. (/root/.revdep-rebuild.4_ebuilds) Evaluating package order... done. (/root/.revdep-rebuild.5_order) All prepared. Starting rebuild... emerge --oneshot -p =net-libs/gnutls-1.6.3 =net-print/cups-1.2.12 =net-print/libgnomecups-0.2.2 =gnome-base/libgnomeprint-2.18.0 These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild R ] net-libs/gnutls-1.6.3 [ebuild R ] net-print/cups-1.2.12 [ebuild R ] net-print/libgnomecups-0.2.2 [ebuild R ] gnome-base/libgnomeprint-2.18.0 Now you can remove -p (or --pretend) from arguments and re-run revdep-rebuild.
Created attachment 126545 [details] .rdr.0_env
Created attachment 126547 [details] .rdr.1_files
Created attachment 126549 [details] .rdr.2_ldpath
Created attachment 126551 [details] .rdr.3_ldd_errors
OK, I figured out what is going on. "grep" is crashing (core dump) on BSD. Note sure why yet, but it is caused by the fact that a lot of unnecessary lines are being fed to it in the following code (appears in two placees): REQUIRED_LIBS=$( expr='s/^[[:space:]]*NEEDED[[:space:]]*\([^[:space:]]*\).*/\1/p'; objdump -x "$target_file" | sed "$expr" | sort -u ) This can be fixed by adding another grep in the pipe so only lines containing "NEEDED" are used (although this might not be the most efficient way): REQUIRED_LIBS=$( expr='s/^[[:space:]]*NEEDED[[:space:]]*\([^[:space:]]*\).*/\1/p'; objdump -x "$target_file" | grep NEEDED | sed "$expr" | sort -u ) I will attach a patch to revdep-rebuild that includes this fix as well as the find() function fix. Note this patch does *not* include fixing the /etc/init.d/functions.sh (eerror) issue. Note that there are two other minor things I noticed: * Occasionally I get this: * Configuring search environment for rdr ./rdr: line 373: /var/tmp//sh-np-3507867373: Interrupted system call ( I don't know what is happening here, but it does not seem to affect the run) * The man page is out of date, which I noticed when trying to use -X (seems to be the default now, overridden by -e?)
Created attachment 126608 [details, diff] revdep-rebuild.patch Patch to fix problems on BSD, except for eerorr issue. See my notes above for other issues I noticed - I can file separate bugs if desired. And one more cosmetic things I noticed: The last line ("* Now you can remove -p (or --pretend) from arguments and re-run revdep-rebuild.") wraps to the next line...
Uhhh why objdump rather than scanelf to find the NEEDED values to begin with?
(In reply to comment #18) > Uhhh why objdump rather than scanelf to find the NEEDED values to begin with? > yeah that's what I was thinking too. With the -F flag to scanelf you can even control the output format yourself.
Created attachment 127131 [details] Current version from SVN Here is the current version from subversion. Please let me know what other issues you encounter. (eerror messages are not fixed, yet)
gentoolkit-0.2.4_pre7 includes the patches from this bug. Please test and let me know what else is broken. Additionally, since I have been unsuccessful with getting FreeBSD working under vmware-server, if anyone has a FreeBSD box that I can have access to, it would help me with getting any FreeBSD issues resolved quicker.
I have tested this with my FreeBSD box, and it appears to work. At least I don't see errors, and it counted from 0% to 100%, but since my system was already consistent, I guess it's not a "full" test... I don't have an always on-line fbsd box at the moment to share, but this could change in the future. Thanks for applying the patches!
Quick way to break something. Downgrade expat, then XML-Parser. Re-upgrade expat. After that run revdep-rebuild. It should pickup the XML-parser breakage and fix it.
OK, I did this, and it works great!
I'm seeing issues with the find function in revdep-rebuild under FreeBSD: # revdep-rebuild --keep-temp --library libexpat.so.6 --pretend ... * Assigning files to packages find: /var/db/pkg -name CONTENTS -print0: No such file or directory * !!! /usr/bin/xgettext not owned by any package is broken !!! * -n -e \n /usr/bin/xgettext -> (none) find: /var/db/pkg -name CONTENTS -print0: No such file or directory * !!! /usr/bin/xmlwf not owned by any package is broken !!! * -n -e \n /usr/bin/xmlwf -> (none) * Generated new /root/.revdep-rebuild_libexpat.so.6.4_packages_raw and /root/.revdep-rebuild_libexpat.so.6.4_package_owners * Found some broken files, but none of them were associated with known packages * Unable to proceed with automatic repairs. * The broken files are listed in /root/.revdep-rebuild_libexpat.so.6.4_package_owners The actual command getting executed by the function is: find '/var/db/pkg -name CONTENTS -print0' which doesn't work since it thinks the whole thing is a file name.
We have our own version of this now, closing.