summaryrefslogtreecommitdiff
path: root/lang/python/python3-package.mk
diff options
context:
space:
mode:
authorJeffery To <jeffery.to@gmail.com>2020-04-14 21:14:49 +0800
committerJeffery To <jeffery.to@gmail.com>2020-04-19 01:56:23 +0800
commit3cdca38dce01553766b032d8bbfce08a35d6555e (patch)
tree01a39717623d2d1366a151182b7e5f68ae0fd2f1 /lang/python/python3-package.mk
parent0bc1bf55781e31a3513a6a6269f1003b4344d04e (diff)
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>
Diffstat (limited to 'lang/python/python3-package.mk')
-rw-r--r--lang/python/python3-package.mk70
1 files changed, 59 insertions, 11 deletions
diff --git a/lang/python/python3-package.mk b/lang/python/python3-package.mk
index 81e7cd777..6fab0f5cd 100644
--- a/lang/python/python3-package.mk
+++ b/lang/python/python3-package.mk
@@ -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