From c345534783f0977a57b77c7739ad0093b0d3e247 Mon Sep 17 00:00:00 2001 From: Ivan Kuten Date: Thu, 17 Jan 2008 12:42:53 +0000 Subject: [PATCH] enhancements for the python package, patch by Hamish Moffatt --- package/python/Config.in | 93 ++++++++++++++++++++++++++++++++++++++++ package/python/python.mk | 70 +++++++++++++++++++++++++++--- 2 files changed, 158 insertions(+), 5 deletions(-) diff --git a/package/python/Config.in b/package/python/Config.in index b9b41df66d..c209b3e513 100644 --- a/package/python/Config.in +++ b/package/python/Config.in @@ -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). + diff --git a/package/python/python.mk b/package/python/python.mk index a0eff5c0c2..9f7e1b885b 100644 --- a/package/python/python.mk +++ b/package/python/python.mk @@ -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 -- 2.30.2