From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from pigeon.gentoo.org ([208.92.234.80] helo=lists.gentoo.org) by finch.gentoo.org with esmtp (Exim 4.60) (envelope-from ) id 1RDJfP-0003V5-W1 for garchives@archives.gentoo.org; Mon, 10 Oct 2011 17:29:32 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 1311D21C0E2; Mon, 10 Oct 2011 17:29:25 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id C20E421C0E2 for ; Mon, 10 Oct 2011 17:29:24 +0000 (UTC) Received: from pelican.gentoo.org (unknown [66.219.59.40]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 3ED7D1B400F for ; Mon, 10 Oct 2011 17:29:24 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by pelican.gentoo.org (Postfix) with ESMTP id 95F3880042 for ; Mon, 10 Oct 2011 17:29:23 +0000 (UTC) From: "Anthony G. Basile" To: gentoo-commits@lists.gentoo.org Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Anthony G. Basile" Message-ID: <9e60775a2f9e3b39abbc42cd7c27a42310cfdbfa.blueness@gentoo> Subject: [gentoo-commits] proj/elfix:master commit in: scripts/ X-VCS-Repository: proj/elfix X-VCS-Files: scripts/revdep-pax X-VCS-Directories: scripts/ X-VCS-Committer: blueness X-VCS-Committer-Name: Anthony G. Basile X-VCS-Revision: 9e60775a2f9e3b39abbc42cd7c27a42310cfdbfa Date: Mon, 10 Oct 2011 17:29:23 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: quoted-printable X-Archives-Salt: X-Archives-Hash: 4f5088ea87481b282d2b7c37a686b560 commit: 9e60775a2f9e3b39abbc42cd7c27a42310cfdbfa Author: Anthony G. Basile gentoo org> AuthorDate: Mon Oct 10 17:29:17 2011 +0000 Commit: Anthony G. Basile gentoo org> CommitDate: Mon Oct 10 17:29:17 2011 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/elfix.git;a=3D= commit;h=3D9e60775a scripts/revdep-pax: move option actions to functions --- scripts/revdep-pax | 111 +++++++++++++++++++++++++++++++++-------------= ------ 1 files changed, 71 insertions(+), 40 deletions(-) diff --git a/scripts/revdep-pax b/scripts/revdep-pax index e91a964..26334c7 100755 --- a/scripts/revdep-pax +++ b/scripts/revdep-pax @@ -16,7 +16,7 @@ def get_ldd_linkings(elf): return [] ldd_lines =3D ldd_output.split('\n') linkings =3D [] - mappings =3D [] + mappings =3D {} for m in range(0,len(ldd_lines)): if not re.search('=3D>', ldd_lines[m]): continue @@ -29,7 +29,7 @@ def get_ldd_linkings(elf): continue filename =3D os.path.realpath(filename) linkings.append(soname) - mappings.append([soname,filename]) + mappings[soname] =3D filename return ( linkings, mappings ) =20 =20 @@ -52,8 +52,7 @@ def get_forward_linkings(): elf =3D link[0] ( linkings, mappings ) =3D get_ldd_linkings(elf) forward_linkings[elf] =3D linkings=20 - for m in mappings: - so2filename_mappings[m[0]] =3D m[1] + so2filename_mappings.update(mappings) except: continue =20 @@ -140,10 +139,62 @@ def print_reverse_linkings( reverse_linkings, so2fi= lename_mappings ): def usage(): print 'TODO' =20 +def run_forward(): + ( forward_linkings, so2filename_mappings ) =3D get_forward_linkings() + print_forward_linkings( forward_linkings, so2filename_mappings ) + + +def run_reverse(): + ( forward_linkings, so2filename_mappings ) =3D get_forward_linkings() + reverse_linkings =3D invert_linkings( forward_linkings ) + print_reverse_linkings( reverse_linkings, so2filename_mappings ) + + +def run_binary(binary, verbose): + ( linkings, mappings ) =3D get_ldd_linkings(binary) + + binary_flags =3D pax.getflags(binary) + print binary, '(', binary_flags, ')' + + count =3D 0 + for soname in linkings: + try: + filename =3D mappings[soname] + soname_flags =3D pax.getflags(filename) + if verbose: + print '\t', soname, '\t', filename, '(', soname_flags, ')' + else: + if binary_flags !=3D soname_flags: + print '\t', soname, '\t',filename, '(', soname_flags, ')' + count =3D count + 1 + except: + print "file for soname %s not found" % soname + + if count =3D=3D 0: + print '\nNo mismatches' + + +def run_soname(soname, verbose): + ( forward_linkings, so2filename_mappings ) =3D get_forward_linkings() + reverse_linkings =3D invert_linkings( forward_linkings ) + linkings =3D reverse_linkings[soname] + library =3D so2filename_mappings[soname] + + flags =3D pax.getflags(library) + if verbose: + print soname, '\t', library, '(', flags, ')' + for binary in linkings: + try: + flags =3D pax.getflags(binary) + if verbose: + print '\t', binary, '(', flags, ')' + except: + print "cannot obtain pax flags for %s" % binary + =20 def main(): try: - opts, args =3D getopt.getopt(sys.argv[1:], 'hfrb:s:') + opts, args =3D getopt.getopt(sys.argv[1:], 'hfrb:s:v') except getopt.GetoptError, err: print str(err) # will print something like 'option -a not recognized' usage() @@ -153,16 +204,18 @@ def main(): usage() sys.exit(1) =20 + do_usage =3D False do_forward =3D False do_reverse =3D False + binary =3D None soname =3D None =20 + verbose =3D False =20 for o, a in opts: if o =3D=3D '-h': - usage() - sys.exit(1) + do_usage =3D True elif o =3D=3D '-f': do_forward =3D True elif o =3D=3D '-r': @@ -171,50 +224,28 @@ def main(): binary =3D a elif o =3D=3D '-s': soname =3D a + elif o =3D=3D '-v': + verbose =3D True else: print 'Option included in getopt but not handled here!' - usage() + print 'Please file a bug' sys.exit(1) =20 + + if do_usage: + run_usage() + if do_forward: - ( forward_linkings, so2filename_mappings ) =3D get_forward_linkings() - print_forward_linkings( forward_linkings, so2filename_mappings ) + run_forward() =20 if do_reverse: - ( forward_linkings, so2filename_mappings ) =3D get_forward_linkings() - reverse_linkings =3D invert_linkings( forward_linkings ) - print_reverse_linkings( reverse_linkings, so2filename_mappings ) + run_reverse() =20 if binary !=3D None: - ( forward_linkings, so2filename_mappings ) =3D get_forward_linkings() - linkings =3D forward_linkings[binary] - - flags =3D pax.getflags(binary) - print binary, '(', flags, ')' - for soname in linkings: - try: - filename =3D so2filename_mappings[soname] - flags =3D pax.getflags(filename) - print '\t', soname, '\t', filename, '(', flags, ')' - except: - print "file for soname %s not found" % soname + run_binary(binary, verbose) =20 if soname !=3DNone: - ( forward_linkings, so2filename_mappings ) =3D get_forward_linkings() - reverse_linkings =3D invert_linkings( forward_linkings ) - linkings =3D reverse_linkings[soname] - library =3D so2filename_mappings[soname] - - flags =3D pax.getflags(library) - print soname, '\t', library, '(', flags, ')' - for binary in linkings: - try: - flags =3D pax.getflags(binary) - print '\t', binary, '(', flags, ')' - except: - print "cannot obtain pax flags for %s" % binary - + run_soname(soname) =20 if __name__ =3D=3D '__main__': main() -