# # Copyright (C) 2006-2014 OpenWrt.org # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. # include $(TOPDIR)/rules.mk # The file included below defines PYTHON_VERSION include ./files/python3-package.mk PYTHON_VERSION:=$(PYTHON3_VERSION) PYTHON_VERSION_MICRO:=$(PYTHON3_VERSION_MICRO) PKG_NAME:=python3 PKG_RELEASE:=1 PKG_VERSION:=$(PYTHON_VERSION).$(PYTHON_VERSION_MICRO) PKG_SOURCE:=Python-$(PKG_VERSION).tar.xz PKG_SOURCE_URL:=http://www.python.org/ftp/python/$(PKG_VERSION) PKG_MD5SUM:=36fc7327c02c6f12fa24fc9ba78039e3 PKG_LICENSE:=PSF PKG_LICENSE_FILES:=LICENSE Modules/_ctypes/libffi_msvc/LICENSE Modules/_ctypes/darwin/LICENSE Modules/_ctypes/libffi/LICENSE Modules/_ctypes/libffi_osx/LICENSE Tools/pybench/LICENSE PKG_INSTALL:=1 PKG_BUILD_PARALLEL:=1 HOST_BUILD_PARALLEL:=1 PKG_BUILD_DIR:=$(BUILD_DIR)/Python-$(PKG_VERSION) HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/Python-$(PKG_VERSION) PKG_BUILD_DEPENDS:=python3/host include $(INCLUDE_DIR)/host-build.mk include $(INCLUDE_DIR)/package.mk define Package/python3/Default SUBMENU:=Python SECTION:=lang CATEGORY:=Languages TITLE:=Python $(PYTHON_VERSION) programming language URL:=http://www.python.org/ MAINTAINER:=Alexandru Ardelean endef define Package/python3/Default/description Python is a dynamic object-oriented programming language that can be used for many kinds of software development. It offers strong support for integration with other languages and tools, comes with extensive standard libraries, and can be learned in a few days. Many Python programmers report substantial productivity gains and feel the language encourages the development of higher quality, more maintainable code. endef define Package/python3-base $(call Package/python3/Default) TITLE:=Python $(PYTHON_VERSION) interpreter DEPENDS:=+libpthread +zlib +libffi +libopenssl endef define Package/python3-base/description This package contains only the interpreter and the bare minimum for the interpreter to start. endef define Package/python3 $(call Package/python3/Default) DEPENDS:=+python3-base +libncursesw +libbz2 +libgdbm +libsqlite3 +libdb47 endef define Package/python3/description This package contains the (almost) full Python install. endef MAKE_FLAGS+=\ CROSS_COMPILE=yes \ LD="$(TARGET_CC)" \ PGEN=pgen3 EXTRA_CFLAGS+= \ -DNDEBUG -fno-inline EXTRA_LDFLAGS+= \ -L$(PKG_BUILD_DIR) ENABLE_IPV6:= ifeq ($(CONFIG_IPV6),y) ENABLE_IPV6 += --enable-ipv6 endif CONFIGURE_ARGS+= \ --sysconfdir=/etc \ --enable-shared \ --without-cxx-main \ --with-threads \ --with-system-ffi="$(STAGING_DIR)/usr" \ --without-pymalloc \ --without-ensurepip \ $(ENABLE_IPV6) \ CONFIG_SITE="$(PKG_BUILD_DIR)/config.site" \ OPT="$(TARGET_CFLAGS)" define Build/Prepare $(call Build/Prepare/Default) $(CP) ./files/config.site $(PKG_BUILD_DIR)/config.site endef define Build/InstallDev $(INSTALL_DIR) $(STAGING_DIR)/mk/ $(INSTALL_DIR) $(1)/usr/include/ $(1)/usr/lib/ $(INSTALL_DIR) $(1)/usr/lib/python$(PYTHON_VERSION)/ $(INSTALL_DATA) ./files/python3-package.mk $(STAGING_DIR)/mk/ $(CP) \ $(PKG_INSTALL_DIR)/usr/include/python$(PYTHON_VERSION) \ $(1)/usr/include/ $(CP) \ $(STAGING_DIR_HOST)/lib/python$(PYTHON_VERSION) \ $(PKG_INSTALL_DIR)/usr/lib/libpython$(PYTHON_VERSION).so* \ $(1)/usr/lib/ $(CP) \ $(PKG_INSTALL_DIR)/usr/lib/python$(PYTHON_VERSION)/config-$(PYTHON_VERSION) \ $(1)/usr/lib/python$(PYTHON_VERSION)/ endef define Py3Package/python3-base/filespec +|/usr/bin/python$(PYTHON_VERSION) +|/usr/lib/python$(PYTHON_VERSION)/encodings +|/usr/lib/python$(PYTHON_VERSION)/_collections_abc.py +|/usr/lib/python$(PYTHON_VERSION)/_sitebuiltins.py +|/usr/lib/python$(PYTHON_VERSION)/_sysconfigdata.py +|/usr/lib/python$(PYTHON_VERSION)/_weakrefset.py +|/usr/lib/python$(PYTHON_VERSION)/abc.py +|/usr/lib/python$(PYTHON_VERSION)/codecs.py +|/usr/lib/python$(PYTHON_VERSION)/genericpath.py +|/usr/lib/python$(PYTHON_VERSION)/io.py +|/usr/lib/python$(PYTHON_VERSION)/os.py +|/usr/lib/python$(PYTHON_VERSION)/posixpath.py +|/usr/lib/python$(PYTHON_VERSION)/site.py +|/usr/lib/python$(PYTHON_VERSION)/sysconfig.py +|/usr/lib/python$(PYTHON_VERSION)/stat.py endef define Py3Package/python3/filespec +|/usr/lib/python$(PYTHON_VERSION) -|/usr/lib/python$(PYTHON_VERSION)/config-$(PYTHON_VERSION) -|/usr/lib/python$(PYTHON_VERSION)/distutils/cygwinccompiler.py -|/usr/lib/python$(PYTHON_VERSION)/distutils/command/wininst* -|/usr/lib/python$(PYTHON_VERSION)/idlelib -|/usr/lib/python$(PYTHON_VERSION)/lib2to3 -|/usr/lib/python$(PYTHON_VERSION)/tkinter -|/usr/lib/python$(PYTHON_VERSION)/turtledemo -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_test*.so -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/readline*.so -|/usr/lib/python$(PYTHON_VERSION)/pdb.doc -|/usr/lib/python$(PYTHON_VERSION)/test -|/usr/lib/python$(PYTHON_VERSION)/webbrowser.py -|/usr/lib/python$(PYTHON_VERSION)/*/test -|/usr/lib/python$(PYTHON_VERSION)/*/tests endef define Py3Package/python3-base/install # Adding the lib-dynload folder (even just empty) suppresses 2 warnings when starting Python $(INSTALL_DIR) $(1)/usr/lib/python$(PYTHON_VERSION)/lib-dynload/ $(INSTALL_DIR) $(1)/usr/bin $(LN) python$(PYTHON_VERSION) $(1)/usr/bin/python3 $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpython$(PYTHON_VERSION).so* $(1)/usr/lib/ endef HOST_CONFIGURE_ARGS+= \ --without-cxx-main \ --without-pymalloc \ --with-threads \ --prefix=$(STAGING_DIR_HOST) \ --with-ensurepip=upgrade \ CONFIG_SITE= \ OPT="$(HOST_CFLAGS)" define Host/Compile +$(MAKE) $(HOST_JOBS) -C $(HOST_BUILD_DIR) python Parser/pgen +$(MAKE) $(HOST_JOBS) -C $(HOST_BUILD_DIR) sharedmods endef define Host/Install $(INSTALL_DIR) $(STAGING_DIR_HOST)/bin/ $(MAKE) -C $(HOST_BUILD_DIR) install $(INSTALL_BIN) $(HOST_BUILD_DIR)/Parser/pgen $(STAGING_DIR_HOST)/bin/pgen3 endef $(eval $(call HostBuild)) $(eval $(call Py3Package,python3-base)) $(eval $(call Py3Package,python3)) $(eval $(call BuildPackage,python3-base)) $(eval $(call BuildPackage,python3))