2 # Copyright (C) 2017 OpenWrt.org
4 # This is free software, licensed under the GNU General Public License v2.
5 # See /LICENSE for more information.
8 # Note: include this file after `include $(TOPDIR)/rules.mk in your package Makefile
9 # if `python3-package.mk` is included, this will already be included
12 python3_mk_path
:=$(dir $(lastword
$(MAKEFILE_LIST
)))
13 include $(python3_mk_path
)python3-version.mk
15 # Unset environment variables
17 # https://docs.python.org/3/using/cmdline.html#environment-variables
31 PYTHONDONTWRITEBYTECODE \
34 PYTHONINTMAXSTRDIGITS \
42 PYTHONPROFILEIMPORTTIME \
46 PYTHONLEGACYWINDOWSFSENCODING \
47 PYTHONLEGACYWINDOWSSTDIO \
51 PYTHONWARNDEFAULTENCODING \
54 # https://docs.python.org/3/using/cmdline.html#debug-mode-variables
60 HOST_PYTHON3_DIR
:=$(STAGING_DIR_HOSTPKG
)
61 HOST_PYTHON3_INC_DIR
:=$(HOST_PYTHON3_DIR
)/include/python
$(PYTHON3_VERSION
)
62 HOST_PYTHON3_LIB_DIR
:=$(HOST_PYTHON3_DIR
)/lib
/python
$(PYTHON3_VERSION
)
64 HOST_PYTHON3_PKG_DIR
:=$(HOST_PYTHON3_DIR
)/lib
/python
$(PYTHON3_VERSION
)/site-packages
66 HOST_PYTHON3_BIN
:=$(HOST_PYTHON3_DIR
)/bin
/python
$(PYTHON3_VERSION
)
68 HOST_PYTHON3PATH
:=$(HOST_PYTHON3_LIB_DIR
):$(HOST_PYTHON3_PKG_DIR
)
73 CCSHARED
="$(HOSTCC) $(HOST_FPIC)" \
76 LDSHARED
="$(HOSTCC) -shared" \
77 CFLAGS
="$(HOST_CFLAGS)" \
78 CPPFLAGS
="$(HOST_CPPFLAGS) -I$(HOST_PYTHON3_INC_DIR)" \
79 LDFLAGS
="$(HOST_LDFLAGS) -lpython$(PYTHON3_VERSION) -Wl$(comma)-rpath$(comma)$(STAGING_DIR_HOSTPKG)/lib"
81 # $(1) => directory of python script
82 # $(2) => python script and its arguments
83 # $(3) => additional variables
84 define HostPython3
/Run
85 cd
"$(if $(strip $(1)),$(strip $(1)),.)" && \
86 $(HOST_PYTHON3_VARS
) \
88 $(HOST_PYTHON3_BIN
) $(2)
91 # Note: I shamelessly copied this from Yousong's logic (from python-packages);
92 HOST_PYTHON3_PIP
:=$(STAGING_DIR_HOSTPKG
)/bin
/pip
$(PYTHON3_VERSION
)
94 HOST_PYTHON3_PIP_CACHE_DIR
:=$(DL_DIR
)/pip-cache
96 HOST_PYTHON3_PIP_VARS
:= \
97 PIP_CACHE_DIR
="$(HOST_PYTHON3_PIP_CACHE_DIR)" \
98 PIP_CONFIG_FILE
=/dev
/null \
99 PIP_DISABLE_PIP_VERSION_CHECK
=1
101 # Multiple concurrent pip processes can lead to errors or unexpected results: https://github.com/pypa/pip/issues/2361
102 # $(1) => packages to install
103 define HostPython3
/PipInstall
105 $(HOST_PYTHON3_VARS
) \
106 $(HOST_PYTHON3_PIP_VARS
) \
107 $(HOST_PYTHON3_PIP
) \
113 $(if
$(CONFIG_PYTHON3_HOST_PIP_CACHE_WORLD_READABLE
), \
114 && $(FIND
) $(HOST_PYTHON3_PIP_CACHE_DIR
) -not
-type d
-exec chmod go
+r
'{}' \
; \
115 && $(FIND
) $(HOST_PYTHON3_PIP_CACHE_DIR
) -type d
-exec chmod go
+rx
'{}' \
; \