__save_ebuild_env: filter __repo_key
[portage.git] / bin / archive-conf
index 63ce9b2e3025addd23db26523c4a471f97c9cc86..f8efcb9be34220b6257ddeb0d6f9eefe0b3dd34b 100755 (executable)
@@ -1,7 +1,6 @@
 #!/usr/bin/python
-# Copyright 1999-2006 Gentoo Foundation
+# Copyright 1999-2013 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
-# $Id$
 
 #
 # archive-conf -- save off a config file in the dispatch-conf archive dir
 #  Jeremy Wohl's dispatch-conf script and the portage chkcontents script.
 #
 
-import os, sys
-try:
-    import portage
-except ImportError:
-       from os import path as osp
-       sys.path.insert(0, osp.join(osp.dirname(osp.dirname(osp.realpath(__file__))), "pym"))
-    import portage
+from __future__ import print_function
+
+import sys
 
-import dispatch_conf
+from os import path as osp
+pym_path = osp.join(osp.dirname(osp.dirname(osp.realpath(__file__))), "pym")
+sys.path.insert(0, pym_path)
+import portage
+portage._internal_caller = True
+
+import portage.dispatch_conf
+from portage import os
 
 FIND_EXTANT_CONTENTS  = "find %s -name CONTENTS"
 
@@ -31,21 +33,21 @@ except ImportError:
     import md5
     def md5_to_hex(md5sum):
         hexform = ""
-        for ix in xrange(len(md5sum)):
+        for ix in range(len(md5sum)):
             hexform = hexform + "%02x" % ord(md5sum[ix])
         return hexform.lower()
-    
+
     def perform_checksum(filename):
         f = open(filename, 'rb')
         blocksize=32768
         data = f.read(blocksize)
-        size = 0L
-        sum = md5.new()
+        size = 0
+        checksum = md5.new()
         while data:
-            sum.update(data)
+            checksum.update(data)
             size = size + len(data)
             data = f.read(blocksize)
-        return (md5_to_hex(sum.digest()),size)
+        return (md5_to_hex(checksum.digest()), size)
 
 def archive_conf():
     args = []
@@ -61,18 +63,19 @@ def archive_conf():
         md5_match_hash[conf] = ''
 
     # Find all the CONTENT files in VDB_PATH.
-    content_files += os.popen(FIND_EXTANT_CONTENTS % (portage.root+portage.VDB_PATH)).readlines()
+    with os.popen(FIND_EXTANT_CONTENTS % (os.path.join(portage.settings['EROOT'], portage.VDB_PATH))) as f:
+           content_files += f.readlines()
 
     # Search for the saved md5 checksum of all the specified config files
     # and see if the current file is unmodified or not.
     try:
         todo_cnt = len(args)
-        for file in content_files:
-            file = file.rstrip()
+        for filename in content_files:
+            filename = filename.rstrip()
             try:
-                contents = open(file, "r")
-            except IOError, e:
-                print >> sys.stderr, 'archive-conf: Unable to open %s: %s' % (file, e)
+                contents = open(filename, "r")
+            except IOError as e:
+                print('archive-conf: Unable to open %s: %s' % (filename, e), file=sys.stderr)
                 sys.exit(1)
             lines = contents.readlines()
             for line in lines:
@@ -86,8 +89,8 @@ def archive_conf():
                                 md5_match_hash[conf] = conf
                             todo_cnt -= 1
                             if todo_cnt == 0:
-                                raise "Break"
-    except "Break":
+                                raise StopIteration()
+    except StopIteration:
         pass
 
     for conf in args:
@@ -105,4 +108,4 @@ def archive_conf():
 if len(sys.argv) > 1:
     archive_conf()
 else:
-    print >> sys.stderr, 'Usage: archive-conf /CONFIG/FILE [/CONFIG/FILE...]'
+    print('Usage: archive-conf /CONFIG/FILE [/CONFIG/FILE...]', file=sys.stderr)