[packages] python: add dependency on python-core to subpackages
[openwrt/svn-archive/archive.git] / lang / python / Makefile
index 9301310e07b4d1bee7be810463126205a5618d32..a2394ca5dc13d40ddd1aaf2f3cf3e7f7e18486dd 100644 (file)
 #
-# Copyright (C) 2006 OpenWrt.org
+# Copyright (C) 2006-2007 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
 #
 # $Id$
+
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=python
-PKG_VERSION:=2.4.3
+PKG_VERSION:=2.5.1
 PKG_RELEASE:=1
 
 PKG_SOURCE:=Python-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:=http://www.python.org/ftp/python/2.4.3/
-PKG_MD5SUM:=141c683447d5e76be1d2bd4829574f02
-PKG_CAT:=bzcat
+PKG_SOURCE_URL:=http://www.python.org/ftp/python/$(PKG_VERSION)/
+PKG_MD5SUM:=70084ffa561660f07de466c2c8c4842d
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/Python-$(PKG_VERSION)
 
+PKG_BUILD_DEPENDS:=python libexpat libopenssl zlib
+
 include $(INCLUDE_DIR)/package.mk
+-include $(if $(DUMP),,./python-package.mk)
+
+define Package/python/Default
+  SUBMENU:=Python
+  SECTION:=lang
+  CATEGORY:=Languages
+  TITLE:=Python 2.5 programming language
+  URL:=http://www.python.org/
+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
-       SECTION:=lang
-       CATEGORY:=Languages
-       TITLE:=Python programming language
-       URL:=http://www.python.org
-       DEPENDS:=+uclibcxx
+$(call Package/python/Default)
+ TITLE+= (full)
+ DEPENDS:= +libpthread +zlib
+ PROVIDES:=python-core
 endef
 
 define Package/python/description
-Python programming language
-       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.
+$(call Package/python/Default/description)
+ .
+ This package contains the full Python install.
 endef
 
+define Package/python-mini
+$(call Package/python/Default)
+ TITLE+= (minimal)
+ DEPENDS:= +libpthread +zlib
+ PROVIDES:=python-core
+endef
+
+define Package/python-mini/description
+$(call Package/python/Default/description)
+ .
+ This package contains only a minimal Python install.
+endef
+
+define Package/python-doc
+$(call Package/python/Default)
+ TITLE:=Python interactive documentation
+ DEPENDS+= python-core
+endef
+
+define Package/python-expat
+$(call Package/python/Default)
+ TITLE:=Python support for expat
+ DEPENDS+= python-core +libexpat
+endef
+
+define Package/python-openssl
+$(call Package/python/Default)
+ TITLE:=Python support for OpenSSL
+ DEPENDS+= python-core +libopenssl
+endef
+
+
+PY_DISABLED_MODULES:= \
+       readline _curses _curses_panel _tkinter nis
+
+MAKE_OPTS:=\
+       $(TARGET_CONFIGURE_OPTS) \
+       PYTHON_DISABLE_MODULES="$(PY_DISABLED_MODULES)" \
+       PYTHON_MODULES_INCLUDE="$(STAGING_DIR)/usr/include" \
+       PYTHON_MODULES_LIB="$(STAGING_DIR)/usr/lib" \
+       CROSS_COMPILE=yes \
+       CFLAGS="$(TARGET_CFLAGS) -fno-inline" \
+       LDFLAGS="$(TARGET_LDFLAGS)" \
+       LD="$(TARGET_CC)" \
+       HOSTPYTHON=./hostpython \
+       HOSTPGEN=./hostpgen
+
 define Build/Configure
+endef
+
+define Build/Compile
+       -$(MAKE) -C $(PKG_BUILD_DIR) distclean
        (cd $(PKG_BUILD_DIR); \
+               rm -rf config.cache; \
                CONFIG_SITE= \
-               ./configure --with-threads=no; \
-               $(MAKE) python Parser/pgen; \
-               mv python hostpython; \
-               mv Parser/pgen Parser/hostpgen; \
-               make distclean; \
-               echo "import sys" > $(PKG_BUILD_DIR)/setup.py.new; \
-               echo "sys.path.append('$(PKG_BUILD_DIR)/Lib')" >> $(PKG_BUILD_DIR)/setup.py.new; \
-               cat $(PKG_BUILD_DIR)/setup.py.new $(PKG_BUILD_DIR)/setup.py > $(PKG_BUILD_DIR)/setup.py.foo; \
-               mv $(PKG_BUILD_DIR)/setup.py.foo $(PKG_BUILD_DIR)/setup.py; \
-               rm $(PKG_BUILD_DIR)/setup.py.new; \
+               OPT="$(HOST_CFLAGS)" \
+               ./configure --without-cxx-main --without-threads; \
        );
+       $(MAKE) -C $(PKG_BUILD_DIR) python Parser/pgen
+       (cd $(PKG_BUILD_DIR); \
+               mv python ./hostpython; \
+               mv Parser/pgen ./hostpgen; \
+       );
+       $(MAKE) -C $(PKG_BUILD_DIR) distclean
+       #echo "readline readline.c -lreadline -lncurses" >> $(PKG_BUILD_DIR)/Modules/Setup.local
        $(call Build/Configure/Default, \
-               --disable-shared \
                --sysconfdir=/etc \
-               --with-threads=no, \
+               --disable-shared \
+               --disable-ipv6 \
+               --without-cxx-main \
+               --with-threads \
+               ac_cv_lib_readline_readline=no \
                HOSTPYTHON=./hostpython \
-               HOSTPGEN=./Parser/hostpgen \
+               HOSTPGEN=./hostpgen \
+               OPT="$(TARGET_CFLAGS)" \
        )
+       $(MAKE) -C $(PKG_BUILD_DIR) \
+               $(MAKE_OPTS) \
+               DESTDIR="$(PKG_INSTALL_DIR)" \
+               all install
 endef
 
-MAKE_OPTS= \
-               $(TARGET_CONFIGURE_OPTS) \
-               CFLAGS="$(TARGET_CFLAGS)" \
-               LD_LIBRARY_PATH="$(LD_LIBRARY_PATH)" \
-               LD="$(TARGET_CC)" \
-               HOSTPYTHON=./hostpython \
-               HOSTPGEN=./Parser/hostpgen
+define Build/InstallDev
+       $(INSTALL_DIR) $(1)/mk $(2)/bin $(1)/usr/bin $(1)/usr/include $(1)/usr/lib
+       $(INSTALL_DATA) ./python-package.mk $(1)/mk/
+       $(CP) $(PKG_BUILD_DIR)/hostpython $(1)/usr/bin/
+       ln -sf hostpython $(1)/usr/bin/python
+       ln -sf $(STAGING_DIR)/usr/bin/hostpython $(2)/bin/
+       ln -sf $(STAGING_DIR)/usr/bin/python $(2)/bin/
+       $(CP) \
+               $(PKG_INSTALL_DIR)/usr/include/python$(PYTHON_VERSION) \
+               $(1)/usr/include/
+       $(CP) \
+               $(PKG_INSTALL_DIR)/usr/lib/python$(PYTHON_VERSION) \
+               $(PKG_BUILD_DIR)/libpython$(PYTHON_VERSION).a \
+               $(1)/usr/lib/
+endef
 
-define Build/Compile
-       $(MAKE) -C $(PKG_BUILD_DIR) \
-               DESTDIR="$(PKG_INSTALL_DIR)" \
-               $(MAKE_OPTS) \
-               all
+define PyPackage/python/filespec
++|/usr/bin/python$(PYTHON_VERSION)
++|/usr/lib/python$(PYTHON_VERSION)
+-|/usr/lib/python$(PYTHON_VERSION)/bsddb/test
+-|/usr/lib/python$(PYTHON_VERSION)/config
+-|/usr/lib/python$(PYTHON_VERSION)/ctypes/test
+-|/usr/lib/python$(PYTHON_VERSION)/distutils/command/wininst-*.exe
+-|/usr/lib/python$(PYTHON_VERSION)/distutils/tests
+-|/usr/lib/python$(PYTHON_VERSION)/email/test
+-|/usr/lib/python$(PYTHON_VERSION)/idlelib
+-|/usr/lib/python$(PYTHON_VERSION)/lib-tk
+-|/usr/lib/python$(PYTHON_VERSION)/sqlite3/test
+-|/usr/lib/python$(PYTHON_VERSION)/test
 endef
 
-define Package/python/install
-       mkdir -p $(1)/lib
-       $(MAKE) -C $(PKG_BUILD_DIR) \
-               $(MAKE_OPTS) \
-               DESTDIR="$(1)" \
-               install
+define PyPackage/python/install
+       ln -sf python$(PYTHON_VERSION) $(1)/usr/bin/python
 endef
 
+define PyPackage/python-mini/filespec
++|/usr/bin/python$(PYTHON_VERSION)
++|/usr/lib/python$(PYTHON_VERSION)/__future__.py
++|/usr/lib/python$(PYTHON_VERSION)/codecs.py
++|/usr/lib/python$(PYTHON_VERSION)/compileall.py
++|/usr/lib/python$(PYTHON_VERSION)/ConfigParser.py
++|/usr/lib/python$(PYTHON_VERSION)/copy.py
++|/usr/lib/python$(PYTHON_VERSION)/copy_reg.py
++|/usr/lib/python$(PYTHON_VERSION)/dis.py
++|/usr/lib/python$(PYTHON_VERSION)/encodings
++|/usr/lib/python$(PYTHON_VERSION)/fnmatch.py
++|/usr/lib/python$(PYTHON_VERSION)/getopt.py
++|/usr/lib/python$(PYTHON_VERSION)/glob.py
++|/usr/lib/python$(PYTHON_VERSION)/hashlib.py
++|/usr/lib/python$(PYTHON_VERSION)/inspect.py
++|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/array.so
++|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/binascii.so
++|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/cStringIO.so
++|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/fcntl.so
++|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/grp.so
++|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/itertools.so
++|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/math.so
++|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/operator.so
++|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_random.so
++|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/select.so
++|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_socket.so
++|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/strop.so
++|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_struct.so
++|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/syslog.so
++|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/time.so
++|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/unicodedata.so
++|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/zlib.so
++|/usr/lib/python$(PYTHON_VERSION)/linecache.py
++|/usr/lib/python$(PYTHON_VERSION)/md5.py
++|/usr/lib/python$(PYTHON_VERSION)/opcode.py
++|/usr/lib/python$(PYTHON_VERSION)/optparse.py
++|/usr/lib/python$(PYTHON_VERSION)/os.py
++|/usr/lib/python$(PYTHON_VERSION)/pickle.py
++|/usr/lib/python$(PYTHON_VERSION)/pickle.py
++|/usr/lib/python$(PYTHON_VERSION)/pkgutil.py
++|/usr/lib/python$(PYTHON_VERSION)/popen2.py
++|/usr/lib/python$(PYTHON_VERSION)/posixpath.py
++|/usr/lib/python$(PYTHON_VERSION)/py_compile.py
++|/usr/lib/python$(PYTHON_VERSION)/random.py
++|/usr/lib/python$(PYTHON_VERSION)/repr.py
++|/usr/lib/python$(PYTHON_VERSION)/re.py
++|/usr/lib/python$(PYTHON_VERSION)/sha.py
++|/usr/lib/python$(PYTHON_VERSION)/site.py
++|/usr/lib/python$(PYTHON_VERSION)/socket.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)/sre.py
++|/usr/lib/python$(PYTHON_VERSION)/stat.py
++|/usr/lib/python$(PYTHON_VERSION)/StringIO.py
++|/usr/lib/python$(PYTHON_VERSION)/stringprep.py
++|/usr/lib/python$(PYTHON_VERSION)/string.py
++|/usr/lib/python$(PYTHON_VERSION)/struct.py
++|/usr/lib/python$(PYTHON_VERSION)/subprocess.py
++|/usr/lib/python$(PYTHON_VERSION)/tempfile.py
++|/usr/lib/python$(PYTHON_VERSION)/textwrap.py
++|/usr/lib/python$(PYTHON_VERSION)/tokenize.py
++|/usr/lib/python$(PYTHON_VERSION)/token.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-mini/install
+       ln -sf python$(PYTHON_VERSION) $(1)/usr/bin/python
+endef
+
+define PyPackage/python-pydoc/filespec
++|/usr/lib/python$(PYTHON_VERSION)/pydoc.py
+endef
+
+define PyPackage/python-expat/filespec
++|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/pyexpat.so
+endef
+
+define PyPackage/python-openssl/filespec
++|/usr/lib/python$(PYTHON_VERSION)/lib-dynload/_ssl.so
+endef
+
+$(eval $(call PyPackage,python))
+$(eval $(call PyPackage,python-mini))
+$(eval $(call PyPackage,python-doc))
+$(eval $(call PyPackage,python-expat))
+$(eval $(call PyPackage,python-openssl))
+
 $(eval $(call BuildPackage,python))
+$(eval $(call BuildPackage,python-mini))
+$(eval $(call BuildPackage,python-doc))
+$(eval $(call BuildPackage,python-expat))
+$(eval $(call BuildPackage,python-openssl))
+