From b70b978cc61bdd6fcdc7f8f7bae8ee3ef16baf4a Mon Sep 17 00:00:00 2001 From: Jeffery To Date: Sat, 5 Mar 2016 02:09:05 +0800 Subject: [PATCH 1/2] python: use default host build prefix, remove cross-compile workarounds for host The sets host Python's prefix and exec-prefix to the same value ($(STAGING_DIR)/host for packages, as currently defined in include/host-build.mk), which avoids the case where pyconfig.h is not in the same location as Python's other header files (see https://bugs.python.org/issue896330). This also removes some cross compilation workarounds (_python_sysroot/prefix/exec_prefix, disabling byte-compilation, __PYVENV_LAUNCHER__) that are not necessary when compiling packages for host. Signed-off-by: Jeffery To --- lang/python/Makefile | 7 +++---- lang/python/files/python-host.mk | 27 ++++++++++++--------------- lang/python/files/python-package.mk | 5 +---- 3 files changed, 16 insertions(+), 23 deletions(-) diff --git a/lang/python/Makefile b/lang/python/Makefile index 6631cc04f..5b60c6714 100644 --- a/lang/python/Makefile +++ b/lang/python/Makefile @@ -1,5 +1,5 @@ # -# Copyright (C) 2006-2015 OpenWrt.org +# Copyright (C) 2006-2016 OpenWrt.org # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. @@ -12,7 +12,7 @@ include ./files/python-package.mk PKG_NAME:=python PKG_VERSION:=$(PYTHON_VERSION).$(PYTHON_VERSION_MICRO) -PKG_RELEASE:=4 +PKG_RELEASE:=5 PKG_SOURCE:=Python-$(PKG_VERSION).tar.xz PKG_SOURCE_URL:=https://www.python.org/ftp/python/$(PKG_VERSION) @@ -144,7 +144,7 @@ define Build/InstallDev $(PKG_INSTALL_DIR)/usr/include/python$(PYTHON_VERSION) \ $(1)/usr/include/ $(CP) \ - $(STAGING_DIR)/host/usr/lib/python$(PYTHON_VERSION) \ + $(STAGING_DIR)/host/lib/python$(PYTHON_VERSION) \ $(PKG_INSTALL_DIR)/usr/lib/libpython$(PYTHON_VERSION).so* \ $(1)/usr/lib/ $(CP) \ @@ -221,7 +221,6 @@ HOST_CONFIGURE_ARGS+= \ --without-cxx-main \ --without-pymalloc \ --with-threads \ - --prefix=$(STAGING_DIR)/host/usr \ --with-system-expat=$(STAGING_DIR)/host \ --with-ensurepip=upgrade \ CONFIG_SITE= \ diff --git a/lang/python/files/python-host.mk b/lang/python/files/python-host.mk index 7831eb683..0327f3ad2 100644 --- a/lang/python/files/python-host.mk +++ b/lang/python/files/python-host.mk @@ -1,38 +1,36 @@ # -# Copyright (C) 2015 OpenWrt.org +# Copyright (C) 2015-2016 OpenWrt.org # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. # -HOST_PYTHON_INC_DIR:=$(STAGING_DIR)/host/usr/include/python$(PYTHON_VERSION) +HOST_PYTHON_DIR:=$(STAGING_DIR)/host +HOST_PYTHON_INC_DIR:=$(HOST_PYTHON_DIR)/include/python$(PYTHON_VERSION) +HOST_PYTHON_LIB_DIR:=$(HOST_PYTHON_DIR)/lib/python$(PYTHON_VERSION) -HOST_PYTHON_PKG_DIR:=/usr/lib/python$(PYTHON_VERSION)/site-packages +HOST_PYTHON_PKG_DIR:=/lib/python$(PYTHON_VERSION)/site-packages + +HOST_PYTHON_BIN:=$(HOST_PYTHON_DIR)/bin/python$(PYTHON_VERSION) HOST_PYTHONPATH:=$(HOST_PYTHON_LIB_DIR):$(STAGING_DIR)/host/$(HOST_PYTHON_PKG_DIR) + define HostPython if [ "$(strip $(3))" == "HOST" ]; then \ export PYTHONPATH="$(HOST_PYTHONPATH)"; \ - export _python_sysroot="$(STAGING_DIR)/host"; \ + export PYTHONDONTWRITEBYTECODE=0; \ else \ export PYTHONPATH="$(PYTHONPATH)"; \ + export PYTHONDONTWRITEBYTECODE=1; \ export _python_sysroot="$(STAGING_DIR)"; \ + export _python_prefix="/usr"; \ + export _python_exec_prefix="/usr"; \ fi; \ export PYTHONOPTIMIZE=""; \ - export PYTHONDONTWRITEBYTECODE=1; \ - export _python_prefix="/usr"; \ - export _python_exec_prefix="/usr"; \ $(1) \ $(HOST_PYTHON_BIN) $(2); endef -# These configure args are needed in detection of path to Python header files -# using autotools. -HOST_CONFIGURE_ARGS += \ - _python_sysroot="$(STAGING_DIR)/host" \ - _python_prefix="/usr" \ - _python_exec_prefix="/usr" - # $(1) => build subdir # $(2) => additional arguments to setup.py # $(3) => additional variables @@ -48,7 +46,6 @@ define Build/Compile/HostPyMod CPPFLAGS="$(HOST_CPPFLAGS) -I$(HOST_PYTHON_INC_DIR)" \ LDFLAGS="$(HOST_LDFLAGS) -lpython$(PYTHON_VERSION)" \ _PYTHON_HOST_PLATFORM=linux2 \ - __PYVENV_LAUNCHER__="/usr/bin/$(PYTHON)" \ $(3) \ , \ ./setup.py $(2) \ diff --git a/lang/python/files/python-package.mk b/lang/python/files/python-package.mk index e8c049224..1f6771845 100644 --- a/lang/python/files/python-package.mk +++ b/lang/python/files/python-package.mk @@ -1,5 +1,5 @@ # -# Copyright (C) 2006-2015 OpenWrt.org +# Copyright (C) 2006-2016 OpenWrt.org # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. @@ -17,9 +17,6 @@ PYTHON_PKG_DIR:=/usr/lib/python$(PYTHON_VERSION)/site-packages PYTHON:=python$(PYTHON_VERSION) -HOST_PYTHON_LIB_DIR:=$(STAGING_DIR)/host/usr/lib/python$(PYTHON_VERSION) -HOST_PYTHON_BIN:=$(STAGING_DIR)/host/bin/python2 - PYTHONPATH:=$(PYTHON_LIB_DIR):$(STAGING_DIR)/$(PYTHON_PKG_DIR):$(PKG_INSTALL_DIR)/$(PYTHON_PKG_DIR) # These configure args are needed in detection of path to Python header files From 57c7942e25fb28b71ecfde42e6f075b30b7388c7 Mon Sep 17 00:00:00 2001 From: Jeffery To Date: Sat, 5 Mar 2016 02:27:25 +0800 Subject: [PATCH 2/2] python packages: update host install prefix Signed-off-by: Jeffery To --- lang/python-cffi/Makefile | 6 +++--- lang/python-ply/Makefile | 13 +++---------- lang/python-pycparser/Makefile | 6 +++--- lang/python-setuptools/Makefile | 8 ++++---- 4 files changed, 13 insertions(+), 20 deletions(-) diff --git a/lang/python-cffi/Makefile b/lang/python-cffi/Makefile index a0763e0f1..3b76fddb3 100644 --- a/lang/python-cffi/Makefile +++ b/lang/python-cffi/Makefile @@ -1,5 +1,5 @@ # -# Copyright (C) 2015 OpenWrt.org +# Copyright (C) 2015-2016 OpenWrt.org # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=cffi PKG_VERSION:=1.5.0 -PKG_RELEASE:=1 +PKG_RELEASE:=2 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://pypi.python.org/packages/source/c/cffi @@ -45,7 +45,7 @@ define Build/Compile endef define Host/Compile - $(call Build/Compile/HostPyMod,,install --prefix="/usr" --root="$(STAGING_DIR)/host") + $(call Build/Compile/HostPyMod,,install --prefix="" --root="$(STAGING_DIR)/host") endef define Host/Install diff --git a/lang/python-ply/Makefile b/lang/python-ply/Makefile index 5f1a95dd3..c92de2edf 100644 --- a/lang/python-ply/Makefile +++ b/lang/python-ply/Makefile @@ -1,5 +1,5 @@ # -# Copyright (C) 2015 OpenWrt.org +# Copyright (C) 2015-2016 OpenWrt.org # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=ply PKG_VERSION:=3.8 -PKG_RELEASE:=2 +PKG_RELEASE:=3 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=http://www.dabeaz.com/ply @@ -45,15 +45,8 @@ define Build/Compile $(call Build/Compile/PyMod,,install --prefix="/usr" --root="$(PKG_INSTALL_DIR)") endef -define Build/InstallDev - $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR) - $(CP) \ - $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \ - $(1)$(PYTHON_PKG_DIR) -endef - define Host/Compile - $(call Build/Compile/HostPyMod,,install --prefix="/usr" --root="$(STAGING_DIR)/host") + $(call Build/Compile/HostPyMod,,install --prefix="" --root="$(STAGING_DIR)/host") endef define Host/Install diff --git a/lang/python-pycparser/Makefile b/lang/python-pycparser/Makefile index b657cd819..8acab48f0 100644 --- a/lang/python-pycparser/Makefile +++ b/lang/python-pycparser/Makefile @@ -1,5 +1,5 @@ # -# Copyright (C) 2015 OpenWrt.org +# Copyright (C) 2015-2016 OpenWrt.org # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=pycparser PKG_VERSION:=2.14 -PKG_RELEASE:=2 +PKG_RELEASE:=3 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://pypi.python.org/packages/source/p/pycparser @@ -47,7 +47,7 @@ define Build/Compile endef define Host/Compile - $(call Build/Compile/HostPyMod,,install --prefix="/usr" --root="$(STAGING_DIR)/host") + $(call Build/Compile/HostPyMod,,install --prefix="" --root="$(STAGING_DIR)/host") endef define Host/Install diff --git a/lang/python-setuptools/Makefile b/lang/python-setuptools/Makefile index 880dd0ba8..141e9a500 100644 --- a/lang/python-setuptools/Makefile +++ b/lang/python-setuptools/Makefile @@ -1,15 +1,15 @@ # -# Copyright (C) 2014 OpenWrt.org +# Copyright (C) 2014-2016 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-setuptools PKG_VERSION:=19.4 -PKG_RELEASE:=1 +PKG_RELEASE:=2 PKG_SOURCE:=setuptools-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://pypi.python.org/packages/source/s/setuptools/ @@ -60,7 +60,7 @@ endef define Host/Compile $(call Build/Compile/HostPyMod,,\ - install --root="$(STAGING_DIR)/host" --prefix="/usr" \ + install --root="$(STAGING_DIR)/host" --prefix="" \ --single-version-externally-managed \ ) endef