From owner-freebsd-stable@FreeBSD.ORG Tue Feb 24 17:05:32 2009 Return-Path: Delivered-To: freebsd-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7F3E1106566C for ; Tue, 24 Feb 2009 17:05:32 +0000 (UTC) (envelope-from kutulu@kutulu.org) Received: from cdptpa-omtalb.mail.rr.com (cdptpa-omtalb.mail.rr.com [75.180.132.121]) by mx1.freebsd.org (Postfix) with ESMTP id 3BAE48FC12 for ; Tue, 24 Feb 2009 17:05:32 +0000 (UTC) (envelope-from kutulu@kutulu.org) Received: from basement.kutulu.org ([70.121.200.185]) by cdptpa-omta02.mail.rr.com with ESMTP id <20090224164440.CDIP18810.cdptpa-omta02.mail.rr.com@basement.kutulu.org>; Tue, 24 Feb 2009 16:44:40 +0000 Received: by basement.kutulu.org (Postfix, from userid 58) id 96EF811495; Tue, 24 Feb 2009 11:44:39 -0500 (EST) X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on basement.kutulu.org X-Spam-Level: X-Spam-Status: No, score=-4.4 required=5.0 tests=ALL_TRUSTED,BAYES_00 autolearn=ham version=3.2.5 Received: from [127.0.0.1] (localhost [127.0.0.1]) by basement.kutulu.org (Postfix) with ESMTPS id 7D27A1146C; Tue, 24 Feb 2009 11:44:37 -0500 (EST) Message-ID: <49A423F1.8050700@kutulu.org> Date: Tue, 24 Feb 2009 11:44:33 -0500 From: Mike Edenfield User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b3pre) Gecko/20081204 Thunderbird/3.0b1 MIME-Version: 1.0 To: Bruce Simpson References: <49A3FEE6.7030606@incunabulum.net> In-Reply-To: <49A3FEE6.7030606@incunabulum.net> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: freebsd-stable@freebsd.org Subject: Re: Cleaning unused libraries and rebuilding dependent ones? X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 24 Feb 2009 17:05:32 -0000 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