Hey Zakhar, Good news; glad it worked!
We should keep the scope of this bug as the 'bzr dh-make' issue and its related doc updates. The SRU/-proposed verification is related to the code change, and has been verified already. (All good on that front / this bug.) The other steps you mentioned (e.g., publishing), in case of issues, should go into another bug. I agree that updating the Packaging Guide for different/modern tooling (e.g., git) would be great! I'm not in a position to help with that at the moment, but if you have the experience and availability, please feel free to open another bug and merge request with the changes for review, and folks in more appropriate roles for that than me will check it out! Thanks! -- You received this bug notification because you are a member of Ubuntu Packaging Guide Team, which is subscribed to Ubuntu Packaging Guide. https://bugs.launchpad.net/bugs/1954595 Title: bzr dh-make crash - no attribute 'initialize_on_transport' Status in Ubuntu Packaging Guide: Fix Released Status in breezy-debian package in Ubuntu: Invalid Status in breezy-debian source package in Bionic: Fix Committed Status in breezy-debian source package in Focal: Fix Committed Bug description: [Impact] * The `bzr dh-make` step in the Ubuntu Packaging Guide [1] fails in Focal. * The alternative `brz dh-make` (BReeZy instead of BaZaaR) fails in Focal and Bionic. * The `dh-make` subcommand is not available in Impish/later. The Guide should be updated and ideally use another tool. [Test Plan] * Prepare: $ sudo apt-get install dh-make bzr-builddeb brz-debian $ bzr whoami "Your Name <[email protected]>" $ wget -O hello-2.10.tar.gz "http://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz" * Test bazaar: $ bzr dh-make hello 2.10 hello-2.10.tar.gz * Test breezy: $ brz dh-make hello 2.10 hello-2.10.tar.gz * Between tests, remove the generated dir/file: $ rm -rf hello hello_2.10.orig.tar.gz [Where problems could occur] * The changes are restricted to the `dh-make` command in bazaar/breezy, which is broken, so it should not make things worse. But, theoretically, `bzr/brz dh-make` is the impact surface for other issues/regressions from previous/ working releases. [Links] * [1] https://packaging.ubuntu.com/html/packaging-new- software.html#starting-a-package [Other Info] * Bionic is not affected in `bzr`, but just in `brz`, due to being from 2 source packages: `bzr-builddeb` and `breezy-debian`. * Focal is affected in both `bzr/brz` per transition from `bzr-builddeb` to `breezy-debian` (1 src pkg). * Impish+ are not "affected" as `dh-make` was dropped by debian-breezy upstream. * The root cause of the regression is a dropped python `import` in breezy-debian following changes in breezy. The `bzrdir` import sets ControlDir's default format: `controldir.ControlDirFormat._default_format = BzrDirMetaFormat1()` Once debian-breezy.git's dh_make.py:_get_tree() moved from BzrDir. to ControlDir.create_branch_convenience() and dropped the bzrlib import, that is not set anymore. Now, create_branch_convenience() calls create(), calls initialize_on_transport() on the default format (None). commit 08fcab340a2cd4f6bf0f5aec65c304a88023a4f8 Author: Jelmer Vernooij <[email protected]> Date: Sat Jun 17 14:10:12 2017 +0000 Update for breezy, drop support for older versions of bazaar and for debian_bundle. ... diff --git a/dh_make.py b/dh_make.py ... from ... import ( - bzrdir, + controldir, ... @@ -34,22 +34,22 @@ def _get_tree(package_name): ... - create_branch = bzrdir.BzrDir.create_branch_convenience ... + create_branch = controldir.ControlDir.create_branch_convenience ... * Focal needs another patch to fix this in `bzr`: $ bzr dh-make hello 2.10 hello-2.10.tar.gz Fetching tarball Looking for a way to retrieve the upstream tarball Upstream tarball already exists in build directory, using that brz: ERROR: TypeError: can only concatenate str (not "bytes") to str * Synthetic test cases for this are provided in comment #1. [Original Bug Description] I am following official Ubuntu Packaging Guide: https://packaging.ubuntu.com/html/packaging-new-software.html When I come to the following part, the command crashes: $ bzr dh-make hello 2.10 hello-2.10.tar.gz brz: ERROR: AttributeError: 'NoneType' object has no attribute 'initialize_on_transport' (trackback bellow) My system: Description: Ubuntu 20.04.3 LTS Release: 20.04 dh-make: Installed: 2.201903 Candidate: 2.201903 Version table: *** 2.201903 500 500 http://cz.archive.ubuntu.com/ubuntu focal/main amd64 Packages 500 http://cz.archive.ubuntu.com/ubuntu focal/main i386 Packages 100 /var/lib/dpkg/status $ bzr dh-make hello 2.10 hello-2.10.tar.gz brz: ERROR: AttributeError: 'NoneType' object has no attribute 'initialize_on_transport' Traceback (most recent call last): File "/usr/lib/python3/dist-packages/breezy/plugins/debian/dh_make.py", line 26, in _get_tree tree = workingtree.WorkingTree.open(".") File "/usr/lib/python3/dist-packages/breezy/workingtree.py", line 201, in open control = controldir.ControlDir.open(path, _unsupported=_unsupported) File "/usr/lib/python3/dist-packages/breezy/controldir.py", line 706, in open return klass.open_from_transport(t, probers=probers, File "/usr/lib/python3/dist-packages/breezy/controldir.py", line 736, in open_from_transport transport, format = _mod_transport.do_catching_redirections( File "/usr/lib/python3/dist-packages/breezy/transport/__init__.py", line 1613, in do_catching_redirections return action(transport) File "/usr/lib/python3/dist-packages/breezy/controldir.py", line 724, in find_format return transport, ControlDirFormat.find_format(transport, File "/usr/lib/python3/dist-packages/breezy/controldir.py", line 1166, in find_format raise errors.NotBranchError(path=transport.base) breezy.errors.NotBranchError: Not a branch: "/home/jkalina/packaging/". During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/lib/python3/dist-packages/breezy/plugins/debian/dh_make.py", line 37, in _get_tree a_controldir = controldir.ControlDir.open_from_transport( File "/usr/lib/python3/dist-packages/breezy/controldir.py", line 736, in open_from_transport transport, format = _mod_transport.do_catching_redirections( File "/usr/lib/python3/dist-packages/breezy/transport/__init__.py", line 1613, in do_catching_redirections return action(transport) File "/usr/lib/python3/dist-packages/breezy/controldir.py", line 724, in find_format return transport, ControlDirFormat.find_format(transport, File "/usr/lib/python3/dist-packages/breezy/controldir.py", line 1166, in find_format raise errors.NotBranchError(path=transport.base) breezy.errors.NotBranchError: Not a branch: "/home/jkalina/packaging/hello/". During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/lib/python3/dist-packages/breezy/commands.py", line 1016, in exception_to_return_code return the_callable(*args, **kwargs) File "/usr/lib/python3/dist-packages/breezy/commands.py", line 1202, in run_bzr ret = run(*run_argv) File "/usr/lib/python3/dist-packages/breezy/commands.py", line 759, in run_argv_aliases return self.run(**all_cmd_args) File "/usr/lib/python3/dist-packages/breezy/commands.py", line 784, in run return self._operation.run_simple(*args, **kwargs) File "/usr/lib/python3/dist-packages/breezy/cleanup.py", line 136, in run_simple return _do_with_cleanups( File "/usr/lib/python3/dist-packages/breezy/cleanup.py", line 166, in _do_with_cleanups result = func(*args, **kwargs) File "/usr/lib/python3/dist-packages/breezy/plugins/debian/cmds.py", line 1385, in run tree = dh_make.import_upstream( File "/usr/lib/python3/dist-packages/breezy/plugins/debian/dh_make.py", line 83, in import_upstream tree = _get_tree(package_name) File "/usr/lib/python3/dist-packages/breezy/plugins/debian/dh_make.py", line 42, in _get_tree branch = create_branch(to_transport.base, File "/usr/lib/python3/dist-packages/breezy/controldir.py", line 660, in create_branch_convenience controldir = klass.create(base, format, possible_transports) File "/usr/lib/python3/dist-packages/breezy/controldir.py", line 859, in create return format.initialize_on_transport(t) AttributeError: 'NoneType' object has no attribute 'initialize_on_transport' You can report this problem to Bazaar's developers by running apport-bug /var/crash/brz.1000.2021-12-12T15:32.crash if a bug-reporting window does not automatically appear. To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu-packaging-guide/+bug/1954595/+subscriptions _______________________________________________ Mailing list: https://launchpad.net/~ubuntu-packaging-guide-team Post to : [email protected] Unsubscribe : https://launchpad.net/~ubuntu-packaging-guide-team More help : https://help.launchpad.net/ListHelp

