# # 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/python-package.mk PKG_NAME:=python PKG_VERSION:=$(PYTHON_VERSION).$(PYTHON_VERSION_MICRO) PKG_RELEASE:=4 PKG_SOURCE:=Python-$(PKG_VERSION).tar.xz PKG_SOURCE_URL:=http://www.python.org/ftp/python/$(PKG_VERSION) PKG_MD5SUM:=38d530f7efc373d64a8fb1637e3baaa7 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:=python/host include $(INCLUDE_DIR)/host-build.mk include $(INCLUDE_DIR)/package.mk define Package/python/Default SUBMENU:=Python SECTION:=lang CATEGORY:=Languages TITLE:=Python $(PYTHON_VERSION) programming language URL:=http://www.python.org/ MAINTAINER:=Alexandru Ardelean endef define Package/python/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/python-base $(call Package/python/Default) TITLE:=Python $(PYTHON_VERSION) interpreter DEPENDS:=+libpthread +zlib +libffi +libopenssl endef define Package/python-base/description This package contains only the interpreter and the bare minimum for the interpreter to start. endef define Package/python $(call Package/python/Default) DEPENDS:=+python-base +libncursesw +libbz2 +libgdbm +libsqlite3 +libexpat +libdb47 endef define Package/python/description This package contains the (almost) full Python install. endef MAKE_FLAGS+=\ CROSS_COMPILE=yes \ LD="$(TARGET_CC)" \ PGEN=pgen2 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 \ $(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/ $(1)/usr/lib/pkgconfig $(INSTALL_DIR) $(1)/usr/lib/python$(PYTHON_VERSION)/ $(INSTALL_DATA) ./files/python-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) \ $(STAGING_DIR_HOST)/lib/pkgconfig/python.pc \ $(STAGING_DIR_HOST)/lib/pkgconfig/python2.pc \ $(STAGING_DIR_HOST)/lib/pkgconfig/python-$(PYTHON_VERSION).pc \ $(1)/usr/lib/pkgconfig $(CP) \ $(PKG_INSTALL_DIR)/usr/lib/python$(PYTHON_VERSION)/config \ $(1)/usr/lib/python$(PYTHON_VERSION)/ endef define PyPackage/python-base/filespec +|/usr/bin/python$(PYTHON_VERSION) +|/usr/lib/python$(PYTHON_VERSION)/_abcoll.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)/copy_reg.py +|/usr/lib/python$(PYTHON_VERSION)/genericpath.py +|/usr/lib/python$(PYTHON_VERSION)/linecache.py +|/usr/lib/python$(PYTHON_VERSION)/posixpath.py +|/usr/lib/python$(PYTHON_VERSION)/os.py +|/usr/lib/python$(PYTHON_VERSION)/re.py +|/usr/lib/python$(PYTHON_VERSION)/site.py +|/usr/lib/python$(PYTHON_VERSION)/sre_compile.py +|/usr/lib/python$(PYTHON_VERSION)/sre_constants.py +|/usr/lib/python$(PYTHON_VERSION)/sre_parse.py +|/usr/lib/python$(PYTHON_VERSION)/sysconfig.py +|/usr/lib/python$(PYTHON_VERSION)/stat.py +|/usr/lib/python$(PYTHON_VERSION)/traceback.py +|/usr/lib/python$(PYTHON_VERSION)/types.py +|/usr/lib/python$(PYTHON_VERSION)/UserDict.py +|/usr/lib/python$(PYTHON_VERSION)/warnings.py endef define PyPackage/python/filespec +|/usr/lib/python$(PYTHON_VERSION) -|/usr/lib/python$(PYTHON_VERSION)/config -|/usr/lib/python$(PYTHON_VERSION)/distutils/cygwinccompiler.py -|/usr/lib/python$(PYTHON_VERSION)/distutils/command/wininst* -|/usr/lib/python$(PYTHON_VERSION)/ensurepip -|/usr/lib/python$(PYTHON_VERSION)/idlelib -|/usr/lib/python$(PYTHON_VERSION)/lib2to3 -|/usr/lib/python$(PYTHON_VERSION)/lib-tk -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_testcapi.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 -|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/readline.so -|/usr/lib/python$(PYTHON_VERSION)/_abcoll.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)/copy_reg.py -|/usr/lib/python$(PYTHON_VERSION)/genericpath.py -|/usr/lib/python$(PYTHON_VERSION)/linecache.py -|/usr/lib/python$(PYTHON_VERSION)/posixpath.py -|/usr/lib/python$(PYTHON_VERSION)/os.py -|/usr/lib/python$(PYTHON_VERSION)/re.py -|/usr/lib/python$(PYTHON_VERSION)/site.py -|/usr/lib/python$(PYTHON_VERSION)/sre_compile.py -|/usr/lib/python$(PYTHON_VERSION)/sre_constants.py -|/usr/lib/python$(PYTHON_VERSION)/sre_parse.py -|/usr/lib/python$(PYTHON_VERSION)/sysconfig.py -|/usr/lib/python$(PYTHON_VERSION)/stat.py -|/usr/lib/python$(PYTHON_VERSION)/traceback.py -|/usr/lib/python$(PYTHON_VERSION)/types.py -|/usr/lib/python$(PYTHON_VERSION)/UserDict.py -|/usr/lib/python$(PYTHON_VERSION)/warnings.py endef define PyPackage/python-base/install $(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/ endef HOST_CFLAGS+= \ -I/usr/include/ncursesw \ -I/usr/include/ncurses HOST_CONFIGURE_ARGS+= \ --without-cxx-main \ --without-pymalloc \ --with-threads \ --prefix=$(STAGING_DIR_HOST) \ --with-ensurepip=upgrade \ CONFIG_SITE= \ CFLAGS="$(HOST_CFLAGS)" 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/pgen2 endef $(eval $(call HostBuild)) $(eval $(call PyPackage,python-base)) $(eval $(call PyPackage,python)) $(eval $(call BuildPackage,python-base)) $(eval $(call BuildPackage,python))