python3: Move functionality into python3-package.mk

This moves functionality from python-package-install.sh into
python3-package.mk, so that they can be reused separate from filespec
processing.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
This commit is contained in:
Jeffery To
2020-04-14 21:14:49 +08:00
parent 0bc1bf5578
commit 3cdca38dce
2 changed files with 62 additions and 64 deletions

View File

@@ -75,7 +75,47 @@ define Python3/ModSetup
endef
define Python3/FixShebang
$(SED) "1"'!'"b;s,^#"'!'".*python.*,#"'!'"/usr/bin/python3," -i --follow-symlinks $(1)
$(SED) "1"'!'"b;s,^#"'!'".*python.*,#"'!'"/usr/bin/python3," -i --follow-symlinks $(1)
endef
# default max recursion is 10
PYTHON3_COMPILEALL_MAX_RECURSION_LEVEL:=20
# $(1) => directory of python source files to compile
#
# XXX [So that you won't goof as I did]
# Note: Yes, I tried to use the -O & -OO flags here.
# However the generated byte-codes were not portable.
# So, we just stuck to un-optimized byte-codes,
# which is still way better/faster than running
# Python sources all the time.
#
# Setting a fixed hash seed value is less secure than using
# random seed values, but is necessary for reproducible builds
# (for now).
#
# Should revisit this when https://bugs.python.org/issue37596
# (and other related reproducibility issues) are fixed.
define Python3/CompileAll
$(call Python3/Run,, \
-m compileall -r "$(PYTHON3_COMPILEALL_MAX_RECURSION_LEVEL)" -b -d '/' $(1),
$(if $(SOURCE_DATE_EPOCH),PYTHONHASHSEED="$(SOURCE_DATE_EPOCH)")
)
endef
# $(1) => target directory
define Python3/DeleteSourceFiles
$(FIND) $(1) -type f -name '*.py' -delete
endef
# $(1) => target directory
define Python3/DeleteNonSourceFiles
$(FIND) $(1) -not -type d -not -name '*.py' -delete
endef
# $(1) => target directory
define Python3/DeleteEmptyDirs
$(FIND) $(1) -mindepth 1 -empty -type d -not -path '$(1)/CONTROL' -not -path '$(1)/CONTROL/*' -delete
endef
@@ -122,20 +162,28 @@ define Py3Package
ifndef Package/$(1)/install
$(call shexport,Py3Package/$(1)/filespec)
define Package/$(1)/install
define Package/$(1)/install
$$(call Py3Package/$(1)/install,$$(1))
$(SHELL) $(python3_mk_path)python-package-install.sh "3" \
$(SHELL) $(python3_mk_path)python-package-install.sh \
"$(PKG_INSTALL_DIR)" "$$(1)" \
"$(HOST_PYTHON3_BIN)" "$$(2)" \
"$$$$$$$$$$(call shvar,Py3Package/$(1)/filespec)" && \
if [ -d "$$(1)/usr/bin" ]; then \
$(call Python3/FixShebang,$$(1)/usr/bin/*) ; \
"$$$$$$$$$$(call shvar,Py3Package/$(1)/filespec)"
$(FIND) $$(1) -name '*.exe' -delete
$$(call Python3/CompileAll,$$(1))
$$(call Python3/DeleteSourceFiles,$$(1))
$$(call Python3/DeleteEmptyDirs,$$(1))
if [ -d "$$(1)/usr/bin" ]; then \
$$(call Python3/FixShebang,$$(1)/usr/bin/*) ; \
fi
endef
endef
define Package/$(1)-src/install
$$(call Package/$(1)/install,$$(1),sources)
endef
define Package/$(1)-src/install
$$(call Py3Package/$(1)/install,$$(1))
$(SHELL) $(python3_mk_path)python-package-install.sh \
"$(PKG_INSTALL_DIR)" "$$(1)" \
"$$$$$$$$$$(call shvar,Py3Package/$(1)/filespec)"
$$(call Python3/DeleteNonSourceFiles,$$(1))
$$(call Python3/DeleteEmptyDirs,$$(1))
endef
endif # Package/$(1)/install
endef