From ea1de47bea337f578754db7ce21c1bbd69701f7a Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Fri, 7 Nov 2008 21:52:48 +0000 Subject: Handle a potential OSError that occurs if the scanelf binary is missing when LinkageMap.rebuild() is called. svn path=/main/trunk/; revision=11825 --- pym/portage/dbapi/vartree.py | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py index cce5b69f0..5d6e8f578 100644 --- a/pym/portage/dbapi/vartree.py +++ b/pym/portage/dbapi/vartree.py @@ -278,20 +278,26 @@ class LinkageMap(object): for items in self._dbapi.plib_registry.getPreservedLibs().values(): args.extend(os.path.join(root, x.lstrip("." + os.sep)) \ for x in items) - proc = subprocess.Popen(args, stdout=subprocess.PIPE) - for l in proc.stdout: - l = l[3:].rstrip("\n") - if not l: - continue - fields = l.split(";") - if len(fields) < 5: - writemsg_level("\nWrong number of fields " + \ - "returned from scanelf: %s\n\n" % (l,), - level=logging.ERROR, noiselevel=-1) - continue - fields[1] = fields[1][root_len:] - lines.append(";".join(fields)) - proc.wait() + try: + proc = subprocess.Popen(args, stdout=subprocess.PIPE) + except EnvironmentError, e: + writemsg_level("\nUnable to execute %s: %s\n\n" % (args[0], e), + level=logging.ERROR, noiselevel=-1) + del e + else: + for l in proc.stdout: + l = l[3:].rstrip("\n") + if not l: + continue + fields = l.split(";") + if len(fields) < 5: + writemsg_level("\nWrong number of fields " + \ + "returned from scanelf: %s\n\n" % (l,), + level=logging.ERROR, noiselevel=-1) + continue + fields[1] = fields[1][root_len:] + lines.append(";".join(fields)) + proc.wait() for l in lines: l = l.rstrip("\n") -- cgit v1.2.3-1-g7c22