enhancements for the python package, patch by Hamish Moffatt
authorIvan Kuten <ivan.kuten@promwad.com>
Thu, 17 Jan 2008 12:42:53 +0000 (12:42 -0000)
committerIvan Kuten <ivan.kuten@promwad.com>
Thu, 17 Jan 2008 12:42:53 +0000 (12:42 -0000)
package/python/Config.in
package/python/python.mk

index b9b41df66d582901fe719edbe7701d7bd423d0cc..c209b3e51326bf1754b0cb15a24b0008e6c47301 100644 (file)
@@ -5,3 +5,96 @@ config BR2_PACKAGE_PYTHON
          The python language interpreter.
 
          http://www.python.org/
+
+choice
+       prompt "Module format to install"
+       depends on BR2_PACKAGE_PYTHON
+       default BR2_PACKAGE_PYTHON_PY_ONLY
+       help
+         Select Python module format to install on target (py, pyc or both)
+
+config BR2_PACKAGE_PYTHON_PY_ONLY
+       bool ".py sources only"
+
+config BR2_PACKAGE_PYTHON_PYC_ONLY
+       bool ".pyc compiled sources only"
+
+config BR2_PACKAGE_PYTHON_PY_PYC
+       bool ".py sources and .pyc compiled"
+
+endchoice
+
+comment "The following modules are unusual or require extra libraries"
+       depends on BR2_PACKAGE_PYTHON
+
+config BR2_PACKAGE_PYTHON_BSDDB
+       depends on BR2_PACKAGE_PYTHON
+       bool "bsddb module"
+       default n
+       help
+         bsddb module for Python.
+
+config BR2_PACKAGE_PYTHON_CODECSCJK
+       depends on BR2_PACKAGE_PYTHON
+       bool "codecscjk module"
+       default y
+       help
+         Chinese/Japanese/Korean codecs module for Python (large).
+
+config BR2_PACKAGE_PYTHON_CURSES
+       depends on BR2_PACKAGE_PYTHON
+       bool "curses module"
+       default n
+       help
+         curses module for Python.
+
+config BR2_PACKAGE_PYTHON_GDBM
+       depends on BR2_PACKAGE_PYTHON
+       bool "gdbm module"
+       default n
+       help
+         gdbm module for Python.
+
+config BR2_PACKAGE_PYTHON_NIS
+       depends on BR2_PACKAGE_PYTHON
+       bool "nis module"
+       default n
+       help
+         nis module for Python.
+
+config BR2_PACKAGE_PYTHON_PYEXPAT
+       depends on BR2_PACKAGE_PYTHON
+       bool "pyexpat"
+       default n
+       help
+         pyexpat module for Python.
+
+config BR2_PACKAGE_PYTHON_READLINE
+       depends on BR2_PACKAGE_PYTHON
+       bool "readline"
+       default n
+       help
+         readline module for Python (required for command-line 
+         editing in the Python shell).
+
+config BR2_PACKAGE_PYTHON_SSL
+       depends on BR2_PACKAGE_PYTHON
+       bool "ssl"
+       default n
+       help
+         _ssl module for Python (required for https in urllib etc).
+
+config BR2_PACKAGE_PYTHON_TKINTER
+       depends on BR2_PACKAGE_PYTHON
+       bool "tkinter module"
+       default n
+       help
+         tkinter module for Python.
+
+config BR2_PACKAGE_PYTHON_UNICODEDATA
+       depends on BR2_PACKAGE_PYTHON
+       bool "unicodedata module"
+       default y
+       help
+         Unicode character database (used by stringprep module) (large).
+
index a0eff5c0c20838c4488a0140633132f31379212e..9f7e1b885bccf056652857fe21cbba94b7374b2e 100644 (file)
@@ -10,10 +10,61 @@ PYTHON_DIR:=$(BUILD_DIR)/Python-$(PYTHON_VERSION)
 PYTHON_CAT:=$(BZCAT)
 PYTHON_BINARY:=python
 PYTHON_TARGET_BINARY:=usr/bin/python
+PYTHON_DEPS:=
 
-# these could use checks for some BR2_PACKAGE_foo,y
-BR2_PYTHON_DISABLED_MODULES=readline pyexpat dbm gdbm bsddb \
-       _curses _curses_panel _tkinter nis zipfile
+BR2_PYTHON_DISABLED_MODULES=dbm zipfile
+
+ifeq ($(BR2_PACKAGE_PYTHON_READLINE),y)
+PYTHON_DEPS += readline-target
+else
+BR2_PYTHON_DISABLED_MODULES += readline
+endif
+
+ifeq ($(BR2_PACKAGE_PYTHON_CURSES),y)
+PYTHON_DEPS += ncurses
+else
+BR2_PYTHON_DISABLED_MODULES += _curses _curses_panel
+endif
+
+ifeq ($(BR2_PACKAGE_PYTHON_PYEXPAT),y)
+PYTHON_DEPS += expat
+else
+BR2_PYTHON_DISABLED_MODULES += pyexpat
+endif
+
+ifeq ($(BR2_PACKAGE_PYTHON_GDBM),y)
+PYTHON_DEPS += gdbm
+else
+BR2_PYTHON_DISABLED_MODULES += gdbm
+endif
+
+ifeq ($(BR2_PACKAGE_PYTHON_BSDDB),y)
+PYTHON_DEPS += berkeleydb
+else
+BR2_PYTHON_DISABLED_MODULES += bsddb
+endif
+
+ifeq ($(BR2_PACKAGE_PYTHON_TKINTER),y)
+PYTHON_DEPS += tcl
+else
+BR2_PYTHON_DISABLED_MODULES += _tkinter
+endif
+
+ifeq ($(BR2_PACKAGE_PYTHON_SSL),y)
+PYTHON_DEPS += openssl
+endif
+
+ifneq ($(BR2_PACKAGE_PYTHON_NIS),y)
+BR2_PYTHON_DISABLED_MODULES += nis
+endif
+
+ifneq ($(BR2_PACKAGE_PYTHON_CODECSCJK),y)
+BR2_PYTHON_DISABLED_MODULES += _codecs_kr _codecs_jp _codecs_cn _codecs_tw _codecs_hk
+endif
+
+ifneq ($(BR2_PACKAGE_PYTHON_UNICODEDATA),y)
+BR2_PYTHON_DISABLED_MODULES += unicodedata
+endif
 
 $(DL_DIR)/$(PYTHON_SOURCE):
         $(WGET) -P $(DL_DIR) $(PYTHON_SITE)/$(PYTHON_SOURCE)
@@ -59,7 +110,9 @@ $(PYTHON_DIR)/.configured: $(PYTHON_DIR)/.hostpython
        touch $@
 
 $(PYTHON_DIR)/$(PYTHON_BINARY): $(PYTHON_DIR)/.configured
+ifneq ($(BR2_PACKAGE_PYTHON_SSL),y)
        export PYTHON_DISABLE_SSL=1
+endif
        $(MAKE) CC=$(TARGET_CC) -C $(PYTHON_DIR) DESTDIR=$(TARGET_DIR) \
                PYTHON_MODULES_INCLUDE=$(STAGING_DIR)/usr/include \
                PYTHON_MODULES_LIB=$(STAGING_DIR)/lib \
@@ -67,7 +120,9 @@ $(PYTHON_DIR)/$(PYTHON_BINARY): $(PYTHON_DIR)/.configured
                HOSTPYTHON=./hostpython HOSTPGEN=./Parser/hostpgen
 
 $(TARGET_DIR)/$(PYTHON_TARGET_BINARY): $(PYTHON_DIR)/$(PYTHON_BINARY)
+ifneq ($(BR2_PACKAGE_PYTHON_SSL),y)
        export PYTHON_DISABLE_SSL=1
+endif
        LD_LIBRARY_PATH=$(STAGING_DIR)/lib
        $(MAKE) CC=$(TARGET_CC) -C $(PYTHON_DIR) install \
                DESTDIR=$(TARGET_DIR) CROSS_COMPILE=yes \
@@ -78,13 +133,18 @@ $(TARGET_DIR)/$(PYTHON_TARGET_BINARY): $(PYTHON_DIR)/$(PYTHON_BINARY)
        rm $(TARGET_DIR)/usr/bin/python?.? && \
        rm $(TARGET_DIR)/usr/bin/idle && \
        rm $(TARGET_DIR)/usr/bin/pydoc && \
-       find $(TARGET_DIR)/usr/lib/ -name '*.pyc' -exec rm {} \; && \
        find $(TARGET_DIR)/usr/lib/ -name '*.pyo' -exec rm {} \; && \
        rm -rf $(TARGET_DIR)/share/locale $(TARGET_DIR)/usr/info \
                $(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/doc \
                $(TARGET_DIR)/usr/lib/python*/test
+ifeq ($(BR2_PACKAGE_PYTHON_PY_ONLY),y)
+       find $(TARGET_DIR)/usr/lib/ -name '*.pyc' -exec rm {} \;
+endif
+ifeq ($(BR2_PACKAGE_PYTHON_PYC_ONLY),y)
+       find $(TARGET_DIR)/usr/lib/ -name '*.py' -exec rm {} \;
+endif
 
-python: uclibc $(TARGET_DIR)/$(PYTHON_TARGET_BINARY)
+python: uclibc $(PYTHON_DEPS) $(TARGET_DIR)/$(PYTHON_TARGET_BINARY)
 
 python-clean:
        -$(MAKE) -C $(PYTHON_DIR) distclean