Merge pull request #21190 from jefferyto/python-split-packages

python3: Split venv into separate package, pip and setuptools into separate source packages
This commit is contained in:
Alexandru Ardelean 2023-05-27 21:15:06 +03:00 committed by GitHub
commit 0f858d5076
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 208 additions and 223 deletions

View file

@ -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))

View file

@ -1,3 +0,0 @@
[global]
cache-dir=/tmp/.cache
log-file=/tmp/pip-log.txt

View file

@ -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))

View file

@ -0,0 +1,2 @@
[global]
cache-dir = /var/cache/pip

View file

@ -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'))

View file

@ -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]:

View file

@ -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.",
)

View file

@ -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))

View file

@ -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

View file

@ -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 \
))

View file

@ -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 \
))

View file

@ -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 \
))

View file

@ -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 \
))

View file

@ -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