aboutsummaryrefslogtreecommitdiff
path: root/lang
diff options
context:
space:
mode:
authorAlexandru Ardelean <alex@shruggie.ro>2023-05-27 21:15:06 +0300
committerGitHub <noreply@github.com>2023-05-27 21:15:06 +0300
commit0f858d50768518ac33f4810351fd619b558d5933 (patch)
treea37593fe731ef4796ce7d3dc40460285625d0e1f /lang
parente7e66545b17649368547b0e9d248a577fb4b4703 (diff)
parentb4975f8bbb9f61a2a170dc1acd6cabe2b7e9f93c (diff)
Merge pull request #21190 from jefferyto/python-split-packages
python3: Split venv into separate package, pip and setuptools into separate source packages
Diffstat (limited to 'lang')
-rw-r--r--lang/python/python-pip-conf/Makefile36
-rw-r--r--lang/python/python-pip-conf/files/pip.conf3
-rw-r--r--lang/python/python-pip/Makefile56
-rw-r--r--lang/python/python-pip/files/pip.conf2
-rw-r--r--lang/python/python-pip/patches/001-pyproject-hooks-pyc-fix.patch13
-rw-r--r--lang/python/python-pip/patches/002-pip-runner-pyc-fix.patch11
-rw-r--r--lang/python/python-pip/patches/003-disable-pip-version-check.patch20
-rw-r--r--lang/python/python-setuptools/Makefile82
-rw-r--r--lang/python/python3/Makefile63
-rw-r--r--lang/python/python3/files/python3-package-pip.mk35
-rw-r--r--lang/python/python3/files/python3-package-pkg-resources.mk30
-rw-r--r--lang/python/python3/files/python3-package-setuptools.mk32
-rw-r--r--lang/python/python3/files/python3-package-venv.mk19
-rw-r--r--lang/python/python3/patches-host-pip/.gitkeep (renamed from lang/python/python3/patches-setuptools/.placeholder)0
-rw-r--r--lang/python/python3/patches-host-setuptools/.gitkeep0
-rw-r--r--lang/python/python3/patches-pip/001-pep517-pyc-fix.patch29
16 files changed, 208 insertions, 223 deletions
diff --git a/lang/python/python-pip-conf/Makefile b/lang/python/python-pip-conf/Makefile
deleted file mode 100644
index b8ef7f6c5..000000000
--- a/lang/python/python-pip-conf/Makefile
+++ /dev/null
@@ -1,36 +0,0 @@
-#
-# Copyright (C) 2017 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=python-pip-conf
-PKG_VERSION:=0.1
-PKG_RELEASE:=1
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/python-pip-conf
- SUBMENU:=Python
- SECTION:=lang
- CATEGORY:=Languages
- TITLE:=Configuration file for pip/pip3
- URL:=https://pip.pypa.io
- MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>
-endef
-
-define Package/python-pip-conf/description
- Configuration file for pip/pip3
-endef
-
-Build/Compile:=
-
-define Package/python-pip-conf/install
- $(INSTALL_DIR) $(1)/etc
- $(CP) ./files/pip.conf $(1)/etc
-endef
-
-$(eval $(call BuildPackage,python-pip-conf))
diff --git a/lang/python/python-pip-conf/files/pip.conf b/lang/python/python-pip-conf/files/pip.conf
deleted file mode 100644
index 89339e98a..000000000
--- a/lang/python/python-pip-conf/files/pip.conf
+++ /dev/null
@@ -1,3 +0,0 @@
-[global]
-cache-dir=/tmp/.cache
-log-file=/tmp/pip-log.txt
diff --git a/lang/python/python-pip/Makefile b/lang/python/python-pip/Makefile
new file mode 100644
index 000000000..97a5326bc
--- /dev/null
+++ b/lang/python/python-pip/Makefile
@@ -0,0 +1,56 @@
+#
+# Copyright (C) 2023 Jeffery To
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=python-pip
+PKG_VERSION:=23.1.2
+PKG_RELEASE:=1
+
+PYPI_NAME:=pip
+PKG_HASH:=0e7c86f486935893c708287b30bd050a36ac827ec7fe5e43fe7cb198dd835fba
+
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=LICENSE.txt
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+CPE_ID:=cpe:/a:python:pip
+
+include ../pypi.mk
+include $(INCLUDE_DIR)/package.mk
+include ../python3-package.mk
+
+define Package/python3-pip
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=PyPA recommended tool for installing Python packages
+ URL:=https://pip.pypa.io/
+ DEPENDS:=+python3
+endef
+
+define Package/python3-pip/description
+pip is the package installer for Python. You can use pip to install
+packages from the Python Package Index and other indexes.
+endef
+
+define Package/python3-pip/conffiles
+/etc/pip.conf
+endef
+
+define Py3Package/python3-pip/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/pip$(PYTHON3_VERSION) $(1)/usr/bin/
+ $(LN) pip$(PYTHON3_VERSION) $(1)/usr/bin/pip3
+ $(LN) pip$(PYTHON3_VERSION) $(1)/usr/bin/pip
+
+ $(INSTALL_DIR) $(1)/etc
+ $(INSTALL_DATA) ./files/pip.conf $(1)/etc/
+endef
+
+$(eval $(call Py3Package,python3-pip))
+$(eval $(call BuildPackage,python3-pip))
+$(eval $(call BuildPackage,python3-pip-src))
diff --git a/lang/python/python-pip/files/pip.conf b/lang/python/python-pip/files/pip.conf
new file mode 100644
index 000000000..08900815f
--- /dev/null
+++ b/lang/python/python-pip/files/pip.conf
@@ -0,0 +1,2 @@
+[global]
+cache-dir = /var/cache/pip
diff --git a/lang/python/python-pip/patches/001-pyproject-hooks-pyc-fix.patch b/lang/python/python-pip/patches/001-pyproject-hooks-pyc-fix.patch
new file mode 100644
index 000000000..27681c1af
--- /dev/null
+++ b/lang/python/python-pip/patches/001-pyproject-hooks-pyc-fix.patch
@@ -0,0 +1,13 @@
+--- a/src/pip/_vendor/pyproject_hooks/_in_process/__init__.py
++++ b/src/pip/_vendor/pyproject_hooks/_in_process/__init__.py
+@@ -11,8 +11,8 @@ try:
+ except AttributeError:
+ # Python 3.8 compatibility
+ def _in_proc_script_path():
+- return resources.path(__package__, '_in_process.py')
++ return resources.path(__package__, '_in_process.pyc')
+ else:
+ def _in_proc_script_path():
+ return resources.as_file(
+- resources.files(__package__).joinpath('_in_process.py'))
++ resources.files(__package__).joinpath('_in_process.pyc'))
diff --git a/lang/python/python-pip/patches/002-pip-runner-pyc-fix.patch b/lang/python/python-pip/patches/002-pip-runner-pyc-fix.patch
new file mode 100644
index 000000000..4616fe065
--- /dev/null
+++ b/lang/python/python-pip/patches/002-pip-runner-pyc-fix.patch
@@ -0,0 +1,11 @@
+--- a/src/pip/_internal/build_env.py
++++ b/src/pip/_internal/build_env.py
+@@ -54,7 +54,7 @@ def get_runnable_pip() -> str:
+ # case, we can use that directly.
+ return str(source)
+
+- return os.fsdecode(source / "__pip-runner__.py")
++ return os.fsdecode(source / "__pip-runner__.pyc")
+
+
+ def _get_system_sitepackages() -> Set[str]:
diff --git a/lang/python/python-pip/patches/003-disable-pip-version-check.patch b/lang/python/python-pip/patches/003-disable-pip-version-check.patch
new file mode 100644
index 000000000..87a8178a7
--- /dev/null
+++ b/lang/python/python-pip/patches/003-disable-pip-version-check.patch
@@ -0,0 +1,20 @@
+From: Barry Warsaw <barry@python.org>
+Date: Fri, 18 Nov 2016 17:07:47 -0500
+Subject: Set --disable-pip-version-check=True by default.
+
+Patch-Name: disable-pip-version-check.patch
+---
+ src/pip/_internal/cli/cmdoptions.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/src/pip/_internal/cli/cmdoptions.py
++++ b/src/pip/_internal/cli/cmdoptions.py
+@@ -892,7 +892,7 @@ disable_pip_version_check: Callable[...,
+ "--disable-pip-version-check",
+ dest="disable_pip_version_check",
+ action="store_true",
+- default=False,
++ default=True,
+ help="Don't periodically check PyPI to determine whether a new version "
+ "of pip is available for download. Implied with --no-index.",
+ )
diff --git a/lang/python/python-setuptools/Makefile b/lang/python/python-setuptools/Makefile
new file mode 100644
index 000000000..fa6ec74e9
--- /dev/null
+++ b/lang/python/python-setuptools/Makefile
@@ -0,0 +1,82 @@
+#
+# Copyright (C) 2023 Jeffery To
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=python-setuptools
+PKG_VERSION:=67.8.0
+PKG_RELEASE:=1
+
+PYPI_NAME:=setuptools
+PKG_HASH:=62642358adc77ffa87233bc4d2354c4b2682d214048f500964dbe760ccedf102
+
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=LICENSE
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+CPE_ID:=cpe:/a:python:setuptools
+
+include ../pypi.mk
+include $(INCLUDE_DIR)/package.mk
+include ../python3-package.mk
+
+define Package/python3-setuptools/Default
+ SECTION:=lang
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ URL:=https://github.com/pypa/setuptools
+endef
+
+define Package/python3-pkg-resources
+$(call Package/python3-setuptools/Default)
+ TITLE:=Package resource API
+ DEPENDS:=+python3-light +python3-email +python3-logging +python3-urllib
+endef
+
+define Package/python3-setuptools
+$(call Package/python3-setuptools/Default)
+ TITLE:=Fully-featured library to package Python projects
+ DEPENDS:=+python3 +python3-pkg-resources
+endef
+
+define Package/python3-setuptools/description/Default
+Setuptools is a fully-featured, actively-maintained, and stable library
+designed to facilitate packaging Python projects.
+
+It helps developers to easily share reusable code (in the form of a
+library) and programs (e.g., CLI/GUI tools implemented in Python), that
+can be installed with pip and uploaded to PyPI.
+endef
+
+define Package/python3-pkg-resources/description
+$(call Package/python3-setuptools/description/Default)
+
+This is the pkg_resources module of setuptools.
+endef
+
+define Package/python3-setuptools/description
+$(call Package/python3-setuptools/description/Default)
+
+This is the main setuptools module.
+endef
+
+define Py3Package/python3-pkg-resources/filespec
++|$(PYTHON3_PKG_DIR)/pkg_resources
+endef
+
+define Py3Package/python3-setuptools/filespec
++|$(PYTHON3_PKG_DIR)
+-|$(PYTHON3_PKG_DIR)/pkg_resources
+endef
+
+$(eval $(call Py3Package,python3-pkg-resources))
+$(eval $(call Py3Package,python3-setuptools))
+
+$(eval $(call BuildPackage,python3-pkg-resources))
+$(eval $(call BuildPackage,python3-setuptools))
+
+$(eval $(call BuildPackage,python3-pkg-resources-src))
+$(eval $(call BuildPackage,python3-setuptools-src))
diff --git a/lang/python/python3/Makefile b/lang/python/python3/Makefile
index 020d88a6e..d2ef977a2 100644
--- a/lang/python/python3/Makefile
+++ b/lang/python/python3/Makefile
@@ -11,7 +11,7 @@ include $(TOPDIR)/rules.mk
include ../python3-version.mk
PKG_NAME:=python3
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_VERSION:=$(PYTHON3_VERSION).$(PYTHON3_VERSION_MICRO)
PKG_SOURCE:=Python-$(PKG_VERSION).tar.xz
@@ -41,10 +41,6 @@ PKG_BUILD_FLAGS:=no-lto
PKG_BUILD_DIR:=$(BUILD_DIR)/Python-$(PKG_VERSION)
HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/Python-$(PKG_VERSION)
-PKG_CONFIG_DEPENDS:= \
- CONFIG_PACKAGE_python3-pkg-resources \
- CONFIG_PACKAGE_python3-setuptools CONFIG_PACKAGE_python3-pip
-
PKG_BUILD_DEPENDS:=bluez python3/host python-build/host python-installer/host python-wheel/host
HOST_BUILD_DEPENDS:=bzip2/host libffi/host
@@ -187,57 +183,6 @@ CONFIGURE_ARGS += \
$(if $(CONFIG_IPV6),--enable-ipv6) \
$(if $(findstring mips,$(CONFIG_ARCH)),,--with-lto)
-ifdef CONFIG_PACKAGE_python3-setuptools
-PYTHON3_SETUPTOOLS_BUILD:=1
-endif
-
-ifdef CONFIG_PACKAGE_python3-pkg-resources
-PYTHON3_SETUPTOOLS_BUILD:=1
-endif
-
-ifeq ($(PYTHON3_SETUPTOOLS_BUILD),1)
-define Build/Compile/python3-setuptools
- $(HOST_PYTHON3_PIP_VARS) \
- $(HOST_PYTHON3_PIP) \
- install \
- --ignore-installed \
- --progress-bar off \
- --root=$(PKG_BUILD_DIR)/install-setuptools \
- --prefix=/usr \
- $(PKG_BUILD_DIR)/Lib/ensurepip/_bundled/setuptools-$(PYTHON3_SETUPTOOLS_VERSION)-py3-none-any.whl
- $(call PatchDir,$(PKG_BUILD_DIR)/install-setuptools/usr/lib/python$(PYTHON3_VERSION)/site-packages,./patches-setuptools,)
-endef
-else
-define Build/Compile/python3-setuptools
- ls $(PKG_BUILD_DIR)/Lib/ensurepip/_bundled/setuptools-$(PYTHON3_SETUPTOOLS_VERSION)-py3-none-any.whl
-endef
-endif # CONFIG_PACKAGE_python3-setuptools
-
-ifdef CONFIG_PACKAGE_python3-pip
-define Build/Compile/python3-pip
- $(HOST_PYTHON3_PIP_VARS) \
- $(HOST_PYTHON3_PIP) \
- install \
- --ignore-installed \
- --progress-bar off \
- --root=$(PKG_BUILD_DIR)/install-pip \
- --prefix=/usr \
- $(PKG_BUILD_DIR)/Lib/ensurepip/_bundled/pip-$(PYTHON3_PIP_VERSION)-py3-none-any.whl
- $(call PatchDir,$(PKG_BUILD_DIR)/install-pip/usr/lib/python$(PYTHON3_VERSION)/site-packages,./patches-pip,)
-endef
-else
-define Build/Compile/python3-pip
- ls $(PKG_BUILD_DIR)/Lib/ensurepip/_bundled/pip-$(PYTHON3_PIP_VERSION)-py3-none-any.whl
-endef
-endif # CONFIG_PACKAGE_python3-pip
-
-define Build/Compile
- $(call Build/Compile/Default)
- # Use host pip to install python-setuptools
- $(call Build/Compile/python3-setuptools)
- $(call Build/Compile/python3-pip)
-endef
-
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include $(1)/usr/lib $(1)/usr/lib/pkgconfig
$(INSTALL_DIR) $(2)/bin
@@ -366,6 +311,8 @@ HOST_CONFIGURE_ARGS += \
define Host/Configure
$(SED) 's/^ENABLE_USER_SITE = None$$$$/ENABLE_USER_SITE = False/' $(HOST_BUILD_DIR)/Lib/site.py
$(call Host/Configure/Default)
+ ls $(HOST_BUILD_DIR)/Lib/ensurepip/_bundled/setuptools-$(PYTHON3_SETUPTOOLS_VERSION)-py3-none-any.whl
+ ls $(HOST_BUILD_DIR)/Lib/ensurepip/_bundled/pip-$(PYTHON3_PIP_VERSION)-py3-none-any.whl
endef
define Host/Install
@@ -386,11 +333,11 @@ define Host/Install
)
$(call Host/Install/Default)
$(if $(wildcard $(HOST_PYTHON3_PKG_DIR)/.setuptools_installed_$(PYTHON3_SETUPTOOLS_VERSION)-$(PYTHON3_SETUPTOOLS_PKG_RELEASE)),,
- $(call HostPatchDir,$(HOST_PYTHON3_PKG_DIR),./patches-setuptools,)
+ $(call HostPatchDir,$(HOST_PYTHON3_PKG_DIR),./patches-host-setuptools,)
touch $(HOST_PYTHON3_PKG_DIR)/.setuptools_installed_$(PYTHON3_SETUPTOOLS_VERSION)-$(PYTHON3_SETUPTOOLS_PKG_RELEASE)
)
$(if $(wildcard $(HOST_PYTHON3_PKG_DIR)/.pip_installed_$(PYTHON3_PIP_VERSION)-$(PYTHON3_PIP_PKG_RELEASE)),,
- $(call HostPatchDir,$(HOST_PYTHON3_PKG_DIR),./patches-pip,)
+ $(call HostPatchDir,$(HOST_PYTHON3_PKG_DIR),./patches-host-pip,)
touch $(HOST_PYTHON3_PKG_DIR)/.pip_installed_$(PYTHON3_PIP_VERSION)-$(PYTHON3_PIP_PKG_RELEASE)
)
endef
diff --git a/lang/python/python3/files/python3-package-pip.mk b/lang/python/python3/files/python3-package-pip.mk
deleted file mode 100644
index 61ea48022..000000000
--- a/lang/python/python3/files/python3-package-pip.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-#
-# Copyright (C) 2017 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python3-pip
-$(call Package/python3/Default)
- TITLE:=Python $(PYTHON3_VERSION) pip module
- VERSION:=$(PYTHON3_PIP_VERSION)-$(PYTHON3_PIP_PKG_RELEASE)
- LICENSE:=MIT
- LICENSE_FILES:=LICENSE.txt
-# CPE_ID:=cpe:/a:python:pip # not currently handled this way by uscan
- DEPENDS:=+python3 +python3-setuptools +python-pip-conf
-endef
-
-define Py3Package/python3-pip/install
- $(INSTALL_DIR) $(1)/usr/bin $(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages
- $(CP) $(PKG_BUILD_DIR)/install-pip/usr/bin/pip$(PYTHON3_VERSION) $(1)/usr/bin
- $(LN) pip$(PYTHON3_VERSION) $(1)/usr/bin/pip3
- $(LN) pip$(PYTHON3_VERSION) $(1)/usr/bin/pip
- $(CP) \
- $(PKG_BUILD_DIR)/install-pip/usr/lib/python$(PYTHON3_VERSION)/site-packages/pip \
- $(PKG_BUILD_DIR)/install-pip/usr/lib/python$(PYTHON3_VERSION)/site-packages/pip-$(PYTHON3_PIP_VERSION).dist-info \
- $(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages/
- find $(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages/ -path '*/__pycache__/*' -delete
- find $(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages/ -type d -name __pycache__ -delete
-endef
-
-$(eval $(call Py3BasePackage,python3-pip, \
- /usr/lib/python$(PYTHON3_VERSION)/ensurepip \
- , \
- DO_NOT_ADD_TO_PACKAGE_DEPENDS \
-))
diff --git a/lang/python/python3/files/python3-package-pkg-resources.mk b/lang/python/python3/files/python3-package-pkg-resources.mk
deleted file mode 100644
index 592fe2c8c..000000000
--- a/lang/python/python3/files/python3-package-pkg-resources.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# Copyright (C) 2019 Alexandru Ardelean <ardeleanalex@gmail.com>
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python3-pkg-resources
-$(call Package/python3/Default)
- TITLE:=Python $(PYTHON3_VERSION) pkg_resources module (part of setuptools)
- VERSION:=$(PYTHON3_SETUPTOOLS_VERSION)-$(PYTHON3_SETUPTOOLS_PKG_RELEASE)
- LICENSE:=MIT
- LICENSE_FILES:=LICENSE
-# CPE_ID:=cpe:/a:python:setuptools # not currently handled this way by uscan
- DEPENDS:=+python3
-endef
-
-define Py3Package/python3-pkg-resources/install
- $(INSTALL_DIR) $(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages
- $(CP) \
- $(PKG_BUILD_DIR)/install-setuptools/usr/lib/python$(PYTHON3_VERSION)/site-packages/pkg_resources \
- $(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages
- find $(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages/ -path '*/__pycache__/*' -delete
- find $(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages/ -type d -name __pycache__ -delete
-endef
-
-$(eval $(call Py3BasePackage,python3-pkg-resources, \
- , \
- DO_NOT_ADD_TO_PACKAGE_DEPENDS \
-))
diff --git a/lang/python/python3/files/python3-package-setuptools.mk b/lang/python/python3/files/python3-package-setuptools.mk
deleted file mode 100644
index 3b7c1ca57..000000000
--- a/lang/python/python3/files/python3-package-setuptools.mk
+++ /dev/null
@@ -1,32 +0,0 @@
-#
-# Copyright (C) 2017 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-define Package/python3-setuptools
-$(call Package/python3/Default)
- TITLE:=Python $(PYTHON3_VERSION) setuptools module
- VERSION:=$(PYTHON3_SETUPTOOLS_VERSION)-$(PYTHON3_SETUPTOOLS_PKG_RELEASE)
- LICENSE:=MIT
- LICENSE_FILES:=LICENSE
-# CPE_ID:=cpe:/a:python:setuptools # not currently handled this way by uscan
- DEPENDS:=+python3 +python3-pkg-resources
-endef
-
-define Py3Package/python3-setuptools/install
- $(INSTALL_DIR) $(1)/usr/bin $(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages
- $(CP) \
- $(PKG_BUILD_DIR)/install-setuptools/usr/lib/python$(PYTHON3_VERSION)/site-packages/setuptools \
- $(PKG_BUILD_DIR)/install-setuptools/usr/lib/python$(PYTHON3_VERSION)/site-packages/setuptools-$(PYTHON3_SETUPTOOLS_VERSION).dist-info \
- $(PKG_BUILD_DIR)/install-setuptools/usr/lib/python$(PYTHON3_VERSION)/site-packages/_distutils_hack \
- $(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages
- find $(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages/ -path '*/__pycache__/*' -delete
- find $(1)/usr/lib/python$(PYTHON3_VERSION)/site-packages/ -type d -name __pycache__ -delete
-endef
-
-$(eval $(call Py3BasePackage,python3-setuptools, \
- , \
- DO_NOT_ADD_TO_PACKAGE_DEPENDS \
-))
diff --git a/lang/python/python3/files/python3-package-venv.mk b/lang/python/python3/files/python3-package-venv.mk
new file mode 100644
index 000000000..b2ddcab79
--- /dev/null
+++ b/lang/python/python3/files/python3-package-venv.mk
@@ -0,0 +1,19 @@
+#
+# Copyright (C) 2023 Jeffery To
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Package/python3-venv
+$(call Package/python3/Default)
+ TITLE:=Python $(PYTHON3_VERSION) venv module
+ DEPENDS:=+python3
+endef
+
+$(eval $(call Py3BasePackage,python3-venv, \
+ /usr/lib/python$(PYTHON3_VERSION)/ensurepip \
+ /usr/lib/python$(PYTHON3_VERSION)/venv \
+ , \
+ DO_NOT_ADD_TO_PACKAGE_DEPENDS \
+))
diff --git a/lang/python/python3/patches-setuptools/.placeholder b/lang/python/python3/patches-host-pip/.gitkeep
index e69de29bb..e69de29bb 100644
--- a/lang/python/python3/patches-setuptools/.placeholder
+++ b/lang/python/python3/patches-host-pip/.gitkeep
diff --git a/lang/python/python3/patches-host-setuptools/.gitkeep b/lang/python/python3/patches-host-setuptools/.gitkeep
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/lang/python/python3/patches-host-setuptools/.gitkeep
diff --git a/lang/python/python3/patches-pip/001-pep517-pyc-fix.patch b/lang/python/python3/patches-pip/001-pep517-pyc-fix.patch
deleted file mode 100644
index df5f90cce..000000000
--- a/lang/python/python3/patches-pip/001-pep517-pyc-fix.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-diff --git a/pip/_vendor/pep517/in_process/__init__.py b/pip/_vendor/pep517/in_process/__init__.py
-index 281a356cfe26..77acbfc2670b 100644
---- a/pip/_vendor/pep517/in_process/__init__.py
-+++ b/pip/_vendor/pep517/in_process/__init__.py
-@@ -14,13 +14,21 @@ try:
- except AttributeError:
- # Python 3.8 compatibility
- def _in_proc_script_path():
-- return resources.path(__package__, '_in_process.py')
-+ if resources.is_resource(__package__, '_in_process.py'):
-+ return resources.path(__package__, '_in_process.py')
-+ return resources.path(__package__, '_in_process.pyc')
- else:
- def _in_proc_script_path():
-+ if resources.files(__package__).joinpath('_in_process.py').is_file():
-+ return resources.as_file(
-+ resources.files(__package__).joinpath('_in_process.py'))
- return resources.as_file(
-- resources.files(__package__).joinpath('_in_process.py'))
-+ resources.files(__package__).joinpath('_in_process.pyc'))
- except ImportError:
- # Python 3.6 compatibility
- @contextmanager
- def _in_proc_script_path():
-- yield pjoin(dirname(abspath(__file__)), '_in_process.py')
-+ _in_proc_script = pjoin(dirname(abspath(__file__)), '_in_process.py')
-+ if not os.path.isfile(_in_proc_script):
-+ _in_proc_script = pjoin(dirname(abspath(__file__)), '_in_process.pyc')
-+ yield _in_proc_script