From 17da9886456369878560953ffb773292f6a2a00a Mon Sep 17 00:00:00 2001 From: Alexandru Ardelean Date: Tue, 7 Mar 2017 14:50:19 +0200 Subject: [PATCH 01/11] python,python3: fix goof with multiline command break Signed-off-by: Alexandru Ardelean --- lang/python/files/python-package.mk | 4 ++-- lang/python3/files/python3-package.mk | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lang/python/files/python-package.mk b/lang/python/files/python-package.mk index d0818a64c..31a308fa0 100644 --- a/lang/python/files/python-package.mk +++ b/lang/python/files/python-package.mk @@ -44,8 +44,8 @@ define PyPackage ifndef PyPackage/$(1)/install define PyPackage/$(1)/install if [ -d $(PKG_INSTALL_DIR)/usr/bin ]; then \ - $(INSTALL_DIR) $$(1)/usr/bin \ - $(CP) $(PKG_INSTALL_DIR)/usr/bin/* $$(1)/usr/bin/ + $(INSTALL_DIR) $$(1)/usr/bin ; \ + $(CP) $(PKG_INSTALL_DIR)/usr/bin/* $$(1)/usr/bin/ ; \ fi endef endif diff --git a/lang/python3/files/python3-package.mk b/lang/python3/files/python3-package.mk index f13e737ae..31a5d0684 100644 --- a/lang/python3/files/python3-package.mk +++ b/lang/python3/files/python3-package.mk @@ -44,8 +44,8 @@ define Py3Package 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/ + $(INSTALL_DIR) $$(1)/usr/bin ; \ + $(CP) $(PKG_INSTALL_DIR)/usr/bin/* $$(1)/usr/bin/ ; \ fi endef endif From 06c91a7ed84b2467420adbd208132e1ef63f4d47 Mon Sep 17 00:00:00 2001 From: Alexandru Ardelean Date: Thu, 2 Mar 2017 14:14:02 +0200 Subject: [PATCH 02/11] python: move filespec shell code into file Cleanup. And preparation for adding a bit more functionality. Signed-off-by: Alexandru Ardelean --- lang/python/Makefile | 1 + lang/python/files/python-package-install.sh | 38 +++++++++++++++++++ lang/python/files/python-package.mk | 42 ++++++--------------- 3 files changed, 51 insertions(+), 30 deletions(-) create mode 100644 lang/python/files/python-package-install.sh diff --git a/lang/python/Makefile b/lang/python/Makefile index 42b10d55e..b6846f52d 100644 --- a/lang/python/Makefile +++ b/lang/python/Makefile @@ -193,6 +193,7 @@ define Build/InstallDev ./files/python-package.mk \ ./files/python-host.mk \ ./files/python-version.mk \ + ./files/python-package-install.sh \ $(STAGING_DIR)/mk/ $(CP) \ $(PKG_INSTALL_DIR)/usr/include/python$(PYTHON_VERSION) \ diff --git a/lang/python/files/python-package-install.sh b/lang/python/files/python-package-install.sh new file mode 100644 index 000000000..c3de0cc95 --- /dev/null +++ b/lang/python/files/python-package-install.sh @@ -0,0 +1,38 @@ +#!/bin/sh + +process_filespec() { + local src_dir="$1" + local dst_dir="$2" + local filespec="$3" + echo "$filespec" | ( + IFS='|' + while read fop fspec fperm; do + local fop=`echo "$fop" | tr -d ' \t\n'` + if [ "$fop" = "+" ]; then + if [ ! -e "${src_dir}${fspec}" ]; then + echo "File not found '${src_dir}${fspec}'" + exit 1 + fi + dpath=`dirname "$fspec"` + if [ -z "$fperm" ]; then + dperm=`stat -c "%a" ${src_dir}${dpath}` + fi + mkdir -p -m$dperm ${dst_dir}${dpath} + echo "copying: '$fspec'" + cp -fpR ${src_dir}${fspec} ${dst_dir}${dpath}/ + if [ -n "$fperm" ]; then + chmod -R $fperm ${dst_dir}${fspec} + fi + elif [ "$fop" = "-" ]; then + echo "removing: '$fspec'" + rm -fR ${dst_dir}${fspec} + elif [ "$fop" = "=" ]; then + echo "setting permissions: '$fperm' on '$fspec'" + chmod -R $fperm ${dst_dir}${fspec} + fi + done + ) +} + +process_filespec "$1" "$2" "$3" + diff --git a/lang/python/files/python-package.mk b/lang/python/files/python-package.mk index 31a308fa0..732dbf05d 100644 --- a/lang/python/files/python-package.mk +++ b/lang/python/files/python-package.mk @@ -54,36 +54,18 @@ define PyPackage define Package/$(1)/install find $(PKG_INSTALL_DIR) -name "*\.pyc" -o -name "*\.pyo" -o -name "*\.exe" | xargs rm -f - @echo "$$$$$$$$$$(call shvar,PyPackage/$(1)/filespec)" | ( \ - IFS='|'; \ - while read fop fspec fperm; do \ - fop=`echo "$$$$$$$$fop" | tr -d ' \t\n'`; \ - if [ "$$$$$$$$fop" = "+" ]; then \ - if [ ! -e "$(PKG_INSTALL_DIR)$$$$$$$$fspec" ]; then \ - echo "File not found '$(PKG_INSTALL_DIR)$$$$$$$$fspec'"; \ - exit 1; \ - fi; \ - dpath=`dirname "$$$$$$$$fspec"`; \ - if [ -n "$$$$$$$$fperm" ]; then \ - dperm="-m$$$$$$$$fperm"; \ - else \ - dperm=`stat -c "%a" $(PKG_INSTALL_DIR)$$$$$$$$dpath`; \ - fi; \ - mkdir -p $$$$$$$$$dperm $$(1)$$$$$$$$dpath; \ - echo "copying: '$$$$$$$$fspec'"; \ - cp -fpR $(PKG_INSTALL_DIR)$$$$$$$$fspec $$(1)$$$$$$$$dpath/; \ - if [ -n "$$$$$$$$fperm" ]; then \ - chmod -R $$$$$$$$fperm $$(1)$$$$$$$$fspec; \ - fi; \ - elif [ "$$$$$$$$fop" = "-" ]; then \ - echo "removing: '$$$$$$$$fspec'"; \ - rm -fR $$(1)$$$$$$$$fspec; \ - elif [ "$$$$$$$$fop" = "=" ]; then \ - echo "setting permissions: '$$$$$$$$fperm' on '$$$$$$$$fspec'"; \ - chmod -R $$$$$$$$fperm $$(1)$$$$$$$$fspec; \ - fi; \ - done; \ - ) + if [ -e files/python-package-install.sh ] ; then \ + $(SHELL) files/python-package-install.sh \ + "$(PKG_INSTALL_DIR)" "$$(1)" \ + "$$$$$$$$$$(call shvar,PyPackage/$(1)/filespec)" ; \ + elif [ -e $(STAGING_DIR)/mk/python-package-install.sh ] ; then \ + $(SHELL) $(STAGING_DIR)/mk/python-package-install.sh \ + "$(PKG_INSTALL_DIR)" "$$(1)" \ + "$$$$$$$$$$(call shvar,PyPackage/$(1)/filespec)" ; \ + else \ + echo "No 'python-package-install.sh' script found" ; \ + exit 1 ; \ + fi $(call PyPackage/$(1)/install,$$(1)) endef endef From 5d502e85303462ad9c8e437d910172884685e6b7 Mon Sep 17 00:00:00 2001 From: Alexandru Ardelean Date: Thu, 2 Mar 2017 15:10:23 +0200 Subject: [PATCH 03/11] python3: move filespec shell code into file Same as for python. Signed-off-by: Alexandru Ardelean --- lang/python3/Makefile | 1 + lang/python3/files/python3-package-install.sh | 38 +++++++++++++++++ lang/python3/files/python3-package.mk | 42 ++++++------------- 3 files changed, 51 insertions(+), 30 deletions(-) create mode 100644 lang/python3/files/python3-package-install.sh diff --git a/lang/python3/Makefile b/lang/python3/Makefile index 67a594de6..1276ae546 100644 --- a/lang/python3/Makefile +++ b/lang/python3/Makefile @@ -187,6 +187,7 @@ define Build/InstallDev ./files/python3-package.mk \ ./files/python3-host.mk \ ./files/python3-version.mk \ + ./files/python3-package-install.sh \ $(STAGING_DIR)/mk/ $(CP) \ $(PKG_INSTALL_DIR)/usr/include/python$(PYTHON_VERSION) \ diff --git a/lang/python3/files/python3-package-install.sh b/lang/python3/files/python3-package-install.sh new file mode 100644 index 000000000..c3de0cc95 --- /dev/null +++ b/lang/python3/files/python3-package-install.sh @@ -0,0 +1,38 @@ +#!/bin/sh + +process_filespec() { + local src_dir="$1" + local dst_dir="$2" + local filespec="$3" + echo "$filespec" | ( + IFS='|' + while read fop fspec fperm; do + local fop=`echo "$fop" | tr -d ' \t\n'` + if [ "$fop" = "+" ]; then + if [ ! -e "${src_dir}${fspec}" ]; then + echo "File not found '${src_dir}${fspec}'" + exit 1 + fi + dpath=`dirname "$fspec"` + if [ -z "$fperm" ]; then + dperm=`stat -c "%a" ${src_dir}${dpath}` + fi + mkdir -p -m$dperm ${dst_dir}${dpath} + echo "copying: '$fspec'" + cp -fpR ${src_dir}${fspec} ${dst_dir}${dpath}/ + if [ -n "$fperm" ]; then + chmod -R $fperm ${dst_dir}${fspec} + fi + elif [ "$fop" = "-" ]; then + echo "removing: '$fspec'" + rm -fR ${dst_dir}${fspec} + elif [ "$fop" = "=" ]; then + echo "setting permissions: '$fperm' on '$fspec'" + chmod -R $fperm ${dst_dir}${fspec} + fi + done + ) +} + +process_filespec "$1" "$2" "$3" + diff --git a/lang/python3/files/python3-package.mk b/lang/python3/files/python3-package.mk index 31a5d0684..7881c1f04 100644 --- a/lang/python3/files/python3-package.mk +++ b/lang/python3/files/python3-package.mk @@ -54,36 +54,18 @@ define Py3Package define Package/$(1)/install find $(PKG_INSTALL_DIR) -name "*\.pyc" -o -name "*\.pyo" -o -name "*\.exe" | xargs rm -f - @echo "$$$$$$$$$$(call shvar,Py3Package/$(1)/filespec)" | ( \ - IFS='|'; \ - while read fop fspec fperm; do \ - fop=`echo "$$$$$$$$fop" | tr -d ' \t\n'`; \ - if [ "$$$$$$$$fop" = "+" ]; then \ - if [ ! -e "$(PKG_INSTALL_DIR)$$$$$$$$fspec" ]; then \ - echo "File not found '$(PKG_INSTALL_DIR)$$$$$$$$fspec'"; \ - exit 1; \ - fi; \ - dpath=`dirname "$$$$$$$$fspec"`; \ - if [ -n "$$$$$$$$fperm" ]; then \ - dperm="-m$$$$$$$$fperm"; \ - else \ - dperm=`stat -c "%a" $(PKG_INSTALL_DIR)$$$$$$$$dpath`; \ - fi; \ - mkdir -p $$$$$$$$$dperm $$(1)$$$$$$$$dpath; \ - echo "copying: '$$$$$$$$fspec'"; \ - cp -fpR $(PKG_INSTALL_DIR)$$$$$$$$fspec $$(1)$$$$$$$$dpath/; \ - if [ -n "$$$$$$$$fperm" ]; then \ - chmod -R $$$$$$$$fperm $$(1)$$$$$$$$fspec; \ - fi; \ - elif [ "$$$$$$$$fop" = "-" ]; then \ - echo "removing: '$$$$$$$$fspec'"; \ - rm -fR $$(1)$$$$$$$$fspec; \ - elif [ "$$$$$$$$fop" = "=" ]; then \ - echo "setting permissions: '$$$$$$$$fperm' on '$$$$$$$$fspec'"; \ - chmod -R $$$$$$$$fperm $$(1)$$$$$$$$fspec; \ - fi; \ - done; \ - ) + if [ -e files/python3-package-install.sh ] ; then \ + $(SHELL) files/python3-package-install.sh \ + "$(PKG_INSTALL_DIR)" "$$(1)" \ + "$$$$$$$$$$(call shvar,Py3Package/$(1)/filespec)" ; \ + elif [ -e $(STAGING_DIR)/mk/python3-package-install.sh ] ; then \ + $(SHELL) $(STAGING_DIR)/mk/python3-package-install.sh \ + "$(PKG_INSTALL_DIR)" "$$(1)" \ + "$$$$$$$$$$(call shvar,Py3Package/$(1)/filespec)" ; \ + else \ + echo "No 'python3-package-install.sh' script found" ; \ + exit 1 ; \ + fi $(call Py3Package/$(1)/install,$$(1)) endef endef From df0d0bcc0016866fce67dd04d01e1fc350ddf152 Mon Sep 17 00:00:00 2001 From: Alexandru Ardelean Date: Thu, 2 Mar 2017 18:04:43 +0200 Subject: [PATCH 04/11] python,python3: move PyPackage install rules in the beggining of the Package install rules So that we can process Python sources installed by those rules, if we need to. Signed-off-by: Alexandru Ardelean --- lang/python/Makefile | 1 + lang/python/files/python-package.mk | 2 +- lang/python3/files/python3-package.mk | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lang/python/Makefile b/lang/python/Makefile index b6846f52d..4300eef71 100644 --- a/lang/python/Makefile +++ b/lang/python/Makefile @@ -259,6 +259,7 @@ $(subst $(space),$(newline),$(foreach lib_file,$(PYTHON_LIB_FILES_DEL),-|$(lib_f endef define PyPackage/python-base/install + $(INSTALL_DIR) $(1)/usr/bin $(1)/usr/lib $(LN) python$(PYTHON_VERSION) $(1)/usr/bin/python $(LN) python$(PYTHON_VERSION) $(1)/usr/bin/python2 $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpython$(PYTHON_VERSION).so* $(1)/usr/lib/ diff --git a/lang/python/files/python-package.mk b/lang/python/files/python-package.mk index 732dbf05d..dfc07a612 100644 --- a/lang/python/files/python-package.mk +++ b/lang/python/files/python-package.mk @@ -53,6 +53,7 @@ define PyPackage $(call shexport,PyPackage/$(1)/filespec) define Package/$(1)/install + $(call PyPackage/$(1)/install,$$(1)) find $(PKG_INSTALL_DIR) -name "*\.pyc" -o -name "*\.pyo" -o -name "*\.exe" | xargs rm -f if [ -e files/python-package-install.sh ] ; then \ $(SHELL) files/python-package-install.sh \ @@ -66,7 +67,6 @@ define PyPackage echo "No 'python-package-install.sh' script found" ; \ exit 1 ; \ fi - $(call PyPackage/$(1)/install,$$(1)) endef endef diff --git a/lang/python3/files/python3-package.mk b/lang/python3/files/python3-package.mk index 7881c1f04..f1f3ff546 100644 --- a/lang/python3/files/python3-package.mk +++ b/lang/python3/files/python3-package.mk @@ -53,6 +53,7 @@ define Py3Package $(call shexport,Py3Package/$(1)/filespec) define Package/$(1)/install + $(call Py3Package/$(1)/install,$$(1)) find $(PKG_INSTALL_DIR) -name "*\.pyc" -o -name "*\.pyo" -o -name "*\.exe" | xargs rm -f if [ -e files/python3-package-install.sh ] ; then \ $(SHELL) files/python3-package-install.sh \ @@ -66,7 +67,6 @@ define Py3Package echo "No 'python3-package-install.sh' script found" ; \ exit 1 ; \ fi - $(call Py3Package/$(1)/install,$$(1)) endef endef From 6c4dcf44463ceeba41dff37268b68260286133b5 Mon Sep 17 00:00:00 2001 From: Alexandru Ardelean Date: Tue, 7 Mar 2017 12:23:47 +0200 Subject: [PATCH 05/11] python: fix python-dev clash with python-base Both want to install libpython.so. python-dev should install libpython.a Signed-off-by: Alexandru Ardelean --- lang/python/files/python-package-dev.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lang/python/files/python-package-dev.mk b/lang/python/files/python-package-dev.mk index 647f649f7..7c9e21980 100644 --- a/lang/python/files/python-package-dev.mk +++ b/lang/python/files/python-package-dev.mk @@ -12,9 +12,9 @@ $(call Package/python/Default) endef define PyPackage/python-dev/install - $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_DIR) $(1)/usr/bin $(1)/usr/lib $(CP) $(PKG_INSTALL_DIR)/usr/bin/python*config $(1)/usr/bin - $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpython$(PYTHON_VERSION).so* $(1)/usr/lib + $(CP) $(PKG_INSTALL_DIR)/usr/lib/python$(PYTHON_VERSION)/config/libpython$(PYTHON_VERSION).a $(1)/usr/lib endef $(eval $(call PyBasePackage,python-dev, \ From a85b0b6b57a9a6a15d018ec7f475e6d561c46169 Mon Sep 17 00:00:00 2001 From: Alexandru Ardelean Date: Tue, 7 Mar 2017 14:21:02 +0200 Subject: [PATCH 06/11] python3: make sure $(1)/usr/lib path exists for python3-dev package Signed-off-by: Alexandru Ardelean --- lang/python3/files/python3-package-dev.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lang/python3/files/python3-package-dev.mk b/lang/python3/files/python3-package-dev.mk index 19d9592d6..642bb0b5f 100644 --- a/lang/python3/files/python3-package-dev.mk +++ b/lang/python3/files/python3-package-dev.mk @@ -12,10 +12,10 @@ $(call Package/python3/Default) endef define Py3Package/python3-dev/install - $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_DIR) $(1)/usr/bin $(1)/usr/lib $(CP) $(PKG_INSTALL_DIR)/usr/bin/python$(PYTHON3_VERSION)-config $(1)/usr/bin $(LN) python$(PYTHON3_VERSION)-config $(1)/usr/bin/python3-config - $(LN) python$(PYTHON_VERSION)/config-$(PYTHON_VERSION)/libpython$(PYTHON3_VERSION).a $(1)/usr/lib/libpython$(PYTHON3_VERSION).a + $(LN) python$(PYTHON_VERSION)/config-$(PYTHON_VERSION)/libpython$(PYTHON3_VERSION).a $(1)/usr/lib/ endef $(eval $(call Py3BasePackage,python3-dev, \ From 92073b047bb862627db5b264c3ee7cc79ba49649 Mon Sep 17 00:00:00 2001 From: Alexandru Ardelean Date: Wed, 8 Mar 2017 17:18:09 +0200 Subject: [PATCH 07/11] python,python3: drop tests from all core packages Well, this slipped by for some time. This should make the Python core packages even more lighter. Signed-off-by: Alexandru Ardelean --- lang/python/Makefile | 2 ++ lang/python3/Makefile | 2 ++ 2 files changed, 4 insertions(+) diff --git a/lang/python/Makefile b/lang/python/Makefile index 4300eef71..25d07fbd4 100644 --- a/lang/python/Makefile +++ b/lang/python/Makefile @@ -104,6 +104,8 @@ define PyBasePackage define PyPackage/$(1)/filespec ifneq ($(2),) $(subst $(space),$(newline),$(foreach lib_file,$(2),+|$(lib_file))) + -|/usr/lib/python$(PYTHON_VERSION)/*/test + -|/usr/lib/python$(PYTHON_VERSION)/*/tests endif endef endef diff --git a/lang/python3/Makefile b/lang/python3/Makefile index 1276ae546..a0711a3f6 100644 --- a/lang/python3/Makefile +++ b/lang/python3/Makefile @@ -98,6 +98,8 @@ define Py3BasePackage define Py3Package/$(1)/filespec ifneq ($(2),) $(subst $(space),$(newline),$(foreach lib_file,$(2),+|$(lib_file))) + -|/usr/lib/python$(PYTHON_VERSION)/*/test + -|/usr/lib/python$(PYTHON_VERSION)/*/tests endif endef endef From 05f8d6edf06c93dadab34f14a5fad48449dd7eda Mon Sep 17 00:00:00 2001 From: Alexandru Ardelean Date: Thu, 2 Mar 2017 15:24:14 +0200 Subject: [PATCH 08/11] python,python3: drop remove .pyc & .pyo files We'll control in the install phase what we ship [byte-codes or source files] Signed-off-by: Alexandru Ardelean --- lang/python/files/python-package.mk | 4 ++-- lang/python3/files/python3-package.mk | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lang/python/files/python-package.mk b/lang/python/files/python-package.mk index dfc07a612..4f05dfebb 100644 --- a/lang/python/files/python-package.mk +++ b/lang/python/files/python-package.mk @@ -54,7 +54,7 @@ define PyPackage define Package/$(1)/install $(call PyPackage/$(1)/install,$$(1)) - find $(PKG_INSTALL_DIR) -name "*\.pyc" -o -name "*\.pyo" -o -name "*\.exe" | xargs rm -f + find $(PKG_INSTALL_DIR) -name "*\.exe" | xargs rm -f if [ -e files/python-package-install.sh ] ; then \ $(SHELL) files/python-package-install.sh \ "$(PKG_INSTALL_DIR)" "$$(1)" \ @@ -103,7 +103,7 @@ define Build/Compile/PyMod cd $(PKG_BUILD_DIR)/$(strip $(1)), \ ./setup.py $(2), \ $(3)) - find $(PKG_INSTALL_DIR) -name "*\.pyc" -o -name "*\.pyo" -o -name "*\.exe" | xargs rm -f + find $(PKG_INSTALL_DIR) -name "*\.exe" | xargs rm -f endef define PyBuild/Compile/Default diff --git a/lang/python3/files/python3-package.mk b/lang/python3/files/python3-package.mk index f1f3ff546..1ed8b2c18 100644 --- a/lang/python3/files/python3-package.mk +++ b/lang/python3/files/python3-package.mk @@ -54,7 +54,7 @@ define Py3Package define Package/$(1)/install $(call Py3Package/$(1)/install,$$(1)) - find $(PKG_INSTALL_DIR) -name "*\.pyc" -o -name "*\.pyo" -o -name "*\.exe" | xargs rm -f + find $(PKG_INSTALL_DIR) -name "*\.exe" | xargs rm -f if [ -e files/python3-package-install.sh ] ; then \ $(SHELL) files/python3-package-install.sh \ "$(PKG_INSTALL_DIR)" "$$(1)" \ @@ -103,7 +103,7 @@ define Build/Compile/Py3Mod cd $(PKG_BUILD_DIR)/$(strip $(1)), \ ./setup.py $(2), \ $(3)) - find $(PKG_INSTALL_DIR) -name "*\.pyc" -o -name "*\.pyo" -o -name "*\.exe" | xargs rm -f + find $(PKG_INSTALL_DIR) -name "*\.exe" | xargs rm -f endef define Py3Build/Compile/Default From 20685f522067271662c8c425a12e4822de08093d Mon Sep 17 00:00:00 2001 From: Alexandru Ardelean Date: Thu, 2 Mar 2017 17:47:29 +0200 Subject: [PATCH 09/11] python: split source packages away from compiled packages Well, they're not yet compiled, but in the next commit they should be. People have been complaining [citation needed] to me via email or via Github that Python's performance is crap because it packages sources directly and they're not compiled. And Python has to compile the sources on each run, and on-the-fly. Allowing compilation caching is also a no-no, because I'll get complaints that the flash storage fills up whenever a Python app runs. So, to give the user a choice, the new de-facto packaging for Python packages will be: * ship compiled + [ preferably ] optimized files * package sources separately The problem is that this doubles the number of packages in LEDE/OpenWrt, but build-times should not suffer a big hit, since the compilation is done once, and the install phase should not be too intensive. Oh, and people don't need ship source packages if they don't want to. To do that, a packager needs to just call `$(eval $(call BuildPackage,python--src))` The `python-` prefix is important. Signed-off-by: Alexandru Ardelean --- lang/python/Makefile | 5 +++ lang/python/files/python-package-install.sh | 34 ++++++++++++++++++++- lang/python/files/python-package.mk | 17 +++++++++++ 3 files changed, 55 insertions(+), 1 deletion(-) diff --git a/lang/python/Makefile b/lang/python/Makefile index 25d07fbd4..a42a18700 100644 --- a/lang/python/Makefile +++ b/lang/python/Makefile @@ -301,6 +301,7 @@ $(eval $(call HostBuild)) $(foreach package, $(PYTHON_PACKAGES), \ $(eval $(call PyPackage,$(package))) \ $(eval $(call BuildPackage,$(package))) \ + $(eval $(call BuildPackage,$(package)-src)) \ ) $(eval $(call PyPackage,python-base)) @@ -312,3 +313,7 @@ $(eval $(call BuildPackage,python-pip-conf)) $(eval $(call BuildPackage,python-base)) $(eval $(call BuildPackage,python-light)) $(eval $(call BuildPackage,python)) + +$(eval $(call BuildPackage,python-base-src)) +$(eval $(call BuildPackage,python-light-src)) +$(eval $(call BuildPackage,python-src)) diff --git a/lang/python/files/python-package-install.sh b/lang/python/files/python-package-install.sh index c3de0cc95..a08f8b415 100644 --- a/lang/python/files/python-package-install.sh +++ b/lang/python/files/python-package-install.sh @@ -34,5 +34,37 @@ process_filespec() { ) } -process_filespec "$1" "$2" "$3" +src_dir="$1" +dst_dir="$2" +python="$3" +mode="$4" +filespec="$5" + +process_filespec "$src_dir" "$dst_dir" "$filespec" || { + echo "process filespec error-ed" + exit 1 +} + +if [ "$mode" == "sources" ] ; then + # Copy only python source files + find $dst_dir -not -name "*\.py" | xargs rm -f + # Delete empty folders (if the case) + find $dst_dir/usr -type d | xargs rmdir &> /dev/null + rmdir $dst_dir/usr &> /dev/null + exit 0 +fi + +# 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. +$python -m compileall -d '/' $dst_dir || { + echo "python -m compileall err-ed" + exit 1 +} +# Delete source files and pyc [ un-optimized bytecode files ] +# We may want to make this optimization thing configurable later, but not sure atm +find $dst_dir -name "*\.py" | xargs rm -f diff --git a/lang/python/files/python-package.mk b/lang/python/files/python-package.mk index 4f05dfebb..e9ec85c6f 100644 --- a/lang/python/files/python-package.mk +++ b/lang/python/files/python-package.mk @@ -34,6 +34,17 @@ endif define PyPackage + define Package/$(1)-src + $(call Package/$(1)) + TITLE+= (sources) + DEPENDS:=$$$$(foreach dep,$$$$(filter +python-%,$$$$(DEPENDS)),$$$$(dep)-src) + endef + + define Package/$(1)-src/description + $(call Package/$(1)/description). + (Contains the Python sources for this package). + endef + # Add default PyPackage filespec none defined ifndef PyPackage/$(1)/filespec define PyPackage/$(1)/filespec @@ -58,16 +69,22 @@ define PyPackage if [ -e files/python-package-install.sh ] ; then \ $(SHELL) files/python-package-install.sh \ "$(PKG_INSTALL_DIR)" "$$(1)" \ + "$(HOST_PYTHON_BIN)" "$$(2)" \ "$$$$$$$$$$(call shvar,PyPackage/$(1)/filespec)" ; \ elif [ -e $(STAGING_DIR)/mk/python-package-install.sh ] ; then \ $(SHELL) $(STAGING_DIR)/mk/python-package-install.sh \ "$(PKG_INSTALL_DIR)" "$$(1)" \ + "$(HOST_PYTHON_BIN)" "$$(2)" \ "$$$$$$$$$$(call shvar,PyPackage/$(1)/filespec)" ; \ else \ echo "No 'python-package-install.sh' script found" ; \ exit 1 ; \ fi endef + + define Package/$(1)-src/install + $$(call Package/$(1)/install,$$(1),sources) + endef endef $(call include_mk, python-host.mk) From ae350d938785bb72161dc21f94ea947ee3d9bf1b Mon Sep 17 00:00:00 2001 From: Alexandru Ardelean Date: Thu, 2 Mar 2017 18:02:14 +0200 Subject: [PATCH 10/11] python3: split source packages away from compiled packages Same as for python. Signed-off-by: Alexandru Ardelean --- lang/python3/Makefile | 5 +++ lang/python3/files/python3-package-install.sh | 33 ++++++++++++++++++- lang/python3/files/python3-package.mk | 17 ++++++++++ 3 files changed, 54 insertions(+), 1 deletion(-) diff --git a/lang/python3/Makefile b/lang/python3/Makefile index a0711a3f6..abf0a557f 100644 --- a/lang/python3/Makefile +++ b/lang/python3/Makefile @@ -289,6 +289,7 @@ $(eval $(call HostBuild)) $(foreach package, $(PYTHON3_PACKAGES), \ $(eval $(call Py3Package,$(package))) \ $(eval $(call BuildPackage,$(package))) \ + $(eval $(call BuildPackage,$(package)-src)) \ ) $(eval $(call Py3Package,python3-base)) @@ -298,3 +299,7 @@ $(eval $(call Py3Package,python3)) $(eval $(call BuildPackage,python3-base)) $(eval $(call BuildPackage,python3-light)) $(eval $(call BuildPackage,python3)) + +$(eval $(call BuildPackage,python3-base-src)) +$(eval $(call BuildPackage,python3-light-src)) +$(eval $(call BuildPackage,python3-src)) diff --git a/lang/python3/files/python3-package-install.sh b/lang/python3/files/python3-package-install.sh index c3de0cc95..cc1005189 100644 --- a/lang/python3/files/python3-package-install.sh +++ b/lang/python3/files/python3-package-install.sh @@ -34,5 +34,36 @@ process_filespec() { ) } -process_filespec "$1" "$2" "$3" +src_dir="$1" +dst_dir="$2" +python="$3" +mode="$4" +filespec="$5" +process_filespec "$src_dir" "$dst_dir" "$filespec" || { + echo "process filespec error-ed" + exit 1 +} + +if [ "$mode" == "sources" ] ; then + # Copy only python source files + find $dst_dir -not -name "*\.py" | xargs rm -f + # Delete empty folders (if the case) + find $dst_dir/usr -type d | xargs rmdir &> /dev/null + rmdir $dst_dir/usr &> /dev/null + exit 0 +fi + +# 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. +$python -m compileall -b -d '/' $dst_dir || { + echo "python -m compileall err-ed" + exit 1 +} +# Delete source files and pyc [ un-optimized bytecode files ] +# We may want to make this optimization thing configurable later, but not sure atm +find $dst_dir -name "*\.py" | xargs rm -f diff --git a/lang/python3/files/python3-package.mk b/lang/python3/files/python3-package.mk index 1ed8b2c18..a28689aba 100644 --- a/lang/python3/files/python3-package.mk +++ b/lang/python3/files/python3-package.mk @@ -34,6 +34,17 @@ endif define Py3Package + define Package/$(1)-src + $(call Package/$(1)) + TITLE+= (sources) + DEPENDS:=$$$$(foreach dep,$$$$(filter +python3-%,$$$$(DEPENDS)),$$$$(dep)-src) + endef + + define Package/$(1)-src/description + $(call Package/$(1)/description). + (Contains the Python3 sources for this package). + endef + # Add default PyPackage filespec none defined ifndef Py3Package/$(1)/filespec define Py3Package/$(1)/filespec @@ -58,16 +69,22 @@ define Py3Package if [ -e files/python3-package-install.sh ] ; then \ $(SHELL) files/python3-package-install.sh \ "$(PKG_INSTALL_DIR)" "$$(1)" \ + "$(HOST_PYTHON3_BIN)" "$$(2)" \ "$$$$$$$$$$(call shvar,Py3Package/$(1)/filespec)" ; \ elif [ -e $(STAGING_DIR)/mk/python3-package-install.sh ] ; then \ $(SHELL) $(STAGING_DIR)/mk/python3-package-install.sh \ "$(PKG_INSTALL_DIR)" "$$(1)" \ + "$(HOST_PYTHON3_BIN)" "$$(2)" \ "$$$$$$$$$$(call shvar,Py3Package/$(1)/filespec)" ; \ else \ echo "No 'python3-package-install.sh' script found" ; \ exit 1 ; \ fi endef + + define Package/$(1)-src/install + $$(call Package/$(1)/install,$$(1),sources) + endef endef $(call include_mk, python3-host.mk) From 9f7235e42a508cd7ee2e2c121f24010e2dd7ec7c Mon Sep 17 00:00:00 2001 From: Alexandru Ardelean Date: Wed, 8 Mar 2017 18:24:03 +0200 Subject: [PATCH 11/11] python,python3: bump PKG_RELEASEs Signed-off-by: Alexandru Ardelean --- lang/python/Makefile | 2 +- lang/python3/Makefile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lang/python/Makefile b/lang/python/Makefile index a42a18700..1e8406087 100644 --- a/lang/python/Makefile +++ b/lang/python/Makefile @@ -12,7 +12,7 @@ include ./files/python-version.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) diff --git a/lang/python3/Makefile b/lang/python3/Makefile index abf0a557f..ff80a28ff 100644 --- a/lang/python3/Makefile +++ b/lang/python3/Makefile @@ -14,7 +14,7 @@ PYTHON_VERSION:=$(PYTHON3_VERSION) PYTHON_VERSION_MICRO:=$(PYTHON3_VERSION_MICRO) PKG_NAME:=python3 -PKG_RELEASE:=4 +PKG_RELEASE:=5 PKG_VERSION:=$(PYTHON_VERSION).$(PYTHON_VERSION_MICRO) PKG_SOURCE:=Python-$(PKG_VERSION).tar.xz