python-installer: update to 1.0.0
authorAlexandru Ardelean <redacted>
Thu, 9 Apr 2026 05:36:52 +0000 (08:36 +0300)
committerAlexandru Ardelean <redacted>
Thu, 16 Apr 2026 04:08:59 +0000 (07:08 +0300)
Update package to 1.0.0. This is the first stable release.

Changes since 0.7.0:
- Dropped support for Python 3.7, 3.8, 3.9; added Python 3.13/3.14
- Added --overwrite-existing and --validate-record CLI options
- Support installing multiple wheels in a single invocation
- Security: fixed a path traversal bug
- Do not install __pycache__ directories from wheels
- Switch to stream-based validation instead of in-memory (lower memory)
- Sort entries before writing RECORD; fixed Windows relative path bug
- Complete type annotations with strict mypy enforcement
- API change: SchemeDictionaryDestination.overwrite_existing now defaults
  to True (was False); update patch 001 accordingly

Remove patch 001-don-t-raise-error-if-file-exists.patch and
set '--overwrite-existing' in build scripts.

Signed-off-by: Alexandru Ardelean <redacted>
lang/python/python-installer/Makefile
lang/python/python-installer/patches/001-don-t-raise-error-if-file-exists.patch [deleted file]
lang/python/python-installer/test.sh [new file with mode: 0755]
lang/python/python3-host-build.mk
lang/python/python3-package.mk

index bab8f63ddc581898b02388804b70798e01ea76ef..604bbe934e2104a8d69fe069234df1f02fb3231a 100644 (file)
@@ -8,11 +8,11 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=python-installer
-PKG_VERSION:=0.7.0
-PKG_RELEASE:=3
+PKG_VERSION:=1.0.0
+PKG_RELEASE:=1
 
 PYPI_NAME:=installer
-PKG_HASH:=a26d3e3116289bb08216e0d0f7d925fcef0b0194eedfa0c944bcaaa106c4b631
+PKG_HASH:=c6d691331621cf3fec4822f5c6f83cab3705f79b316225dc454127411677c71f
 
 PKG_LICENSE:=MIT
 PKG_LICENSE_FILES:=LICENSE
diff --git a/lang/python/python-installer/patches/001-don-t-raise-error-if-file-exists.patch b/lang/python/python-installer/patches/001-don-t-raise-error-if-file-exists.patch
deleted file mode 100644 (file)
index f5ebb48..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/src/installer/destinations.py b/src/installer/destinations.py
-index a3c1967..9f733c8 100644
---- a/src/installer/destinations.py
-+++ b/src/installer/destinations.py
-@@ -164,7 +164,7 @@ class SchemeDictionaryDestination(WheelDestination):
-         target_path = self._path_with_destdir(scheme, path)
-         if os.path.exists(target_path):
-             message = f"File already exists: {target_path}"
--            raise FileExistsError(message)
-+            os.remove(target_path)
-         parent_folder = os.path.dirname(target_path)
-         if not os.path.exists(parent_folder):
diff --git a/lang/python/python-installer/test.sh b/lang/python/python-installer/test.sh
new file mode 100755 (executable)
index 0000000..24669d2
--- /dev/null
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+[ "$1" = python3-installer ] || exit 0
+
+python3 - << 'EOF'
+from installer import install
+from installer.sources import WheelFile
+from installer.destinations import SchemeDictionaryDestination
+import tempfile
+import os
+
+# Verify the API is importable and overwrite_existing defaults to True
+dest = SchemeDictionaryDestination(
+    scheme_dict={
+        "purelib": "/tmp",
+        "platlib": "/tmp",
+        "headers": "/tmp",
+        "scripts": "/tmp",
+        "data": "/tmp",
+    },
+    interpreter="/usr/bin/python3",
+    script_kind="posix",
+)
+assert dest.overwrite_existing is True
+EOF
index 738d157287715ebde6f9ebf64e60ebdb9ae43473..2ffaf22838cc7f621498c0cf5140717813421b28 100644 (file)
@@ -56,6 +56,7 @@ define Py3Host/Install/Installer
        $(call HostPython3/Run, \
                $(HOST_BUILD_DIR), \
                -m installer \
+                       --overwrite-existing \
                        --destdir "$(1)" \
                        --prefix "" \
                        "$(PYTHON3_HOST_BUILD_DIR)"/openwrt-build/$(PYTHON3_HOST_WHEEL_NAME)-$(PYTHON3_HOST_WHEEL_VERSION)-*.whl \
index 819b6bf64aa309b39a78bf64c430f0b29d760559..0f45bdc3cc5a9457150953245acdc50c336717f6 100644 (file)
@@ -285,6 +285,7 @@ define Py3Build/Install/Default
        $(call Python3/Run, \
                $(PKG_BUILD_DIR), \
                -m installer \
+                       --overwrite-existing \
                        --destdir "$(PKG_INSTALL_DIR)" \
                        --no-compile-bytecode \
                        --prefix /usr \
git clone https://git.99rst.org/PROJECT