[Pkg-bazaar-commits] ./bzr-builddeb/trunk.old r258: Also record the native status in the working tree when using DistributionBranch.

James Westby jw+debian at jameswestby.net
Wed Dec 10 08:32:59 UTC 2008


------------------------------------------------------------
revno: 258
committer: James Westby <jw+debian at jameswestby.net>
branch nick: 2.0
timestamp: Wed 2008-08-27 20:52:16 +0100
message:
  Also record the native status in the working tree when using DistributionBranch.
modified:
  import_dsc.py
  tests/test_import_dsc.py
-------------- next part --------------
=== modified file 'import_dsc.py'
--- a/import_dsc.py	2008-08-27 17:38:37 +0000
+++ b/import_dsc.py	2008-08-27 19:52:16 +0000
@@ -1184,6 +1184,34 @@
         self.upstream_branch.tags.set_tag(tag_name,
                 self.upstream_branch.last_revision())
 
+    def _default_config_for_tree(self, tree):
+        # FIXME: shouldn't go to configobj directly
+        path = '.bzr-builddeb/default.conf'
+        c_fileid = tree.path2id(path)
+        config = None
+        if c_fileid is not None:
+            tree.lock_read()
+            try:
+                config = ConfigObj(tree.get_file(c_fileid, path))
+                try:
+                    config['BUILDDEB']
+                except KeyError:
+                    config['BUILDDEB'] = {}
+            finally:
+                tree.unlock()
+        return config
+
+
+    def _is_tree_native(self, tree):
+        config = self._default_config_for_tree(tree)
+        if config is not None:
+            try:
+                current_value = config['BUILDDEB']['native']
+            except KeyError:
+                current_value = False
+            return current_value == "True"
+        return False
+
     def is_version_native(self, version):
         """Determines whether the given version is native.
 
@@ -1193,6 +1221,9 @@
             imported, False otherwise.
         """
         revid = self.revid_of_version(version)
+        rev_tree = self.branch.repository.revision_tree(revid)
+        if self._is_tree_native(rev_tree):
+            return True
         rev = self.branch.repository.get_revision(revid)
         try:
             prop = rev.properties["deb-native"]
@@ -1522,6 +1553,52 @@
               sep = "\n"
         return (message, author)
 
+    def _mark_native_config(self, native):
+        poss_native_tree = self.branch.repository.revision_tree(
+                self.branch.last_revision())
+        current_native = self._is_tree_native(poss_native_tree)
+        current_config = self._default_config_for_tree(poss_native_tree)
+        dirname = os.path.join(self.tree.basedir,
+                '.bzr-builddeb')
+        if current_config is not None:
+            # Add that back to the current tree
+            os.mkdir(dirname)
+            current_config.filename = os.path.join(dirname,
+                    'default.conf')
+            current_config.write()
+            dir_id = poss_native_tree.path2id('.bzr-builddeb')
+            file_id = poss_native_tree.path2id(
+                    '.bzr-builddeb/default.conf')
+            self.tree.add(['.bzr-builddeb/',
+                    '.bzr-builddeb/default.conf'],
+                    ids=[dir_id, file_id])
+        if native != current_native:
+            if current_config is None:
+                needs_add = True
+                if native:
+                    current_config = ConfigObj()
+                    current_config['BUILDDEB'] = {}
+            if current_config is not None:
+                if native:
+                    current_config['BUILDDEB']['native'] = True
+                else:
+                    del current_config['BUILDDEB']['native']
+                    if len(current_config['BUILDDEB']) == 0:
+                        del current_config['BUILDDEB']
+                if len(current_config) == 0:
+                    self.tree.remove(['.bzr-builddeb',
+                            '.bzr-builddeb/default.conf'],
+                            keep_files=False)
+                else:
+                    if needs_add:
+                        os.mkdir(dirname)
+                    current_config.filename = os.path.join(dirname,
+                            'default.conf')
+                    current_config.write()
+                    if needs_add:
+                        self.tree.add(['.bzr-builddeb/',
+                                '.bzr-builddeb/default.conf'])
+
     def import_debian(self, debian_part, version, parents, md5,
             native=False):
         """Import the debian part of a source package.
@@ -1578,6 +1655,7 @@
         revprops={"deb-md5":md5}
         if native:
             revprops['deb-native'] = "True"
+        self._mark_native_config(native)
         self.tree.commit(message, author=author, revprops=revprops)
         self.tag_version(version)
 
@@ -1857,7 +1935,7 @@
                 # FIXME: should use upstream_parents()?
                 parents = []
                 if self.upstream_branch.last_revision() != NULL_REVISION:
-                    parents = [self.branch.last_revision()]
+                    parents = [self.upstream_branch.last_revision()]
                 self.import_upstream(tarball_dir, version, md5sum,
                         parents)
             finally:

=== modified file 'tests/test_import_dsc.py'
--- a/tests/test_import_dsc.py	2008-07-30 15:10:40 +0000
+++ b/tests/test_import_dsc.py	2008-08-27 19:52:16 +0000
@@ -2242,6 +2242,8 @@
         self.db1.tag_version(version1)
         self.tree1.commit("two", revprops={'deb-native': "True"})
         self.db1.tag_version(version2)
+        self.tree1.lock_read()
+        self.addCleanup(self.tree1.unlock)
         self.assertFalse(self.db1.is_version_native(version1))
         self.assertTrue(self.db1.is_version_native(version2))
 
@@ -2255,7 +2257,11 @@
         up_rh1 = self.up_tree1.branch.revision_history()
         self.assertEqual(len(rh1), 1)
         self.assertEqual(len(up_rh1), 0)
+        self.tree1.lock_read()
+        self.addCleanup(self.tree1.unlock)
         self.assertTrue(self.db1.is_version_native(version))
+        revtree = self.tree1.branch.repository.revision_tree(rh1[0])
+        self.assertTrue(self.db1._is_tree_native(revtree))
 
     def test_import_native_two(self):
         version1 = Version("1.0")
@@ -2285,6 +2291,8 @@
                 modified=["debian/changelog", "COPYING"])
         self.assertEqual(self.db1.revid_of_version(version1), rh1[0])
         self.assertEqual(self.db1.revid_of_version(version2), rh1[1])
+        self.tree1.lock_read()
+        self.addCleanup(self.tree1.unlock)
         self.assertTrue(self.db1.is_version_native(version1))
         self.assertTrue(self.db1.is_version_native(version2))
 
@@ -2313,6 +2321,8 @@
                 modified=["README", "debian/changelog"])
         self.assertEqual(self.db1.revid_of_version(version1), rh1[0])
         self.assertEqual(self.db1.revid_of_version(version2), rh1[1])
+        self.tree1.lock_read()
+        self.addCleanup(self.tree1.unlock)
         self.assertTrue(self.db1.is_version_native(version1))
         self.assertTrue(self.db1.is_version_native(version2))
 
@@ -2342,10 +2352,13 @@
         self.assertEqual(rev_tree1.get_parent_ids(), [rh1[0]])
         self.assertEqual(rev_tree2.get_parent_ids(), [rh1[1]])
         self.check_changes(rev_tree2.changes_from(rev_tree1),
-                added=["NEWS"], removed=["BUGS"],
-                modified=["debian/changelog", "COPYING"])
+                added=["NEWS", ".bzr-builddeb/",
+                    ".bzr-builddeb/default.conf"],
+                removed=["BUGS"], modified=["debian/changelog", "COPYING"])
         self.assertEqual(self.db1.revid_of_version(version1), rh1[1])
         self.assertEqual(self.db1.revid_of_version(version2), rh1[2])
+        self.tree1.lock_read()
+        self.addCleanup(self.tree1.unlock)
         self.assertFalse(self.db1.is_version_native(version1))
         self.assertTrue(self.db1.is_version_native(version2))
 
@@ -2378,18 +2391,23 @@
         self.assertEqual(rev_tree2.get_parent_ids(), [rh1[0], up_rh1[1]])
         self.assertEqual(up_rev_tree1.get_parent_ids(), [rh1[0]])
         self.check_changes(rev_tree2.changes_from(rev_tree1),
-                added=["NEWS"], removed=["BUGS"],
+                added=["NEWS"],
+                removed=["BUGS", ".bzr-builddeb/",
+                    ".bzr-builddeb/default.conf"],
                 modified=["debian/changelog", "COPYING"])
         self.check_changes(up_rev_tree1.changes_from(rev_tree1),
                 added=["NEWS"],
                 removed=["debian/", "debian/changelog", "debian/control",
-                        "BUGS", "README"],
+                        "BUGS", "README", ".bzr-builddeb/",
+                        ".bzr-builddeb/default.conf"],
                 modified=["COPYING"])
         self.check_changes(rev_tree2.changes_from(up_rev_tree1),
                 added=["debian/", "debian/changelog", "debian/control",
                 "README"])
         self.assertEqual(self.db1.revid_of_version(version1), rh1[0])
         self.assertEqual(self.db1.revid_of_version(version2), rh1[1])
+        self.tree1.lock_read()
+        self.addCleanup(self.tree1.unlock)
         self.assertTrue(self.db1.is_version_native(version1))
         self.assertFalse(self.db1.is_version_native(version2))
 
@@ -2430,6 +2448,8 @@
         self.assertEqual(self.db1.revid_of_version(version3), rh1[3])
         self.assertEqual(self.db1.revid_of_upstream_version(version1),
                 up_rh1[0])
+        self.tree1.lock_read()
+        self.addCleanup(self.tree1.unlock)
         self.assertFalse(self.db1.is_version_native(version1))
         self.assertTrue(self.db1.is_version_native(version2))
         self.assertFalse(self.db1.is_version_native(version3))
@@ -2481,6 +2501,8 @@
                 up_rh1[0])
         self.assertEqual(self.db1.revid_of_upstream_version(version3),
                 up_rh1[1])
+        self.tree1.lock_read()
+        self.addCleanup(self.tree1.unlock)
         self.assertFalse(self.db1.is_version_native(version1))
         self.assertTrue(self.db1.is_version_native(version2))
         self.assertFalse(self.db1.is_version_native(version3))
@@ -2531,6 +2553,8 @@
                 up_rh1[0])
         self.assertEqual(self.db1.revid_of_upstream_version(version3),
                 up_rh1[1])
+        self.tree1.lock_read()
+        self.addCleanup(self.tree1.unlock)
         self.assertFalse(self.db1.is_version_native(version1))
         self.assertTrue(self.db1.is_version_native(version2))
         self.assertFalse(self.db1.is_version_native(version3))



More information about the Pkg-bazaar-commits mailing list