$ lsb_release -cs bionic $ sudo apt install --yes dh-make bzr-builddeb brz-debian $ bzr whoami "Your Name <n...@example.com>" $ wget -O hello-2.10.tar.gz "http://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz"
Before: $ dpkg -s brz-debian | grep Version: Version: 2.8.10 $ bzr dh-make hello 2.10 hello-2.10.tar.gz Fetching tarball ... Package prepared in /home/ubuntu/hello $ rm -rf hello hello_2.10.orig.tar.gz $ brz dh-make hello 2.10 hello-2.10.tar.gz brz: ERROR: AttributeError: 'NoneType' object has no attribute 'initialize_on_transport' ... $ rm -rf hello hello_2.10.orig.tar.gz After: $ sudo apt install --yes brz-debian/bionic-proposed $ dpkg -s brz-debian | grep Version: Version: 2.8.10ubuntu1 $ bzr dh-make hello 2.10 hello-2.10.tar.gz Fetching tarball ... Package prepared in /home/ubuntu/hello $ rm -rf hello hello_2.10.orig.tar.gz $ brz dh-make hello 2.10 hello-2.10.tar.gz Fetching tarball ... Package prepared in /home/ubuntu/hello $ rm -rf hello hello_2.10.orig.tar.gz ** Tags removed: verification-needed-bionic ** Tags added: verification-done-bionic ** Description changed: [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 <n...@example.com>" $ 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 - * On success, remove the generated dir/file for next tests. + * 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 <jel...@jelmer.uk> 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`: - * 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 + $ 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. -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1954595 Title: bzr dh-make crash - no attribute 'initialize_on_transport' To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu-packaging-guide/+bug/1954595/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs