aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnthony G. Basile <blueness@gentoo.org>2011-10-05 22:20:09 -0400
committerAnthony G. Basile <blueness@gentoo.org>2011-10-08 14:53:27 -0400
commit2895c2b55d7ceb4e9ab6d202c786d8bfbf5b6c90 (patch)
tree3967ce50c2b90755755d38fefe79ab656595429e
parentpoc/paxctl-xattr.c: first working version (diff)
downloadelfix-2895c2b55d7ceb4e9ab6d202c786d8bfbf5b6c90.tar.gz
elfix-2895c2b55d7ceb4e9ab6d202c786d8bfbf5b6c90.tar.bz2
elfix-2895c2b55d7ceb4e9ab6d202c786d8bfbf5b6c90.zip
scripts/revdep-pax: python rewrite of revdep-paxmark
-rwxr-xr-xscripts/revdep-pax53
1 files changed, 53 insertions, 0 deletions
diff --git a/scripts/revdep-pax b/scripts/revdep-pax
new file mode 100755
index 0000000..75e833a
--- /dev/null
+++ b/scripts/revdep-pax
@@ -0,0 +1,53 @@
+#!/usr/bin/env python
+
+from os import listdir
+#from os import path
+import re
+
+var_db_pkg = '/var/db/pkg'
+
+binaries = {}
+for cat in listdir(var_db_pkg):
+ catdir = '%s/%s' % (var_db_pkg, cat)
+ for pkg in listdir(catdir):
+ pkgdir = '%s/%s' % (catdir, pkg)
+ need = '%s/%s' % (pkgdir, 'NEEDED')
+ try:
+ g = open(need, 'r')
+ needs = g.readlines()
+ for line in needs:
+ line = line.strip()
+ linking = re.split('\s', line)
+ binary = linking[0]
+ print binary
+ library_list = re.split(',', linking[1])
+ binaries[binary] = library_list
+ except:
+ break
+
+""" Print out mapping: binary -> library, library, library ...
+for binary in binaries:
+ print binary
+ for library in binaries[binary]:
+ print "\t", library
+"""
+
+libraries = {}
+for binary in binaries:
+ for library in binaries[binary]:
+ libraries[library] = []
+
+for binary in binaries:
+ for library in binaries[binary]:
+ libraries[library].append(binary)
+
+""" Print out mapping: library -> binary, binary, binary ...
+for library in libraries:
+ print library
+ for binary in libraries[library]:
+ print "\t", binary
+ #if not path.exists(binary):
+ # print "%s doesn't exist!" % binary
+"""
+
+