From 90900ab6196caa01da6a7e825f3223893a92a0bb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Dylan=20A=C3=AFssi?= <dylan.aissi@collabora.com>
Date: Tue, 25 Feb 2025 09:45:39 +0100
Subject: [PATCH] import-debian-package: stop using a PosixPath object as
 context manager
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This is no longer supported since Python 3.13 and leads
to the following error:

Traceback (most recent call last):
  File "/builds/pkg/apertis-dev-tools/tests/import-debian-package/../../tools/import-debian-package", line 681, in <module>
    main(sys.argv)
    ~~~~^^^^^^^^^^
  File "/builds/pkg/apertis-dev-tools/tests/import-debian-package/../../tools/import-debian-package", line 666, in main
    do_import(args)
    ~~~~~~~~~^^^^^^
  File "/builds/pkg/apertis-dev-tools/tests/import-debian-package/../../tools/import-debian-package", line 396, in do_import
    with ensure_dir_or_none(args.cache_dir) or TemporaryDirectory() as downloaddir:
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: 'PosixPath' object does not support the context manager protocol

Signed-off-by: Dylan Aïssi <dylan.aissi@collabora.com>
---
 tools/import-debian-package | 54 ++++++++++++++++++++-----------------
 1 file changed, 29 insertions(+), 25 deletions(-)

diff --git a/tools/import-debian-package b/tools/import-debian-package
index bad0725..eda6a47 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)
-- 
GitLab