mirror of
https://github.com/openwrt/packages.git
synced 2025-12-26 13:26:17 +04:00
HostPython3 only adds a few environment variables before running host Python. It has only two users, Build/Compile/HostPy3RunHost and Build/Compile/HostPy3RunTarget. HostPython3 also accesses $(PYTHON3PATH), even though python3-host.mk does not include python3-package.mk, where the variable is defined. This removes HostPython3 and has its two users run host Python directly. This also combines the environment variables of HostPython3 and the two users into HOST_PYTHON3_VARS and PYTHON3_VARS. Signed-off-by: Jeffery To <jeffery.to@gmail.com>
163 lines
4.3 KiB
Makefile
163 lines
4.3 KiB
Makefile
#
|
|
# Copyright (C) 2007-2016 OpenWrt.org
|
|
#
|
|
# This is free software, licensed under the GNU General Public License v2.
|
|
# See /LICENSE for more information.
|
|
#
|
|
|
|
# Note: include this after `include $(TOPDIR)/rules.mk in your package Makefile
|
|
python3_mk_path:=$(dir $(lastword $(MAKEFILE_LIST)))
|
|
include $(python3_mk_path)python3-host.mk
|
|
|
|
PYTHON3_DIR:=$(STAGING_DIR)/usr
|
|
PYTHON3_BIN_DIR:=$(PYTHON3_DIR)/bin
|
|
PYTHON3_INC_DIR:=$(PYTHON3_DIR)/include/python$(PYTHON3_VERSION)
|
|
PYTHON3_LIB_DIR:=$(PYTHON3_DIR)/lib/python$(PYTHON3_VERSION)
|
|
|
|
PYTHON3_PKG_DIR:=/usr/lib/python$(PYTHON3_VERSION)/site-packages
|
|
|
|
PYTHON3:=python$(PYTHON3_VERSION)
|
|
|
|
PYTHON3PATH:=$(PYTHON3_LIB_DIR):$(STAGING_DIR)/$(PYTHON3_PKG_DIR):$(PKG_INSTALL_DIR)/$(PYTHON3_PKG_DIR)
|
|
|
|
# These configure args are needed in detection of path to Python header files
|
|
# using autotools.
|
|
CONFIGURE_ARGS += \
|
|
_python_sysroot="$(STAGING_DIR)" \
|
|
_python_prefix="/usr" \
|
|
_python_exec_prefix="/usr"
|
|
|
|
PKG_USE_MIPS16:=0
|
|
# This is required in addition to PKG_USE_MIPS16:=0 because otherwise MIPS16
|
|
# flags are inherited from the Python base package (via sysconfig module)
|
|
ifdef CONFIG_USE_MIPS16
|
|
TARGET_CFLAGS += -mno-mips16 -mno-interlink-mips16
|
|
endif
|
|
|
|
define Py3Shebang
|
|
$(SED) "1"'!'"b;s,^#"'!'".*python.*,#"'!'"/usr/bin/python3," -i --follow-symlinks $(1)
|
|
endef
|
|
|
|
define Py3Package
|
|
|
|
define Package/$(1)-src
|
|
$(call Package/$(1))
|
|
DEPENDS:=
|
|
CONFLICTS:=
|
|
PROVIDES:=
|
|
EXTRA_DEPENDS:=
|
|
TITLE+= (sources)
|
|
USERID:=
|
|
MENU:=
|
|
endef
|
|
|
|
define Package/$(1)-src/description
|
|
$(call Package/$(1)/description).
|
|
(Contains the Python3 sources for this package).
|
|
endef
|
|
|
|
define Package/$(1)-src/config
|
|
depends on PACKAGE_$(1)
|
|
endef
|
|
|
|
# Add default PyPackage filespec none defined
|
|
ifndef Py3Package/$(1)/filespec
|
|
define Py3Package/$(1)/filespec
|
|
+|$(PYTHON3_PKG_DIR)
|
|
endef
|
|
endif
|
|
|
|
ifndef Py3Package/$(1)/install
|
|
define Py3Package/$(1)/install
|
|
if [ -d $(PKG_INSTALL_DIR)/usr/bin ]; then \
|
|
$(INSTALL_DIR) $$(1)/usr/bin ; \
|
|
$(CP) $(PKG_INSTALL_DIR)/usr/bin/* $$(1)/usr/bin/ ; \
|
|
fi
|
|
endef
|
|
endif
|
|
|
|
ifndef Package/$(1)/install
|
|
$(call shexport,Py3Package/$(1)/filespec)
|
|
|
|
define Package/$(1)/install
|
|
$$(call Py3Package/$(1)/install,$$(1))
|
|
$(SHELL) $(python3_mk_path)python-package-install.sh "3" \
|
|
"$(PKG_INSTALL_DIR)" "$$(1)" \
|
|
"$(HOST_PYTHON3_BIN)" "$$(2)" \
|
|
"$$$$$$$$$$(call shvar,Py3Package/$(1)/filespec)" && \
|
|
if [ -d "$$(1)/usr/bin" ]; then \
|
|
$(call Py3Shebang,$$(1)/usr/bin/*) ; \
|
|
fi
|
|
endef
|
|
|
|
define Package/$(1)-src/install
|
|
$$(call Package/$(1)/install,$$(1),sources)
|
|
endef
|
|
endif # Package/$(1)/install
|
|
endef
|
|
|
|
PYTHON3_VARS = \
|
|
CC="$(TARGET_CC)" \
|
|
CCSHARED="$(TARGET_CC) $(FPIC)" \
|
|
CXX="$(TARGET_CXX)" \
|
|
LD="$(TARGET_CC)" \
|
|
LDSHARED="$(TARGET_CC) -shared" \
|
|
CFLAGS="$(TARGET_CFLAGS)" \
|
|
CPPFLAGS="$(TARGET_CPPFLAGS) -I$(PYTHON3_INC_DIR)" \
|
|
LDFLAGS="$(TARGET_LDFLAGS) -lpython$(PYTHON3_VERSION)" \
|
|
_PYTHON_HOST_PLATFORM=linux2 \
|
|
__PYVENV_LAUNCHER__="/usr/bin/$(PYTHON3)" \
|
|
PYTHONPATH="$(PYTHON3PATH)" \
|
|
PYTHONDONTWRITEBYTECODE=1 \
|
|
PYTHONOPTIMIZE="" \
|
|
_python_sysroot="$(STAGING_DIR)" \
|
|
_python_prefix="/usr" \
|
|
_python_exec_prefix="/usr"
|
|
|
|
# $(1) => directory of python script
|
|
# $(2) => python script and its arguments
|
|
# $(3) => additional variables
|
|
define Build/Compile/HostPy3RunTarget
|
|
cd "$(if $(strip $(1)),$(strip $(1)),.)" && \
|
|
$(PYTHON3_VARS) \
|
|
$(3) \
|
|
$(HOST_PYTHON3_BIN) $(2)
|
|
endef
|
|
|
|
# $(1) => build subdir
|
|
# $(2) => additional arguments to setup.py
|
|
# $(3) => additional variables
|
|
define Build/Compile/Py3Mod
|
|
$(INSTALL_DIR) $(PKG_INSTALL_DIR)/$(PYTHON3_PKG_DIR)
|
|
$(call Build/Compile/HostPy3RunTarget, \
|
|
$(PKG_BUILD_DIR)/$(strip $(1)), \
|
|
setup.py $(2), \
|
|
$(3))
|
|
endef
|
|
|
|
PYTHON3_PKG_SETUP_DIR ?=
|
|
PYTHON3_PKG_SETUP_GLOBAL_ARGS ?=
|
|
PYTHON3_PKG_SETUP_ARGS ?= --single-version-externally-managed
|
|
PYTHON3_PKG_SETUP_VARS ?=
|
|
|
|
define Py3Build/Compile/Default
|
|
$(if $(HOST_PYTHON3_PACKAGE_BUILD_DEPENDS),
|
|
$(call Build/Compile/HostPy3PipInstall,$(HOST_PYTHON3_PACKAGE_BUILD_DEPENDS))
|
|
)
|
|
$(call Build/Compile/Py3Mod, \
|
|
$(PYTHON3_PKG_SETUP_DIR), \
|
|
$(PYTHON3_PKG_SETUP_GLOBAL_ARGS) \
|
|
install --prefix="/usr" --root="$(PKG_INSTALL_DIR)" \
|
|
$(PYTHON3_PKG_SETUP_ARGS), \
|
|
$(PYTHON3_PKG_SETUP_VARS) \
|
|
)
|
|
endef
|
|
|
|
Py3Build/Compile=$(Py3Build/Compile/Default)
|
|
|
|
ifeq ($(BUILD_VARIANT),python3)
|
|
define Build/Compile
|
|
$(call Py3Build/Compile)
|
|
endef
|
|
endif # python3
|