Changeset 23666 for packages


Ignore:
Timestamp:
2010-10-27T15:37:11+02:00 (6 years ago)
Author:
mb
Message:

Split python into a host and target build. Also add a HostPython macro to conveniently and safely invoke host python binary.

Location:
packages
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • packages/lang/distribute/Makefile

    r20177 r23666  
    2121$(call include_mk, python-package.mk) 
    2222 
    23 PYTHON:=$(STAGING_DIR)/usr/bin/hostpython 
     23PYTHON:=$(HOST_PYTHON_BIN) 
    2424 
    2525define Package/distribute 
  • packages/lang/python/Makefile

    r23515 r23666  
    1515PKG_SOURCE_URL:=http://www.python.org/ftp/python/$(PKG_VERSION)/ 
    1616PKG_MD5SUM:=fee5408634a54e721a93531aba37f8c1 
     17 
     18PKG_INSTALL:=1 
    1719PKG_BUILD_PARALLEL:=1 
     20HOST_BUILD_PARALLEL:=1 
    1821 
    1922PKG_BUILD_DIR:=$(BUILD_DIR)/Python-$(PKG_VERSION) 
    20  
     23HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/Python-$(PKG_VERSION) 
     24 
     25PKG_BUILD_DEPENDS:=python/host 
     26 
     27include $(INCLUDE_DIR)/host-build.mk 
    2128include $(INCLUDE_DIR)/package.mk 
    2229-include $(if $(DUMP),,./files/python-package.mk) 
     
    108115        readline _curses _curses_panel _tkinter nis 
    109116 
    110 MAKE_OPTS:=\ 
     117MAKE_FLAGS:=\ 
    111118        $(TARGET_CONFIGURE_OPTS) \ 
    112119        PYTHON_DISABLE_MODULES="$(PY_DISABLED_MODULES)" \ 
    113120        PYTHON_MODULES_INCLUDE="$(STAGING_DIR)/usr/include" \ 
    114121        PYTHON_MODULES_LIB="$(STAGING_DIR)/usr/lib" \ 
     122        DESTDIR="$(PKG_INSTALL_DIR)" \ 
    115123        CROSS_COMPILE=yes \ 
    116124        CFLAGS="$(TARGET_CFLAGS) -fno-inline" \ 
     
    118126        LD="$(TARGET_CC)" \ 
    119127        HOSTPYTHON=./hostpython \ 
    120         HOSTPGEN=./hostpgen \ 
     128        HOSTPGEN=./hostpgen 
    121129 
    122130define Build/Configure 
    123 endef 
    124  
    125 define Build/Compile 
    126131        -$(MAKE) -C $(PKG_BUILD_DIR) distclean 
    127         (cd $(PKG_BUILD_DIR); autoreconf --force --install || exit 0); 
    128         (cd $(PKG_BUILD_DIR); \ 
    129                 rm -rf config.cache; \ 
    130                 CONFIG_SITE= \ 
    131                 OPT="$(HOST_CFLAGS)" \ 
    132                 ./configure --without-cxx-main --without-threads --prefix=$(PKG_INSTALL_DIR)/host; \ 
    133         ); 
    134         $(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \ 
    135                 python Parser/pgen 
    136         $(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \ 
    137                 HOSTPYTHON=$(PKG_BUILD_DIR)/python \ 
    138                 sharedmods 
    139         $(MAKE) -C $(PKG_BUILD_DIR) \ 
    140                 HOSTPYTHON=$(PKG_BUILD_DIR)/python \ 
    141                 install 
    142         (cd $(PKG_BUILD_DIR);mv Parser/pgen hostpgen) 
     132        (cd $(PKG_BUILD_DIR); autoreconf --force --install || exit 0) 
    143133        # The python executable needs to stay in the rootdir since its location will 
    144134        # be used to compute the path of the config files. 
    145         $(CP) $(PKG_BUILD_DIR)/python $(PKG_BUILD_DIR)/hostpython 
    146         $(MAKE) -C $(PKG_BUILD_DIR) distclean 
     135        $(CP) $(STAGING_DIR_HOST)/bin/pgen $(PKG_BUILD_DIR)/hostpgen 
     136        $(CP) $(STAGING_DIR_HOST)/bin/python $(PKG_BUILD_DIR)/hostpython 
    147137        $(call Build/Configure/Default, \ 
    148138                --sysconfdir=/etc \ 
     
    157147                OPT="$(TARGET_CFLAGS)" \ 
    158148        ) 
    159         $(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \ 
    160                 $(MAKE_OPTS) \ 
    161                 DESTDIR="$(PKG_INSTALL_DIR)" \ 
    162                 all 
    163         $(MAKE) -C $(PKG_BUILD_DIR) \ 
    164                 $(MAKE_OPTS) \ 
    165                 DESTDIR="$(PKG_INSTALL_DIR)" \ 
    166                 install 
    167149endef 
    168150 
    169151define Build/InstallDev 
    170         $(INSTALL_DIR) $(1)/mk $(2)/bin $(1)/usr/bin $(1)/usr/include $(1)/usr/lib 
    171         $(INSTALL_DATA) ./files/python-package.mk $(1)/mk/ 
     152        $(INSTALL_DIR) $(2)/bin $(1)/usr/bin $(1)/usr/include $(1)/usr/lib 
    172153        $(CP) \ 
    173154                $(PKG_INSTALL_DIR)/usr/include/python$(PYTHON_VERSION) \ 
    174155                $(1)/usr/include/ 
    175156        $(CP) \ 
    176                 $(PKG_INSTALL_DIR)/host/lib/python$(PYTHON_VERSION) \ 
     157                $(STAGING_DIR_HOST)/lib/python$(PYTHON_VERSION) \ 
    177158                $(PKG_BUILD_DIR)/libpython$(PYTHON_VERSION).a \ 
    178159                $(1)/usr/lib/ 
    179  
    180160        $(CP) \ 
    181161                $(PKG_INSTALL_DIR)/usr/lib/python$(PYTHON_VERSION)/config \ 
     
    183163 
    184164        $(CP) \ 
    185                 $(PKG_INSTALL_DIR)/host/bin/python \ 
     165                $(STAGING_DIR_HOST)/bin/python \ 
    186166                $(1)/usr/bin/hostpython 
    187167        (cd $(2)/bin; \ 
     
    190170 
    191171        $(CP) \ 
    192                 $(PKG_INSTALL_DIR)/host/bin/python$(PYTHON_VERSION)-config \ 
     172                $(STAGING_DIR_HOST)/bin/python$(PYTHON_VERSION)-config \ 
    193173                $(2)/bin/ 
    194174        $(SED) 's,^#!.*,#!/usr/bin/env python$(PYTHON_VERSION),g' $(2)/bin/python$(PYTHON_VERSION)-config 
     
    413393endef 
    414394 
     395define Host/Configure 
     396        -$(MAKE) -C $(HOST_BUILD_DIR) distclean 
     397        (cd $(HOST_BUILD_DIR); autoreconf --force --install || exit 0) 
     398        (cd $(HOST_BUILD_DIR); \ 
     399                rm -rf config.cache; \ 
     400                CONFIG_SITE= \ 
     401                OPT="$(HOST_CFLAGS)" \ 
     402                ./configure --without-cxx-main --without-threads --prefix=$(STAGING_DIR_HOST); \ 
     403        ) 
     404endef 
     405 
     406define Host/Compile 
     407        $(MAKE) $(HOST_JOBS) -C $(HOST_BUILD_DIR) \ 
     408                python Parser/pgen 
     409        $(MAKE) $(HOST_JOBS) -C $(HOST_BUILD_DIR) \ 
     410                HOSTPYTHON=$(HOST_BUILD_DIR)/python \ 
     411                sharedmods 
     412endef 
     413 
     414define Host/Install 
     415        $(INSTALL_DIR) $(STAGING_DIR)/mk/ 
     416        $(INSTALL_DATA) ./files/python-package.mk $(STAGING_DIR)/mk/ 
     417        $(INSTALL_DIR) $(STAGING_DIR_HOST)/bin/ 
     418        $(MAKE) -C $(HOST_BUILD_DIR) \ 
     419                HOSTPYTHON=$(HOST_BUILD_DIR)/python \ 
     420                install 
     421        $(INSTALL_BIN) $(HOST_BUILD_DIR)/Parser/pgen $(STAGING_DIR_HOST)/bin/ 
     422endef 
     423 
     424 
     425$(eval $(call HostBuild)) 
     426 
    415427$(eval $(call PyPackage,python)) 
    416428$(eval $(call PyPackage,python-mini)) 
  • packages/lang/python/files/python-package.mk

    r22730 r23666  
    1313PYTHON_LIB_DIR:=$(PYTHON_DIR)/lib/python$(PYTHON_VERSION) 
    1414 
     15PYTHON_PKG_DIR:=/usr/lib/python$(PYTHON_VERSION)/site-packages 
     16 
    1517PYTHON:=python$(PYTHON_VERSION) 
    1618 
    17 PYTHON_PKG_DIR:=/usr/lib/python$(PYTHON_VERSION)/site-packages 
     19HOST_PYTHON_BIN:=$(STAGING_DIR)/usr/bin/hostpython 
     20 
     21define HostPython 
     22        (       export PYTHONPATH="$(PYTHON_LIB_DIR):$(STAGING_DIR)/$(PYTHON_PKG_DIR)"; \ 
     23                export PYTHONOPTIMIZE=""; \ 
     24                export PYTHONDONTWRITEBYTECODE=1; \ 
     25                $(1) \ 
     26                $(HOST_PYTHON_BIN) $(2); \ 
     27        ) 
     28endef 
    1829 
    1930define PyPackage 
     
    5061endef 
    5162 
     63# $(1) => build subdir 
     64# $(2) => additional arguments to setup.py 
     65# $(3) => additional variables 
    5266define Build/Compile/PyMod 
    53         ( cd $(PKG_BUILD_DIR)/$(1); \ 
     67        $(call HostPython, \ 
     68                cd $(PKG_BUILD_DIR)/$(strip $(1)); \ 
    5469                CFLAGS="$(TARGET_CFLAGS)" \ 
    5570                CPPFLAGS="$(TARGET_CPPFLAGS)" \ 
    5671                LDFLAGS="$(TARGET_LDFLAGS)" \ 
    5772                $(3) \ 
    58                 $(PYTHON) ./setup.py $(2) && \ 
    59                 find $(PKG_INSTALL_DIR) -name "*\.pyc" -o -name "*\.pyo" | xargs rm -f \ 
    60         ); 
     73                , \ 
     74                ./setup.py $(2) \ 
     75        ) 
     76        find $(PKG_INSTALL_DIR) -name "*\.pyc" -o -name "*\.pyo" | xargs rm -f 
    6177endef 
  • packages/libs/libdnet/Makefile

    r19705 r23666  
    1919PKG_INSTALL:=1 
    2020 
     21PKG_CONFIG_DEPENDS:=\ 
     22        CONFIG_PACKAGE_libdnet \ 
     23        CONFIG_PACKAGE_pydnet 
     24 
     25PKG_BUILD_DEPENDS:=PACKAGE_pydnet:python 
     26 
    2127include $(INCLUDE_DIR)/package.mk 
     28$(call include_mk, python-package.mk) 
    2229 
    2330define Package/libdnet/Default 
     
    6269        ac_cv_dnet_bsd_bpf=no 
    6370 
     71define Build/Compile 
     72        $(call Build/Compile/Default) 
     73        $(if $(CONFIG_PACKAGE_pydnet), \ 
     74                $(call Build/Compile/PyMod, \ 
     75                        python/, \ 
     76                        build \ 
     77                ) \ 
     78        ) 
     79endef 
     80 
     81define Build/Install 
     82        $(call Build/Install/Default) 
     83        $(if $(CONFIG_PACKAGE_pydnet), \ 
     84                $(call Build/Compile/PyMod, \ 
     85                        python/, \ 
     86                        install --no-compile --prefix $(PKG_INSTALL_DIR)/usr \ 
     87                ) \ 
     88        ) 
     89endef 
     90 
    6491define Build/InstallDev 
    6592        $(INSTALL_DIR) $(2)/bin 
     
    99126define Package/pydnet/install 
    100127        $(INSTALL_DIR) $(1)/usr/lib 
    101         cd $(PKG_BUILD_DIR)/python; \ 
    102         CFLAGS="$(TARGET_CFLAGS)" \ 
    103         $(STAGING_DIR)/usr/bin/hostpython ./setup.py install \ 
    104                 --no-compile --prefix $(PKG_INSTALL_DIR)/usr 
    105         cp -a $(PKG_INSTALL_DIR)/usr/lib/python* $(1)/usr/lib/ 
     128        $(CP) $(PKG_INSTALL_DIR)/usr/lib/python* $(1)/usr/lib/ 
    106129endef 
    107130 
Note: See TracChangeset for help on using the changeset viewer.