[Zope3-dev] Re: eggifying zc.resourcelibrary, zc.table and others

Tres Seaver tseaver at palladion.com
Wed Apr 5 08:43:03 EDT 2006


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

Martijn Faassen wrote:

>>> * the setup.py I'll create will only work with setuptools installed;
>>> is this a problem?
>>
>>
>> Not from us.  You'd maybe get even more warm fuzzies from people by
>> making it not require setuptools, but that limitation doesn't bother us.
> 
> 
> Okay, good. Warm fuzzies are nice, but I won't worry too much about that.



There is some support for "kickstarting" an eggifying project.  E.g.:

  $ export ZSVN=svn+ssh://svn.zope.org/repos/main
  $ svn cp -m "Eggify" $ZSVN/productsupport/trunk/project-template \
                       $ZSVN/zope.foopackage

The top-level 'zope.foopackage' will have a skeleton 'trunk', plus empty
'branches' and 'tags':

  $ svn co $ZSVN/zope.foopackage/trunk zope.foopackage-trunk
  $ cd zope.foopackage-trunk
  $ ls -1
  CHANGES.txt
  develop.py
  INSTALL.txt
  README.txt
  setup.cfg.in
  setup.py
  src
  test.py
  workspace

The text files are templates, and should be edited to fit.

The 'develop.py' script will set up a local 'bin' and 'lib' directory
 inside your checkout, and try to install dependencies as specified in
  'setup.py' and 'setup.cfg' (which it copies from 'setup.cfg.in').  It
   also jams the Zope egg URL into 'setup.cfg'.

I usually run 'setup.py develop' afterwards, as it is better at
finding all the dependencies:

  $ PYTHONPATH=lib /path/to/your/python setup.py develop

The 'zope.testing' package is supposed to be pulled in during that
bootstrapping, but often seems missed (I haven't yet figured out
why).  Running the local 'easy_install' does the trick:

  $ PYTHONPATH=lib /path/to/your/python bin/easy_install \
    zope.testing


The 'src/zope' directory is intended to contain a 'svn:externals'
pointer to the "canonical" location of the source (we may eventually
reverse this, and make the main Zope tree point out at the top-level
package directories).  E.g.

  $ svn propedit svn:externals src/zope
  #... add your external here
  $ svn up
  # ... fetches your external.


That 'src/zope' directory also contains "setuptools / pkgutil"
boilerplat namespace __init__.py:

 $ cat src/zope/__init__.py
 # namespace package boilerplate
 try:
     __import__('pkg_resources').declare_namespace(__name__)
 except ImportError, e:
     from pkgutil import extend_path
     __path__ = extend_path(__path__, __name__)


The 'test.py' needs to be edited to point to your package.  At that
point, you should have all your package's dependencies installed
(assuming that you named them in 'setup.py'), and should be able to run
the tests using your local eggs:

  $ PYTHONPATH=lib /path/to/your/python test.py


Nathan, Jim, please correct any mistakes you see.


Tres.
- --
===================================================================
Tres Seaver          +1 202-558-7113          tseaver at palladion.com
Palladion Software   "Excellence by Design"    http://palladion.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFEM7tX+gerLs4ltQ4RArrjAJ9GAW9klbLC9n4ZUdcmbvvsrSDQCgCgsz+l
SojySIyJZEGgMVercdKH8Uk=
=FdIS
-----END PGP SIGNATURE-----



More information about the Zope3-dev mailing list