python3: Split pip into separate source package
Packaging pip from a separate source package allows it to stay updated
with upstream.
Host pip will remain installed as part of python3. Host pip is used in a
much more controlled way and so is less critical for it to track
upstream.
This also removes the python-pip-conf package and installs the pip.conf
file as part of python3-pip.
The patch 003-disable-pip-version-check.patch is originally from Debian:
bb079efb8c/debian/patches/disable-pip-version-check.patch
pip was in a separate source package that was removed in
a53d0c5a403d1669e2cf6c59c2be6a9d3ed633a0; this work is not based on that
earlier package.
Signed-off-by: Jeffery To <jeffery.to@gmail.com>
This commit is contained in:
parent
d53475ac21
commit
eee273507b
|
@ -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))
|
|
|
@ -1,3 +0,0 @@
|
||||||
[global]
|
|
||||||
cache-dir=/tmp/.cache
|
|
||||||
log-file=/tmp/pip-log.txt
|
|
|
@ -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))
|
|
@ -0,0 +1,2 @@
|
||||||
|
[global]
|
||||||
|
cache-dir = /var/cache/pip
|
|
@ -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'))
|
|
@ -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]:
|
|
@ -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.",
|
||||||
|
)
|
|
@ -43,7 +43,7 @@ HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/Python-$(PKG_VERSION)
|
||||||
|
|
||||||
PKG_CONFIG_DEPENDS:= \
|
PKG_CONFIG_DEPENDS:= \
|
||||||
CONFIG_PACKAGE_python3-pkg-resources \
|
CONFIG_PACKAGE_python3-pkg-resources \
|
||||||
CONFIG_PACKAGE_python3-setuptools CONFIG_PACKAGE_python3-pip
|
CONFIG_PACKAGE_python3-setuptools
|
||||||
|
|
||||||
PKG_BUILD_DEPENDS:=bluez python3/host python-build/host python-installer/host python-wheel/host
|
PKG_BUILD_DEPENDS:=bluez python3/host python-build/host python-installer/host python-wheel/host
|
||||||
HOST_BUILD_DEPENDS:=bzip2/host libffi/host
|
HOST_BUILD_DEPENDS:=bzip2/host libffi/host
|
||||||
|
@ -213,29 +213,10 @@ define Build/Compile/python3-setuptools
|
||||||
endef
|
endef
|
||||||
endif # CONFIG_PACKAGE_python3-setuptools
|
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
|
define Build/Compile
|
||||||
$(call Build/Compile/Default)
|
$(call Build/Compile/Default)
|
||||||
# Use host pip to install python-setuptools
|
# Use host pip to install python-setuptools
|
||||||
$(call Build/Compile/python3-setuptools)
|
$(call Build/Compile/python3-setuptools)
|
||||||
$(call Build/Compile/python3-pip)
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Build/InstallDev
|
define Build/InstallDev
|
||||||
|
@ -366,6 +347,7 @@ HOST_CONFIGURE_ARGS += \
|
||||||
define Host/Configure
|
define Host/Configure
|
||||||
$(SED) 's/^ENABLE_USER_SITE = None$$$$/ENABLE_USER_SITE = False/' $(HOST_BUILD_DIR)/Lib/site.py
|
$(SED) 's/^ENABLE_USER_SITE = None$$$$/ENABLE_USER_SITE = False/' $(HOST_BUILD_DIR)/Lib/site.py
|
||||||
$(call Host/Configure/Default)
|
$(call Host/Configure/Default)
|
||||||
|
ls $(HOST_BUILD_DIR)/Lib/ensurepip/_bundled/pip-$(PYTHON3_PIP_VERSION)-py3-none-any.whl
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Host/Install
|
define Host/Install
|
||||||
|
@ -390,7 +372,7 @@ define Host/Install
|
||||||
touch $(HOST_PYTHON3_PKG_DIR)/.setuptools_installed_$(PYTHON3_SETUPTOOLS_VERSION)-$(PYTHON3_SETUPTOOLS_PKG_RELEASE)
|
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)),,
|
$(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)
|
touch $(HOST_PYTHON3_PKG_DIR)/.pip_installed_$(PYTHON3_PIP_VERSION)-$(PYTHON3_PIP_PKG_RELEASE)
|
||||||
)
|
)
|
||||||
endef
|
endef
|
||||||
|
|
|
@ -1,34 +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, \
|
|
||||||
, \
|
|
||||||
DO_NOT_ADD_TO_PACKAGE_DEPENDS \
|
|
||||||
))
|
|
|
@ -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
|
|
Loading…
Reference in New Issue