Commit 292ee0f8 authored by Fred Drake's avatar Fred Drake

Move to a zpkg-based setup:

- References to headers now involve the package names.

- The zpkg support files have been moved to the top-level directory,
  and the releases/ tree has been removed.  The resource map and
  configuration file have been combined now that zpkg allows that.

- The scripts are now all located in src/scripts/ in a checkout.

- Scripts that were imported in the tests have been split into library
  and script components; the library portions share name of the
  script (in order to reduce changes).  The library portions may not
  be used as scripts directly.
parent 031c7b47
ZEO ZEO
ZODB ZODB
ZODB-Scripts
# Needed because...? # Needed because...?
Persistence Persistence
ZopeUndo ZopeUndo
<distribution>
doc
log.ini
test.py
COPYRIGHT.txt
LICENSE.txt
NEWS.txt
README.txt
</distribution>
<collection>
doc -
setup.py -
src -
zpkg.conf -
zpkgsetup -
</collection>
# unfortunate turd
<load>
doc svn://svn.zope.org/repos/main/ZODB/tags/*/doc/
scripts svn://svn.zope.org/repos/main/ZODB/tags/*/src/scripts/
scripts/runzeo.py svn://svn.zope.org/repos/main/ZODB/tags/*/src/ZEO/runzeo.py
scripts/zeoctl.py svn://svn.zope.org/repos/main/ZODB/tags/*/src/ZEO/zeoctl.py
scripts/zeopasswd.py svn://svn.zope.org/repos/main/ZODB/tags/*/src/ZEO/zeopasswd.py
scripts/mkzeoinst.py svn://svn.zope.org/repos/main/ZODB/tags/*/src/ZEO/mkzeoinst.py
log.ini svn://svn.zope.org/repos/main/ZODB/tags/*/log.ini
test.py svn://svn.zope.org/repos/main/ZODB/tags/*/test.py
COPYRIGHT.txt svn://svn.zope.org/repos/main/ZODB/tags/*/COPYRIGHT.txt
LICENSE.txt svn://svn.zope.org/repos/main/ZODB/tags/*/LICENSE.txt
NEWS.txt svn://svn.zope.org/repos/main/ZODB/tags/*/NEWS.txt
README.txt svn://svn.zope.org/repos/main/ZODB/tags/*/README.txt
</load>
<distribution>
doc
log.ini
test.py
COPYRIGHT.txt
LICENSE.txt
NEWS.txt
README.txt
</distribution>
<collection>
doc -
</collection>
script scripts/fsdump.py
script scripts/fsoids.py
script scripts/fsrefs.py
script scripts/fstail.py
script scripts/fstest.py
script scripts/repozo.py
script scripts/zeopack.py
# scripts from ZEO package
script scripts/runzeo.py
script scripts/zeoctl.py
script scripts/zeopasswd.py
script scripts/mkzeoinst.py
# These packages are used to provide the standalone ZODB distribution.
# This is the ZODB3 release package:
#
ZODB3 svn://svn.zope.org/repos/main/ZODB/tags/*/releases/ZODB3
# This group is maintained as part of the ZODB project:
#
BTrees svn://svn.zope.org/repos/main/ZODB/tags/*/src/BTrees
Persistence svn://svn.zope.org/repos/main/ZODB/tags/*/src/Persistence
persistent svn://svn.zope.org/repos/main/ZODB/tags/*/src/persistent
transaction svn://svn.zope.org/repos/main/ZODB/tags/*/src/transaction
ThreadedAsync svn://svn.zope.org/repos/main/ZODB/tags/*/src/ThreadedAsync
ZEO svn://svn.zope.org/repos/main/ZODB/tags/*/src/ZEO
ZODB svn://svn.zope.org/repos/main/ZODB/tags/*/src/ZODB
ZopeUndo svn://svn.zope.org/repos/main/ZODB/tags/*/src/ZopeUndo
zope svn://svn.zope.org/repos/main/ZODB/tags/*/src/zope
# These are copied in from the Zope3 project; they are needed for ZODB
# 3.4 and newer:
#
zope.interface svn://svn.zope.org/repos/main/Zope3/tags/ZopeX3-3.0.0-Zope-2.8-a4/src/zope/interface
zope.testing svn://svn.zope.org/repos/main/zope.testing/trunk/src/zope/testing
# The ZConfig and zdaemon projects:
ZConfig svn://svn.zope.org/repos/main/ZConfig/tags/ZConfig-2.3
zdaemon svn://svn.zope.org/repos/main/zdaemon/tags/zdaemon-1.1
\ No newline at end of file
#!/usr/bin/env python
############################################################################## ##############################################################################
# #
# Copyright (c) 2002, 2003 Zope Corporation and Contributors. # Copyright (c) 2005 Zope Corporation and Contributors.
# All Rights Reserved. # All Rights Reserved.
# #
# This software is subject to the provisions of the Zope Public License, # This software is subject to the provisions of the Zope Public License,
...@@ -11,274 +12,42 @@ ...@@ -11,274 +12,42 @@
# FOR A PARTICULAR PURPOSE. # 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 os
import posixpath
import sys 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
if sys.version_info < (2, 3, 4):
print "ZODB 3.3 requires Python 2.3.4 or higher"
sys.exit(0)
# Include directories for C extensions
include = ['src/persistent']
# 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",
]
_flavors = {"O": "object", "I": "int", "F": "float"}
KEY_H = "src/BTrees/%skeymacros.h"
VALUE_H = "src/BTrees/%svaluemacros.h"
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)
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): import zpkgsetup.setup
"""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): here = os.path.dirname(os.path.abspath(__file__))
install_lib.run(self)
copy_other_files(self, self.install_dir)
class MyPyBuilder(build_py): def join(*parts):
def build_packages(self): local_full_path = os.path.join(here, *parts)
build_py.build_packages(self) relative_path = posixpath.join(*parts)
copy_other_files(self, self.build_lib) return local_full_path, relative_path
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): context = zpkgsetup.setup.SetupContext(
Distribution.__init__(self, *attrs) "ZODB3", "3.5.0a42", __file__)
self.cmdclass['build_py'] = MyPyBuilder
self.cmdclass['install_lib'] = MyLibInstaller
doclines = __doc__.split("\n") context.load_metadata(
os.path.join(here, "releases", "ZODB3", "PUBLICATION.cfg"))
setup(name="ZODB3", context.scan("ZODB3", *join("releases", "ZODB3"))
version="3.5.0a6", context.scan("BTrees", *join("src", "BTrees"))
maintainer="Zope Corporation", context.scan("Persistence", *join("src", "Persistence"))
maintainer_email="zodb-dev@zope.org", context.scan("persistent", *join("src", "persistent"))
url = "http://www.zope.org/Wikis/ZODB", context.scan("ThreadedAsync", *join("src", "ThreadedAsync"))
download_url = "http://www.zope.org/Products/ZODB3.5", context.scan("transaction", *join("src", "transaction"))
packages = packages, context.scan("ZConfig", *join("src", "ZConfig"))
package_dir = {'': 'src'}, context.scan("zdaemon", *join("src", "zdaemon"))
ext_modules = exts, context.scan("ZEO", *join("src", "ZEO"))
headers = ['src/persistent/cPersistence.h', context.scan("ZODB", *join("src", "ZODB"))
'src/persistent/ring.h'], context.scan("ZODB-Scripts", *join("src", "scripts"))
license = "ZPL 2.1", context.scan("zope", *join("src", "zope"))
platforms = ["any"], context.scan("zope.interface", *join("src", "zope", "interface"))
description = doclines[0], context.scan("zope.proxy", *join("src", "zope", "proxy"))
classifiers = filter(None, classifiers.split("\n")), context.scan("zope.testing", *join("src", "zope", "testing"))
long_description = "\n".join(doclines[2:]), context.scan("ZopeUndo", *join("src", "ZopeUndo"))
distclass = MyDistribution, context.setup()
scripts = scripts,
)
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
#include "structmember.h" #include "structmember.h"
#ifdef PERSISTENT #ifdef PERSISTENT
#include "cPersistence.h" #include "persistent/cPersistence.h"
#else #else
#define PER_USE_OR_RETURN(self, NULL) #define PER_USE_OR_RETURN(self, NULL)
#define PER_ALLOW_DEACTIVATION(self) #define PER_ALLOW_DEACTIVATION(self)
......
#!python
############################################################################## ##############################################################################
# #
# Copyright (c) 2001, 2002, 2003 Zope Corporation and Contributors. # Copyright (c) 2001, 2002, 2003 Zope Corporation and Contributors.
...@@ -352,6 +351,3 @@ def main(args=None): ...@@ -352,6 +351,3 @@ def main(args=None):
options.realize(args) options.realize(args)
s = ZEOServer(options) s = ZEOServer(options)
s.main() s.main()
if __name__ == "__main__":
main()
#!python
############################################################################## ##############################################################################
# #
# Copyright (c) 2003 Zope Corporation and Contributors. # Copyright (c) 2003 Zope Corporation and Contributors.
...@@ -124,6 +123,3 @@ def main(args=None, dbclass=None): ...@@ -124,6 +123,3 @@ def main(args=None, dbclass=None):
password = getpass.getpass("Enter password: ") password = getpass.getpass("Enter password: ")
db.add_user(username, password) db.add_user(username, password)
db.save() db.save()
if __name__ == "__main__":
main(sys.argv[1:])
#!python
##############################################################################
#
# Copyright (c) 2003 Zope Corporation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
from ZEO.runzeo import main
main()
#!python
##############################################################################
#
# Copyright (c) 2003 Zope Corporation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
import sys
from ZEO.zeopasswd import main
main(sys.argv[1:])
# zpkg config file
#
# To getnerate a ZODB release, use:
#
build-application no
collect-dependencies yes
<resources>
# This is the ZODB3 release package:
#
ZODB3 .
# This group is maintained as part of the ZODB project:
#
BTrees src/BTrees
Persistence src/Persistence
persistent src/persistent
transaction src/transaction
ThreadedAsync src/ThreadedAsync
ZEO src/ZEO
ZODB src/ZODB
ZODB-Scripts src/scripts
ZopeUndo src/ZopeUndo
# These are copied in from the Zope3 project; they are needed for ZODB
# 3.4 and newer:
#
zope src/zope
zope.interface src/zope/interface
zope.proxy src/zope/proxy
zope.testing src/zope/testing
# These are copied in from the ZConfig and zdaemon projects:
#
ZConfig src/ZConfig
zdaemon src/zdaemon
</resources>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment