Changeset 5440 for isenes


Ignore:
Timestamp:
01/07/09 12:26:04 (10 years ago)
Author:
spascoe
Message:

Will get and unpack basemap ready for compiling geos

Location:
isenes/mpl_buildout/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • isenes/mpl_buildout/trunk/buildout.cfg

    r5435 r5440  
    11[buildout] 
    2 parts = numpy 
     2parts = numpy py 
    33download-cache = cache 
    44#offline = true 
     
    88[numpy] 
    99recipe = mpl_recipe:numpy_venv 
     10 
     11[py] 
     12recipe = zc.recipe.egg 
     13# setuptools included to force creation of easy_install 
     14eggs =  
     15  numpy 
     16  matplotlib 
     17interpreter = python 
  • isenes/mpl_buildout/trunk/recipes/numpy_venv.py

    r5439 r5440  
    55 
    66import logging, os, zc.buildout 
    7 from zc.buildout.easy_install import install 
     7from zc.buildout.easy_install import install, Installer 
    88import pkg_resources 
     9import subprocess 
    910 
    1011from recipe import BaseRecipe 
     
    1415    def __init__(self, buildout, name, options): 
    1516        self.name, self.options = name, options 
     17        self.log = logging.getLogger(self.name) 
    1618 
    1719        #!TODO: support buildout.python option 
     
    2224            ) 
    2325        options['eggs-directory'] = buildout['buildout']['eggs-directory'] 
    24          
     26        options['download-cache'] = buildout['buildout']['download-cache'] 
     27 
    2528        if 'eggs' not in options: 
    2629            options['eggs'] = '' 
    2730 
    2831    def install(self): 
     32        """ 
     33        The numpy egg is built with the buildout infrastructure and then 
     34        installed into a virtualenv.  This allows the latest numpy to be 
     35        built and used for further distribution building even if an older 
     36        version of numpy is already installed globally. 
     37         
     38        """ 
    2939        path = self.options['virtualenv'] 
    3040 
     
    3949        self.options['eggs'] = '%s\n%s' % (self.options['eggs'], 
    4050                                           dist.location) 
     51        self.create_virtualenv(path) 
     52 
     53        # Install MPL using the numpy virtualenv 
     54        self.install_mpl() 
     55 
     56        # Install basemap 
     57        self.install_basemap() 
     58 
     59        return path 
     60 
     61 
     62    def install_mpl(self): 
     63        venv = self.options['virtualenv'] 
     64        venv_python = os.path.join(venv, 'bin', 'python') 
    4165         
    42         self.create_virtualenv(path) 
     66        install(['matplotlib'], self.options['eggs-directory'], 
     67                links=self.options['download-cache'], 
     68                executable = venv_python) 
     69 
     70    def install_basemap(self): 
     71        """ 
     72        Use the numpy virtualenv to get basemap, unpack it, 
     73        install the embedded geos and build the egg. 
     74 
     75        @warning: This method uses internal zc.buildout calls that are 
     76            subject to change. 
     77             
     78        """ 
     79        venv = self.options['virtualenv'] 
     80        venv_python = os.path.join(venv, 'bin', 'python') 
     81        venv_easy_install = os.path.join(venv, 'bin', 'easy_install') 
    4382         
    44         return path 
     83        # Download the source of basemap using zc.buildout 
     84        i = Installer(venv,  
     85                      links = self.options['download-cache'], 
     86                      executable = venv_python) 
     87        dist, avail = i._satisfied(pkg_resources.Requirement.parse('basemap'), 
     88                                 source=True) 
     89        assert(dist==None) 
     90 
     91        #!TODO: remove basemap source tree if present. 
     92 
     93        # Unpack into the venv 
     94        subprocess.call([venv_easy_install, '-eb', venv, 
     95                         '-f', avail.location, 'basemap']) 
    4596     
    4697    def update(self): 
Note: See TracChangeset for help on using the changeset viewer.