diff --git a/.github/workflows/pythonpackage.yml b/.github/workflows/pythonpackage.yml index 31bc00e..8705708 100644 --- a/.github/workflows/pythonpackage.yml +++ b/.github/workflows/pythonpackage.yml @@ -20,13 +20,12 @@ jobs: python-version: ${{ matrix.python-version }} - name: Install dependencies run: | - python -m pip install --upgrade pip flake8 cython - mkdir -p $HOME/.config/breezy/plugins - bzr branch lp:brz-debian $HOME/.config/breezy/plugins/debian + python -m pip install --upgrade pip flake8 cython mypy python setup.py develop - name: Style checks run: | python -m flake8 + python -m mypy - name: Typing checks run: | pip install -U mypy diff --git a/ognibuild/apt.py b/ognibuild/apt.py index 00ca1a7..acd52b4 100644 --- a/ognibuild/apt.py +++ b/ognibuild/apt.py @@ -21,7 +21,7 @@ from typing import List import apt_pkg import os -from buildlog_consultant.sbuild import ( +from buildlog_consultant.apt import ( find_apt_get_failure, ) diff --git a/ognibuild/debian/build.py b/ognibuild/debian/build.py index 5445278..f82f1d1 100644 --- a/ognibuild/debian/build.py +++ b/ognibuild/debian/build.py @@ -34,10 +34,6 @@ from debian.changelog import Changelog from debmutate.changelog import get_maintainer, format_datetime from breezy import osutils -from breezy.plugins.debian.util import ( - changes_filename, - get_build_architecture, - ) from breezy.mutabletree import MutableTree from silver_platter.debian import ( BuildFailedError, @@ -57,6 +53,22 @@ class MissingChangesFile(Exception): self.filename = filename +def changes_filename(package, version, arch): + non_epoch_version = version.upstream_version + if version.debian_version is not None: + non_epoch_version += "-%s" % version.debian_version + return "%s_%s_%s.changes" % (package, non_epoch_version, arch) + + +def get_build_architecture(): + try: + return subprocess.check_output( + ['dpkg-architecture', '-qDEB_BUILD_ARCH']).strip().decode() + except subprocess.CalledProcessError as e: + raise Exception( + "Could not find the build architecture: %s" % e) + + def add_dummy_changelog_entry( tree: MutableTree, subpath: str, suffix: str, suite: str, message: str, timestamp=None, maintainer=None): diff --git a/ognibuild/debian/fix_build.py b/ognibuild/debian/fix_build.py index 16b4e92..3e1d7b1 100644 --- a/ognibuild/debian/fix_build.py +++ b/ognibuild/debian/fix_build.py @@ -66,7 +66,6 @@ from silver_platter.debian import ( DEFAULT_BUILDER, ) -from breezy.plugins.debian.util import get_build_architecture from .build import attempt_build from buildlog_consultant import Problem from buildlog_consultant.common import ( diff --git a/ognibuild/dist.py b/ognibuild/dist.py index a7130da..1448f36 100644 --- a/ognibuild/dist.py +++ b/ognibuild/dist.py @@ -28,17 +28,8 @@ from debian.deb822 import Deb822 from breezy.tree import Tree from breezy.workingtree import WorkingTree -from breezy.plugins.debian.repack_tarball import get_filetype - -from . import apt, DetailedFailure, shebang_binary +from . import DetailedFailure from .buildsystem import detect_buildsystems, NoBuildToolsFound -from .session import run_with_tee, Session -from .session.schroot import SchrootSession -from .debian.fix_build import ( - DependencyContext, - resolve_error, - APT_FIXERS, - ) from buildlog_consultant.common import ( find_build_failure_description, Problem, @@ -47,12 +38,29 @@ from buildlog_consultant.common import ( NoSpaceOnDevice, ) -from . import DetailedFailure -from .buildsystem import detect_buildsystems, NoBuildToolsFound from .session.schroot import SchrootSession from .vcs import dupe_vcs_tree, export_vcs_tree +SUPPORTED_DIST_EXTENSIONS = [ + ".tar.gz", + ".tgz", + ".tar.bz2", + ".tar.xz", + ".tar.lzma", + ".tbz2", + ".tar", + ".zip", + ] + + +def is_dist_file(fn): + for ext in SUPPORTED_DIST_EXTENSIONS: + if fn.endswith(ext): + return True + return False + + class DistNoTarball(Exception): """Dist operation did not create a tarball.""" @@ -83,18 +91,16 @@ class DistCatcher(object): def find_files(self): new_files = os.listdir(self.export_directory) diff_files = set(new_files) - set(self.existing_files) - diff = set([n for n in diff_files if get_filetype(n) is not None]) + diff = set([n for n in diff_files if is_dist_file(n)]) if len(diff) == 1: fn = diff.pop() logging.info('Found tarball %s in package directory.', fn) self.files.append(os.path.join(self.export_directory, fn)) return fn - if 'dist' in diff_files: - for entry in os.scandir( - os.path.join(self.export_directory, 'dist')): - if get_filetype(entry.name) is not None: - logging.info( - 'Found tarball %s in dist directory.', entry.name) + if "dist" in diff_files: + for entry in os.scandir(os.path.join(self.export_directory, "dist")): + if is_dist_file(entry.name): + logging.info("Found tarball %s in dist directory.", entry.name) self.files.append(entry.path) return entry.name logging.info('No tarballs found in dist directory.') diff --git a/ognibuild/tests/test_debian_build.py b/ognibuild/tests/test_debian_build.py index da2541a..1203c3d 100644 --- a/ognibuild/tests/test_debian_build.py +++ b/ognibuild/tests/test_debian_build.py @@ -16,9 +16,9 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA import datetime -from ..debian.build import add_dummy_changelog_entry +from ..debian.build import add_dummy_changelog_entry, get_build_architecture -from breezy.tests import TestCaseWithTransport +from breezy.tests import TestCaseWithTransport, TestCase class AddDummyChangelogEntryTests(TestCaseWithTransport): @@ -105,4 +105,12 @@ janitor (0.1-1jan+some1) UNRELEASED; urgency=medium * Initial release. (Closes: #XXXXXX) -- Jelmer Vernooij Sat, 04 Apr 2020 14:12:13 +0000 -""", 'debian/changelog') +""", + "debian/changelog", + ) + + +class BuildArchitectureTests(TestCase): + + def test_is_str(self): + self.assertIsInstance(get_build_architecture(), str)