[Zodb-checkins] SVN: ZODB/trunk/ Reverted to old setup.py in
preparation for packaging.
Julien Anguenot
ja at nuxeo.com
Thu Mar 2 07:19:51 EST 2006
Jim Fulton wrote:
> Log message for revision 65714:
> Reverted to old setup.py in preparation for packaging.
>
>
> Changed:
> D ZODB/trunk/buildsupport/
> U ZODB/trunk/setup.py
>
Hi Jim,
Does it mean zpkg is dead as The packaging tool for Zope ? What's the
target, eggs ?
J.
> -=-
> Modified: ZODB/trunk/setup.py
> ===================================================================
> --- ZODB/trunk/setup.py 2006-03-02 05:06:59 UTC (rev 65713)
> +++ ZODB/trunk/setup.py 2006-03-02 05:08:28 UTC (rev 65714)
> @@ -1,6 +1,6 @@
> -#############################################################################
> +##############################################################################
> #
> -# Copyright (c) 2005 Zope Corporation and Contributors.
> +# Copyright (c) 2002, 2003 Zope Corporation and Contributors.
> # All Rights Reserved.
> #
> # This software is subject to the provisions of the Zope Public License,
> @@ -11,37 +11,274 @@
> # FOR A PARTICULAR PURPOSE.
> #
> ##############################################################################
> +"""Zope Object Database: object database and persistence
>
> +The Zope Object Database provides an object-oriented database for
> +Python that provides a high-degree of transparency. Applications can
> +take advantage of object database features with few, if any, changes
> +to application logic. ZODB includes features such as a plugable storage
> +interface, rich transaction support, and undo.
> +"""
> +
> +# The (non-obvious!) choices for the Trove Development Status line:
> +# Development Status :: 5 - Production/Stable
> +# Development Status :: 4 - Beta
> +# Development Status :: 3 - Alpha
> +
> +classifiers = """\
> +Development Status :: 3 - Alpha
> +Intended Audience :: Developers
> +License :: OSI Approved :: Zope Public License
> +Programming Language :: Python
> +Topic :: Database
> +Topic :: Software Development :: Libraries :: Python Modules
> +Operating System :: Microsoft :: Windows
> +Operating System :: Unix
> +"""
> +
> +import glob
> import os
> -import site
> import sys
> +from distutils.core import setup
> +from distutils.extension import Extension
> +from distutils import dir_util
> +from distutils.core import setup
> +from distutils.dist import Distribution
> +from distutils.command.install_lib import install_lib
> +from distutils.command.build_py import build_py
> +from distutils.util import convert_path
>
> -here = os.path.dirname(os.path.abspath(__file__))
> -buildsupport = os.path.join(here, "buildsupport")
> +if sys.version_info < (2, 3, 4):
> + print "ZODB 3.3 requires Python 2.3.4 or higher"
> + sys.exit(0)
>
> -# Add 'buildsupport' to sys.path and process *.pth files from 'buildsupport':
> -last = len(sys.path)
> -site.addsitedir(buildsupport)
> -if len(sys.path) > last:
> - # Move all appended directories to the start.
> - # Make sure we use ZConfig shipped with the distribution
> - new = sys.path[last:]
> - del sys.path[last:]
> - sys.path[:0] = new
> +# Include directories for C extensions
> +include = ['src']
>
> -import zpkgsetup.package
> -import zpkgsetup.publication
> -import zpkgsetup.setup
> +# Set up dependencies for the BTrees package
> +base_btrees_depends = [
> + "src/BTrees/BTreeItemsTemplate.c",
> + "src/BTrees/BTreeModuleTemplate.c",
> + "src/BTrees/BTreeTemplate.c",
> + "src/BTrees/BucketTemplate.c",
> + "src/BTrees/MergeTemplate.c",
> + "src/BTrees/SetOpTemplate.c",
> + "src/BTrees/SetTemplate.c",
> + "src/BTrees/TreeSetTemplate.c",
> + "src/BTrees/sorters.c",
> + "src/persistent/cPersistence.h",
> + ]
>
> -# Note that release.py must be able to recognize the VERSION line.
> -VERSION = "3.7.0a0"
> +_flavors = {"O": "object", "I": "int", "F": "float"}
>
> -context = zpkgsetup.setup.SetupContext(
> - "ZODB", VERSION, __file__)
> +KEY_H = "src/BTrees/%skeymacros.h"
> +VALUE_H = "src/BTrees/%svaluemacros.h"
>
> -context.load_metadata(
> - os.path.join(here,
> - zpkgsetup.publication.PUBLICATION_CONF))
> +def BTreeExtension(flavor):
> + key = flavor[0]
> + value = flavor[1]
> + name = "BTrees._%sBTree" % flavor
> + sources = ["src/BTrees/_%sBTree.c" % flavor]
> + kwargs = {"include_dirs": include}
> + if flavor != "fs":
> + kwargs["depends"] = (base_btrees_depends + [KEY_H % _flavors[key],
> + VALUE_H % _flavors[value]])
> + if key != "O":
> + kwargs["define_macros"] = [('EXCLUDE_INTSET_SUPPORT', None)]
> + return Extension(name, sources, **kwargs)
>
> -context.walk_packages("src")
> -context.setup()
> +exts = [BTreeExtension(flavor)
> + for flavor in ("OO", "IO", "OI", "II", "IF", "fs")]
> +
> +cPersistence = Extension(name = 'persistent.cPersistence',
> + include_dirs = include,
> + sources= ['src/persistent/cPersistence.c',
> + 'src/persistent/ring.c'],
> + depends = ['src/persistent/cPersistence.h',
> + 'src/persistent/ring.h',
> + 'src/persistent/ring.c']
> + )
> +
> +cPickleCache = Extension(name = 'persistent.cPickleCache',
> + include_dirs = include,
> + sources= ['src/persistent/cPickleCache.c',
> + 'src/persistent/ring.c'],
> + depends = ['src/persistent/cPersistence.h',
> + 'src/persistent/ring.h',
> + 'src/persistent/ring.c']
> + )
> +
> +TimeStamp = Extension(name = 'persistent.TimeStamp',
> + include_dirs = include,
> + sources= ['src/persistent/TimeStamp.c']
> + )
> +
> +##coptimizations = Extension(name = 'ZODB.coptimizations',
> +## include_dirs = include,
> +## sources= ['src/ZODB/coptimizations.c']
> +## )
> +
> +winlock = Extension(name = 'ZODB.winlock',
> + include_dirs = include,
> + sources = ['src/ZODB/winlock.c']
> + )
> +
> +cZopeInterface = Extension(
> + name = 'zope.interface._zope_interface_coptimizations',
> + sources= ['src/zope/interface/_zope_interface_coptimizations.c']
> + )
> +
> +cZopeProxy = Extension(
> + name = 'zope.proxy._zope_proxy_proxy',
> + sources= ['src/zope/proxy/_zope_proxy_proxy.c']
> + )
> +
> +exts += [cPersistence,
> + cPickleCache,
> + TimeStamp,
> + winlock,
> + cZopeInterface,
> + cZopeProxy,
> + ]
> +
> +# The ZODB.zodb4 code is not being packaged, because it is only
> +# need to convert early versions of Zope3 databases to ZODB3.
> +
> +packages = ["BTrees", "BTrees.tests",
> + "ZEO", "ZEO.auth", "ZEO.zrpc", "ZEO.tests",
> + "ZODB", "ZODB.FileStorage", "ZODB.tests",
> + "Persistence", "Persistence.tests",
> + "persistent", "persistent.tests",
> + "transaction", "transaction.tests",
> + "ThreadedAsync",
> + "zdaemon", "zdaemon.tests",
> +
> + "zope",
> + "zope.interface", "zope.interface.tests",
> + "zope.interface.common", "zope.interface.common.tests",
> + "zope.proxy", "zope.proxy.tests",
> + "zope.testing",
> +
> + "ZopeUndo", "ZopeUndo.tests",
> + "ZConfig", "ZConfig.tests",
> + "ZConfig.components",
> + "ZConfig.components.basic", "ZConfig.components.basic.tests",
> + "ZConfig.components.logger", "ZConfig.components.logger.tests",
> + "ZConfig.tests.library", "ZConfig.tests.library.widget",
> + "ZConfig.tests.library.thing",
> + ]
> +
> +scripts = ["src/scripts/fsdump.py",
> + "src/scripts/fsoids.py",
> + "src/scripts/fsrefs.py",
> + "src/scripts/fstail.py",
> + "src/scripts/fstest.py",
> + "src/scripts/repozo.py",
> + "src/scripts/zeopack.py",
> + "src/ZConfig/scripts/zconfig",
> + "src/ZEO/runzeo.py",
> + "src/ZEO/zeopasswd.py",
> + "src/ZEO/mkzeoinst.py",
> + "src/ZEO/zeoctl.py",
> + "src/zdaemon/zdrun.py",
> + "src/zdaemon/zdctl.py",
> + ]
> +
> +def copy_other_files(cmd, outputbase):
> + # A delicate dance to copy files with certain extensions
> + # into a package just like .py files.
> + extensions = ["*.conf", "*.xml", "*.txt", "*.sh"]
> + directories = [
> + "transaction",
> + "persistent/tests",
> + "ZConfig/components/basic",
> + "ZConfig/components/logger",
> + "ZConfig/tests/input",
> + "ZConfig/tests/library",
> + "ZConfig/tests/library/thing",
> + "ZConfig/tests/library/thing/extras",
> + "ZConfig/tests/library/widget",
> + "ZEO",
> + "ZODB",
> + "ZODB/tests",
> + "zdaemon",
> + "zdaemon/tests",
> + "zope/interface", "zope/interface/tests",
> + "zope/testing",
> + ]
> + # zope.testing's testrunner-ex is not a package, but contains
> + # packages, in a fairly elaborate subtree. Major special-casing
> + # for this. First find all the (non-SVN) directories starting
> + # there, and append them all to `directories`.
> + for root, dirs, files in os.walk("src/zope/testing/testrunner-ex"):
> + dirs[:] = [d for d in dirs if ".svn" not in d]
> + assert root.startswith("src/")
> + normpath = root[4:].replace("\\", "/")
> + directories.append(normpath)
> + for dir in directories:
> + exts = extensions
> + if dir.startswith("zope/testing/testrunner-ex"):
> + # testrunner-ex isn't a package, so not even the .py files
> + # get copied unless we force that there.
> + exts = extensions + ["*.py"]
> + dir = convert_path(dir)
> + inputdir = os.path.join("src", dir)
> + outputdir = os.path.join(outputbase, dir)
> + if not os.path.exists(outputdir):
> + dir_util.mkpath(outputdir)
> + for pattern in exts:
> + for fn in glob.glob(os.path.join(inputdir, pattern)):
> + # glob is going to give us a path including "src",
> + # which must be stripped to get the destination dir
> + dest = os.path.join(outputbase, fn[4:])
> + cmd.copy_file(fn, dest)
> +
> +class MyLibInstaller(install_lib):
> + """Custom library installer, used to put hosttab in the right place."""
> +
> + # We use the install_lib command since we need to put hosttab
> + # inside the library directory. This is where we already have the
> + # real information about where to install it after the library
> + # location has been set by any relevant distutils command line
> + # options.
> +
> + def run(self):
> + install_lib.run(self)
> + copy_other_files(self, self.install_dir)
> +
> +class MyPyBuilder(build_py):
> + def build_packages(self):
> + build_py.build_packages(self)
> + copy_other_files(self, self.build_lib)
> +
> +class MyDistribution(Distribution):
> + # To control the selection of MyLibInstaller and MyPyBuilder, we
> + # have to set it into the cmdclass instance variable, set in
> + # Distribution.__init__().
> +
> + def __init__(self, *attrs):
> + Distribution.__init__(self, *attrs)
> + self.cmdclass['build_py'] = MyPyBuilder
> + self.cmdclass['install_lib'] = MyLibInstaller
> +
> +doclines = __doc__.split("\n")
> +
> +setup(name="ZODB3",
> + version="3.5.0a6",
> + maintainer="Zope Corporation",
> + maintainer_email="zodb-dev at zope.org",
> + url = "http://www.zope.org/Wikis/ZODB",
> + download_url = "http://www.zope.org/Products/ZODB3.5",
> + packages = packages,
> + package_dir = {'': 'src'},
> + ext_modules = exts,
> + headers = ['src/persistent/cPersistence.h',
> + 'src/persistent/ring.h'],
> + license = "ZPL 2.1",
> + platforms = ["any"],
> + description = doclines[0],
> + classifiers = filter(None, classifiers.split("\n")),
> + long_description = "\n".join(doclines[2:]),
> + distclass = MyDistribution,
> + scripts = scripts,
> + )
>
> _______________________________________________
> Zodb-checkins mailing list
> Zodb-checkins at zope.org
> http://mail.zope.org/mailman/listinfo/zodb-checkins
--
Julien Anguenot | Nuxeo R&D (Paris, France)
CPS Platform : http://www.cps-project.org
Zope3 / ECM : http://www.z3lab.org
mail: anguenot at nuxeo.com; tel: +33 (0) 6 72 57 57 66
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 252 bytes
Desc: OpenPGP digital signature
Url : http://mail.zope.org/pipermail/zodb-checkins/attachments/20060302/4a6a0c3e/signature.bin
More information about the Zodb-checkins
mailing list