-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi all,

I just wrote a small recipe for buildout that installs an egg from its develop
version and tarballs it.
So far, so good, I got it to work fine with a few example packages.

Now I got a problem when trying to use the "executable" option in the
buildout.cfg file: it seems to have no effect.
The recipe runs with the default python from the system (2.5) not the one I
supply in the executable option (2.4)

I attach my buildout.cfg and the recipe.

Am I doing something wrong ?

Thanks,
Martin
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJLsYuLAAoJEBdvyODiyJI4pJAH/R6SRFprxS6R1maJ7blyEhtM
leJaoYdTwPpFTqLiEUFz/GvWwr6Up1yxyIinxl7SY8kw7wKd80244MHJVke2Vjf3
nim2IxyCC/E6+j4AE+vQkYx/G5nTJSFHWUd4I1k8OR6iuYuEF2WLWI9m0TBgPe6d
JaHzI+LO8FTduDp4JqPMeAg4KLI8pykhSOb4ikkBbbQXp0P99w8wHfbowHongLX2
HRECWofuzjUmv7swIOQ/+/MRlbzd2QwBVZFeXrbABGxx1GQCNpOVqjvVTAUkaBf+
79N55/LBbtVnvGH7wf6cLvZSHawDxF9XQ5OcXi1nHZD5jQ9F0l8koKq8cIJXSgc=
=v3Ew
-----END PGP SIGNATURE-----
[buildout]
executable=/local_disk/usr/dists/python-2.4/bin/python
develop = 
        smhi_deploy
        /local_disk/usr/src/mpop
        /local_disk/usr/src/pyresample
parts = 
      deploy

[deploy]
recipe = smhi_deploy
path = torc
eggs =
        /local_disk/usr/src/mpop
        /local_disk/usr/src/pyresample

import logging, os, zc.buildout, pkg_resources
import sys
from distutils.sysconfig import get_python_version
import shutil

class SmhiDeploy:

    def __init__(self, buildout, name, options):
        self.name, self.options = name, options
        options['path'] = os.path.join(
                              buildout['buildout']['directory'],
                              options['path'],
                              )
        if not os.path.isdir(os.path.dirname(options['path'])):
            logging.getLogger(self.name).error(
                'Cannot create %s. %s is not a directory.',
                options['path'], os.path.dirname(options['path']))
            raise zc.buildout.UserError('Invalid Path')
        
        d_eggs = buildout['buildout'].get('develop')
        d_eggs = [os.path.abspath(e.strip()) for e in d_eggs.split('\n')]
        options['eggs'] = '\n'.join([e for e in d_eggs if e in options['eggs']])
        options['executable'] = buildout['buildout']['executable']
        self.executable = options['executable']
        print options
        
    def install(self):
        old_exe = sys.executable
        print sys.executable
        sys.executable = self.executable
        print sys.executable
        path = self.options['path']
        logging.getLogger(self.name).info(
            'Creating directory %s', os.path.basename(path))
        if not os.path.exists(path):
            os.mkdir(path)
        d_eggs = self.options['eggs']
        d_eggs = [os.path.abspath(e.strip()) for e in d_eggs.split('\n')]

        old_dir = os.getcwd()
        os.chdir(path)

        for degs in d_eggs:
            dir, proj = os.path.split(degs)
            version = pkg_resources.get_distribution(proj).version
            name = pkg_resources.get_distribution(proj).project_name
            dist = pkg_resources.Distribution(
                None, None, name, version,
                get_python_version(),
                pkg_resources.get_platform()
            )
            
            os.chdir(degs)
            install_dir = os.path.join(path, name.upper())
            if not os.path.exists(install_dir):
                os.mkdir(install_dir)
            old_path = sys.path[:]
            sys.path.insert(0, install_dir)
            _run_setup("easy_install",
                       "--install-dir=" + install_dir,
                       "--always-unzip",
                       "--site-dirs=" + install_dir,
                       "--script-dir=" + os.path.join(install_dir, 
str(dist.egg_name() + ".egg"), "bin"),
                       ".")
            sys.path[:] = old_path
            egg_dir = os.path.join(install_dir, str(dist.egg_name() + ".egg"))
            true_egg_dir = os.path.join(install_dir, str(dist.egg_name()))
            os.rename(egg_dir, true_egg_dir)
            os.chdir(path)
            import tarfile
            tar = tarfile.open(os.path.join(path, str(dist.egg_name()) + 
".tar.gz"), "w:gz")
            tar.add(name.upper())
            tar.close()
            
            shutil.rmtree(name.upper())

        os.chdir(old_dir)
        sys.executable = old_exe
        return path


    update=install
        
def _run_setup(*args):
    old_args = sys.argv
    sys.argv = ["setup.py"] + list(args)
    old_path = sys.path[:]
    sys.path.insert(0, os.getcwd())
    __import__('setup')
    del sys.modules['setup']
    sys.argv = old_args
    sys.path[:] = old_path

Attachment: buildout.cfg.sig
Description: Binary data

Attachment: smhi_deploy.py.sig
Description: Binary data

<<attachment: martin_raspaud.vcf>>

_______________________________________________
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig

Reply via email to