From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from pigeon.gentoo.org ([69.77.167.62] helo=lists.gentoo.org) by finch.gentoo.org with esmtp (Exim 4.60) (envelope-from ) id 1KP27S-0006Px-V8 for garchives@archives.gentoo.org; Fri, 01 Aug 2008 21:25:03 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id F23ACE0323; Fri, 1 Aug 2008 21:25:01 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id 9DDBCE0323 for ; Fri, 1 Aug 2008 21:25:01 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp.gentoo.org (Postfix) with ESMTP id 47F9E655FA for ; Fri, 1 Aug 2008 21:25:01 +0000 (UTC) X-Virus-Scanned: amavisd-new at gentoo.org X-Spam-Score: -1.128 X-Spam-Level: X-Spam-Status: No, score=-1.128 required=5.5 tests=[AWL=1.471, BAYES_00=-2.599] Received: from smtp.gentoo.org ([127.0.0.1]) by localhost (smtp.gentoo.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id QTnpLolwHryA for ; Fri, 1 Aug 2008 21:24:50 +0000 (UTC) Received: from an-out-0708.google.com (an-out-0708.google.com [209.85.132.243]) by smtp.gentoo.org (Postfix) with ESMTP id C049F661B9 for ; Fri, 1 Aug 2008 21:24:49 +0000 (UTC) Received: by an-out-0708.google.com with SMTP id c3so232988ana.43 for ; Fri, 01 Aug 2008 14:24:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:sender :to:subject:cc:mime-version:content-type:content-transfer-encoding :content-disposition:x-google-sender-auth; bh=qEHum8KKQ5DoL4UZOl/LJVO0+u6+VAYM2A87Wdqsy7E=; b=QMfVr8xq/wtzQ4hPrcH1ewI1Q1SeJtYqy9IOpNquZXSdR2FE2C4ia+k2IhSP6ISZd5 srb41beL/MK0GrsZoBq16Ftrnf931gap4wz72Tu8G6h7pcRd3ypFPcDY0TQ5jVp81xvv hTA2d8nQRb6mj2zL5ctCPOuwpM0njnzZC+VoI= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:sender:to:subject:cc:mime-version:content-type :content-transfer-encoding:content-disposition:x-google-sender-auth; b=tSUhPZRQ4pF6zXJU2WcdxmzVFudB0kSsPW7ff5h95ky/lzzPRqhydI1nhkrQUxl4dT idcGkSiMRwToPL2mDQyrk9/z3Tk+k8EIwCzmcdb+oqVW5wEa0+hf6009n8CJ3tc7qcOZ 8VzM/HLoCIBJzA293MQk4+tHaYdGieSUDWIzk= Received: by 10.100.215.5 with SMTP id n5mr13516152ang.89.1217625888918; Fri, 01 Aug 2008 14:24:48 -0700 (PDT) Received: by 10.100.171.5 with HTTP; Fri, 1 Aug 2008 14:24:48 -0700 (PDT) Message-ID: Date: Fri, 1 Aug 2008 16:24:48 -0500 From: "Lucian Poston" Sender: lucian.poston@gmail.com To: gentoo-soc@lists.gentoo.org Subject: [gentoo-soc] Progress Report - Revdep-rebuild Cc: "Marius Mauch" Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-soc@lists.gentoo.org Reply-to: gentoo-soc@lists.gentoo.org MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Google-Sender-Auth: faad75d3a1a66555 X-Archives-Salt: 1e314451-e2b3-436a-b449-801b54315129 X-Archives-Hash: 9422419efab00b0fad037bcdb821014d A new method, listBrokenLibtoolLibraries, was added to MissingLibraryConsumerSet which basically checks that all dependencies in libtool libraries exist on the filesystem. It appears to work well. LinkageMap.listBrokenDependencies has been rewritten as LinkageMap.listBrokenBinaries in order to make the method more readable and more efficient. I implemented a cache within the method as a class to avoid multiple calls to os.path.isfile and os.path.realpath for the same file. I had another idea for filtering packages without using masks. Starting with the set of binaries in PATH variables and shared library directories, the providers of those binaries will be added to the set, and their providers will be added, etc. The resulting set will be the set of ancestors of the original binaries. This is implemented in LinkageMap.listProvidersForReachableBinaries (wonderful name, I know), but so far it has not worked well in testing. It misses binaries in various paths. For example, on my system it only finds about 2400 binaries (compare that to over 5000 that were found using the previous method). This new method is disabled for now until (if) I can get it to perform as well as LinkageMap.listBrokenBinaries. Lastly, the files have been integrated into 2.2_rc6, revdep.py is merged into libs.py, and patches have been added into the repository (I should have done this long ago :/ ). To test it out, you want to apply the two patches to /usr/lib/portage/pym/portage/dbapi/vartree.py and /usr/lib/portage/pym/portage/sets/libs.py in portage-2.2_rc6 and add the contents of sets.conf in the repository to /etc/portage/sets.conf. The goods are at http://repo.or.cz/w/revdep-rebuild-reimplementation.git?a=tree for anyone interested. Lucian