[Zope-Checkins] SVN: Zope/trunk/ Merge tseaver-retire_zpkg-2.10
branch, removing the use of 'zpkg' in
Tres Seaver
tseaver at palladion.com
Thu Jul 6 00:15:02 EDT 2006
Log message for revision 69001:
Merge tseaver-retire_zpkg-2.10 branch, removing the use of 'zpkg' in
favor of the "classic" './configure && make && make install' recipe.
Changed:
D Zope/trunk/buildsupport/
U Zope/trunk/configure
U Zope/trunk/doc/CHANGES.txt
U Zope/trunk/inst/Makefile.in
U Zope/trunk/inst/configure.py
_U Zope/trunk/lib/python/
_U Zope/trunk/lib/python/Zope2/
D Zope/trunk/releases/
U Zope/trunk/setup.py
-=-
Modified: Zope/trunk/configure
===================================================================
--- Zope/trunk/configure 2006-07-06 04:04:47 UTC (rev 69000)
+++ Zope/trunk/configure 2006-07-06 04:15:00 UTC (rev 69001)
@@ -38,7 +38,8 @@
{
echo
echo "configure [--help] [--quiet] [--with-python=path] [--prefix=path] "
- echo " [--ignore-largefile] [--ignore-zlib] [--optimize]"
+ echo " [--build-base=path] [--ignore-largefile] [--ignore-zlib]"
+ echo " [--optimize]"
echo
echo " Creates a Makefile suitable for building and installing Zope"
echo
@@ -47,6 +48,7 @@
echo " --quiet suppress nonessential output"
echo " --with-python specify a path to a Python interpreter to use"
echo " --prefix specify an installation path for binary data"
+ echo " --build-base specify a temporary path for build files"
echo " --ignore-largefile ignore large file support warnings"
echo " --ignore-expat ignore warnings about expat/pyexpat"
echo " --ignore-zlib ignore warnings about zlib"
Modified: Zope/trunk/doc/CHANGES.txt
===================================================================
--- Zope/trunk/doc/CHANGES.txt 2006-07-06 04:04:47 UTC (rev 69000)
+++ Zope/trunk/doc/CHANGES.txt 2006-07-06 04:15:00 UTC (rev 69001)
@@ -21,6 +21,18 @@
- Removed deprecated support for product initialization based on
'__ac_permissions__' and 'meta_types' attributes.
+ - reStructuredText/ZReST: setting raw_enabled to 0 for security
+ reasons
+
+ - Collector #2113: 'zopectl test' masked Ctrl-C.
+
+ - OFS Image: Image and File updated to use isinstance(data, str)
+ and raises TypeError upon encountering unicode objects.
+
+ - OFS Application: Updated deprecation warnings.
+ Support for '__ac_permissions__' and 'meta_types' will be removed in
+ Zope 2.11, 'methods' support might remain longer.
+
- removed zLOG module which was deprecated since Zope 2.9
Features added
@@ -52,4 +64,1281 @@
http://codespeak.net/pipermail/z3-five/2006q2/001474.html
- The defaultView directive now only looks up views, not attributes.
-
+
+ Other Changes
+
+ - Returned to the "classic" './configure && make && make install'
+ recipe, dropping the use of 'zpkg' for building Zope2 releases.
+
+ Zope 2.10.0 beta 1 (2006/05/30)
+
+ Restructuring
+
+ - Zope 2.10+ now includes site.zcml as part of its instance
+ creation skel directory. As a consequence Five now requires
+ this file to exist in every instance. If upgrading a site
+ from Zope 2.9 to 2.10, you will need to copy site.zcml and
+ package-includes/ from your installed Zope installation
+ location (skel/etc/) into the etc/ directory of your upgraded
+ instance.
+
+ The rationale for requiring this new file is to bring Zope 2
+ instances closer in consistency to Zope 3 instances. It also
+ eases use of Zope 3 coding techniques in Zope 2 and removes
+ some confusion when trying to run pure Zope 3 applications on
+ Zope 2.
+
+ - Products.PageTemplates now uses the Zope 3 ZPT implementation
+ in zope.pagetemplate.
+
+ - The TAL package has been deprecated in favour of the TAL
+ engine from zope.tal.
+
+ - Products.PageTemplates.TALES has been deprecated in favour of
+ the TALES engine from zope.tales.
+
+ - ZTUtils.Iterator has been deprecated in favour of the TALES
+ iterator implementation in zope.tales.tales.
+
+ - ZCatalog: removed manage_deleteIndex(), manage_delColumns()
+ which were deprecated since Zope 2.4
+
+ - deprecated the zLOG module. Use Pythons 'logging' module instead.
+
+ - replaced all zLOG occurences (expect the zLOG module itself) with
+ the 'logging' module
+
+ - PluginIndexes/TextIndex is deprecated. Use ZCTextIndex instead
+
+ - the 'StructuredText' module is deprecated. Use zope.structuredtext
+ instead
+
+ - removed ZopeTutorial (Elvis is now really dead)
+
+ - ZClasses are deprecated and should no longer be used. In addition
+ any code related to the ZClasses (re)distribution mechanism is
+ removed.
+
+ - ZGadyFlyDA/Gadfly is deprecated
+
+ - deprecated OFS.content_types (to be removed in Zope 2.11) and
+ replaced all occurences with zope.app.content_types
+
+ - OFS.content_types: moved code to zope.app.content_types and added
+ method aliases
+
+ - Using FastCGI is offically deprecated.
+
+ Features added
+
+ - Included Zope 3.3 and corresponding Five 1.5 release.
+
+ - There is now a default favicon.ico.
+
+ - Experimental WSGI and Twisted support for http.
+ Zope now has a WSGI interface for integration with other
+ web-servers than ZServer. Most notably Twisted is supported.
+ The WSGI application is ZPublisher.WSGIPublisher.publish_module
+
+ You can make ZServer use the twisted interface with the
+ "use-wsgi on" keyword in the http-server section in zope.conf.
+
+ You can run Twisted by installing Twisted (2.1 recommended) and
+ replacing the http-server section with a server section in
+ zope.conf. It is not possible to run a Twisted server together with
+ a ZServer at the same time.
+
+ <server>
+ address 8080
+ type Zope2-HTTP
+ </server>
+
+ WSGI: http://www.python.org/dev/peps/pep-0333/
+ Twisted: http://twistedmatrix.com/
+
+ - The traversal has been refactored to take heed of Zope3s
+ IPublishTraverse adapter interfaces. The ZCML directives
+ five:traversable and five:defaultViewable are therefore no
+ longer needed, as everything now is five:traversable and
+ five:defaultViewable.
+
+ There was a bug in earlier versions of Five that allowed you
+ to do custom publishing traversal with ITraversable adapters.
+ This bug has been corrected. Anybody using ITraversable
+ adapters need to convert them to IPublishTraversal adapters.
+
+ - Testing.makerequest: Added an 'environ' argument so
+ clients can use mappings other than os.environ.
+
+ - Updated to Docutils 0.4.0
+
+ - reStructuredText: The default value for the 'stylesheet'
+ property has been changed from 'default.css' to None because
+ there is no 'default.css' file by default.
+
+ - ZReST: rewritten render() method to integrate it smoothly
+ with Docutils 0.4.0. The default value for the 'stylesheet'
+ property has been changed from 'default.css' to None because
+ there is no 'default.css' file by default.
+
+ - Added a "clock server" servertype which allows users to
+ configure methods that should be called periodically as if
+ they were being called by a remote user agent on one of Zope's
+ HTTP ports. This is meant to replace wget+cron for some class
+ of periodic callables.
+
+ To use, create a "clock-server" directive section anywhere
+ in your zope.conf file, like so:
+
+ <clock-server>
+ method /do_stuff
+ period 60
+ user admin
+ password 123
+ host localhost
+ </clock-server>
+
+ Any number of clock-server sections may be defined within a
+ single zope.conf. Note that you must specify a
+ username/password combination with the appropriate level of
+ access to call the method you've defined. You can omit the
+ username and password if the method is anonymously callable.
+ Obviously the password is stored in the clear in the config
+ file, so you need to protect the config file with filesystem
+ security if the Zope account is privileged and those who have
+ filesystem access should not see the password.
+
+ Descriptions of the values within the clock-server section
+ follow::
+
+ method -- the traversal path (from the Zope root) to an
+ executable Zope method (Python Script, external method,
+ product method, etc). The method must take no arguments or
+ must obtain its arguments from a query string.
+
+ period -- the number of seconds between each clock "tick" (and
+ thus each call to the above "method"). The lowest number
+ providable here is typically 30 (this is the asyncore mainloop
+ "timeout" value).
+
+ user -- a zope username.
+
+ password -- the password for the zope username provided above.
+
+ host -- the hostname passed in via the "Host:" header in the
+ faux request. Could be useful if you have virtual host rules
+ set up inside Zope itself.
+
+ To make sure the clock is working, examine your Z2.log file. It
+ should show requests incoming via a "Zope Clock Server"
+ useragent.
+
+ - Added a 'conflict-error-log-level' directive to zope.conf, to set
+ the level at which conflict errors (which are normally retried
+ automatically) are logged. The default is 'info'.
+
+ - The SiteErrorLog now copies exceptions to the event log by default.
+
+ - ObjectManager now has an hasObject method to test presence. This
+ brings it in line with BTreeFolder.
+
+ - Improved logging of ConflictErrors. All conflict errors are
+ logged at INFO, with counts of how many occurred and how many
+ were resolved. Tracebacks for all conflicts are logged a DEBUG
+ level, although these won't help anyone much. If a conflict
+ error is unresolved, it will now bubble up to error_log and
+ standard_error_message.
+
+ - Use new-style security declarations everywhere possible. This
+ means remove the use of __ac_permissions__, foo__roles__ and
+ default__class_init__. A few corner cases can't be converted
+ because of circular imports.
+
+ - Fixed unclear security declarations. Warn when an attempt is
+ made to have a security declaration on a nonexistent method.
+
+ - updated to ZPL 2.1
+
+ - interfaces: Added 'Interfaces' tab to basic core objects.
+ This is a Five feature and only available if the classes are made
+ five:traversable. It allows to inspect interfaces and to assign
+ marker interfaces through the ZMI.
+
+ - webdav: Added support for the z3 WriteLock interface.
+ It is no longer necessary to have the WriteLockInterface in the
+ __implements__ list of lockable objects. All classes inheriting from
+ LockableItem inherit also the IWriteLock interface. Note that this
+ enables webdav locking for all subclasses by default even if they
+ don't specify the WriteLockInterface explicitly.
+
+ - App ProductContext: Made registerClass aware of z3 interfaces.
+ Z2 and z3 interfaces are registered side by side in the same tuple in
+ Products.meta_types. IFAwareObjectManagers like the ZCatalog work now
+ with z3 interfaces as well.
+
+ - Zope now sends Zope 3 events when objects are added or removed
+ from standard containers. manage_afterAdd, manage_beforeDelete
+ and manage_afterClone are now deprecated. See
+ lib/python/Products/Five/tests/event.txt for details.
+
+ - Zope now utilizes ZODB 3.6. It had previously used
+ ZODB 3.4. As a result, the DBTab package was removed, as
+ ZODB 3.6 has multidatabase support that makes DBTab
+ unnecessary.
+
+ - Added a 'product-config' section type to zope.conf, allowing
+ arbitrary key-value mappings. Products can look for such
+ confgiurations to set product-specific options. Products mwy
+ also register their own section types, extending the
+ 'zope.product.base' type. (see the example '<product-config>'
+ section in skel/etc/zope.conf.in for sample usage).
+
+ - Collector #1490: Added a new zope.conf option to control the
+ character set used to encode unicode data that reaches
+ ZPublisher without any specified encoding.
+
+ - AccessControl, Acquisition, App, OFS, webdav, PluginIndexes,
+ ZCatalog and ZCTextIndex: Added some Zope 3 style interfaces.
+ This makes the bridged interfaces shipped with Five obsolete.
+
+ - ZConfig extension, address now also accepts symbolic port names
+ from etc/services (unix) or etc\services (win32)
+
+ - ZPublisher.HTTPRequest.FileUpload now supports full file
+ object interface. This means Iterator support was added. (for
+ line in fileobject: ..., as well as fileobject.next() and
+ fileobject.xreadlines() ) Collector #1837
+
+ - Switched the bundled Zope 3 to release 3.2 and upgraded the
+ Five product to version 1.3 (see Products/Five/CHANGES.txt).
+
+ - The PageTemplate implementation now uses Zope 3 message
+ catalogs by default for translation. Old-style translation
+ services such as Localizer or PlacelessTranslationService are
+ still supported as fall-backs. See Products/Five/doc/i18n.txt
+ for more information.
+
+ - Switched to the new improved test runner from Zope 3. Run
+ test.py with -h to find out more.
+
+ - lib/python/docutils is now a reference to docutils package
+ from the Zope 3 source tree (to get rid of redundant packages)
+
+ Bugs Fixed
+
+ - Collector #1447: When editing content on a virtual-hosted zope,
+ AcceleratedHTTPCacheManager now purges the correct URL.
+
+ - When you add roles in manage_access, roles are now stripped of
+ any leading or trailing spaces.
+
+ - Collector #2062: Fix manage_historyCopy, which was broken, and write
+ tests for it.
+
+ - Collector #2061: Fix problems where windows line endings are passed
+ to restricted code compilers.
+
+ - Collector #2051: Applied patch by Yoshinori Okuji to fix some
+ XML export/import problems, including tests for that feature.
+
+ - Collector #2037: fixed broken ACTUAL_URL for '/'
+
+ - Missing import of NotFound in webdav.Resource
+
+ - Collector #1819: fixed method signature of
+ MountedObject.SimpleTrailblazer._construct()
+
+ - Collector #2019: removed validateValue() from cAccessControl (already
+ removed in former Zope versions from the AccessControl Python
+ implementation)
+
+ - Collector #1991: ZPublisher did not deal properly with a trailing
+ %20 in the URL
+
+ - zope.app.introspector was not included with the source archive
+
+ - Collector #2013: improved XHTML conformance of error messages,
+ some of which did not close '<p>' tags.
+
+ - Collector #2002: fixed broken 'ls -R' functionality (didn't
+ recurse properly subclasses of OFS.Folder)
+
+ - Collector #1992: unified the visible hostnames of the FTP and
+ HTTP servers
+
+ - Collector #1999: fixed broken FTP rename functionality
+ (RNFR now returns 350 as status code instead 250)
+
+ - HTTPResponse: for XML content the encoding specified within
+ the XML preamble is adjusted to the real encoding of the content
+ as specified through the 'charset' within the content-type
+ property.
+
+ - Collector #1939: When running as a service, Zope could
+ potentially collect too much log output filling the NT Event
+ Log. When that happened, a 'print' during exception handling
+ would cause an IOError in the restart code causing the service
+ not to restart automatically.
+
+ Problem is that a service/pythonw.exe process *always* has an
+ invalid sys.stdout. But due to the magic of buffering, small
+ "print" statements would not fail - but once the file actually
+ got written to, the error happened. Never a problem when
+ debugging, as the process has a console, and hence a valid
+ stdout.
+
+ - For content-type HTTP headers starting with 'text/' or 'application/'
+ the 'charset' field is automatically if not specified by the
+ application. The 'charset' is determined by the content-type header
+ specified by the application (if available) or from the
+ zpublisher_default_encoding value as configured in etc/zope.conf
+
+ - Collector #1976: FTP STOR command would load the file being
+ uploaded in memory. Changed to use a TemporaryFile.
+
+ - OFS ObjectManager: Fixed list_imports() to tolerate missing
+ import directories.
+
+ - Collector #1621, 1894: Removed support for use of long-deprecated
+ 'whrandom' module.
+
+ - OFS PropertySheets / webdav: Fixed dav__resourcetype.
+ __dav_collection__ with a false value was overridden by
+ isAnObjectManager.
+
+ - added missing Zope 3 imports: zope.app.intid, zope.app.keyreference,
+ zope.app.session, zope.contentprovider, zope.viewlet
+
+ Other
+
+ - AccessControl.User: Use a better __repr__.
+
+ - ZSQLMethod.manage_main: Moved the error message that warns of a
+ non-existing or closed database connection next to the Connection ID
+ dropdown and present it using red to increase its visibility.
+
+ - The ImageFile module has finally been deprecated for good and
+ will be removed in Zope 2.11. Use App.ImageFile instead.
+
+ after Zope 2.8.1
+
+ - The '@' character is now allowed in object ids (RFC 1738 allows it).
+
+ Bugs Fixed
+
+ - If a content object implemented any in-place numeric operators,
+ untrusted code could call them, thus modifying the content.
+
+ - If Python 2.4 is used, despite the fact that Python 2.4 is
+ unsupported, untrusted code could use generator expressions to
+ gain access to container items.
+
+ - Collector #1895: testrunner: omitting the 'var' from recursive
+ directory walking
+
+ - OFS.Image.manage_FTPget() would str() it's .data attribute,
+ potentially loading the whole file in memory as a
+ string. Changed to use RESPONSE.write() iterating through the
+ Pdata chain, just like index_html().
+
+ - Collector #1863: Prevent possibly sensitive information to leak via
+ the TransientObject's __repr__ method.
+
+ - Repaired 'handle_errors' usage for doctests, along with the
+ supporting 'debug' argument passed to
+ 'ZPublisher.Test.publish_module'.
+
+ - Collector #1879: applied patch by Dieter Maurer to fix a bug in
+ ac_aquire() ignoring the default argument
+
+ - Collector #1864, #1906: fixed header normalization in appendHeader()
+
+ - Collector #1899: fixed migration issue when using export/import for
+ ZCatalog instances
+
+ - Collector #1871: Applied patch to support lists with records using
+ ZTUtils.make_query()
+
+ - AccessControl: creating a new user through "zpasswd inituser" did not
+ work properly with a top-level user folder with enabled password
+ encryption.
+
+ - ZCatalog: refreshCatalog() could not be called safely from a ZEO
+ client script
+
+ - Catalog.clear(): fixed handling of _length attribute (caused import
+ problems for some .zexp files e.g. Squishdot instances)
+
+ - DateIndex now properly removes documents from both indexes if
+ the value is None
+
+ - Collector #1888: Some parts of the TALInterpreter would not pass a
+ default when translating, yet expect a string back. This would cause
+ an error (usually "NoneType has no attribute 'replace'") in the case
+ the message was not translated.
+
+ Zope 2.8.1 (2005/08/11)
+
+ Features added
+
+ - Interface: Added Z3 -> Z2 bridge utilities.
+ This allows to migrate interfaces to Zope 3 style interfaces and
+ bridge them back to oldstyle interfaces for backwards compatibility.
+
+ Bugs Fixed
+
+ - Zope2.Startup.zopectl: fork before execv when running unit tests
+ (don't exit the shell, if run from there).
+
+ - TAL: MassageIDs are now handled the same way as in zope.tal.
+
+ - DocumentTemplate: ustr no longer mangles MassageIDs.
+ Custom string types are now returned unchanged.
+
+ - As developed in a long thread starting at
+ http://mail.zope.org/pipermail/zope/2005-July/160433.html
+ there appears to be a race bug in the Microsoft Windows socket
+ implementation, rarely visible in ZEO and/or in
+ ZServer/medusa/thread/select_trigger.py when multiple processes try
+ to create an "asyncore trigger" simultaneously, most often (in
+ stress tests) manifesting as a hung process. Windows-specific
+ trigger code in both changed to work around this bug when it occurs.
+
+ - Collector #1807: fixed memory leak in cAccessControl.guarded_getattr()
+
+
+ Zope 2.8.1 b1 (2005/07/28)
+
+ Features Added
+
+ - PluginIndexes, ZCTextIndex and ZCatalog: Added some z3 interfaces.
+
+ - Verbose security exception reporting has been folded into Zope,
+ removing the need for the VerboseSecurity product. See the
+ documentation for the "verbose-security" option in zope.conf.
+
+ - "TemporaryStorage" (the storage that is used mainly to back the
+ default sessioning database) is now MVCC capable, which essentially
+ means that its usage will no longer generate ZODB ReadConflictErrors.
+
+ Bugs Fixed
+
+ - Collector #1852: fixed wrong URL construction in webdav.davcmds
+
+ - Collector #1844: fixed whitespace handling in the ZMI "Find" tab
+
+ - Collector #1813: removed spurious inclusion of CMFBTreeFolder.
+ in Products/BTreeFolder2 (CMFCore will include it after 1.5, with
+ an appropriate module alias for backward compatibility).
+
+ - Replaced all transaction.commit(1) calls by transaction.savepoint()
+
+ - Collector #1832: UnIndex swallowed ConflictErrors.
+
+ - Collector #1815: ZCTextIndex accepts (again) sequences of strings to
+ be indexed.
+
+ - Collector #1812: Fixed key error in ZSQL ZMI/Test
+
+ - Fixed CMFBTreeFolder for CMF 1.5+
+
+ - WebDAV COPY and MOVE did not call '_notifyOfCopyTo' and '_postCopy'
+ hooks like it was done in OFS.CopySupport. Additionally added
+ 'manage_changeOwnershipType' to make MOVE behave even closer to
+ OFS.CopySupport.
+
+ - Collector #1548: Fix 'httplib' usage in ZPublisher.Client.
+
+ - Collector #1808: manage_convertIndexes no longer tries to change the
+ index types causing some trouble with CMF.
+
+ - manage_convertIndexes did not treat DateRangeIndexes and PathIndexes
+ properly.
+
+ - Updated Zope X3 to bugfix release 3.0.1
+
+ - Updated Five to bugfix release 1.0.2 (see Products/Five/CHANGES.txt)
+
+ Zope 2.8.0 (2005/06/11)
+
+ Bugs Fixed
+
+ - Collector #1792: applied patch for broken ZClasses
+
+ - doc/FAQ.txt updated: should bear some resemblance to reality now.
+ (PCGI stuff removed; error information updated; PID information
+ updated; upgrade procedure added; some common version questions added.)
+
+ - Collector #1770: Fixed RestructuredText subtitle
+
+ - Collector #1803: Fixed InitializeClass for some corner case.
+
+ - Collector #1798, issue 1: ZopeTestCase no longer tries to
+ install products that were installed by Zope during startup.
+
+ - Collector #1799: Avoid lying about parent's refcount when
+ calling back into Python code.
+
+ - Collector #889: made 'and' operator for KeywordIndexes actually
+ restrict results as expected (thanks to 'aroda' for the patch!).
+
+ - Collector #1323: applied patch to fix umask problem in zdctl
+
+ - Updated Five to bugfix release 1.0.1 (see Products/Five/CHANGES.txt)
+
+ Zope 2.8.0 b2 (2005/05/22)
+
+ Features added
+
+ - Made WebDAV server distinguishable from the default HTTP
+ server both in the ZMI and in event.log.
+
+ - Included BTreeFolder2
+
+ Bugs fixed
+
+ - Collector #1507/1728: Server addresses are now handled the same way on
+ all platforms. This fixes the default binding on Windows.
+
+ - Collector #1781: made 'create_mount_points' ZConfig option actually
+ work (thanks to Dieter Maurer for the patch).
+
+ - Collector #1780: DateTime.strftime() now handles dates <= 1900 or
+ >= 2038
+
+ - Collector #1775: turning off debug mode by default
+
+ - Collector #1784: fixed handling of multiple attributes in ZCTextIndex
+
+ - Don't copy '.svn' directories from skeleton into an instance
+ (thanks to Dale Hirt for the patch).
+
+ - Collector #1776: Improved setup.py.
+ The Finder class is now used for the complete lib/python tree and has
+ a blacklist instead of a whitelist for file extensions. So there
+ should no longer be a need to update setup.py if modules or files are
+ added or removed in lib/python.
+
+ - Collector #1751: Improved error reporting reporting during the
+ startup phase
+
+ - Collector #1745: Fixed ZSQL error KeyError 'query'
+
+ - Collector #1735: fixed UnicodeDecodeError in Loader.py
+
+ Zope 2.8b1 (2005/04/24)
+
+ Features added
+
+ - Added lazy: TAL expression and fixed defer: expression for python
+ expression
+
+ - ZCatalog.CatalogBrains: An _unrestrictedGetObject method has
+ been added.
+
+ - ZODB transactions now support savepoints. See
+ transaction/savepoint.txt. These will replace
+ subtransactions.
+
+ Bugs fixed
+
+ - Collector #1754: Fixed import of 'transaction' in
+ 'zopectl adduser' (which wasy dying with a NameError).
+
+ - Collector #1750: StructuredText: fixed handling of image URLs
+ with query string
+
+ - Collector #1748: Fixed SIGSEGV in Acquisition
+
+ - Hotfix_20050405: classes defined in untrusted code could shadow
+ the roles of methods defined as protected by their bases.
+
+ - Collector #1656: Fixed enumeration within untrusted code
+ (forward-port from 2.7 branch).
+
+ - Collector #1721: Fixed handling of an empty indexed_attrs parameter
+
+
+ Zope 2.8a2 (2005/04/02)
+
+ Features added
+
+ - ZCatalog.CatalogBrains: 'getObject' now raises errors, rather than
+ returning None, in cases where the path points either to a nonexistent
+ object (in which case it raises NotFound) or to one which the user
+ cannot access (raising Unauthorized). Sites which rely on the old
+ behavior can restore setting a new zope.conf option,
+ 'catalog-getObject-raises', to "off".
+
+ This compatibility option will be removed in Zope 2.10.
+
+ - PluginIndexes: the ZCatalog's "Indexes" tab now show the number of
+ distinct values indexed by each index instead of a mixture of indexed
+ objects versus number of distinct values. Indexes derived from UnIndex
+ show both values within their own ZMI screen. In addition most indexes
+ have now a "Browse" tab to browse through the list of indexed
+ values and their occurrences.
+
+ - FTPServer: a RNFR (rename from) request is now being responded
+ with a 550 error code if the source file does not exist
+
+ - Fixed ObjectManager to not swallow exceptions during object
+ deletion (in debug mode and if the user is not Manager). This
+ allows for better debugging, while still keeping the possibility
+ for a Manager to delete buggy objects.
+
+ - Added a ZConfig directive 'large-file-threshold' to control
+ the request content-size threshold at which a temporary file
+ gets created. Use the same value for deciding between reading
+ the whole request in memory or just a chunk inside
+ webdav.NullResource.PUT().
+
+ - RAMCacheManager: Allow invalidation of a cache entry from the
+ Statistics view in the ZMI
+
+ - Collector #1454/OFS.File: Accept content types ending with
+ "javascript" as editable through the File edit form, just like
+ text/<foo> types
+
+ - Zope X3 3.0.0's 'src/zope' package is included now.
+
+ - Five (Zope 3 integration technology for Zope 2) is included
+ now in Products/Five.
+
+ Bugs fixed
+
+ - Collector #1460: guarded_apply was too restrictive.
+
+ - OFS.Traversable still used a string 'NotFound' exception.
+
+ - ZPublisher would fail to recognize a XML-RPC request if the
+ content-type header included a 'charset' parameter.
+
+ - Forward-ported 'aq_acquire'-related fix and associated tests
+ from Zope 2.7.4.
+
+ - Collector #1730: XML page templates couldn't call aq_parent in
+ path expressions.
+
+ - Fixed brain.getObject() to correctly traverse to an object even
+ if one of its parents is not accessible, to be close to what the
+ Publisher does.
+
+ - Forward ported fix for OFS.CopySupport tests which corrected
+ signature of a faux security policy's 'validate' method.
+
+ - 'setup.py' did not install the 'Zope' compatibility module
+ (the old 'Zope' package has been renamed to 'Zope2').
+
+ - Fixed Shared.DC.ZRDB.Results to behave with the new-style
+ ExtensionClass. Added a test.
+
+ - 'setup.py' did not install the new 'Zope' compatibility module
+ (the 'Zope' package has been renamedd to 'Zope2').
+
+ - Collector #1507: Zope now binds again to all available IP addresses if
+ ip-address is unset
+
+ - Use 'del' instead of 'list.remove()' in
+ Catalog.delColumn(). There can be only one column with the
+ same name, and it could potentially break catalog metadata as
+ remove() may remove more than one element from the list if
+ they have the same value. Also, we already have the list index
+ we are interested in deleting so it doesn't make sense to look
+ up the value and call 'list.remove()' on it.
+
+ - Collector #1628: FTP server has been broken (directory
+ listings did not work)
+
+ - Collector #1705: CopySource._postCopy is never called
+
+ - Collector #1617: Fixed crash in ZPT code (caused by improper
+ checks in cAccessControl)
+
+ - Collector #1683: fixing batching in the DA "Test" tab
+
+ - Collector #1648: Fix bug in Medusa FTP
+
+ - Collector #1667: allow 'max-number-of-session-objects 0' to have
+ the same effect as setting the value via the web interface (i.e.,
+ make the number of session objects unlimited, rather than falling
+ back to the default).
+
+ - Collector: #1651: removed compiler warning
+
+ - Collector #1661: make 'python-check-interval' setting in zope.conf
+ actually work as documented. This setting allows for important
+ tuning opportunities for production Zope servers.
+
+ - Collector #1657: Don't break host-based virtual hosting when
+ purging an HTTP accelerator.
+
+ - DTML Methods were not interoperable with the new filestream_iterator
+ and caches based on it (FileCacheManager).
+
+ - Collector #1655: fixed severe memory leak in TemporaryStorage
+
+ - Collector #1407: fixed XML escaping problem introduced in 2.7.4 b1
+
+ - Collector #1151: HTTP compression was broken on error pages
+
+ - The REQUEST now contains a new entry ACTUAL_URL which contains the
+ full URL without query string as it appears within the location bar of
+ the browser. The key has been added to provide a single key that is
+ available for vhosted and non-vhosted installations.
+
+ - Collector #1605: VHM did not quote URLs
+
+ - webdav.Resource: during COPY, manage_afterClone was called way
+ too early, thus the object wasn't bound to the database and
+ couldn't find a context. Changed to behave the same way as
+ CopySupport.
+
+ - RAMCacheManager: opimized performance by using cPickle instead
+ of pickle and by using the highest pickle protocol available
+ instead of using ASCII pickles (patch by Dieter Maurer)
+
+ - Collector #631: Image URLs in StructuredText containing port
+ numbers were not rendered correctly
+
+ - Collector #1498: Don't choke on malformed cookies. Cookies of
+ the form "foo=bar; hmm; baz=gee" will give an empty value for
+ 'hmm' instead of silently discarding it and the rest of the
+ string. (Thanks to 'sirilyan' for the patch.)
+
+ - bin/zopectl test now uses os.execv, instead os os.system,
+ so that options with characters that needs shell quoting
+ doesn't break the command.
+
+ - Collector #1219: Make XML export sane again.
+
+ - Collector #945: Allow adding empty PythonScript instances
+ programmatically.
+
+ - Updated doc/UNITTEST.txt and lib/python/Testing/README.txt to
+ reflect progress made since UNITTEST.txt was originally written.
+
+ - Removed Version objects from the add menu. Versions are agreed to be a
+ feature that should not be used as it is not well implemented and
+ allows for data loss.
+
+ - Collector #1510: Allow encoding of application/xhtml+xml pages
+ according to the charset specified in the Content-Type header
+ (thanks to Jacek Konieczny for the patch).
+
+ - Collector #1599: made sqltest work with unicode strings (thanks
+ to Peter Sabaini for the patch).
+
+ - zopectl: fixed handling of child processes (patch by Dieter Maurer)
+
+ - Collector #1593: fixed dumb _get_id() implementation in
+ OFS.CopySupport that produced copy_of_copy_of....files (thanks
+ to Alexandre Boeglin for the patch).
+
+ - Collector #1450: files in utilities/ZODBTools are now installed
+ during the installation process in the 'bin' directory
+
+ - Collector #1003: added new 'http-header-max-length' directive
+ to zope.conf to specific the maximum length of a HTTP request
+ header before it is considered as a possible DoS attack and
+ discarded.
+
+ - Collector #1371: added new 'cgi-maxlen' directive to zope.conf
+ to limit the amount of form data being processed by Zope
+ to prevent DoS attacks
+
+ - Collector #1407: changed WebDAV display name for objects
+ to title_or_id()
+
+ - the 'trusted-proxy' directive in zope.conf now also accepts
+ hostnames instead of IP addresses only (patch by Dieter Maurer)
+
+ - Fixed test.py to not over-resolve symbolic links. Needed to run
+ tests when the Products directory and a product are symlinks.
+
+ - Collector #1583/ZReST: Fixed handling of the title attribute
+ for non-ascii characters.
+
+ - Collector #1577: Fixed cryptic error message in ZPublisher if a
+ non-ASCII string is passed to a date, int, long or float property.
+
+ - Collector #1576: Fixed Z Search Interface to use proper HTML.
+
+ - Collector #1127: strftime did not take timezone into account.
+
+ - Collector #1569/DateTime: Added a new ISO8601-method that will
+ return correctly formatted ISO 8601-representations to augment
+ the ISO method which isn't compliant with ISO 8601.
+
+ - ZPublisher: changed some hardcoded 'latin1' arguments to 'iso-8859-15'
+ since latin1 is obsolete.
+
+ - Collector #1566: Installation of Zope on some older Solaris versions
+ could fail due to a broken "echo" implementation causing the
+ creation of a borked version.txt file.
+
+ - Collector #934: Image and File objects are now always internally
+ split into small chunks even when initialized from a string.
+
+ - docutils: updated to V 0.3.5. The Zope core now contains a full copy of
+ the docutils package except some GPLed files which can not be included
+ with the Zope distribution due to license constraints on svn.zope.org.
+
+ - docutils: moved from lib/python/docutils to
+ lib/python/third_party/docutils
+
+ - Collector #1557/OFS.Image: Introducing new 'alt' property. The 'alt'
+ attribute is no longer taken from the 'title' property but from the new
+ 'alt' property. The border="0" attribute is no longer part of the HTML
+ output except specified otherwise.
+
+ - Set a default value of '' for the new 'alt' property as not to
+ break existing content.
+
+ - Collector #1511: made IPCServer show up in the Control Panel under
+ "Network Services"
+
+ - Collector #1443: Applied patch by Simon Eisenmann that reimplements
+ the XML parser used in WebDAV fixing a memory leak.
+
+ - Always unescape element contents on webdav.xmltools
+
+ - Use saxutils to escape/unescape values for/from
+ PROPFIND/PROPPATCH.
+
+ - Make OFS.PropertySheet use the escaping function from
+ webdav.xmltools.
+
+ - Escape/unescape " and '
+
+ - Don't escape properties stored as XML (ie: having a
+ __xml_attrs__ metadata set by PROPPATCH) when building a
+ PROPFIND response.
+
+ - If a PROPPATCH element value contains only a CDATA section,
+ store the CDATA contents only.
+
+ - Catch AttributeErrors and KeyErrors raised from
+ __bobo_traverse__ and convert them to NotFound. In debug mode
+ a more verbose error message is issued, the same way it's done
+ on attribute/item traversal.
+
+ - Collector #1523: replace the text field for importing .zexp/.xml
+ files with a selection list
+
+ - Stitch newly-created object into it's container *before*
+ calling it's PUT() method. This fixes an issue with
+ OFS.File/OFS.Image that would result into reading the whole
+ file in memory and wrapping it into a *single* Pdata object.
+
+ - Import ZServer.CONNECTION_LIMIT variable *inside* the method
+ that uses it. Before this, the variable was imported at the
+ module level, thus binding it too early which would cause the
+ ZConfig handler to have no real effect.
+
+ Zope 2.8a1 (2004/10/17)
+
+ Features added
+
+ - Included Stefan Holek's ZopeTestCase 0.9
+
+ - The SiteErrorLog allows you to acknowledge (or delete) exceptions,
+ so you can reduce or clear the list without restarting your
+ Zope server. Additionally the SiteErrorLog is covered by unit tests
+ now.
+
+ - Unit tests added for the SiteErrorLog.
+
+ - UI improvement for the ZCatalog. The "catalog contents" allow
+ you to filter the cataloged objects by path now.
+
+ - Made test.py follow symbolic links on POSIX systems.
+
+ - added utilities/reindex_catalog.py to perform ZCatalog maintenance
+ operations from the command line (through zopectl)
+
+ - RESPONSE.setBody and RESPONSE.setStatus now accept lock
+ parameters in the same way as RESPONSE.redirect. These prevent
+ further calls to the methods from overwriting the previous value.
+ This is useful when writing http proxies.
+
+ - DateTime: new DateTime instance can be constructed from a given
+ DateTime instance: d_new = DateTime(d_old)
+
+ - The DateTime parser now throws a SyntaxError upon any parsing errors.
+
+ - ZCatalog: added a new configuration option in the "Advanced" tab
+ to provide optional logging of the progress of long running
+ reindexing or recataloging operations.
+
+ - made Zope.configure return the starter instance to enable other
+ methods to be called, such as starter.setupConfiguredLoggers()
+
+ - Improved Unicode handling in Page Templates. Template contents
+ and title will now be saved as a Unicode string if
+ the management_page_charset variable can be acquired and is true.
+ The character set of an uploaded file can now be specified.
+
+ - zopectl now accepts the -m argument to set a umask for files created
+ by the managed process (e.g. -m 002 or --umask 002).
+
+ - AccessControl/permission_settings() now has a new optional parameter
+ 'permission' to retrieve the permission settings for a particular
+ permission.
+
+ - The obsolete 'SearchIndex' package has been removed
+
+ - Traversal now supports a "post traversal hook" that get's run
+ after traversal finished and the security context is established.
+
+ - Using "_usage" parameters in a ZCatalog query is deprecated and
+ logged as DeprecationWarning.
+
+ - MailHost now has two additional properties, a user id and a
+ password. These are used to attempt ESMTP authentication
+ before sending a mail.
+
+ - Folder listings in FTP now include "." as well as "..".
+
+ - When a VHM is activated, it adds the mapping
+ 'VIRTUAL_URL_PARTS': (SERVER_URL, BASEPATH1, virtual_url_path)
+ to the request's 'other' dictionary. If BASEPATH1 is empty, it
+ is omitted from the tuple. The joined parts are also added
+ under the key 'VIRTUAL_URL'. Since the parts are evaluated
+ before traversal continues, they will not reflect modifications
+ to the path during traversal or by the addition of a default
+ method such as 'index_html'.
+
+ - Extension Classes, a key Zope foundation, have been totally
+ rewritten based on Python new-style classes.
+
+ This change provides a number of advantages:
+
+ o Use of new-style class features (e.g. slots, descriptors,
+ etc.) in Zope objects. Support for object protocols (special
+ __ methods) added since Python 1.4.
+
+ o Support for cyclic garbage collection.
+
+ o Ability to use new-style classes as base classes of Zope objects.
+
+ o Pave the way for sharing code between Zope 2 and Zope 3.
+
+ Note -- Extension classes with __of__ methods are made into
+ Python read descriptors.
+
+ If an extension classes is used to implement a descriptor,
+ indirectly by implementing __of__ or directly by implementing
+ __get__, the behavior of the descriptor will differ from
+ ordinary descriptors in an important way. The descriptors
+ __get__ method will be called *even if* the descriptor is
+ stored on an instance of an extension class. Normally
+ descritor __get__ methods are called only of the descriptor
+ is stored in a class.
+
+ - ZODB 3.3
+
+ This is the first version of ZODB that does not require
+ ExtensionClass.
+
+ - Add 'parity' method to ZTUtils Iterators.
+
+ - Allow untrusted code to mutate ZPublisher record objects.
+
+ - Added a "mime-types" configuration value which names a file
+ giving additional MIME type to filename extension mappings.
+ The "mime-types" setting may be given more than once in the
+ configuration file; the files have the same format at the
+ mime.types file distributed with Apache.
+
+ - Changed the ZEO server and control process to work with a
+ single configuration file; this is now the default way to
+ configure these processes. (It's still possible to use
+ separate configuration files.) The ZEO configuration file can
+ now include a "runner" section used by the control process and
+ ignored by the ZEO server process itself. If present, the
+ control process can use the same configuration file.
+
+ - ZConfig was updated to version 2.0. The new version includes
+ two new ways to perform schema extension; of particular
+ interest in Zope is the ability for a configuration file to
+ "import" new schema components to allow 3rd-party components
+ (such as storages, databases, or logging handlers) to be used.
+
+ - The testrunner.py script has been replaced with test.py which
+ is now installed into the 'bin' folder.
+
+ Bugs fixed
+
+ - Removed Python 2.3.3 as valid option. ZODB 3.3 requires Python
+ 2.3.4 or later.
+
+ - Collector #1332: Added in-place migration of the Catalog.__len__
+ attribute to avoid new-style class caching problems. Instances of
+ ZCatalog or instances of classes with ZCatalog as base class will be
+ migrated automatically. Instances of Catalog or classes with Catalog
+ as base class must be migrated manually by calling the migrate__len__()
+ method on the every instance. In addition old BTree migration code
+ (for pre-Zope 2.5 instances) has been removed. If you want to migrate
+ from such an old version to Zope 2.8, you need to clear and reindex
+ your ZCatalog).
+
+ - Collector #1595: same as in Collector #1132 for indexes derived from
+ UnIndex. Exisiting ZCatalog instances must be converted manually
+ by calling the "manage_convertIndexes" method through-the-web for
+ every single ZCatalog instance. See also doc/FAQ.txt (Installation,
+ question #4)
+
+ - Collector #1457: ZCTextIndex's QueryError and ParseError
+ are now available for import from untrusted code.
+
+ - Collector #1473: zpasswd.py can now accept --username
+ without --password
+
+ - Collector #1491: talgettext.py did not create a proper header
+ for the generated .pot file if multiple pagetemplate files
+ were processed.
+
+ - Collector #1477: TaintedString.strip() now implements the
+ same signature as str.strip()
+
+ - TAL: tal:on-error does not trap ConflictError anymore.
+
+ - OFS.CopySupport: Enforced "Delete objects" permission during
+ move (CMF Collector #259).
+
+ - Removed DWIM'y attempt to filter acquired-but-not-aceessible
+ results from 'guarded_getattr'.
+
+ - Collector #1267: applied patch to fix segmentation faults on
+ x86_64 systems
+
+ - ZReST: the charset used in the rendered HTML was not set to the
+ corresponding output_encoding property of the ZReST instance. In addition
+ changing the encodings through the Properties tab did not re-render
+ the HTML.
+
+ - Collector #1234: an exception triple passed to LOG() was not
+ propagated properly to the logging module of Python
+
+ - Collector #1441: Removed headers introduced to make Microsoft
+ webfolders and office apps happy, since they make a lot of
+ standards-compliant things unhappy AND they trick MS Office
+ into trying to edit office files stored in Zope via WebDAV even
+ when the user isn't allowed to edit them and is only trying to
+ download them.
+
+ - Collector #1445: Fixed bad interaction between -p and -v(v)
+ options to test.py that resulted in exceptions being printed
+ when they shouldn't have been.
+
+ - Collector #729: manage_main doesn't display the correct page title
+ most of the time. It is not completely fixed but using title_or_id
+ makes folders display the correct id as a fallback.
+
+ - Collector #1370: Fixed html generated by Z Search interface.
+
+ - Collector #1295: Fixed minor niglet with the Elvis tutorial.
+
+ - added "version.txt" to setup.py to avoid untrue "unreleased version"
+ messages within the control panel
+
+ - Collector #1436: applied patch to fix a memory leak in
+ cAccessControl.
+
+ - Collector #1431: fixed NetBSD support in initgroups.c
+
+ - Collector #1406: fixed segmentation fault by acquisition
+
+ - Collector #1392: ExternalMethod ignored management_page_charset
+
+ - unrestrictedTraverse() refactored to remove hasattr calls (which mask
+ conflict errors) and for greater readability and maintainability.
+
+ - Zope can now be embedded in C/C++ without exceptions being raised
+ in zdoptions.
+
+ - Collector #1213: Fixed wrong labels of cache parameters
+
+ - Collector #1265: Fixed handling of orphans in ZTUtil.Batch
+
+ - Collector #1293: missing 'address' parameters within one of the server
+ sections raise an exception.
+
+ - Collector #1345: AcceleratedHTTPCacheManager now sends the
+ Last-Modified header.
+
+ - Collector #1126: ZPublisher.Converters.field2lines now using
+ splitlines() instead of split('\n').
+
+ - Collector #1322: fixed HTML quoting problem with ZSQL methods
+ in DA.py
+
+ - Collector #1124: The ZReST product now uses the same reST encoding
+ parameters from zope.conf as the low-level reStructuredText
+ implementation.
+
+ - Collector #1259: removed the "uninstall" target from the Makefile
+ since the uninstall routine could also remove non-Zope files. Because
+ this was to dangerous it has been removed completely.
+
+ - Collector #1299: Fixed bug in sequence.sort()
+
+ - Collector #1159: Added test for __MACH__ to initgroups.c so the
+ initgroups method becomes available on Mac OS X.
+
+ - Collector #1004: text,token properties were missing in
+ PropertyManager management page.
+
+ - Display index name on error message when index can't be used as
+ 'sort_on'.
+
+ - PUT would fail if the created object had a __len__ = 0 (eg:
+ BTreeFolder2) and fallback to _default_put_factory. Fix by
+ checking if the returned object is None instead.
+
+ - Collector #1160: HTTPResponse.expireCookie() potentially didn't
+ when an 'expires' keyword argument was passed.
+
+ - Collector #1289: Allow ZSQL methods to be edited via WebDAV.
+
+ - WebDAV property values were not being properly escaped on
+ 'propstat'.
+
+ - WebDAV 'supportedlock' was not checking if the object did
+ implement the WriteLockInterface before returning it's
+ value.
+
+ - reStructuredText ignored the encoding settings in zope.conf
+
+ - ObjectManager no longer raises string exceptions
+
+ - Collector #1260: Testing/__init__.py no longer changes the
+ INSTANCE_HOME.
+
+ - App.config.setConfiguration() did not update the legacy source
+ for debug_mode, Globals.DevelopmentMode.
+
+ - Script (Python) objects now have a _filepath attribute, also
+ used as the '__file__' global at runtime. This prevents an
+ import problem caused by the fix to #1074.
+
+ - Minor usability tweaks:
+
+ * Increased FindSupport meta type selection widgets
+ height to 8 lines
+
+ - The DateTime module did not recognize the settings for
+ "datetime-format".
+
+ - Stop testrunner.py from recursing into the 'build-base' directory
+ created by setup.py.
+
+ - Collector #1074: Change Scripts' __name__ to None
+
+ - Range searches with KeywordIndexes did not work with record-style
+ query parameters
+
+ - Item_w__name__ now has a working getId() method
+
+ - PageTemplateFile now using Item_w__name__ mixin, fixing
+ its getId() and absolute_url() methods.
+
+ - Only one VirtualHostMonster is allowed per container.
+
+ - Collector #1133: TreeTag choked on Ids of type long.
+
+ - Collector #1012: A carefully crafted compressed tree state
+ could violate size limit. Limit is no longer hardcoded.
+
+ - Collector #1139: tal:attributes didn't escape double quotes.
+
+ - Management interface of TopicIndexes has been completely broken
+
+ - Collector #1129: Improper parsing of ISO8601 in DateTime.
+
+ - Removed pervasive use of string exceptions (some may still be
+ hiding in the woodwork, but all raise's with string literals are
+ gone).
+
+ - AccessControl.User used a misleading string exeception,
+ 'NotImplemented', which shadowed the Python builtin.
+
+ - Collector #426: Inconsistent, undocumented error() method.
+
+ - Collector #799: Eliminate improper uses of SCRIPT_NAME.
+
+ - Collector #445: Add internal global declaration for Script bindings.
+
+ - Collector #616: Make CONTEXTS available to TALES Python expressions.
+
+ - Collector #1074: Give Script execution context a __name__
+
+ - Collector #1095: Allow TAL paths starting with '/varname' as a
+ preferred spelling for 'CONTEXTS/varname'.
+
+ - Collector #391: Cut and paste now requires delete permissions.
+
+ - Collector #331: Referenses to URL in manage_tabs was changed
+ to REQUEST.URL to prevent accidental overriding.
+
+ - Made the control panel properly reflect the cache-size setting
+ of ZODB's object cache once again.
+
+ - ConflictError was swallowed in ObjectManager by
+ manage_beforeDelete and _delObject. This could break code
+ expecting to do cleanups before deletion.
+
+ - Python 2.3 BooleanType wasn't handled properly by ZTUtils
+ marshalling and ZPublisher's converters.
+
+ - Collector #1065: bin/ scripts didn't export HOME envars.
+
+ - Collector #572: WebDAV GET protected by 'FTP Access' permission.
+ Two new methods have been added to WebDAV resources, "manage_DAVget"
+ and "listDAVObjects". These are now used by WebDAV instead of the
+ earlier "manage_FTPget" and "objectValues". This separates the
+ permissions, and allows WebDAV specific overriding of these methods.
+
+ - Collector #904: Platform specific signals in zdaemon/Daemon.py
+ (fixed by removing the "fossil" module from 2.7 branch and head).
+
+ - Workaround for Collector #1081: The 'title' property for objects
+ derived from OFS.Folder or PropertyManager can now be
+ removed and replaced with a ustring property. This allows the usage
+ of non-ISO-8859-1 or ASCII charsets
+
+ - Collector #951: DateTime(None) is now equal to DateTime()
+
+ - Collector #1056: aq_acquire() ignored the default argument
+
+ - Collector #1087: ZPT: "repeat/item/length" did not work as documented
+ in the Zope Book.
+
+ - Collector #721: Entities in tal:attribute values weren't
+ properly escaped.
+
+ - Collector #851: Traversable.py: A bare try..except shadowed
+ conflict errors
+
+ - Collector #1058: Several fixes for PropertySheets when used
+ outside ZClasses
+
+ - Collector #1053: parseIndexRequest turned empty sequence of search
+ terms into unrestricted search.
+
+ - manage_tabs had a namespace problem with the acquisition of names from
+ the manage_options variable resulting to acquire "target" and "action"
+ from objects above in the hierachy.
+
+ - PathIndex and TopicIndex are now using a counter for the number
+ of indexed objects instead of using a very expensive calculation
+ based on the keys of their indexes.
+
+ - Collector #1039: Whitespace problem in Z2.log fixed
+
+ - changed some bare try: except:'s in Shared.DC.ZRDB.Connection
+ so that they now log exceptions that occur.
+
+ - ObjectManager will now attempt to set Owner local role keyed
+ to the user's id, rather than username.
Modified: Zope/trunk/inst/Makefile.in
===================================================================
--- Zope/trunk/inst/Makefile.in 2006-07-06 04:04:47 UTC (rev 69000)
+++ Zope/trunk/inst/Makefile.in 2006-07-06 04:15:00 UTC (rev 69001)
@@ -10,14 +10,17 @@
PACKAGE_NAME=${NAME}-${MAJOR_VERSION}.${MINOR_VERSION}-${RELEASE_TAG}
PYTHON="<<PYTHON>>"
-ZPKG=zpkg
TMPDIR=/tmp
PREFIX=<<PREFIX>>
BASE_DIR=<<BASE_DIR>>
+BUILD_BASE=<<BUILD_BASE>>
DISTUTILS_OPTS=<<DISTUTILS_OPTS>>
INSTALL_FLAGS=<<INSTALL_FLAGS>>
TESTOPTS=-v
-BUILD_FLAGS=-i
+BUILD_FLAGS=--build-base="${BUILD_BASE}" \
+ --build-lib="${BUILD_BASE}/build-lib" \
+ --build-scripts="${BUILD_BASE}/build-scripts"\
+ --build-temp="${BUILD_BASE}/build-temp"
RM=rm -f
RMRF=rm -rf
@@ -29,7 +32,7 @@
TAR=tar
MKDIR=mkdir -p
-.PHONY : clean install instance untestinst testinst build
+.PHONY : clean install instance untestinst testinst build unbuild
.PHONY : default
# default: The default step (invoked when make is called without a target)
@@ -39,23 +42,38 @@
@echo to run a Zope instance directly from the build directory\).
@echo
-# build:
+# build: Do whatever 'setup.py build' implies
build:
${PYTHON} "${BASE_DIR}/setup.py" \
- ${DISTUTILS_OPTS} build_ext ${BUILD_FLAGS}
+ ${DISTUTILS_OPTS} build ${BUILD_FLAGS}
+# unbuild: Remove the build directory (undo the make build step)
+unbuild:
+ ${RMRF} ${BUILD_BASE}
+
# install: Install a software home.
-install: version_txt
- ${PYTHON} "${BASE_DIR}/setup.py" ${DISTUTILS_OPTS} \
- build_ext ${BUILD_FLAGS} \
- install --home="${PREFIX}" ${INSTALL_FLAGS}
+install: build version_txt
+ ${PYTHON} "${BASE_DIR}/setup.py" ${DISTUTILS_OPTS} install \
+ --home="${PREFIX}" ${BUILD_FLAGS} ${INSTALL_FLAGS}
[ -f ${PREFIX}/bin/python ] || ${LN} ${PYTHON} ${PREFIX}/bin/python
@echo
@echo Zope binaries installed successfully.
@echo Now run \'${PREFIX}/bin/mkzopeinstance.py\'
-# inplace: Do an in-place build
-inplace: build
+# inplace: Install a software home into to the source directory.
+#
+# Note: We used to run 'build_ext -i' for 'inplace', but that was
+# suboptimal because it had a tendency to try to rebuild all of the
+# (possibly already-built) extensions that might be built during a
+# previous 'make' step. built_ext doesn't understand '--build-base'
+# and friends so we can't stop it from doing this easily. So instead,
+# we rely on the stock install step and name the prefix as the current
+# directory. This is a little less efficient than just building the
+# extensions because it also compiles bytecode, but it's more intuitive and
+# less expensive in the common case than letting distutils
+# potentially rebuild the binaries when we've done that already.
+inplace: PREFIX=${BASE_DIR}
+inplace: install
# test: Do an inplace build and run the Zope test suite.
test: inplace
@@ -83,7 +101,7 @@
# clean: Delete the build files and any binaries/bytecode files in
# the source directory for good measure.
-clean:
+clean: unbuild
${FIND} "${BASE_DIR}" \
-name '*.py[co]' -o -name '*.so' -o -name '*.o' | ${XARGS} ${RM}
${RMRF} build
@@ -93,10 +111,22 @@
printf "Zope ${MAJOR_VERSION}.${MINOR_VERSION}-${RELEASE_TAG}" >\
"${BASE_DIR}/lib/python/version.txt"
-# Building a source distribution requires that zpkg be available:
-sdist:
- ${ZPKG} -C ${BASE_DIR}/releases/Zope2.cfg -r ${MAJOR_VERSION}.${MINOR_VERSION}${RELEASE_TAG}
+sdist: clobber sdist_tgz
+# sdist_tgz: Create a tgz archive file as a source distribution.
+#
+sdist_tgz: version_txt
+ ${MKDIR} ${TMPDIR}
+ ${CD} ${TMPDIR} && ${LN} ${BASE_DIR} ${PACKAGE_NAME} && \
+ ${TAR} czfh ${BASE_DIR}/${PACKAGE_NAME}.tgz \
+ --exclude=${PACKAGE_NAME}.tgz\
+ --exclude=.svn\
+ --exclude=makefile \
+ --exclude=build-base \
+ --exclude=*~ \
+ --exclude=.#* ${PACKAGE_NAME}
+ ${RMRF} ${TMPDIR}/${PACKAGE_NAME}
+
# clobber: Make the source tree 'pristine' again.
clobber: clean uninstance
Modified: Zope/trunk/inst/configure.py
===================================================================
--- Zope/trunk/inst/configure.py 2006-07-06 04:04:47 UTC (rev 69000)
+++ Zope/trunk/inst/configure.py 2006-07-06 04:15:00 UTC (rev 69001)
@@ -17,6 +17,7 @@
import os
import sys
import versions
+import tempfile
QUIET=0
@@ -33,7 +34,10 @@
# below assumes this script is in the BASE_DIR/inst directory
global PREFIX
BASE_DIR=os.path.abspath(os.path.dirname(os.path.dirname(sys.argv[0])))
+ BUILD_BASE=os.path.join(os.getcwd(), 'build-base',
+ 'python-%s.%s' % sys.version_info[:2])
PYTHON=sys.executable
+ TMP_DIR = tempfile.gettempdir()
MAKEFILE=open(os.path.join(BASE_DIR, 'inst', IN_MAKEFILE)).read()
REQUIRE_LF_ENABLED = 1
REQUIRE_ZLIB = 1
@@ -65,6 +69,8 @@
INSTALL_FLAGS = '--optimize=1 --no-compile'
if o == '--no-compile':
INSTALL_FLAGS = '--no-compile'
+ if o == '--build-base':
+ BUILD_BASE = a
if o == '--quiet':
DISTUTILS_OPTS = '-q'
global QUIET
@@ -82,6 +88,8 @@
'<<PYTHON>>':PYTHON,
'<<PREFIX>>':PREFIX,
'<<BASE_DIR>>':BASE_DIR,
+ '<<BUILD_BASE>>':BUILD_BASE,
+ '<<TMP_DIR>>':TMP_DIR,
'<<INSTALL_FLAGS>>':INSTALL_FLAGS,
'<<ZOPE_MAJOR_VERSION>>':versions.ZOPE_MAJOR_VERSION,
'<<ZOPE_MINOR_VERSION>>':versions.ZOPE_MINOR_VERSION,
Property changes on: Zope/trunk/lib/python
___________________________________________________________________
Name: svn:ignore
- *so
*.pyc
version.txt
build
+ *so
*.pyc
version.txt
build
zope.proxy
Property changes on: Zope/trunk/lib/python/Zope2
___________________________________________________________________
Name: svn:ignore
- *so
*.pyc
build
+ *so
*.pyc
build
version.txt
Modified: Zope/trunk/setup.py
===================================================================
--- Zope/trunk/setup.py 2006-07-06 04:04:47 UTC (rev 69000)
+++ Zope/trunk/setup.py 2006-07-06 04:15:00 UTC (rev 69001)
@@ -1,45 +1,509 @@
-#############################################################################
+#!/usr/bin/env python2.3
+
+##############################################################################
#
-# Copyright (c) 2005 Zope Corporation and Contributors.
-# All Rights Reserved.
+# Copyright (c) 2002 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.
+# Version 2.0 (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.
+# FOR A PARTICULAR PURPOSE
#
##############################################################################
+"""
+Distutils setup for Zope
+
+ In-place building
+
+ This builds extension modules in-place, much like build_extensions.py
+ does. Use 'setup.py' like this::
+
+ python setup.py build_ext -i
+
+ Installation
+
+ This builds extension modules, compiles python modules, and installs
+ everything needed to support Zope instances in the directory of
+ your choosing. For example, to use '/usr/local/lib/zope'::
+
+ python setup.py install \
+ --home=/usr/local/lib/zope \
+ --install-platlib=/usr/local/lib/zope \
+ --install-purelib=/usr/local/lib/zope
+"""
+
+import glob
import os
-import site
import sys
-here = os.path.dirname(os.path.abspath(__file__))
-buildsupport = os.path.join(here, "buildsupport")
+import distutils.core
-# 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
+# Override install_data to install into module directories, and to support
+# globbing on data_files.
-import zpkgsetup.package
-import zpkgsetup.publication
-import zpkgsetup.setup
+from distutils.command.install import install
+from distutils.command.install_data import install_data
+from distutils.util import convert_path
+class ZopeInstallData(install_data):
+ def finalize_options(self):
+ self.set_undefined_options('install',
+ ('install_purelib', 'install_dir'),
+ ('root', 'root'),
+ ('force', 'force'),
+ )
-context = zpkgsetup.setup.SetupContext(
- "Zope", "2.8.42", __file__)
+ def run(self):
+ self.mkpath(self.install_dir)
+ for f in self.data_files:
+ if isinstance(f, str):
+ # it's a simple file, so copy it
+ f = convert_path(f)
+ gl = glob.glob(f)
+ if len(gl) == 0:
+ raise distutils.core.DistutilsFileError, \
+ "can't copy '%s': no matching files" % f
+ for g in gl:
+ if os.path.isfile(g):
+ if self.warn_dir:
+ self.warn("setup script did not provide a "
+ "directory for '%s' -- installing "
+ "right in '%s'" %
+ (g, self.install_dir))
+ (out, _) = self.copy_file(g, self.install_dir)
+ self.outfiles.append(out)
+ else:
+ # it's a tuple with path to install to and a list of files
+ dir = convert_path(f[0])
+ if not os.path.isabs(dir):
+ dir = os.path.join(self.install_dir, dir)
+ elif self.root:
+ dir = change_root(self.root, dir)
+ self.mkpath(dir)
+ for data in f[1]:
+ data = convert_path(data)
+ gl = glob.glob(data)
+ if len(gl) == 0:
+ raise distutils.core.DistutilsFileError, \
+ "can't copy '%s': no matching files" % data
+ for g in gl:
+ if os.path.isfile(g):
+ (out, _) = self.copy_file(g, dir)
+ self.outfiles.append(out)
-context.load_metadata(
- os.path.join(here, "releases", "Zope2",
- zpkgsetup.publication.PUBLICATION_CONF))
+# We create a custom "install scheme" that works the same way on all
+# platforms. We do this in order to prevent distutils from trying to
+# guess where to put our files on a per-platform basis.
-context.walk_packages("lib/python")
-context.setup()
+ZOPE_INSTALL_SCHEME = {
+ 'purelib': '$base/lib/python',
+ 'platlib': '$base/lib/python',
+ 'headers': '$base/lib/python',
+ 'scripts': '$base/bin',
+ 'data' : '$base/lib/python',
+ }
+
+class ZopeInstall(install):
+ # give distutils install step knowledge about build file placement options
+ user_options = install.user_options + [
+ ('build-base=', None, 'base directory for build library'),
+ ('build-lib=', None, 'build directory for all distribution'),
+ ('build-scripts=', None, 'build directory for scripts'),
+ ('build-temp=', None, 'temporary build directory'),
+ ]
+ build_scripts = None
+ build_temp = None
+
+ def run(self):
+ """ Override run to pass along build location info so
+ we can use custom build directories """
+ build = self.distribution.get_command_obj('build')
+ build.build_base = self.build_base
+ build.build_lib = self.build_lib
+ build.build_scripts = self.build_scripts
+ build.build_temp = self.build_temp
+
+ install.run(self)
+
+ def select_scheme(self, name):
+ """
+ Override the default platform installation schemes, ignoring whatever
+ 'name' is passed in. For our purposes, we want to put all library,
+ header, and data into [install_base]/lib/python. Comment
+ this method out to achieve distutils-standard platform-specific
+ behavior for 'setup.py install'. This is most useful if you set the
+ [install-base] by using the '--prefix' or '--home' flags on the
+ setup.py install command line. Otherwise, all Zope software
+ will probably be installed to your Python's 'lib/python' directory.
+ """
+ scheme = ZOPE_INSTALL_SCHEME
+ import distutils.command.install
+ for key in distutils.command.install.SCHEME_KEYS:
+ attrname = 'install_' + key
+ if getattr(self, attrname) is None:
+ setattr(self, attrname, scheme[key])
+
+class ZopeDistribution(distutils.core.Distribution):
+ def __init__(self, attrs):
+ distutils.core.Distribution.__init__(self, attrs)
+ self.cmdclass["install"] = ZopeInstall
+ self.cmdclass["install_data"] = ZopeInstallData
+
+# presumes this script lives in the base dir
+BASE_DIR=os.path.dirname(os.path.abspath(sys.argv[0]))
+
+AUTHOR = 'Zope Corporation and Contributors'
+
+# Most modules are in lib/python in the source distribution
+PACKAGES_ROOT = os.path.join(BASE_DIR, 'lib', 'python')
+os.chdir(PACKAGES_ROOT)
+
+
+# Most of this is ripped from the Zope 3 setup.py.
+
+from distutils import dir_util
+from distutils.command.build import build as buildcmd
+from distutils.command.build_ext import build_ext
+from distutils.command.install_lib import install_lib as installcmd
+from distutils.core import setup
+from distutils.dist import Distribution
+from distutils.extension import Extension
+
+
+# This class serves multiple purposes. It walks the file system looking for
+# auxiliary files that distutils doesn't install properly, and it actually
+# copies those files (when hooked into by distutils). It also walks the file
+# system looking for candidate packages for distutils to install as normal.
+# The key here is that the package must have an __init__.py file.
+class Finder:
+ def __init__(self, ignore, prefix):
+ self._files = []
+ self._pkgs = {}
+ self._ignore = ignore
+ # We're finding packages in lib/python in the source dir, but we're
+ # copying them directly under build/lib.<plat>. So we need to lop off
+ # the prefix when calculating the package names from the file names.
+ self._plen = len(prefix) + 1
+
+ def visit(self, dir, files):
+ # First see if this is one of the packages we want to add, or if
+ # we're really skipping this package.
+ if '__init__.py' in files:
+ aspkg = dir[self._plen:].replace(os.sep, '.')
+ self._pkgs[aspkg] = True
+ ignore = ('.py',) + self._ignore
+ else:
+ ignore = self._ignore
+ # Add any extra files we're interested in
+ for file in files:
+ base, ext = os.path.splitext(file)
+ if ext not in ignore:
+ self._files.append(os.path.join(dir, file))
+
+ def copy_files(self, cmd, outputbase):
+ for file in self._files:
+ dest = os.path.join(outputbase, file[self._plen:])
+ # Make sure the destination directory exists
+ dir = os.path.dirname(dest)
+ if not os.path.exists(dir):
+ dir_util.mkpath(dir)
+ cmd.copy_file(file, dest)
+
+ def get_packages(self):
+ return self._pkgs.keys()
+
+def remove_stale_bytecode(arg, dirname, names):
+ names = map(os.path.normcase, names)
+ for name in names:
+ if name.endswith(".pyc") or name.endswith(".pyo"):
+ srcname = name[:-1]
+ if srcname not in names:
+ fullname = os.path.join(dirname, name)
+ print "Removing stale bytecode file", fullname
+ os.unlink(fullname)
+#
+# Aliases for directories containing headers, to allow for Zope3 extensions
+# to include headers via stuff like '#include "zope.proxy/proxy.h"
+#
+HEADER_PATH_ALIASES = {'zope.proxy': 'zope/proxy'}
+
+# Create the finder instance, which will be used in lots of places. `finder'
+# is the global we're most interested in.
+IGNORE_EXTS = ('.pyc', '.pyo', '.c', '.h', '.so', '.cfg')
+finder = Finder(IGNORE_EXTS, PACKAGES_ROOT)
+
+for dirpath, dirnames, filenames in os.walk(PACKAGES_ROOT):
+ if not '.svn' in dirpath:
+ finder.visit(dirpath, filenames)
+packages = finder.get_packages()
+
+# Distutils hook classes
+class MyBuilder(buildcmd):
+ def run(self):
+ os.path.walk(os.curdir, remove_stale_bytecode, None)
+ buildcmd.run(self)
+ finder.copy_files(self, self.build_lib)
+
+class MyExtBuilder(build_ext):
+ # Override the default build_ext to remove stale bytecodes.
+ # Technically, removing bytecode has nothing to do with
+ # building extensions, but Zope's the build_ext -i variant
+ # is used to build Zope in place.
+ #
+ # Note that we also create symlinks for the oddball include
+ # directories used by some Zope3 extensions.
+ def run(self):
+ os.path.walk(os.curdir, remove_stale_bytecode, None)
+ for k, v in HEADER_PATH_ALIASES.items():
+ if not os.path.exists(k):
+ os.symlink(v, k)
+ build_ext.run(self)
+
+class MyLibInstaller(installcmd):
+ def run(self):
+ installcmd.run(self)
+ finder.copy_files(self, self.install_dir)
+
+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['install'] = ZopeInstall
+ self.cmdclass['build'] = MyBuilder
+ self.cmdclass['build_ext'] = MyExtBuilder
+ self.cmdclass['install_lib'] = MyLibInstaller
+
+
+EXTENSIONCLASS_INCLUDEDIRS = ['ExtensionClass', '.']
+
+# All extension modules must be listed here.
+ext_modules = [
+
+ # AccessControl
+ Extension(name='AccessControl.cAccessControl',
+ include_dirs=EXTENSIONCLASS_INCLUDEDIRS+['Acquisition'],
+ sources=['AccessControl/cAccessControl.c'],
+ depends=['ExtensionClass/ExtensionClass.h',
+ 'ExtensionClass/pickle/pickle.c',
+ 'Acquisition/Acquisition.h']),
+
+ # BTrees
+ Extension(name='BTrees._OOBTree',
+ include_dirs=EXTENSIONCLASS_INCLUDEDIRS+['persistent'],
+ sources=['BTrees/_OOBTree.c']),
+ Extension(name='BTrees._OIBTree',
+ include_dirs=EXTENSIONCLASS_INCLUDEDIRS+['persistent'],
+ sources=['BTrees/_OIBTree.c']),
+ Extension(name='BTrees._IIBTree',
+ include_dirs=EXTENSIONCLASS_INCLUDEDIRS+['persistent'],
+ define_macros=[('EXCLUDE_INTSET_SUPPORT', None)],
+ sources=['BTrees/_IIBTree.c']),
+ Extension(name='BTrees._IOBTree',
+ include_dirs=EXTENSIONCLASS_INCLUDEDIRS+['persistent'],
+ define_macros=[('EXCLUDE_INTSET_SUPPORT', None)],
+ sources=['BTrees/_IOBTree.c']),
+ Extension(name='BTrees._IFBTree',
+ include_dirs=EXTENSIONCLASS_INCLUDEDIRS+['persistent'],
+ define_macros=[('EXCLUDE_INTSET_SUPPORT', None)],
+ sources=['BTrees/_IFBTree.c']),
+ Extension(name='BTrees._fsBTree',
+ include_dirs=EXTENSIONCLASS_INCLUDEDIRS+['persistent'],
+ define_macros=[('EXCLUDE_INTSET_SUPPORT', None)],
+ sources=['BTrees/_fsBTree.c']),
+
+ # DocumentTemplate
+ Extension(name='DocumentTemplate.cDocumentTemplate',
+ include_dirs=EXTENSIONCLASS_INCLUDEDIRS,
+ sources=['DocumentTemplate/cDocumentTemplate.c']),
+
+ # ExtensionClass
+ Extension(name='ExtensionClass._ExtensionClass',
+ include_dirs=EXTENSIONCLASS_INCLUDEDIRS,
+ sources=["ExtensionClass/_ExtensionClass.c"],
+ depends=["ExtensionClass/ExtensionClass.h"]),
+ Extension(name='Acquisition._Acquisition',
+ include_dirs=EXTENSIONCLASS_INCLUDEDIRS,
+ sources=["Acquisition/_Acquisition.c"],
+ depends=["ExtensionClass/ExtensionClass.h",
+ "Acquisition/Acquisition.h"]),
+ Extension(name='MethodObject._MethodObject',
+ include_dirs=EXTENSIONCLASS_INCLUDEDIRS,
+ sources=["MethodObject/_MethodObject.c"],
+ depends=["ExtensionClass/ExtensionClass.h"]),
+ Extension(name='MultiMapping._MultiMapping',
+ include_dirs=EXTENSIONCLASS_INCLUDEDIRS,
+ sources=["MultiMapping/_MultiMapping.c"],
+ depends=["ExtensionClass/ExtensionClass.h"]),
+ Extension(name='ThreadLock._ThreadLock',
+ include_dirs=EXTENSIONCLASS_INCLUDEDIRS,
+ sources=["ThreadLock/_ThreadLock.c"],
+ depends=["ExtensionClass/ExtensionClass.h"]),
+ Extension(name='Missing._Missing',
+ include_dirs=EXTENSIONCLASS_INCLUDEDIRS,
+ sources=["Missing/_Missing.c"],
+ depends=["ExtensionClass/ExtensionClass.h"]),
+ Extension(name='Record._Record',
+ include_dirs=EXTENSIONCLASS_INCLUDEDIRS,
+ sources=["Record/_Record.c"],
+ depends=["ExtensionClass/ExtensionClass.h"]),
+ Extension(name='ComputedAttribute._ComputedAttribute',
+ include_dirs=EXTENSIONCLASS_INCLUDEDIRS,
+ sources=["ComputedAttribute/_ComputedAttribute.c"],
+ depends=["ExtensionClass/ExtensionClass.h"]),
+
+ # initgroups
+ Extension(name='initgroups._initgroups',
+ sources=['initgroups/_initgroups.c']),
+
+ # indexes
+ Extension(name='Products.PluginIndexes.TextIndex.Splitter.ZopeSplitter.ZopeSplitter',
+ sources=['Products/PluginIndexes/TextIndex/Splitter/ZopeSplitter/src/ZopeSplitter.c']),
+ Extension(name='Products.PluginIndexes.TextIndex.Splitter.ISO_8859_1_Splitter.ISO_8859_1_Splitter',
+ sources=['Products/PluginIndexes/TextIndex/Splitter/ISO_8859_1_Splitter/src/ISO_8859_1_Splitter.c']),
+ Extension(name='Products.PluginIndexes.TextIndex.Splitter.UnicodeSplitter.UnicodeSplitter',
+ sources=['Products/PluginIndexes/TextIndex/Splitter/UnicodeSplitter/src/UnicodeSplitter.c']),
+ Extension(name='Products.ZCTextIndex.stopper',
+ sources=['Products/ZCTextIndex/stopper.c']),
+ Extension(name='Products.ZCTextIndex.okascore',
+ sources=['Products/ZCTextIndex/okascore.c']),
+
+ #ZODB
+ Extension(name = 'persistent.cPersistence',
+ include_dirs = ['persistent'],
+ sources= ['persistent/cPersistence.c',
+ 'persistent/ring.c'],
+ depends = ['persistent/cPersistence.h',
+ 'persistent/ring.h',
+ 'persistent/ring.c']
+ ),
+ Extension(name = 'Persistence._Persistence',
+ include_dirs = ['.', 'persistent', 'ExtensionClass'],
+ sources = ['Persistence/_Persistence.c'],
+ depends = ['persistent/cPersistence.h',
+ 'ExtensionClass/ExtensionClass.h']
+ ),
+ Extension(name = 'persistent.cPickleCache',
+ include_dirs = ['persistent'],
+ sources= ['persistent/cPickleCache.c',
+ 'persistent/ring.c'],
+ depends = ['persistent/cPersistence.h',
+ 'persistent/ring.h',
+ 'persistent/ring.c']
+ ),
+ Extension(name = 'persistent.TimeStamp',
+ sources= ['persistent/TimeStamp.c']
+ ),
+ Extension(name = 'ZODB.winlock',
+ sources = ['ZODB/winlock.c']
+ ),
+
+ #zope
+ Extension("zope.proxy._zope_proxy_proxy",
+ ["zope/proxy/_zope_proxy_proxy.c"],
+ include_dirs = [".", "zope/proxy"],
+ depends = ["zope/proxy/proxy.h"]),
+
+ Extension("zope.security._proxy", ["zope/security/_proxy.c"],
+ include_dirs = [".", "zope/proxy"],
+ depends = ["zope/proxy/proxy.h"]),
+
+ Extension("zope.security._zope_security_checker",
+ ["zope/security/_zope_security_checker.c"],
+ include_dirs = [],
+ depends = []),
+
+ Extension("zope.interface._zope_interface_coptimizations",
+ ["zope/interface/_zope_interface_coptimizations.c"]),
+
+ Extension("zope.i18nmessageid._zope_i18nmessageid_message",
+ ["zope/i18nmessageid/_zope_i18nmessageid_message.c"]),
+
+ Extension("zope.hookable._zope_hookable",
+ ["zope/hookable/_zope_hookable.c"]),
+
+ Extension("zope.thread._zope_thread",
+ ["zope/thread/_zope_thread.c"]),
+
+ Extension("zope.app.container._zope_app_container_contained",
+ ["zope/app/container/_zope_app_container_contained.c"],
+ include_dirs = [".",
+ "persistent",
+ "zope/proxy",
+ "zope/app/container"],
+ depends = [
+ "persistent/cPersistence.h",
+ "zope/proxy/_zope_proxy_proxy.c",
+ ]),
+
+ ]
+
+# We're using the module docstring as the distutils descriptions.
+doclines = __doc__.split("\n")
+
+setup(name='Zope',
+ author=AUTHOR,
+ version="2.8",
+ maintainer="Zope Corporation",
+ maintainer_email="zope-dev at zope.org",
+ url = "http://www.zope.org/",
+ ext_modules = ext_modules,
+ license = "http://www.zope.org/Resources/ZPL",
+ platforms = ["any"],
+ description = doclines[0],
+ long_description = "\n".join(doclines[2:]),
+ packages = packages,
+ distclass = MyDistribution,
+ )
+
+# The rest of these modules live in the root of the source tree
+os.chdir(BASE_DIR)
+
+IGNORE_NAMES = (
+ 'CVS', '.svn', # Revision Control Directories
+ )
+
+def skel_visit(skel, dirname, names):
+ for ignore in IGNORE_NAMES:
+ if ignore in names:
+ names.remove(ignore)
+ L = []
+ for name in names:
+ if os.path.isfile(os.path.join(dirname, name)):
+ L.append("%s/%s" % (dirname, name))
+ skel.append(("../../" + dirname, L))
+
+installed_data_files = [
+ ["../../doc", ['doc/*.txt']],
+ ["../../bin", ['utilities/README.txt']],
+ ]
+
+os.path.walk("skel", skel_visit, installed_data_files)
+
+setup(
+ name='Zope',
+ author=AUTHOR,
+
+ data_files=installed_data_files,
+ scripts=["utilities/mkzeoinstance.py", "utilities/mkzopeinstance.py",
+ "utilities/check_catalog.py", "utilities/load_site.py",
+ "utilities/requestprofiler.py", "utilities/zpasswd.py",
+ "utilities/copyzopeskel.py", "utilities/reindex_catalog.py",
+ "utilities/compilezpy.py", "utilities/decompilezpy.py",
+ "utilities/ZODBTools/timeout.py", "utilities/ZODBTools/analyze.py",
+ "utilities/ZODBTools/checkbtrees.py", "utilities/ZODBTools/fsdump.py",
+ "utilities/ZODBTools/fsrefs.py" , "utilities/ZODBTools/fstail.py",
+ "utilities/ZODBTools/fstest.py", "utilities/ZODBTools/migrate.py",
+ "utilities/ZODBTools/netspace.py", "utilities/ZODBTools/parsezeolog.py",
+ "utilities/ZODBTools/repozo.py", "utilities/ZODBTools/space.py",
+ "utilities/ZODBTools/timeout.py", "utilities/ZODBTools/zeopack.py",
+ "utilities/ZODBTools/zeoqueue.py", "utilities/ZODBTools/zeoreplay.py",
+ "utilities/ZODBTools/zeoserverlog.py", "utilities/ZODBTools/zeoup.py",
+ "utilities/ZODBTools/zodbload.py",
+ "test.py"],
+ distclass=ZopeDistribution,
+ )
More information about the Zope-Checkins
mailing list