public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
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'])





             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