Date: Tue, 24 Feb 2009 11:44:33 -0500 From: Mike Edenfield <kutulu@kutulu.org> To: Bruce Simpson <bms@incunabulum.net> Cc: freebsd-stable@freebsd.org Subject: Re: Cleaning unused libraries and rebuilding dependent ones? Message-ID: <49A423F1.8050700@kutulu.org> In-Reply-To: <49A3FEE6.7030606@incunabulum.net> References: <49A3FEE6.7030606@incunabulum.net>
next in thread | previous in thread | raw e-mail | index | archive | help
On 2/24/2009 9:06 AM, Bruce Simpson wrote: > Hi all, > [1] revdep-rebuild has very similar semantics to what I'm looking for, > as it will navigate the dependency graph for all packages installed on > the system, and rebuild packages where dependent libraries have changed. > To do the same with portupgrade alone, I need to know which port(s) > contain shared libraries, and tell it to go off and rebuild these > *specific* packages if things change. I don't think revdep-rebuild works as cleanly as you think. Technically, revdep-rebuild only locates packages that are *already broken* due to missing shared libraries, and rebuilds them. What revdep-rebuild does is literally run ldd on every executable file in the search path, grep for either "not found" or a specific library name, then assign each broken binary to a package name for portage to rebuild. This is exactly what libchk also does, so the effect would be the same. Specifically, revdep-rebuild also won't pick up missing dlopen() libs and such. The semantics you're talking about sounds like the new @preserved-libs set that's in the upcoming portage, but in order for that to work it has to be maintained at the time of library update: as a shared lib is moved into the compat folder, record any packages that depend on the previously installed package into a set for later rebuilding. --K
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?49A423F1.8050700>