Merge lp:~al-maisan/bzr-builddeb/odd-behaviour-385667 into lp:~bzr-builddeb-hackers/bzr-builddeb/trunk-old

Proposed by Muharem Hrnjadovic
Status: Rejected
Rejected by: Jelmer Vernooij
Proposed branch: lp:~al-maisan/bzr-builddeb/odd-behaviour-385667
Merge into: lp:~bzr-builddeb-hackers/bzr-builddeb/trunk-old
Diff against target: None lines
To merge this branch: bzr merge lp:~al-maisan/bzr-builddeb/odd-behaviour-385667
Reviewer Review Type Date Requested Status
James Westby Needs Resubmitting
Review via email: mp+12111@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Muharem Hrnjadovic (al-maisan) wrote :

Hello there!

This branch fixes

  - the glitch described in
    https://bugs.launchpad.net/bzr-builddeb/+bug/385667/comments/1 and
  - the problem with creating debian changelog files in empty branches

The other problems described in bug #385667 either do not occur any more
(negative upstream version numbers) or are not specific to merge-upstream
(deleted .bzrignore files).

Please take a look and let me know what you think. Thanks!

385. By Muharem Hrnjadovic

We should not be removing .bzrignore, and particularly not in a merge-upstream operation with a tarball and a branch.

Revision history for this message
James Westby (james-w) wrote :

> Hello there!
>
> This branch fixes
>
> - the glitch described in
> https://bugs.launchpad.net/bzr-builddeb/+bug/385667/comments/1 and
> - the problem with creating debian changelog files in empty branches

Hi,

Thanks for this.

28 + else:
29 + # changelog not in place yet.
30 + if not os.path.exists(debian_dir):
31 + os.makedirs(debian_dir)
32 + dch_args.extend(["--create", "--package", package])

is “package” guaranteed to not be None in this case?

166 + cmd.run(
167 + directory='%s/empty-branch'%workdir,
168 + location='%s/%s' % (workdir, self.upstream_tarball_name),
169 + package='test', version=self.upstream_version)

We shouldn't be calling cmd.run in the tests.

170 + # The merge-upstream will add a changelog but leave the tree in an
171 + # uncommitted state.
172 + self.assertRaises(AddChangelogError, find_changelog, tree, False)

why are you using this as the test? It doesn't seem to show
your intent with this part of the test, it feels as though you are
testing a side-effect.

Thinking again, should we be creating a changelog? There won't be
the rest of the packaging files, so you can't work with it, but using
something like dh_make will fail. Should we in fact run dh_make?

>
> The other problems described in bug #385667 either do not occur any more
> (negative upstream version numbers)

I don't know why this would have changed?

Thanks,

James

Revision history for this message
James Westby (james-w) :
review: Needs Resubmitting
Revision history for this message
Jelmer Vernooij (jelmer) wrote :

(an alternative fix for this has landed, so marking this as rejected)

Unmerged revisions

385. By Muharem Hrnjadovic

We should not be removing .bzrignore, and particularly not in a merge-upstream operation with a tarball and a branch.

384. By Muharem Hrnjadovic

Cosmetic fixes.

383. By Muharem Hrnjadovic

Make sure upstream revisions are correct.

382. By Muharem Hrnjadovic

Moved blackbox test to appropriate file.

381. By Muharem Hrnjadovic

A changelog file is created now when merging into an empty branch.

380. By Muharem Hrnjadovic

Fixed glitch described in https://bugs.launchpad.net/bzr-builddeb/+bug/385667/comments/1

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'cmds.py'
--- cmds.py 2009-09-16 12:47:18 +0000
+++ cmds.py 2009-09-19 05:48:51 +0000
@@ -483,14 +483,30 @@
483 def _update_changelog(self, tree, version, distribution_name, changelog,483 def _update_changelog(self, tree, version, distribution_name, changelog,
484 package):484 package):
485 from bzrlib.plugins.builddeb.merge_upstream import package_version485 from bzrlib.plugins.builddeb.merge_upstream import package_version
486
486 if "~bzr" in str(version) or "+bzr" in str(version):487 if "~bzr" in str(version) or "+bzr" in str(version):
487 entry_description = "New upstream snapshot."488 entry_description = "New upstream snapshot."
488 else:489 else:
489 entry_description = "New upstream release."490 entry_description = "New upstream release."
490 proc = subprocess.Popen(["/usr/bin/dch", "-v",491
491 str(package_version(version, distribution_name)),492 # Handle the case where we merge into a branch without a
492 "-D", "UNRELEASED", "--release-heuristic", "changelog",493 # "debian/changelog" file.
493 entry_description], cwd=tree.basedir)494 debian_dir = "%s/debian" % tree.basedir
495 dch_args = [
496 "/usr/bin/dch", "-D", "UNRELEASED",
497 "-v", str(package_version(version, distribution_name)),
498 ]
499 if os.path.exists('%s/changelog' % debian_dir):
500 # changelog exists.
501 dch_args.extend(["--release-heuristic", "changelog"])
502 else:
503 # changelog not in place yet.
504 if not os.path.exists(debian_dir):
505 os.makedirs(debian_dir)
506 dch_args.extend(["--create", "--package", package])
507
508 dch_args.append(entry_description)
509 proc = subprocess.Popen(dch_args, cwd=tree.basedir)
494 proc.wait()510 proc.wait()
495 if proc.returncode != 0:511 if proc.returncode != 0:
496 raise BzrCommandError('Adding a new changelog stanza after the '512 raise BzrCommandError('Adding a new changelog stanza after the '
497513
=== modified file 'import_dsc.py'
--- import_dsc.py 2009-09-16 14:52:14 +0000
+++ import_dsc.py 2009-09-18 11:23:37 +0000
@@ -1617,8 +1617,8 @@
1617 "Should use self.upstream_branch if set"1617 "Should use self.upstream_branch if set"
1618 tempdir = tempfile.mkdtemp(dir=os.path.join(self.tree.basedir, '..'))1618 tempdir = tempfile.mkdtemp(dir=os.path.join(self.tree.basedir, '..'))
1619 try:1619 try:
1620 previous_upstream_revision = get_snapshot_revision(previous_version.upstream_version)
1621 if previous_version is not None:1620 if previous_version is not None:
1621 previous_upstream_revision = get_snapshot_revision(previous_version.upstream_version)
1622 if self.has_upstream_version_in_packaging_branch(1622 if self.has_upstream_version_in_packaging_branch(
1623 previous_version.upstream_version):1623 previous_version.upstream_version):
1624 upstream_tip = self.revid_of_upstream_version_from_branch(1624 upstream_tip = self.revid_of_upstream_version_from_branch(
16251625
=== modified file 'tests/blackbox/test_merge_upstream.py'
--- tests/blackbox/test_merge_upstream.py 2008-03-05 17:00:51 +0000
+++ tests/blackbox/test_merge_upstream.py 2009-09-19 05:43:24 +0000
@@ -18,12 +18,43 @@
18# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA18# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19#19#
2020
21import os
22import tarfile
23
21from bzrlib.plugins.builddeb.tests import BuilddebTestCase24from bzrlib.plugins.builddeb.tests import BuilddebTestCase
2225
2326
24class TestMergeUpstream(BuilddebTestCase):27class TestMergeUpstream(BuilddebTestCase):
2528
29 upstream_dir = property(lambda self:
30 self.package_name + '-' + self.upstream_version)
31 upstream_tarball_name = property(lambda self:
32 self.package_name + '_' + self.upstream_version + '.orig.tar.gz')
33
34 def make_unpacked_upstream_source(self):
35 os.mkdir(self.upstream_dir)
36 files = ['README']
37 self.build_tree([os.path.join(self.upstream_dir, filename)
38 for filename in files])
39
40 def make_upstream_tarball(self):
41 self.make_unpacked_upstream_source()
42 tar = tarfile.open(self.upstream_tarball_name, 'w:gz')
43 try:
44 tar.add(self.upstream_dir)
45 finally:
46 tar.close()
47
26 def test_merge_upstream_available(self):48 def test_merge_upstream_available(self):
27 self.run_bzr('merge-upstream --help')49 self.run_bzr('merge-upstream --help')
2850
51 def test_merge_upstream_into_empty_branch(self):
52 self.make_branch_and_tree('.')
53 self.make_upstream_tarball()
54 cmd = (
55 'merge-upstream %s --package %s --version %s' %
56 (self.upstream_tarball_name, self.package_name, self.upstream_version))
57 self.run_bzr(cmd)
58
59
29# vim: ts=2 sts=2 sw=260# vim: ts=2 sts=2 sw=2
3061
=== modified file 'tests/test_merge_upstream.py'
--- tests/test_merge_upstream.py 2009-03-10 01:57:05 +0000
+++ tests/test_merge_upstream.py 2009-09-19 05:48:51 +0000
@@ -18,11 +18,18 @@
18# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA18# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19#19#
2020
21import os
22import tarfile
23
21from debian_bundle.changelog import Version24from debian_bundle.changelog import Version
2225
23from bzrlib.revision import Revision26from bzrlib.revision import Revision
24from bzrlib.tests import TestCase, TestCaseWithTransport27from bzrlib.tests import TestCase, TestCaseWithTransport
2528
29from bzrlib.plugins.builddeb.cmds import cmd_merge_upstream
30from bzrlib.plugins.builddeb.errors import AddChangelogError
31from bzrlib.plugins.builddeb.util import find_changelog
32
26from bzrlib.plugins.builddeb.merge_upstream import (33from bzrlib.plugins.builddeb.merge_upstream import (
27 package_version,34 package_version,
28 _upstream_branch_version,35 _upstream_branch_version,
@@ -80,10 +87,31 @@
80 upstream_version_add_revision(self, "1.3~svn800", "somesvnrev"))87 upstream_version_add_revision(self, "1.3~svn800", "somesvnrev"))
8188
8289
83class TestUpstreamBranchVersion(TestCase):90class TestUpstreamBranchVersion(TestCaseWithTransport):
84 """Test that the upstream version of a branch can be determined correctly.91 """Test that the upstream version of a branch can be determined correctly.
85 """92 """
8693
94 package_name = 'test'
95 upstream_version = '0.1'
96 upstream_dir = property(lambda self:
97 self.package_name + '-' + self.upstream_version)
98 upstream_tarball_name = property(lambda self:
99 self.package_name + '_' + self.upstream_version + '.orig.tar.gz')
100
101 def make_unpacked_upstream_source(self):
102 os.mkdir(self.upstream_dir)
103 files = ['README']
104 self.build_tree([os.path.join(self.upstream_dir, filename)
105 for filename in files])
106
107 def make_upstream_tarball(self):
108 self.make_unpacked_upstream_source()
109 tar = tarfile.open(self.upstream_tarball_name, 'w:gz')
110 try:
111 tar.add(self.upstream_dir)
112 finally:
113 tar.close()
114
87 def get_suffix(self, version_string, revid):115 def get_suffix(self, version_string, revid):
88 revno = self.revhistory.index(revid)+1116 revno = self.revhistory.index(revid)+1
89 if "bzr" in version_string:117 if "bzr" in version_string:
@@ -122,6 +150,32 @@
122 _upstream_branch_version(self.revhistory, 150 _upstream_branch_version(self.revhistory,
123 {"somerevid": ["1.3"]}, "bla", "1.2+bzr1", self.get_suffix))151 {"somerevid": ["1.3"]}, "bla", "1.2+bzr1", self.get_suffix))
124152
153 def test_merge_upstream_in_empty_branch(self):
154 tree = self.make_branch_and_tree('empty-branch')
155 self.make_upstream_tarball()
156 cmd = cmd_merge_upstream()
157 workdir = '%s/work' % self.test_base_dir
158 cmd.run(
159 directory='%s/empty-branch'%workdir,
160 location='%s/%s' % (workdir, self.upstream_tarball_name),
161 package='test', version=self.upstream_version)
162 # The merge-upstream will add a changelog but leave the tree in an
163 # uncommitted state.
164 self.assertRaises(AddChangelogError, find_changelog, tree, False)
165
166 # Commit the tree and try again.
167 tree.lock_write()
168 try:
169 tree.add('debian')
170 tree.add('debian/changelog')
171 tree.commit('merge-upstream into empty branch')
172 finally:
173 tree.unlock()
174 changelog, _ignore = find_changelog(tree, False)
175 # Make sure we're getting the correct upstream version.
176 self.assertEquals(
177 changelog.version.upstream_version, self.upstream_version)
178
125179
126class TestUpstreamTagToVersion(TestCase):180class TestUpstreamTagToVersion(TestCase):
127181

Subscribers

People subscribed via source and target branches