manually merge differences with the trunk
authorFabian Groffen <grobian@gentoo.org>
Mon, 12 May 2008 19:23:41 +0000 (19:23 -0000)
committerFabian Groffen <grobian@gentoo.org>
Mon, 12 May 2008 19:23:41 +0000 (19:23 -0000)
svn path=/main/branches/prefix/; revision=10307

pym/portage/cache/anydbm.py
pym/portage/cache/flat_hash.py
pym/portage/cache/metadata.py
pym/portage/cache/metadata_overlay.py

index 0a3be147043dcd4676dfabf87df39f0a07684868..47b8ac1bd4740305bd25788b0a18ff4931469227 100644 (file)
@@ -36,7 +36,6 @@ class database(fs_template.FsBased):
                        try:
                                self._ensure_dirs()
                                self._ensure_dirs(self._db_path)
-                               self._ensure_access(self._db_path)
                        except (OSError, IOError), e:
                                raise cache_errors.InitializationError(self.__class__, e)
 
@@ -44,8 +43,9 @@ class database(fs_template.FsBased):
                        try:
                                if self.__db == None:
                                        self.__db = anydbm_module.open(self._db_path, "c", self._perms)
-                       except andbm_module.error, e:
+                       except anydbm_module.error, e:
                                raise cache_errors.InitializationError(self.__class__, e)
+               self._ensure_access(self._db_path)
 
        def iteritems(self):
                return self.__db.iteritems()
@@ -61,7 +61,7 @@ class database(fs_template.FsBased):
                del self.__db[cpv]
 
        def __iter__(self):
-               return iter(self.__db)
+               return iter(self.__db.keys())
 
        def __contains__(self, cpv):
                return cpv in self.__db
index 106df6b46c372535d2a603a14bc56d6b0f0b986a..80b23fe4d149cdac267dca59d45dc5c1f351afa2 100644 (file)
@@ -71,9 +71,9 @@ class database(fs_template.FsBased):
                        else:
                                raise cache_errors.CacheCorruption(cpv, e)
 
-               for k, v in values.items():
+               for k, v in values.iteritems():
                        if k != "_mtime_" and (k == "_eclasses_" or k in self._known_keys):
-                               myf.writelines("%s=%s\n" % (k, v))
+                               myf.write("%s=%s\n" % (k, v))
 
                myf.close()
                self._ensure_access(fp, mtime=values["_mtime_"])
index c45164e717a99e0a2aa9e588038840f3d074185d..c32cffe57169d730796e6218c135fe69ffd02bbd 100644 (file)
@@ -53,9 +53,7 @@ class database(flat_hash.database):
                                                elif c == "_" or c.isdigit():
                                                        continue
                                                break
-                                       elif not c.isupper():
-                                               break
-                       
+
                                if not hashed:
                                        # non hashed.
                                        d.clear()
index dfa7050c4e77484ea79d719f9238a45d4b3ad162..13d12787e17e27d2733ae3a0457a050fe81d5b28 100644 (file)
@@ -47,17 +47,17 @@ class database(template.database):
                        return value
 
        def _setitem(self, name, values):
-               try:
-                       value_ro = self.db_ro[name]
-                       if self._are_values_identical(value_ro,values):
-                               # we have matching values in the underlying db_ro
-                               # so it is unnecessary to store data in db_rw
-                               try:
-                                       del self.db_rw[name] # delete unwanted whiteout when necessary
-                               except KeyError:
-                                       pass
-               except KeyError:
-                       self.db_rw[name] = values
+               value_ro = self.db_ro.get(name, None)
+               if value_ro is not None and \
+                       self._are_values_identical(value_ro, values):
+                       # we have matching values in the underlying db_ro
+                       # so it is unnecessary to store data in db_rw
+                       try:
+                               del self.db_rw[name] # delete unwanted whiteout when necessary
+                       except KeyError:
+                               pass
+                       return
+               self.db_rw[name] = values
 
        def _delitem(self, cpv):
                value = self[cpv] # validates whiteout and/or raises a KeyError when necessary