diff --git a/debian/changelog b/debian/changelog index 577acc8eec4520dcdf46a8dd78b538c7fa25a4a9..89e912501884bb38363eec0fd2e6961bbe966056 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +apertis-dev-tools (0.2026.1) apertis; urgency=medium + + * import-debian-package: stop using a PosixPath object as context manager. + This is no longer supported since Python 3.13 and triggers an error. + + -- Dylan Aïssi <dylan.aissi@collabora.com> Tue, 25 Feb 2025 09:47:11 +0100 + apertis-dev-tools (0.2026.0) apertis; urgency=medium * apertis-pkg-merge-upstream-to-downstreams: diff --git a/tools/import-debian-package b/tools/import-debian-package index bad0725787bb109b4397fca89c93b80f978bd4ec..eda6a4762a0215a905ecc15858bc67f7b33907f2 100755 --- a/tools/import-debian-package +++ b/tools/import-debian-package @@ -19,7 +19,7 @@ import sys from functools import lru_cache from gettext import gettext as _ from pathlib import Path -from tempfile import TemporaryDirectory +from tempfile import TemporaryDirectory, mkdtemp from typing import Mapping, Optional from urllib.error import HTTPError, URLError from urllib.parse import quote @@ -393,32 +393,36 @@ def do_import(args): if parse_ref(apertis_tag): raise Abort(f"Apertis tag {apertis_tag} already exists, cannot continue") - with ensure_dir_or_none(args.cache_dir) or TemporaryDirectory() as downloaddir: - if args.import_local_dsc: - logging.info(f"Overlaying Apertis package version {version}") - downloaded = args.import_local_dsc.name - else: - logging.info("Fetching the package information") + downloaddir = ( + ensure_dir_or_none(args.cache_dir) + if ensure_dir_or_none(args.cache_dir) is not None + else mkdtemp() + ) + if args.import_local_dsc: + logging.info(f"Overlaying Apertis package version {version}") + downloaded = args.import_local_dsc.name + else: + logging.info("Fetching the package information") - cached_dsc = get_cached_dsc(package, version, args.cache_dir) + cached_dsc = get_cached_dsc(package, version, args.cache_dir) - try: - url = args.mirror.rstrip("/") + get_debian_dsc_path(package, version) - except KeyboardInterrupt: - raise - except (KeyError, HTTPError, URLError): - if not cached_dsc: - raise Abort( - f"Unable to download source package {package} version {version}" - ) - else: - logging.warning( - f"Unable to download source package {package} version {version}, but found cached .dsc" - ) - url = cached_dsc - - downloaded = fetch(package, version, url, downloaddir, cached_dsc) - import_debian_dsc(args, downloaded, upstream, downstream, version) + try: + url = args.mirror.rstrip("/") + get_debian_dsc_path(package, version) + except KeyboardInterrupt: + raise + except (KeyError, HTTPError, URLError): + if not cached_dsc: + raise Abort( + f"Unable to download source package {package} version {version}" + ) + else: + logging.warning( + f"Unable to download source package {package} version {version}, but found cached .dsc" + ) + url = cached_dsc + + downloaded = fetch(package, version, url, downloaddir, cached_dsc) + import_debian_dsc(args, downloaded, upstream, downstream, version) if args.dsc: d = deb822.Dsc(args.dsc)