Split python into a host and target build. Also add a HostPython macro to convenientl...
[openwrt/svn-archive/archive.git] / lang / python / files / python-package.mk
index a744c73f4a4f20e139a5059c56f05dd2b426ab50..995e411155e24b130e7abc95ae856ab24a79f2c9 100644 (file)
@@ -4,45 +4,55 @@
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
 #
-# $Id$
 
-PYTHON_VERSION=2.5
+PYTHON_VERSION=2.6
 
 PYTHON_DIR:=$(STAGING_DIR)/usr
 PYTHON_BIN_DIR:=$(PYTHON_DIR)/bin
 PYTHON_INC_DIR:=$(PYTHON_DIR)/include/python$(PYTHON_VERSION)
 PYTHON_LIB_DIR:=$(PYTHON_DIR)/lib/python$(PYTHON_VERSION)
 
+PYTHON_PKG_DIR:=/usr/lib/python$(PYTHON_VERSION)/site-packages
+
 PYTHON:=python$(PYTHON_VERSION)
 
-PYTHON_PKG_DIR:=/usr/lib/python$(PYTHON_VERSION)/site-packages
+HOST_PYTHON_BIN:=$(STAGING_DIR)/usr/bin/hostpython
+
+define HostPython
+       (       export PYTHONPATH="$(PYTHON_LIB_DIR):$(STAGING_DIR)/$(PYTHON_PKG_DIR)"; \
+               export PYTHONOPTIMIZE=""; \
+               export PYTHONDONTWRITEBYTECODE=1; \
+               $(1) \
+               $(HOST_PYTHON_BIN) $(2); \
+       )
+endef
 
 define PyPackage
   $(call shexport,PyPackage/$(1)/filespec)
 
   define Package/$(1)/install
-       @getvar $$(call shvar,PyPackage/$(1)/filespec) | ( \
+       @$(SH_FUNC) getvar $$(call shvar,PyPackage/$(1)/filespec) | ( \
                IFS='|'; \
                while read fop fspec fperm; do \
                  if [ "$$$$$$$$fop" = "+" ]; then \
-                   dpath=`dirname "$$$$$$$$fspec"`; \
-                   if [ -n "$$$$$$$$fperm" ]; then \
-                     dperm="-m$$$$$$$$fperm"; \
-                   else \
-                     dperm=`stat -c "%a" $(PKG_INSTALL_DIR)$$$$$$$$dpath`; \
-                   fi; \
-                   mkdir -p $$$$$$$$$dperm $$(1)$$$$$$$$dpath; \
-                   echo "copying: '$$$$$$$$fspec'"; \
-                   cp -fpR $(PKG_INSTALL_DIR)$$$$$$$$fspec $$(1)$$$$$$$$dpath/; \
-                   if [ -n "$$$$$$$$fperm" ]; then \
-                     chmod -R $$$$$$$$fperm $$(1)$$$$$$$$fspec; \
-                   fi; \
+                       dpath=`dirname "$$$$$$$$fspec"`; \
+                       if [ -n "$$$$$$$$fperm" ]; then \
+                         dperm="-m$$$$$$$$fperm"; \
+                       else \
+                         dperm=`stat -c "%a" $(PKG_INSTALL_DIR)$$$$$$$$dpath`; \
+                       fi; \
+                       mkdir -p $$$$$$$$$dperm $$(1)$$$$$$$$dpath; \
+                       echo "copying: '$$$$$$$$fspec'"; \
+                       cp -fpR $(PKG_INSTALL_DIR)$$$$$$$$fspec $$(1)$$$$$$$$dpath/; \
+                       if [ -n "$$$$$$$$fperm" ]; then \
+                         chmod -R $$$$$$$$fperm $$(1)$$$$$$$$fspec; \
+                       fi; \
                  elif [ "$$$$$$$$fop" = "-" ]; then \
-                   echo "removing: '$$$$$$$$fspec'"; \
-                   rm -fR $$(1)$$$$$$$$fspec; \
+                       echo "removing: '$$$$$$$$fspec'"; \
+                       rm -fR $$(1)$$$$$$$$fspec; \
                  elif [ "$$$$$$$$fop" = "=" ]; then \
-                   echo "setting permissions: '$$$$$$$$fperm' on '$$$$$$$$fspec'"; \
-                   chmod -R $$$$$$$$fperm $$(1)$$$$$$$$fspec; \
+                       echo "setting permissions: '$$$$$$$$fperm' on '$$$$$$$$fspec'"; \
+                       chmod -R $$$$$$$$fperm $$(1)$$$$$$$$fspec; \
                  fi; \
                done; \
        )
@@ -50,12 +60,18 @@ define PyPackage
   endef
 endef
 
+# $(1) => build subdir
+# $(2) => additional arguments to setup.py
+# $(3) => additional variables
 define Build/Compile/PyMod
-       ( cd $(PKG_BUILD_DIR)/$(1); \
+       $(call HostPython, \
+               cd $(PKG_BUILD_DIR)/$(strip $(1)); \
                CFLAGS="$(TARGET_CFLAGS)" \
                CPPFLAGS="$(TARGET_CPPFLAGS)" \
                LDFLAGS="$(TARGET_LDFLAGS)" \
                $(3) \
-               $(PYTHON) ./setup.py $(2) \
-       );
+               , \
+               ./setup.py $(2) \
+       )
+       find $(PKG_INSTALL_DIR) -name "*\.pyc" -o -name "*\.pyo" | xargs rm -f
 endef