Skip to main content

ZC buildout extension to checkout develop eggs

Project description

What is gp.svndevelop ?

This package allow you to checkout some package and use them as developed eggs with zc.buildout.

Why zc.buildout sucks a bit ?

zc.buildout fail When you specify a develop egg who does not exist:

>>> cd(sample_buildout)

>>> write('buildout.cfg','''
... [buildout]
... develop=my.testing
... parts=
... ''')

>>> print system(buildout)
Develop: '/...buildout/my.testing'
Traceback (most recent call last):
...
IOError: [Errno 2] No such file or directory: '/...buildout/my.testing'
...

A solution: a simple checkout before anything else

A solution is to use this package as a zc.buildout extension and to provide some svn urls in the svn-develop option:

>>> write('buildout.cfg','''
... [buildout]
... extensions=gp.svndevelop
... develop=../my.testing
... svn-develop=%s/my.testing/trunk#egg=my.testing
... parts=
... ''' % repository)

Then if you run buildout again, the package will be checkout from the repository:

>>> print system(buildout)
A    my.testing/LICENSE
A    my.testing/my
A    my.testing/my/__init__.py
A    my.testing/my/testing
A    my.testing/my/testing/__init__.py
A    my.testing/my/testing/README.txt
A    my.testing/setup.py
...
Develop: '/...buildout/my.testing'

Notice that the develop option is set to the parent directory but the package is not checked out in it. Why ? Well this is my arbitrary policy. I don’t want to have extra eggs out of my buildout environment.

Using eggs in an existing directory

This extension is also a way to use an existing directory. Imagine you already have the my.testing package in a directory:

>>> ls(package_dir)
-  LICENSE
d  my
-  setup...

Then you don’t want to re-checkout. The solution is to provide a develop-dir:

>>> write('buildout.cfg','''
... [buildout]
... extensions=gp.svndevelop
... develop=../my.testing
... develop-dir=%s
... parts=
... ''' % os.path.dirname(package_dir))

And run buildout again:

>>> print system(buildout)
Develop: '/...Package/my.testing'

It works fine but now the package in the buildout dir is not used by buildout:

>>> ls(sample_buildout)
-  .installed.cfg
d  bin
-  buildout.cfg
d  develop-eggs
d  eggs
d  my.testing
d  parts

buildout use the one in our develop-dir:

>>> cat(sample_buildout, 'develop-eggs', 'my.testing.egg-link')
/...Package/my.testing
.

Of course you can put the develop-dir option in your ~/.buildout/default.cfg

Cleanup test:

>>> import shutil
>>> shutil.rmtree(os.path.join(sample_buildout, 'my.testing'))

Omit the develop directive

You can omit the develop option and get develop eggs directly from the svn-extend-develop one:

>>> write('buildout.cfg','''
... [buildout]
... extensions=gp.svndevelop
... svn-extend-develop=%s/my.testing/trunk#egg=my.testing
... parts=
... ''' % repository)

This will install the my.testing package as a develop egg:

>>> print system(buildout)
A    my.testing/LICENSE
A    my.testing/my
A    my.testing/my/__init__.py
A    my.testing/my/testing
A    my.testing/my/testing/__init__.py
A    my.testing/my/testing/README.txt
A    my.testing/setup.py
...
Develop: '/...buildout/my.testing'

Develop eggs from existing parts

The extension can scan eggs in parts and set them as develop:

>>> write('buildout.cfg','''
... [buildout]
... extensions=gp.svndevelop
... eggs=my.testing
... scan-eggs=true
... develop-dir=%s
... parts=
... ''' % os.path.dirname(package_dir))

The if you run buildout again, the develop egg is used:

>>> print system(buildout)
Develop: '/...Package/my.testing'

This will not work if a version is specified:

>>> write('buildout.cfg','''
... [buildout]
... extensions=gp.svndevelop
... eggs=my.testing>=01
... scan-eggs=true
... develop-dir=%s
... parts=
... ''' % os.path.dirname(package_dir))
>>> print system(buildout)

If scan-eggs exist, the extension will also try to set your recipes as develop eggs.

Changes

0.2

  • force to use package in develop-dir if any [gawel]
  • add svn-extend-develop option [gawel]
  • add scan-eggs option to allow easy develop setting on all eggs found in develop-dir or svn-develop [gawel]

0.1

  • initial version [gawel]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for gp.svndevelop, version 0.2
Filename, size File type Python version Upload date Hashes
Filename, size gp.svndevelop-0.2-py2.4.egg (9.9 kB) File type Egg Python version 2.4 Upload date Hashes View
Filename, size gp.svndevelop-0.2.tar.gz (12.2 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page