From: "Mike Frysinger (vapier)" <vapier@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] gentoo-projects commit in pax-utils: lddtree.py
Date: Thu, 15 Nov 2012 19:33:08 +0000 (UTC) [thread overview]
Message-ID: <20121115193309.041FC20C65@flycatcher.gentoo.org> (raw)
vapier 12/11/15 19:33:08
Modified: lddtree.py
Log:
lddtree.py: break ldpath setup out so other modules can use it, fix set handling in CompatibleELFs, and add some more documentation
Revision Changes Path
1.6 pax-utils/lddtree.py
file : http://sources.gentoo.org/viewvc.cgi/gentoo-projects/pax-utils/lddtree.py?rev=1.6&view=markup
plain: http://sources.gentoo.org/viewvc.cgi/gentoo-projects/pax-utils/lddtree.py?rev=1.6&content-type=text/plain
diff : http://sources.gentoo.org/viewvc.cgi/gentoo-projects/pax-utils/lddtree.py?r1=1.5&r2=1.6
Index: lddtree.py
===================================================================
RCS file: /var/cvsroot/gentoo-projects/pax-utils/lddtree.py,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- lddtree.py 13 Nov 2012 05:10:37 -0000 1.5
+++ lddtree.py 15 Nov 2012 19:33:08 -0000 1.6
@@ -2,7 +2,7 @@
# Copyright 2012 Gentoo Foundation
# Copyright 2012 Mike Frysinger <vapier@gentoo.org>
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-projects/pax-utils/lddtree.py,v 1.5 2012/11/13 05:10:37 vapier Exp $
+# $Header: /var/cvsroot/gentoo-projects/pax-utils/lddtree.py,v 1.6 2012/11/15 19:33:08 vapier Exp $
"""Read the ELF dependency tree and show it
@@ -50,7 +50,7 @@
Note the special handling as dictated by the ldso:
- Empty paths are equivalent to $PWD
- (TODO) $ORIGIN is expanded to the path of the given file
- - (TODO)
+ - (TODO) $LIB and friends
Args:
str_ldpath: A colon-delimited string of paths
@@ -114,6 +114,37 @@
return paths
+def LoadLdpaths(root='/'):
+ """Load linker paths from common locations
+
+ This parses the ld.so.conf and LD_LIBRARY_PATH env var.
+
+ Args:
+ root: The root tree to prepend to paths
+ Returns:
+ dict containing library paths to search
+ """
+ ldpaths = {
+ 'conf': [],
+ 'env': [],
+ 'interp': [],
+ }
+
+ # Load up $LD_LIBRARY_PATH.
+ ldpaths['env'] = []
+ env_ldpath = os.environ.get('LD_LIBRARY_PATH')
+ if not env_ldpath is None:
+ if root != '/':
+ warn('ignoring LD_LIBRARY_PATH due to ROOT usage')
+ else:
+ ldpaths['env'] = ParseLdPaths(env_ldpath)
+
+ # Load up /etc/ld.so.conf.
+ ldpaths['conf'] = ParseLdSoConf(root + 'etc/ld.so.conf', root=root)
+
+ return ldpaths
+
+
def CompatibleELFs(elf1, elf2):
"""See if two ELFs are compatible
@@ -134,10 +165,12 @@
return False
elif osabi1 != osabi2:
compat_sets = (
- frozenset('ELFOSABI_NONE', 'ELFOSABI_SYSV', 'ELFOSABI_LINUX'),
+ frozenset(['ELFOSABI_NONE', 'ELFOSABI_SYSV', 'ELFOSABI_LINUX']),
)
for cs in compat_sets:
- if (cs | osabi1) == (cs | osabi2):
+ cs1 = cs | set([osabi1])
+ cs2 = cs | set([osabi2])
+ if cs1 == cs2:
return True
return False
else:
@@ -169,8 +202,9 @@
"""Parse the ELF dependency tree of the specified file
Args:
- file:
- root:
+ file: The ELF to scan
+ root: The root tree to prepend to paths; this applies to interp and rpaths
+ only as |file| and |ldpaths| are expected to be prefixed already
ldpaths: dict containing library paths to search; should have the keys:
conf, env, interp
_first: Recursive use only; is this the first ELF ?
@@ -268,7 +302,7 @@
def _ShowVersion(_option, _opt, _value, _parser):
- id = '$Id: lddtree.py,v 1.5 2012/11/13 05:10:37 vapier Exp $'.split()
+ id = '$Id: lddtree.py,v 1.6 2012/11/15 19:33:08 vapier Exp $'.split()
print('%s-%s %s %s' % (id[1].split('.')[0], id[2], id[3], id[4]))
sys.exit(0)
@@ -391,24 +425,7 @@
if not files:
err('missing ELF files to scan')
- ldpaths = {
- 'conf': [],
- 'env': [],
- 'interp': [],
- }
-
- # Load up $LD_LIBRARY_PATH.
- ldpaths['env'] = []
- env_ldpath = os.environ.get('LD_LIBRARY_PATH')
- if not env_ldpath is None:
- if options.root != '/':
- warn('ignoring LD_LIBRARY_PATH due to ROOT usage')
- else:
- ldpaths['env'] = ParseLdPaths(env_ldpath)
-
- # Load up /etc/ld.so.conf.
- ldpaths['conf'] = ParseLdSoConf(options.root + 'etc/ld.so.conf', root=options.root)
-
+ ldpaths = LoadLdpaths(options.root)
if options.debug:
print('ldpaths[conf] =', ldpaths['conf'])
print('ldpaths[env] =', ldpaths['env'])
next reply other threads:[~2012-11-15 19:33 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-15 19:33 Mike Frysinger (vapier) [this message]
-- strict thread matches above, loose matches on Subject: below --
2014-11-20 1:22 [gentoo-commits] gentoo-projects commit in pax-utils: lddtree.py Mike Frysinger (vapier)
2014-11-20 1:17 Mike Frysinger (vapier)
2014-11-20 1:13 Mike Frysinger (vapier)
2014-08-01 2:20 Mike Frysinger (vapier)
2014-08-01 1:39 Mike Frysinger (vapier)
2014-07-30 14:35 Mike Frysinger (vapier)
2014-07-30 8:22 Mike Frysinger (vapier)
2014-07-30 4:34 Mike Frysinger (vapier)
2014-07-30 4:28 Mike Frysinger (vapier)
2014-07-30 4:16 Mike Frysinger (vapier)
2014-07-30 4:07 Mike Frysinger (vapier)
2014-07-30 4:06 Mike Frysinger (vapier)
2014-03-20 8:25 Mike Frysinger (vapier)
2014-03-20 8:18 Mike Frysinger (vapier)
2013-04-23 2:16 Mike Frysinger (vapier)
2013-04-22 22:02 Mike Frysinger (vapier)
2013-04-22 18:31 Mike Frysinger (vapier)
2013-04-05 22:26 Mike Frysinger (vapier)
2013-04-03 4:51 Mike Frysinger (vapier)
2013-03-28 17:14 Mike Frysinger (vapier)
2013-03-28 1:17 Mike Frysinger (vapier)
2013-03-28 0:58 Mike Frysinger (vapier)
2013-03-27 3:22 Mike Frysinger (vapier)
2013-03-27 3:20 Mike Frysinger (vapier)
2013-03-27 3:20 Mike Frysinger (vapier)
2013-03-27 3:07 Mike Frysinger (vapier)
2013-03-26 5:22 Mike Frysinger (vapier)
2013-03-26 5:03 Mike Frysinger (vapier)
2013-03-26 4:50 Mike Frysinger (vapier)
2013-03-25 22:35 Mike Frysinger (vapier)
2013-03-24 5:37 Mike Frysinger (vapier)
2013-03-24 5:27 Mike Frysinger (vapier)
2013-03-23 7:28 Mike Frysinger (vapier)
2013-03-21 22:55 Mike Frysinger (vapier)
2013-03-21 3:04 Mike Frysinger (vapier)
2013-03-21 3:03 Mike Frysinger (vapier)
2013-01-05 20:39 Mike Frysinger (vapier)
2012-12-14 4:22 Mike Frysinger (vapier)
2012-11-26 20:06 Mike Frysinger (vapier)
2012-11-24 19:44 Mike Frysinger (vapier)
2012-11-24 17:01 Mike Frysinger (vapier)
2012-11-24 16:54 Mike Frysinger (vapier)
2012-11-17 0:11 Mike Frysinger (vapier)
2012-11-16 23:53 Mike Frysinger (vapier)
2012-11-15 20:39 Mike Frysinger (vapier)
2012-11-15 20:28 Mike Frysinger (vapier)
2012-11-15 20:26 Mike Frysinger (vapier)
2012-11-13 5:10 Mike Frysinger (vapier)
2012-11-13 2:33 Mike Frysinger (vapier)
2012-11-12 23:08 Mike Frysinger (vapier)
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20121115193309.041FC20C65@flycatcher.gentoo.org \
--to=vapier@gentoo.org \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox