cedar-backup-svn Mailing List for Cedar Backup (Page 7)
Brought to you by:
pronovic
You can subscribe to this list here.
| 2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(5) |
Dec
(50) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2008 |
Jan
|
Feb
(5) |
Mar
(55) |
Apr
(13) |
May
(6) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(5) |
Nov
(3) |
Dec
(3) |
| 2009 |
Jan
|
Feb
|
Mar
(11) |
Apr
|
May
|
Jun
|
Jul
|
Aug
(7) |
Sep
|
Oct
|
Nov
|
Dec
|
| 2010 |
Jan
(14) |
Feb
(2) |
Mar
|
Apr
|
May
(7) |
Jun
(8) |
Jul
(30) |
Aug
|
Sep
|
Oct
(4) |
Nov
|
Dec
|
| 2011 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(9) |
Nov
|
Dec
|
| 2013 |
Jan
|
Feb
|
Mar
(3) |
Apr
(10) |
May
(6) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2014 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(48) |
Nov
(1) |
Dec
|
| 2015 |
Jan
(5) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(3) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: <pro...@us...> - 2010-01-10 20:12:01
|
Revision: 952
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=952&view=rev
Author: pronovic
Date: 2010-01-10 20:11:53 +0000 (Sun, 10 Jan 2010)
Log Message:
-----------
Add support for customization, so Debian can use wodim and genisoimage
Modified Paths:
--------------
cedar-backup2/trunk/CREDITS
cedar-backup2/trunk/CedarBackup2/cli.py
cedar-backup2/trunk/CedarBackup2/config.py
cedar-backup2/trunk/CedarBackup2/release.py
cedar-backup2/trunk/Changelog
cedar-backup2/trunk/test/configtests.py
cedar-backup2/trunk/util/test.py
Added Paths:
-----------
cedar-backup2/trunk/CedarBackup2/customize.py
cedar-backup2/trunk/test/customizetests.py
Modified: cedar-backup2/trunk/CREDITS
===================================================================
--- cedar-backup2/trunk/CREDITS 2009-08-16 20:37:19 UTC (rev 951)
+++ cedar-backup2/trunk/CREDITS 2010-01-10 20:11:53 UTC (rev 952)
@@ -23,7 +23,7 @@
software, as indicated in the source code itself.
Unless otherwise indicated, all Cedar Backup source code is Copyright
-(c) 2004-2009 Kenneth J. Pronovici and is released under the GNU General
+(c) 2004-2010 Kenneth J. Pronovici and is released under the GNU General
Public License. The contents of the GNU General Public License can be
found in the LICENSE file, or can be downloaded from http://www.gnu.org/.
Modified: cedar-backup2/trunk/CedarBackup2/cli.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/cli.py 2009-08-16 20:37:19 UTC (rev 951)
+++ cedar-backup2/trunk/CedarBackup2/cli.py 2010-01-10 20:11:53 UTC (rev 952)
@@ -8,7 +8,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2004-2007 Kenneth J. Pronovici.
+# Copyright (c) 2004-2007,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
@@ -87,6 +87,7 @@
# Cedar Backup modules
from CedarBackup2.release import AUTHOR, EMAIL, VERSION, DATE, COPYRIGHT
+from CedarBackup2.customize import customizeOverrides
from CedarBackup2.util import RestrictedContentList, DirectedGraph, PathResolverSingleton
from CedarBackup2.util import sortDict, splitCommandLine, executeCommand, getFunctionReference
from CedarBackup2.util import getUidGid, encodePath, Diagnostics
@@ -243,6 +244,7 @@
try:
logger.info("Configuration path is [%s]" % configPath)
config = Config(xmlPath=configPath)
+ customizeOverrides(config)
setupPathResolver(config)
actionSet = _ActionSet(options.actions, config.extensions, config.options,
config.peers, executeManaged, executeLocal)
Modified: cedar-backup2/trunk/CedarBackup2/config.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/config.py 2009-08-16 20:37:19 UTC (rev 951)
+++ cedar-backup2/trunk/CedarBackup2/config.py 2010-01-10 20:11:53 UTC (rev 952)
@@ -8,7 +8,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2004-2008 Kenneth J. Pronovici.
+# Copyright (c) 2004-2008,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
@@ -2622,6 +2622,35 @@
return 1
return 0
+ def addOverride(self, command, absolutePath):
+ """
+ If no override currently exists for the command, add one.
+ @param command: Name of command to be overridden.
+ @param absolutePath: Absolute path of the overrridden command.
+ """
+ exists = False
+ for object in self.overrides:
+ if object.command == command:
+ exists = True
+ break
+ if not exists:
+ self.overrides.append(CommandOverride(command, absolutePath))
+
+ def replaceOverride(self, command, absolutePath):
+ """
+ If override currently exists for the command, replace it; otherwise add it.
+ @param command: Name of command to be overridden.
+ @param absolutePath: Absolute path of the overrridden command.
+ """
+ exists = False
+ for object in self.overrides:
+ if object.command == command:
+ exists = True
+ object.absolutePath = absolutePath
+ break
+ if not exists:
+ self.overrides.append(CommandOverride(command, absolutePath))
+
def _setStartingDay(self, value):
"""
Property target used to set the starting day.
Added: cedar-backup2/trunk/CedarBackup2/customize.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/customize.py (rev 0)
+++ cedar-backup2/trunk/CedarBackup2/customize.py 2010-01-10 20:11:53 UTC (rev 952)
@@ -0,0 +1,97 @@
+# -*- coding: iso-8859-1 -*-
+# vim: set ft=python ts=3 sw=3 expandtab:
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+#
+# C E D A R
+# S O L U T I O N S "Software done right."
+# S O F T W A R E
+#
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+#
+# Copyright (c) 2010 Kenneth J. Pronovici.
+# All rights reserved.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License,
+# Version 2, as published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+#
+# Copies of the GNU General Public License are available from
+# the Free Software Foundation website, http://www.gnu.org/.
+#
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+#
+# Author : Kenneth J. Pronovici <pro...@ie...>
+# Language : Python (>= 2.3)
+# Project : Cedar Backup, release 2
+# Revision : $Id$
+# Purpose : Implements customized behavior.
+#
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+
+########################################################################
+# Module documentation
+########################################################################
+
+"""
+Implements customized behavior.
+
+Some behaviors need to vary when packaged for certain platforms. For instance,
+while Cedar Backup generally uses cdrecord and mkisofs, Debian ships compatible
+utilities called wodim and genisoimage. I want there to be one single place
+where Cedar Backup is patched for Debian, rather than having to maintain a
+variety of patches in different places.
+
+@author: Kenneth J. Pronovici <pro...@ie...>
+"""
+
+########################################################################
+# Imported modules
+########################################################################
+
+# System modules
+import logging
+
+
+########################################################################
+# Module-wide constants and variables
+########################################################################
+
+logger = logging.getLogger("CedarBackup2.log.customize")
+
+PLATFORM = "standard"
+#PLATFORM = "debian"
+
+DEBIAN_CDRECORD = "/usr/bin/wodim"
+DEBIAN_MKISOFS = "/usr/bin/genisoimage"
+
+
+#######################################################################
+# Public functions
+#######################################################################
+
+################################
+# customizeOverrides() function
+################################
+
+def customizeOverrides(config, platform=PLATFORM):
+ """
+ Modify command overrides based on the configured platform.
+
+ On some platforms, we want to add command overrides to configuration. Each
+ override will only be added if the configuration does not already contain an
+ override with the same name. That way, the user still has a way to choose
+ their own version of the command if they want.
+
+ @param config: Configuration to modify
+ @param platform: Platform that is in use
+ """
+ if platform == "debian":
+ logger.info("Overriding cdrecord for Debian platform: %s" % DEBIAN_CDRECORD)
+ config.options.addOverride("cdrecord", DEBIAN_CDRECORD)
+ logger.info("Overriding mkisofs for Debian platform: %s" % DEBIAN_MKISOFS)
+ config.options.addOverride("mkisofs", DEBIAN_MKISOFS)
+
Property changes on: cedar-backup2/trunk/CedarBackup2/customize.py
___________________________________________________________________
Added: svn:keywords
+ Id
Modified: cedar-backup2/trunk/CedarBackup2/release.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/release.py 2009-08-16 20:37:19 UTC (rev 951)
+++ cedar-backup2/trunk/CedarBackup2/release.py 2010-01-10 20:11:53 UTC (rev 952)
@@ -33,8 +33,8 @@
AUTHOR = "Kenneth J. Pronovici"
EMAIL = "pro...@ie..."
-COPYRIGHT = "2004-2009"
-VERSION = "2.19.4"
-DATE = "16 Aug 2009"
+COPYRIGHT = "2004-2010"
+VERSION = "2.19.5"
+DATE = "unreleased"
URL = "http://cedar-backup.sourceforge.net/"
Modified: cedar-backup2/trunk/Changelog
===================================================================
--- cedar-backup2/trunk/Changelog 2009-08-16 20:37:19 UTC (rev 951)
+++ cedar-backup2/trunk/Changelog 2010-01-10 20:11:53 UTC (rev 952)
@@ -1,3 +1,7 @@
+Version 2.19.5 unreleased
+
+ * Add customization support, so Debian can use wodim and genisoimage.
+
Version 2.19.4 16 Aug 2009
* Add support for the Python 2.6 interpreter.
Modified: cedar-backup2/trunk/test/configtests.py
===================================================================
--- cedar-backup2/trunk/test/configtests.py 2009-08-16 20:37:19 UTC (rev 951)
+++ cedar-backup2/trunk/test/configtests.py 2010-01-10 20:11:53 UTC (rev 952)
@@ -9,7 +9,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2004-2008 Kenneth J. Pronovici.
+# Copyright (c) 2004-2008,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
@@ -6031,6 +6031,66 @@
self.failUnless(options1 != options2)
+ ####################################
+ # Test add and replace of overrides
+ ####################################
+
+ def testOverrides_001(self):
+ """
+ Test addOverride() with no existing overrides.
+ """
+ options = OptionsConfig();
+ options.overrides = []
+ options.addOverride("cdrecord", "/usr/bin/wodim")
+ self.failUnlessEqual([ CommandOverride("cdrecord", "/usr/bin/wodim"), ], options.overrides);
+
+ def testOverrides_002(self):
+ """
+ Test addOverride() with no existing override that matches.
+ """
+ options = OptionsConfig();
+ options.overrides = [ CommandOverride("one", "/one"), ]
+ options.addOverride("cdrecord", "/usr/bin/wodim")
+ self.failUnlessEqual([ CommandOverride("one", "/one"), CommandOverride("cdrecord", "/usr/bin/wodim"), ], options.overrides);
+
+ def testOverrides_003(self):
+ """
+ Test addOverride(), with existing override that matches.
+ """
+ options = OptionsConfig();
+ options.overrides = [ CommandOverride("cdrecord", "/one"), ]
+ options.addOverride("cdrecord", "/usr/bin/wodim")
+ self.failUnlessEqual([ CommandOverride("cdrecord", "/one"), ], options.overrides);
+
+ def testOverrides_004(self):
+ """
+ Test replaceOverride() with no existing overrides.
+ """
+ options = OptionsConfig();
+ options.overrides = []
+ options.replaceOverride("cdrecord", "/usr/bin/wodim")
+ self.failUnlessEqual([ CommandOverride("cdrecord", "/usr/bin/wodim"), ], options.overrides);
+
+ def testOverrides_005(self):
+ """
+ Test replaceOverride() with no existing override that matches.
+ """
+ options = OptionsConfig();
+ options.overrides = [ CommandOverride("one", "/one"), ]
+ options.replaceOverride("cdrecord", "/usr/bin/wodim")
+ self.failUnlessEqual([ CommandOverride("one", "/one"), CommandOverride("cdrecord", "/usr/bin/wodim"), ], options.overrides);
+
+ def testOverrides_006(self):
+ """
+ Test replaceOverride(), with existing override that matches.
+ """
+ options = OptionsConfig();
+ options.overrides = [ CommandOverride("cdrecord", "/one"), ]
+ options.replaceOverride("cdrecord", "/usr/bin/wodim")
+ self.failUnlessEqual([ CommandOverride("cdrecord", "/usr/bin/wodim"), ], options.overrides);
+
+
+
########################
# TestPeersConfig class
########################
Added: cedar-backup2/trunk/test/customizetests.py
===================================================================
--- cedar-backup2/trunk/test/customizetests.py (rev 0)
+++ cedar-backup2/trunk/test/customizetests.py 2010-01-10 20:11:53 UTC (rev 952)
@@ -0,0 +1,193 @@
+#!/usr/bin/env python
+# -*- coding: iso-8859-1 -*-
+# vim: set ft=python ts=3 sw=3 expandtab:
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+#
+# C E D A R
+# S O L U T I O N S "Software done right."
+# S O F T W A R E
+#
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+#
+# Copyright (c) 2010 Kenneth J. Pronovici.
+# All rights reserved.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License,
+# Version 2, as published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+#
+# Copies of the GNU General Public License are available from
+# the Free Software Foundation website, http://www.gnu.org/.
+#
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+#
+# Author : Kenneth J. Pronovici <pro...@ie...>
+# Language : Python (>= 2.3)
+# Project : Cedar Backup, release 2
+# Revision : $Id$
+# Purpose : Tests customization functionality.
+#
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+
+########################################################################
+# Module documentation
+########################################################################
+
+"""
+Unit tests for CedarBackup2/customize.py.
+@author Kenneth J. Pronovici <pro...@ie...>
+"""
+
+
+########################################################################
+# Import modules and do runtime validations
+########################################################################
+
+import unittest
+
+from CedarBackup2.customize import customizeOverrides
+from CedarBackup2.config import Config, OptionsConfig, CommandOverride
+
+
+
+#######################################################################
+# Test Case Classes
+#######################################################################
+
+######################
+# TestFunctions class
+######################
+
+class TestFunctions(unittest.TestCase):
+
+ """Tests for the various public functions."""
+
+
+ ############################
+ # Test customizeOverrides()
+ ############################
+
+ def testCustomizeOverrides_001(self):
+ """
+ Test platform=standard, no existing overrides.
+ """
+ config = Config()
+ options = OptionsConfig();
+ options.overrides = []
+ config.options = options
+ customizeOverrides(config) # relies on default, which should be "standard"
+ self.failUnlessEqual([], options.overrides);
+ config.options = options
+ customizeOverrides(config, platform="standard")
+ self.failUnlessEqual([], options.overrides);
+
+ def testCustomizeOverrides_002(self):
+ """
+ Test platform=standard, existing override for cdrecord.
+ """
+ config = Config()
+ options = OptionsConfig();
+ options.overrides = [ CommandOverride("cdrecord", "/blech"), ]
+ config.options = options
+ customizeOverrides(config) # relies on default, which should be "standard"
+ self.failUnlessEqual([ CommandOverride("cdrecord", "/blech"), ], options.overrides);
+ config.options = options
+ customizeOverrides(config, platform="standard")
+ self.failUnlessEqual([ CommandOverride("cdrecord", "/blech"), ], options.overrides);
+
+ def testCustomizeOverrides_003(self):
+ """
+ Test platform=standard, existing override for mkisofs.
+ """
+ config = Config()
+ options = OptionsConfig();
+ options.overrides = [ CommandOverride("mkisofs", "/blech"), ]
+ config.options = options
+ customizeOverrides(config) # relies on default, which should be "standard"
+ self.failUnlessEqual([ CommandOverride("mkisofs", "/blech"), ], options.overrides);
+ config.options = options
+ customizeOverrides(config, platform="standard")
+ self.failUnlessEqual([ CommandOverride("mkisofs", "/blech"), ], options.overrides);
+
+ def testCustomizeOverrides_004(self):
+ """
+ Test platform=standard, existing override for cdrecord and mkisofs.
+ """
+ config = Config()
+ options = OptionsConfig();
+ options.overrides = [ CommandOverride("cdrecord", "/blech"), CommandOverride("mkisofs", "/blech2"), ]
+ config.options = options
+ customizeOverrides(config) # relies on default, which should be "standard"
+ self.failUnlessEqual([ CommandOverride("cdrecord", "/blech"), CommandOverride("mkisofs", "/blech2"), ], options.overrides);
+ config.options = options
+ customizeOverrides(config, platform="standard")
+ self.failUnlessEqual([ CommandOverride("cdrecord", "/blech"), CommandOverride("mkisofs", "/blech2"), ], options.overrides);
+
+ def testCustomizeOverrides_005(self):
+ """
+ Test platform=debian, no existing overrides.
+ """
+ config = Config()
+ options = OptionsConfig();
+ options.overrides = []
+ config.options = options
+ customizeOverrides(config, platform="debian")
+ self.failUnlessEqual([ CommandOverride("cdrecord", "/usr/bin/wodim"), CommandOverride("mkisofs", "/usr/bin/genisoimage"), ], options.overrides);
+
+ def testCustomizeOverrides_006(self):
+ """
+ Test platform=debian, existing override for cdrecord.
+ """
+ config = Config()
+ options = OptionsConfig();
+ options.overrides = [ CommandOverride("cdrecord", "/blech"), ]
+ config.options = options
+ customizeOverrides(config, platform="debian")
+ self.failUnlessEqual([ CommandOverride("cdrecord", "/blech"), CommandOverride("mkisofs", "/usr/bin/genisoimage"), ], options.overrides);
+
+ def testCustomizeOverrides_007(self):
+ """
+ Test platform=debian, existing override for mkisofs.
+ """
+ config = Config()
+ options = OptionsConfig();
+ options.overrides = [ CommandOverride("mkisofs", "/blech"), ]
+ config.options = options
+ customizeOverrides(config, platform="debian")
+ self.failUnlessEqual([ CommandOverride("cdrecord", "/usr/bin/wodim"), CommandOverride("mkisofs", "/blech"), ], options.overrides);
+
+ def testCustomizeOverrides_008(self):
+ """
+ Test platform=debian, existing override for cdrecord and mkisofs.
+ """
+ config = Config()
+ options = OptionsConfig();
+ options.overrides = [ CommandOverride("cdrecord", "/blech"), CommandOverride("mkisofs", "/blech2"), ]
+ config.options = options
+ customizeOverrides(config, platform="debian")
+ self.failUnlessEqual([ CommandOverride("cdrecord", "/blech"), CommandOverride("mkisofs", "/blech2"), ], options.overrides);
+
+
+#######################################################################
+# Suite definition
+#######################################################################
+
+def suite():
+ """Returns a suite containing all the test cases in this module."""
+ return unittest.TestSuite((
+ unittest.makeSuite(TestFunctions, 'test'),
+ ))
+
+
+########################################################################
+# Module entry point
+########################################################################
+
+# When this module is executed from the command-line, run its tests
+if __name__ == '__main__':
+ unittest.main()
+
Property changes on: cedar-backup2/trunk/test/customizetests.py
___________________________________________________________________
Added: svn:keywords
+ Id
Modified: cedar-backup2/trunk/util/test.py
===================================================================
--- cedar-backup2/trunk/util/test.py 2009-08-16 20:37:19 UTC (rev 951)
+++ cedar-backup2/trunk/util/test.py 2010-01-10 20:11:53 UTC (rev 952)
@@ -9,7 +9,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2004-2008 Kenneth J. Pronovici.
+# Copyright (c) 2004-2008,2010 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
@@ -163,6 +163,7 @@
import test.splittests as splittests
import test.spantests as spantests
import test.capacitytests as capacitytests
+ import test.customizetests as customizetests
except ImportError, e:
print "Failed to import CedarBackup2 unit test module: %s" % e
print "You must either run the unit tests from the CedarBackup2 source"
@@ -220,6 +221,7 @@
if args == [] or "encrypt" in args: unittests["encrypt"] = encrypttests.suite()
if args == [] or "span" in args: unittests["span"] = spantests.suite()
if args == [] or "capacity" in args: unittests["capacity"] = capacitytests.suite()
+ if args == [] or "customize" in args: unittests["customize"] = customizetests.suite()
if args != []: print "*** Executing specific tests: %s" % unittests.keys()
# Print some diagnostic information
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2009-08-16 20:37:27
|
Revision: 951
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=951&view=rev
Author: pronovic
Date: 2009-08-16 20:37:19 +0000 (Sun, 16 Aug 2009)
Log Message:
-----------
Tagging the 2.19.4 release of Cedar Backup.
Added Paths:
-----------
cedar-backup2/tags/CEDAR_BACKUP2_V2.19.4/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2009-08-16 20:12:18
|
Revision: 950
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=950&view=rev
Author: pronovic
Date: 2009-08-16 20:12:09 +0000 (Sun, 16 Aug 2009)
Log Message:
-----------
Release 2.19.4
Modified Paths:
--------------
cedar-backup2/trunk/CedarBackup2/filesystem.py
cedar-backup2/trunk/CedarBackup2/release.py
cedar-backup2/trunk/Changelog
Modified: cedar-backup2/trunk/CedarBackup2/filesystem.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/filesystem.py 2009-08-16 20:04:58 UTC (rev 949)
+++ cedar-backup2/trunk/CedarBackup2/filesystem.py 2009-08-16 20:12:09 UTC (rev 950)
@@ -914,7 +914,7 @@
try:
import hashlib
s = hashlib.sha1()
- except Exception, e:
+ except:
import sha
s = sha.new()
f = open(path, mode="rb") # in case platform cares about binary reads
Modified: cedar-backup2/trunk/CedarBackup2/release.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/release.py 2009-08-16 20:04:58 UTC (rev 949)
+++ cedar-backup2/trunk/CedarBackup2/release.py 2009-08-16 20:12:09 UTC (rev 950)
@@ -34,7 +34,7 @@
AUTHOR = "Kenneth J. Pronovici"
EMAIL = "pro...@ie..."
COPYRIGHT = "2004-2009"
-VERSION = "2.19.3"
-DATE = "29 Mar 2009"
+VERSION = "2.19.4"
+DATE = "16 Aug 2009"
URL = "http://cedar-backup.sourceforge.net/"
Modified: cedar-backup2/trunk/Changelog
===================================================================
--- cedar-backup2/trunk/Changelog 2009-08-16 20:04:58 UTC (rev 949)
+++ cedar-backup2/trunk/Changelog 2009-08-16 20:12:09 UTC (rev 950)
@@ -1,9 +1,10 @@
-Version 2.19.4 unreleased
+Version 2.19.4 16 Aug 2009
- * Use hashlib module instead of deprecated sha module when available.
- * Use set built-in type rather than deprecated sets.Set class when available.
- * Use tarfile.format=GNU_FORMAT rather than deprecated tarfile.posix=False.
- * Fix testGenerateTarfile_002() so expectations match Python 2.6 results.
+ * Add support for the Python 2.6 interpreter.
+ - Use hashlib instead of deprecated sha module when available
+ - Use set type rather than deprecated sets.Set when available
+ - Use tarfile.format rather than deprecated tarfile.posix when available
+ - Fix testGenerateTarfile_002() so expectations match Python 2.6 results
Version 2.19.3 29 Mar 2009
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2009-08-16 20:05:05
|
Revision: 949
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=949&view=rev
Author: pronovic
Date: 2009-08-16 20:04:58 +0000 (Sun, 16 Aug 2009)
Log Message:
-----------
Tweak test check for hex float literals
Modified Paths:
--------------
cedar-backup2/trunk/CedarBackup2/testutil.py
Modified: cedar-backup2/trunk/CedarBackup2/testutil.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/testutil.py 2009-08-16 18:55:56 UTC (rev 948)
+++ cedar-backup2/trunk/CedarBackup2/testutil.py 2009-08-16 20:04:58 UTC (rev 949)
@@ -504,18 +504,18 @@
Indicates whether hex float literals are allowed by the interpreter.
As far back as 2004, some Python documentation indicated that octal and hex
- notation applies only to integer literals. However, prior to Python 2.5, it
- was legal to construct a float with an argument like 0xAC. This check
- provides a version-based indication of whether the current interpreter
+ notation applied only to integer literals. However, prior to Python 2.5, it
+ was legal to construct a float with an argument like 0xAC on some platforms.
+ This check provides a an indication of whether the current interpreter
supports that behavior.
This check exists so that unit tests can continue to test the same thing as
always for pre-2.5 interpreters (i.e. making sure backwards compatibility
doesn't break) while still continuing to work for later interpreters.
- The returned value is True for Python <= 2.5, and False otherwise.
+ The returned value is True if hex float literals are allowed, False otherwise.
"""
- if map(int, [sys.version_info[0], sys.version_info[1]]) < [2, 5]:
+ if map(int, [sys.version_info[0], sys.version_info[1]]) < [2, 5] and not platformWindows():
return True
return False
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2009-08-16 18:56:07
|
Revision: 948
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=948&view=rev
Author: pronovic
Date: 2009-08-16 18:55:56 +0000 (Sun, 16 Aug 2009)
Log Message:
-----------
Use tarfile.format=GNU_FORMAT rather than deprecated tarfile.posix=False.
Modified Paths:
--------------
cedar-backup2/trunk/CedarBackup2/filesystem.py
cedar-backup2/trunk/CedarBackup2/testutil.py
cedar-backup2/trunk/Changelog
Modified: cedar-backup2/trunk/CedarBackup2/filesystem.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/filesystem.py 2009-08-16 18:47:36 UTC (rev 947)
+++ cedar-backup2/trunk/CedarBackup2/filesystem.py 2009-08-16 18:55:56 UTC (rev 948)
@@ -1105,7 +1105,10 @@
else: raise ValueError("Mode [%s] is not valid." % mode)
try:
tar = tarfile.open(path, tarmode)
- tar.posix = False # make a GNU-compatible archive without file length limits
+ try:
+ tar.format = tarfile.GNU_FORMAT
+ except:
+ tar.posix = False
for entry in self:
try:
if flat:
Modified: cedar-backup2/trunk/CedarBackup2/testutil.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/testutil.py 2009-08-16 18:47:36 UTC (rev 947)
+++ cedar-backup2/trunk/CedarBackup2/testutil.py 2009-08-16 18:55:56 UTC (rev 948)
@@ -207,7 +207,10 @@
tmpdir = encodePath(tmpdir)
filepath = encodePath(filepath)
tar = tarfile.open(filepath)
- tar.posix = False
+ try:
+ tar.format = tarfile.GNU_FORMAT
+ except:
+ tar.posix = False
for tarinfo in tar:
tar.extract(tarinfo, tmpdir)
Modified: cedar-backup2/trunk/Changelog
===================================================================
--- cedar-backup2/trunk/Changelog 2009-08-16 18:47:36 UTC (rev 947)
+++ cedar-backup2/trunk/Changelog 2009-08-16 18:55:56 UTC (rev 948)
@@ -1,8 +1,9 @@
Version 2.19.4 unreleased
- * Fix testGenerateTarfile_002() so it works with Python 2.6.
- * Use hashlib instead of deprecated sha module when available.
- * Use set built-in rather than deprecated sets.Set when available.
+ * Use hashlib module instead of deprecated sha module when available.
+ * Use set built-in type rather than deprecated sets.Set class when available.
+ * Use tarfile.format=GNU_FORMAT rather than deprecated tarfile.posix=False.
+ * Fix testGenerateTarfile_002() so expectations match Python 2.6 results.
Version 2.19.3 29 Mar 2009
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2009-08-16 18:47:42
|
Revision: 947
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=947&view=rev
Author: pronovic
Date: 2009-08-16 18:47:36 +0000 (Sun, 16 Aug 2009)
Log Message:
-----------
Use set built-in rather than deprecated sets.Set when available.
Modified Paths:
--------------
cedar-backup2/trunk/CedarBackup2/peer.py
cedar-backup2/trunk/Changelog
Modified: cedar-backup2/trunk/CedarBackup2/peer.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/peer.py 2009-08-16 18:39:18 UTC (rev 946)
+++ cedar-backup2/trunk/CedarBackup2/peer.py 2009-08-16 18:47:36 UTC (rev 947)
@@ -56,7 +56,6 @@
import os
import logging
import shutil
-import sets
import re
# Cedar Backup modules
@@ -923,8 +922,7 @@
Returns the contents of a directory in terms of a Set.
The directory's contents are read as a L{FilesystemList} containing only
- files, and then the list is converted into a C{sets.Set} object for later
- use.
+ files, and then the list is converted into a set object for later use.
@param path: Directory path to get contents for
@type path: String representing a path on disk
@@ -936,7 +934,11 @@
contents.excludeDirs = True
contents.excludeLinks = True
contents.addDirContents(path)
- return sets.Set(contents)
+ try:
+ return set(contents)
+ except:
+ import sets
+ return sets.Set(contents)
_getDirContents = staticmethod(_getDirContents)
def _copyRemoteDir(remoteUser, localUser, remoteHost, rcpCommand, rcpCommandList,
Modified: cedar-backup2/trunk/Changelog
===================================================================
--- cedar-backup2/trunk/Changelog 2009-08-16 18:39:18 UTC (rev 946)
+++ cedar-backup2/trunk/Changelog 2009-08-16 18:47:36 UTC (rev 947)
@@ -2,6 +2,7 @@
* Fix testGenerateTarfile_002() so it works with Python 2.6.
* Use hashlib instead of deprecated sha module when available.
+ * Use set built-in rather than deprecated sets.Set when available.
Version 2.19.3 29 Mar 2009
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2009-08-16 18:39:26
|
Revision: 946
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=946&view=rev
Author: pronovic
Date: 2009-08-16 18:39:18 +0000 (Sun, 16 Aug 2009)
Log Message:
-----------
Use hashlib instead of deprecated sha module when available.
Modified Paths:
--------------
cedar-backup2/trunk/CedarBackup2/filesystem.py
cedar-backup2/trunk/Changelog
cedar-backup2/trunk/test/filesystemtests.py
Modified: cedar-backup2/trunk/CedarBackup2/filesystem.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/filesystem.py 2009-08-16 18:21:36 UTC (rev 945)
+++ cedar-backup2/trunk/CedarBackup2/filesystem.py 2009-08-16 18:39:18 UTC (rev 946)
@@ -51,7 +51,6 @@
import sys
import os
import re
-import sha
import math
import logging
import tarfile
@@ -899,7 +898,7 @@
requires 111 seconds. This implementation requires only 40-45 seconds,
which is a pretty substantial speed-up.
- Practice shows that reading in around 4kB (4096 bytes) at a time yields
+ Experience shows that reading in around 4kB (4096 bytes) at a time yields
the best performance. Smaller reads are quite a bit slower, and larger
reads don't make much of a difference. The 4kB number makes me a little
suspicious, and I think it might be related to the size of a filesystem
@@ -912,7 +911,12 @@
@return: ASCII-safe SHA digest for the file.
@raise OSError: If the file cannot be opened.
"""
- s = sha.new()
+ try:
+ import hashlib
+ s = hashlib.sha1()
+ except Exception, e:
+ import sha
+ s = sha.new()
f = open(path, mode="rb") # in case platform cares about binary reads
readBytes = 4096 # see notes above
while(readBytes > 0):
Modified: cedar-backup2/trunk/Changelog
===================================================================
--- cedar-backup2/trunk/Changelog 2009-08-16 18:21:36 UTC (rev 945)
+++ cedar-backup2/trunk/Changelog 2009-08-16 18:39:18 UTC (rev 946)
@@ -1,6 +1,7 @@
Version 2.19.4 unreleased
* Fix testGenerateTarfile_002() so it works with Python 2.6.
+ * Use hashlib instead of deprecated sha module when available.
Version 2.19.3 29 Mar 2009
Modified: cedar-backup2/trunk/test/filesystemtests.py
===================================================================
--- cedar-backup2/trunk/test/filesystemtests.py 2009-08-16 18:21:36 UTC (rev 945)
+++ cedar-backup2/trunk/test/filesystemtests.py 2009-08-16 18:39:18 UTC (rev 946)
@@ -112,7 +112,6 @@
import sys
import os
-import sha
import time
import unittest
import tempfile
@@ -19381,9 +19380,19 @@
for key in self.resources.keys():
path = self.resources[key]
if platformRequiresBinaryRead():
- digest1 = sha.new(open(path, mode="rb").read()).hexdigest()
+ try:
+ import hashlib
+ digest1 = haslib.sha1(open(path, mode="rb").read()).hexdigest()
+ except:
+ import sha
+ digest1 = sha.new(open(path, mode="rb").read()).hexdigest()
else:
- digest1 = sha.new(open(path).read()).hexdigest()
+ try:
+ import hashlib
+ digest1 = hashlib.sha1(open(path).read()).hexdigest()
+ except:
+ import sha
+ digest1 = sha.new(open(path).read()).hexdigest()
digest2 = BackupFileList._generateDigest(path)
self.failUnlessEqual(digest1, digest2, "Digest for %s varies: [%s] vs [%s]." % (path, digest1, digest2))
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2009-08-16 18:21:43
|
Revision: 945
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=945&view=rev
Author: pronovic
Date: 2009-08-16 18:21:36 +0000 (Sun, 16 Aug 2009)
Log Message:
-----------
Fix testGenerateTarfile_002() so it works with Python 2.6
Modified Paths:
--------------
cedar-backup2/trunk/Changelog
cedar-backup2/trunk/test/filesystemtests.py
Modified: cedar-backup2/trunk/Changelog
===================================================================
--- cedar-backup2/trunk/Changelog 2009-03-29 19:52:00 UTC (rev 944)
+++ cedar-backup2/trunk/Changelog 2009-08-16 18:21:36 UTC (rev 945)
@@ -1,3 +1,7 @@
+Version 2.19.4 unreleased
+
+ * Fix testGenerateTarfile_002() so it works with Python 2.6.
+
Version 2.19.3 29 Mar 2009
* Fix minor epydoc typos, mostly in @sort directives.
Modified: cedar-backup2/trunk/test/filesystemtests.py
===================================================================
--- cedar-backup2/trunk/test/filesystemtests.py 2009-03-29 19:52:00 UTC (rev 944)
+++ cedar-backup2/trunk/test/filesystemtests.py 2009-08-16 18:21:36 UTC (rev 945)
@@ -17212,7 +17212,8 @@
tarFile.close()
self.failUnlessEqual(11, len(tarList))
self.failUnless(self.tarPath([ "tree9", "dir001/" ]) in tarList
- or self.tarPath([ "tree9", "dir001//" ]) in tarList) # Grr... Python 2.5 behavior differs
+ or self.tarPath([ "tree9", "dir001//" ]) in tarList # Grr... Python 2.5 behavior differs
+ or self.tarPath([ "tree9", "dir001", ]) in tarList) # Grr... Python 2.6 behavior differs
self.failUnless(self.tarPath([ "tree9", "dir001", "file001", ]) in tarList)
self.failUnless(self.tarPath([ "tree9", "dir001", "file002", ]) in tarList)
self.failUnless(self.tarPath([ "tree9", "dir001", "link001", ]) in tarList)
@@ -17252,7 +17253,8 @@
tarFile.close()
self.failUnlessEqual(16, len(tarList))
self.failUnless(self.tarPath([ "tree9", "dir001/" ]) in tarList
- or self.tarPath([ "tree9", "dir001//" ]) in tarList) # Grr... Python 2.5 behavior differs
+ or self.tarPath([ "tree9", "dir001//" ]) in tarList # Grr... Python 2.5 behavior differs
+ or self.tarPath([ "tree9", "dir001", ]) in tarList) # Grr... Python 2.6 behavior differs
self.failUnless(self.tarPath([ "tree9", "dir001", "file001", ]) in tarList)
self.failUnless(self.tarPath([ "tree9", "dir001", "file002", ]) in tarList)
self.failUnless(self.tarPath([ "tree9", "dir001", "link001", ]) in tarList)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2009-03-29 19:52:09
|
Revision: 944
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=944&view=rev
Author: pronovic
Date: 2009-03-29 19:52:00 +0000 (Sun, 29 Mar 2009)
Log Message:
-----------
Remove support for PDF user manual
Modified Paths:
--------------
web/trunk/cedar-backup/source/index.gtml
Modified: web/trunk/cedar-backup/source/index.gtml
===================================================================
--- web/trunk/cedar-backup/source/index.gtml 2009-03-29 19:49:12 UTC (rev 943)
+++ web/trunk/cedar-backup/source/index.gtml 2009-03-29 19:52:00 UTC (rev 944)
@@ -89,13 +89,11 @@
<ul>
<li><a href="<<V2_DOC_DIR_URL>>/manual/manual.html">Single-page HTML</a></li>
<li><a href="<<V2_DOC_DIR_URL>>/manual/index.html">Multiple-page HTML</a></li>
- <li><a href="<<V2_DOC_DIR_URL>>/manual/manual.pdf">Portable Document Format (PDF)</a></li>
<li><a href="<<V2_DOC_DIR_URL>>/manual/manual.txt">Plaintext</a></li>
</ul>
<p>
-Most users will want to look at the multiple-page HTML version. Users who
-wish to print the software manual should use the PDF version.
+Most users will want to look at the multiple-page HTML version.
</p>
<a name="packages"></a>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2009-03-29 19:49:15
|
Revision: 943
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=943&view=rev
Author: pronovic
Date: 2009-03-29 19:49:12 +0000 (Sun, 29 Mar 2009)
Log Message:
-----------
Tagging the 2.19.3 release of Cedar Backup.
Added Paths:
-----------
cedar-backup2/tags/CEDAR_BACKUP2_V2.19.3/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2009-03-29 19:49:11
|
Revision: 942
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=942&view=rev
Author: pronovic
Date: 2009-03-29 19:49:07 +0000 (Sun, 29 Mar 2009)
Log Message:
-----------
Tagging new version of 2.19.3 release of Cedar Backup.
Removed Paths:
-------------
cedar-backup2/tags/CEDAR_BACKUP2_V2.19.3/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2009-03-29 19:49:03
|
Revision: 941
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=941&view=rev
Author: pronovic
Date: 2009-03-29 19:49:00 +0000 (Sun, 29 Mar 2009)
Log Message:
-----------
Fix sorrtags so it only pays attention to the proper tags
Modified Paths:
--------------
cedar-backup2/trunk/util/sorttags.py
Modified: cedar-backup2/trunk/util/sorttags.py
===================================================================
--- cedar-backup2/trunk/util/sorttags.py 2009-03-29 19:48:33 UTC (rev 940)
+++ cedar-backup2/trunk/util/sorttags.py 2009-03-29 19:49:00 UTC (rev 941)
@@ -11,16 +11,19 @@
def numify(x):
"""Numify a 'svn list --verbose' line, extracting the version and making it into a float."""
- x = re.sub("^.*CEDAR_BACKUP2_V", "", x)
- x = re.sub("/", "", x)
- x = re.sub("\n", "", x)
- components = x.split(".")
- numified = components[0]
- numified += "."
- for component in components[1:]:
- component = re.sub("[^0-9].*$", "", component)
- numified += "%03d" % int(component)
- return float(numified)
+ if re.match("^.*CEDAR_BACKUP2_V", x):
+ x = re.sub("^.*CEDAR_BACKUP2_V", "", x)
+ x = re.sub("/", "", x)
+ x = re.sub("\n", "", x)
+ components = x.split(".")
+ print components
+ numified = components[0]
+ numified += "."
+ for component in components[1:]:
+ component = re.sub("[^0-9].*$", "", component)
+ numified += "%03d" % int(component)
+ return float(numified)
+ return 0 # ignore the line if we can't parse it
lines = sys.stdin.readlines()
lines.sort(compare)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2009-03-29 19:48:36
|
Revision: 940
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=940&view=rev
Author: pronovic
Date: 2009-03-29 19:48:33 +0000 (Sun, 29 Mar 2009)
Log Message:
-----------
Tagging the 2.19.3 release of Cedar Backup.
Added Paths:
-----------
cedar-backup2/tags/CEDAR_BACKUP2_V2.19.3/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2009-03-29 19:48:36
|
Revision: 939
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=939&view=rev
Author: pronovic
Date: 2009-03-29 19:48:28 +0000 (Sun, 29 Mar 2009)
Log Message:
-----------
Tagging new version of 2.19.3 release of Cedar Backup.
Removed Paths:
-------------
cedar-backup2/tags/CEDAR_BACKUP2_V2.19.3/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2009-03-29 19:39:31
|
Revision: 938
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=938&view=rev
Author: pronovic
Date: 2009-03-29 19:39:22 +0000 (Sun, 29 Mar 2009)
Log Message:
-----------
Tagging the 2.19.3 release of Cedar Backup.
Added Paths:
-----------
cedar-backup2/tags/CEDAR_BACKUP2_V2.19.3/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2009-03-29 19:36:55
|
Revision: 937
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=937&view=rev
Author: pronovic
Date: 2009-03-29 19:36:51 +0000 (Sun, 29 Mar 2009)
Log Message:
-----------
Release 2.19.3
Modified Paths:
--------------
cedar-backup2/trunk/CedarBackup2/release.py
cedar-backup2/trunk/Changelog
Modified: cedar-backup2/trunk/CedarBackup2/release.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/release.py 2009-03-29 19:35:00 UTC (rev 936)
+++ cedar-backup2/trunk/CedarBackup2/release.py 2009-03-29 19:36:51 UTC (rev 937)
@@ -33,8 +33,8 @@
AUTHOR = "Kenneth J. Pronovici"
EMAIL = "pro...@ie..."
-COPYRIGHT = "2004-2008"
-VERSION = "2.19.2"
-DATE = "08 Dec 2008"
+COPYRIGHT = "2004-2009"
+VERSION = "2.19.3"
+DATE = "29 Mar 2009"
URL = "http://cedar-backup.sourceforge.net/"
Modified: cedar-backup2/trunk/Changelog
===================================================================
--- cedar-backup2/trunk/Changelog 2009-03-29 19:35:00 UTC (rev 936)
+++ cedar-backup2/trunk/Changelog 2009-03-29 19:36:51 UTC (rev 937)
@@ -1,4 +1,4 @@
-Version 2.19.3 unreleased
+Version 2.19.3 29 Mar 2009
* Fix minor epydoc typos, mostly in @sort directives.
* Removed support for user manual PDF format (see doc/pdf).
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2009-03-29 19:35:04
|
Revision: 936
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=936&view=rev
Author: pronovic
Date: 2009-03-29 19:35:00 +0000 (Sun, 29 Mar 2009)
Log Message:
-----------
Remove support for user manual PDF format
Modified Paths:
--------------
cedar-backup2/trunk/CREDITS
cedar-backup2/trunk/Changelog
cedar-backup2/trunk/MANIFEST.in
cedar-backup2/trunk/manual/Makefile
Added Paths:
-----------
cedar-backup2/trunk/doc/pdf/
cedar-backup2/trunk/doc/pdf/Makefile
cedar-backup2/trunk/doc/pdf/README.txt
cedar-backup2/trunk/doc/pdf/fo-stylesheet.xsl
cedar-backup2/trunk/doc/pdf/images/
cedar-backup2/trunk/doc/pdf/run-fop.sh
Removed Paths:
-------------
cedar-backup2/trunk/manual/src/images/pdf/
cedar-backup2/trunk/util/docbook/fo-stylesheet.xsl
cedar-backup2/trunk/util/docbook/run-fop.sh
Modified: cedar-backup2/trunk/CREDITS
===================================================================
--- cedar-backup2/trunk/CREDITS 2009-03-29 18:56:50 UTC (rev 935)
+++ cedar-backup2/trunk/CREDITS 2009-03-29 19:35:00 UTC (rev 936)
@@ -23,7 +23,7 @@
software, as indicated in the source code itself.
Unless otherwise indicated, all Cedar Backup source code is Copyright
-(c) 2004-2008 Kenneth J. Pronovici and is released under the GNU General
+(c) 2004-2009 Kenneth J. Pronovici and is released under the GNU General
Public License. The contents of the GNU General Public License can be
found in the LICENSE file, or can be downloaded from http://www.gnu.org/.
@@ -52,11 +52,11 @@
the Subversion source tree and did not specify an explicit copyright
notice.
-Some of the PDF-specific graphics in the user manual were either directly
-taken from or were derived from images distributed in Norman Walsh's
-Docbook XSL distribution. These graphics are (c) 1999, 2000, 2001 Norman
-Walsh and were originally released under a BSD-style license as documented
-below.
+Some of the PDF-specific graphics in the user manual (now obsolete and
+orphaned off in the doc/pdf directory) were either directly taken from or
+were derived from images distributed in Norman Walsh's Docbook XSL
+distribution. These graphics are (c) 1999, 2000, 2001 Norman Walsh and
+were originally released under a BSD-style license as documented below.
Source code annotated as "(c) 2000 Fourthought Inc, USA" was taken from or
derived from code within the PyXML distribution and was originally part of
Modified: cedar-backup2/trunk/Changelog
===================================================================
--- cedar-backup2/trunk/Changelog 2009-03-29 18:56:50 UTC (rev 935)
+++ cedar-backup2/trunk/Changelog 2009-03-29 19:35:00 UTC (rev 936)
@@ -1,6 +1,7 @@
Version 2.19.3 unreleased
* Fix minor epydoc typos, mostly in @sort directives.
+ * Removed support for user manual PDF format (see doc/pdf).
Version 2.19.2 08 Dec 2008
Modified: cedar-backup2/trunk/MANIFEST.in
===================================================================
--- cedar-backup2/trunk/MANIFEST.in 2009-03-29 18:56:50 UTC (rev 935)
+++ cedar-backup2/trunk/MANIFEST.in 2009-03-29 19:35:00 UTC (rev 936)
@@ -19,7 +19,6 @@
include manual/Makefile
include manual/src/*.xml
include manual/src/images/html/*.png
-include manual/src/images/pdf/*.png
include doc/cback.1
include doc/cback-span.1
include doc/cback.conf.sample
Added: cedar-backup2/trunk/doc/pdf/Makefile
===================================================================
--- cedar-backup2/trunk/doc/pdf/Makefile (rev 0)
+++ cedar-backup2/trunk/doc/pdf/Makefile 2009-03-29 19:35:00 UTC (rev 936)
@@ -0,0 +1,167 @@
+# vim: set ft=make:
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+#
+# C E D A R
+# S O L U T I O N S "Software done right."
+# S O F T W A R E
+#
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+#
+# Author : Kenneth J. Pronovici <pro...@ie...>
+# Language : Make
+# Project : Cedar Backup, release 2
+# Revision : $Id$
+# Purpose : Makefile used for building the Cedar Backup manual.
+#
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+
+########
+# Notes
+########
+
+# This Makefile was originally taken from the Subversion project's book
+# (http://svnbook.red-bean.com/) and has been substantially modifed (almost
+# completely rewritten) for use with Cedar Backup.
+#
+# The original Makefile was (c) 2000-2004 CollabNet (see CREDITS).
+#
+# Note that by default, we only build HTML, HTML chunk and PDF output,
+# not Postscript.
+
+
+########################
+# Programs and commands
+########################
+
+CP = cp
+FOP = ../util/docbook/run-fop.sh
+INSTALL = install
+MKDIR = mkdir
+RM = rm
+XSLTPROC = xsltproc
+W3M = w3m
+
+
+############
+# Locations
+############
+
+INSTALL_DIR = ../doc/manual
+
+XSL_DIR = ../util/docbook
+STYLES_CSS = $(XSL_DIR)/styles.css
+XSL_FO = $(XSL_DIR)/fo-stylesheet.xsl
+XSL_HTML = $(XSL_DIR)/html-stylesheet.xsl
+XSL_CHUNK = $(XSL_DIR)/chunk-stylesheet.xsl
+
+MANUAL_TOP = .
+MANUAL_DIR = $(MANUAL_TOP)/src
+MANUAL_CHUNK_DIR = $(MANUAL_DIR)/chunk
+MANUAL_HTML_TARGET = $(MANUAL_DIR)/manual.html
+MANUAL_CHUNK_TARGET = $(MANUAL_CHUNK_DIR)/index.html # index.html is created last
+MANUAL_PDF_TARGET = $(MANUAL_DIR)/manual.pdf
+MANUAL_PS_TARGET = $(MANUAL_DIR)/manual.ps
+MANUAL_FO_TARGET = $(MANUAL_DIR)/manual.fo
+MANUAL_TEXT_TARGET = $(MANUAL_DIR)/manual.txt
+MANUAL_XML_SOURCE = $(MANUAL_DIR)/book.xml
+MANUAL_ALL_SOURCE = $(MANUAL_DIR)/*.xml
+MANUAL_HTML_IMAGES = $(MANUAL_DIR)/images/html/*.png
+MANUAL_PDF_IMAGES = $(MANUAL_DIR)/images/pdf/*.png
+
+
+#############################################
+# High-level targets and simple dependencies
+#############################################
+
+all: manual-html manual-chunk
+
+install: install-manual-pdf install-manual-html install-manual-chunk install-manual-text
+
+clean:
+ -@$(RM) -f $(MANUAL_HTML_TARGET) $(MANUAL_FO_TARGET) $(MANUAL_TEXT_TARGET)
+ -@$(RM) -rf $(MANUAL_CHUNK_DIR)
+ -@$(RM) -f $(MANUAL_PDF_TARGET) $(MANUAL_PS_TARGET)
+
+$(INSTALL_DIR):
+ $(INSTALL) --mode=775 -d $(INSTALL_DIR)
+
+
+###################
+# HTML build rules
+###################
+
+manual-html: $(MANUAL_HTML_TARGET)
+
+$(MANUAL_HTML_TARGET): $(MANUAL_ALL_SOURCE)
+ $(XSLTPROC) --output $(MANUAL_HTML_TARGET) $(XSL_HTML) $(MANUAL_XML_SOURCE)
+
+install-manual-html: $(MANUAL_HTML_TARGET) $(INSTALL_DIR)
+ $(INSTALL) --mode=775 -d $(INSTALL_DIR)/images
+ $(INSTALL) --mode=664 $(MANUAL_HTML_TARGET) $(INSTALL_DIR)
+ $(INSTALL) --mode=664 $(STYLES_CSS) $(INSTALL_DIR)
+ $(INSTALL) --mode=664 $(MANUAL_HTML_IMAGES) $(INSTALL_DIR)/images
+
+
+###########################
+# Chunked HTML build rules
+##################*########
+
+manual-chunk: $(MANUAL_CHUNK_TARGET)
+
+# The trailing slash in the $(XSLTPROC) command is essential, so that xsltproc will output pages to the dir
+$(MANUAL_CHUNK_TARGET): $(MANUAL_ALL_SOURCE) $(STYLES_CSS) $(MANUAL_HTML_IMAGES)
+ $(MKDIR) -p $(MANUAL_CHUNK_DIR)
+ $(MKDIR) -p $(MANUAL_CHUNK_DIR)/images
+ $(XSLTPROC) --output $(MANUAL_CHUNK_DIR)/ $(XSL_CHUNK) $(MANUAL_XML_SOURCE)
+ $(CP) $(STYLES_CSS) $(MANUAL_CHUNK_DIR)
+ $(CP) $(MANUAL_HTML_IMAGES) $(MANUAL_CHUNK_DIR)/images
+
+install-manual-chunk: $(MANUAL_CHUNK_TARGET) $(INSTALL_DIR)
+ $(INSTALL) --mode=775 -d $(INSTALL_DIR)/images
+ $(INSTALL) --mode=664 $(MANUAL_CHUNK_DIR)/*.html $(INSTALL_DIR)
+ $(INSTALL) --mode=664 $(STYLES_CSS) $(INSTALL_DIR)
+ $(INSTALL) --mode=664 $(MANUAL_HTML_IMAGES) $(INSTALL_DIR)/images
+
+
+###################
+# Text build rules
+###################
+
+manual-text: manual-html $(MANUAL_TEXT_TARGET)
+
+$(MANUAL_TEXT_TARGET):
+ $(W3M) -dump -cols 80 $(MANUAL_HTML_TARGET) > $(MANUAL_TEXT_TARGET)
+
+install-manual-text: $(MANUAL_TEXT_TARGET) $(INSTALL_DIR)
+ $(INSTALL) --mode=664 $(MANUAL_TEXT_TARGET) $(INSTALL_DIR)
+
+
+##################
+# PDF build rules
+##################
+
+manual-pdf: $(MANUAL_PDF_TARGET)
+
+$(MANUAL_PDF_TARGET): $(MANUAL_ALL_SOURCE) $(MANUAL_PDF_IMAGES)
+ # For some reason --output conflicts with admon.graphics.path ?!?!
+ # $(XSLTPROC) --output $(MANUAL_FO_TARGET) $(XSL_FO) $(MANUAL_XML_SOURCE)
+ $(XSLTPROC) $(XSL_FO) $(MANUAL_XML_SOURCE) > $(MANUAL_FO_TARGET)
+ $(FOP) $(MANUAL_TOP) -fo $(MANUAL_FO_TARGET) -pdf $(MANUAL_PDF_TARGET)
+
+install-manual-pdf: $(MANUAL_PDF_TARGET) $(INSTALL_DIR)
+ $(INSTALL) --mode=664 $(MANUAL_PDF_TARGET) $(INSTALL_DIR)
+
+
+#########################
+# Postscript build rules
+#########################
+
+manual-ps: $(MANUAL_PS_TARGET)
+
+$(MANUAL_PS_TARGET): $(MANUAL_ALL_SOURCE) $(MANUAL_PDF_IMAGES)
+ $(XSLTPROC) --output $(MANUAL_FO_TARGET) $(XSL_FO) $(MANUAL_XML_SOURCE)
+ $(FOP) $(MANUAL_TOP) -fo $(MANUAL_FO_TARGET) -ps $(MANUAL_PS_TARGET)
+
+install-manual-ps: $(MANUAL_PS_TARGET) $(INSTALL_DIR)
+ $(INSTALL) --mode=664 $(MANUAL_PS_TARGET) $(INSTALL_DIR)
+
Property changes on: cedar-backup2/trunk/doc/pdf/Makefile
___________________________________________________________________
Added: svn:keywords
+ Id
Added: cedar-backup2/trunk/doc/pdf/README.txt
===================================================================
--- cedar-backup2/trunk/doc/pdf/README.txt (rev 0)
+++ cedar-backup2/trunk/doc/pdf/README.txt 2009-03-29 19:35:00 UTC (rev 936)
@@ -0,0 +1,19 @@
+Through Cedar Backup 2.19.2, I supported the user manual in the PDF format.
+Unfortunately, the toolchain changed in early 2009 (when Debian lenny was
+released) and I can no longer build the PDF format properly. The existing
+FOP-based solution simply blows up, and the other alternatives I looked at
+(such as 'xmlto pdf') don't work, either.
+
+As a result, I am removing support for the PDF documentation. I don't
+think it is heavily utilized, and I can't find the time or motivation right
+now to fight with the toolchain. To be honest, I'm quite frustrated that
+somthing which has worked fine for so long is completely broken now. Maybe
+I'm just missing something completely obvious, but I can't find it.
+
+This directory contains the various files that I orphaned when removing PDF
+support. If/when I get PDFs working properly again, this stuff will either
+be integrated back into the codebase proper, or will get removed completely
+(since it will be obsolete).
+
+KJP
+29 Mar 2009
Copied: cedar-backup2/trunk/doc/pdf/fo-stylesheet.xsl (from rev 933, cedar-backup2/trunk/util/docbook/fo-stylesheet.xsl)
===================================================================
--- cedar-backup2/trunk/doc/pdf/fo-stylesheet.xsl (rev 0)
+++ cedar-backup2/trunk/doc/pdf/fo-stylesheet.xsl 2009-03-29 19:35:00 UTC (rev 936)
@@ -0,0 +1,58 @@
+<!--
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+#
+# C E D A R
+# S O L U T I O N S "Software done right."
+# S O F T W A R E
+#
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+#
+# Author : Kenneth J. Pronovici <pro...@ie...>
+# Language : XSLT
+# Project : Cedar Backup, release 2
+# Revision : $Id$
+# Purpose : XSLT stylesheet for FO Docbook output (used for PDF and Postscript)
+#
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+-->
+<!--
+ This stylesheet was originally taken from the Subversion project's book
+ (http://svnbook.red-bean.com/) and has been modifed for use with Cedar
+ Backup.
+
+ The original stylesheet was (c) 2000-2004 CollabNet (see CREDITS).
+
+ The major change that I have made to the stylesheet is to use Debian's
+ catalog system for locating the official Docbook stylesheet, rather than
+ expecting it to be part of the source tree. If your operating system does
+ not have a working catalog system, then specify an absolute path to a valid
+ stylesheet below where fo/docbook.xsl is imported (or switch to a real
+ operating system).
+
+ I have also modified the stylesheet to include "admonition" graphics (for
+ warning, tip, note, etc.) in the PDF output, and I now use my own greyscale
+ images for PDF and Postscript (taken from nwalsh's originals and modified)
+ rather than converting the color images from O'Reilly.
+-->
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version='1.0'>
+
+ <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/fo/docbook.xsl"/>
+
+ <xsl:param name="fop.extensions" select="1"/>
+ <xsl:param name="variablelist.as.blocks" select="1"/>
+
+ <xsl:param name="hyphenate">false</xsl:param>
+
+ <xsl:param name="paper.type" select="'USletter'"/>
+
+ <xsl:param name="page.margin.bottom" select="'0.8in'"/>
+ <xsl:param name="page.margin.top" select="'0.8in'"/>
+
+ <xsl:param name="footer.rule" select="0"/>
+
+ <xsl:param name="admon.graphics" select="1"/>
+ <xsl:param name="admon.graphics.extension" select="'.png'"/>
+ <xsl:param name="admon.graphics.path">images/pdf/</xsl:param>
+
+</xsl:stylesheet>
Property changes on: cedar-backup2/trunk/doc/pdf/fo-stylesheet.xsl
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:mergeinfo
+
Property changes on: cedar-backup2/trunk/doc/pdf/images
___________________________________________________________________
Added: svn:mergeinfo
+
Copied: cedar-backup2/trunk/doc/pdf/run-fop.sh (from rev 933, cedar-backup2/trunk/util/docbook/run-fop.sh)
===================================================================
--- cedar-backup2/trunk/doc/pdf/run-fop.sh (rev 0)
+++ cedar-backup2/trunk/doc/pdf/run-fop.sh 2009-03-29 19:35:00 UTC (rev 936)
@@ -0,0 +1,76 @@
+#!/bin/sh
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+#
+# C E D A R
+# S O L U T I O N S "Software done right."
+# S O F T W A R E
+#
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+#
+# Author : Kenneth J. Pronovici <pro...@ie...>
+# Language : Bourne Shell
+# Project : Cedar Backup, release 2
+# Revision : $Id$
+# Purpose : Wrapper script to run the fop program for PDF and Postscript
+#
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+# This script was originally taken from the Subversion project's book
+# (http://svnbook.red-bean.com/). I have not made any modifications to
+# the script for use with Cedar Backup.
+#
+# The original script was (c) 2000-2004 CollabNet (see CREDITS).
+
+# run-fop: Attempt to run fop (or fop.sh), fail articulately otherwise.
+#
+# Usage: run-fop.sh BOOK_TOP [FOP_ARGS...]
+#
+# This script is meant to be invoked by subversion/doc/book/Makefile.
+# The first argument is the top of the book directory, that is,
+# subversion/doc/book (*not* subversion/doc/book/book), and the
+# remaining arguments are passed along to `fop'.
+
+BOOK_TOP=${1}
+
+if [ "${BOOK_TOP}X" = X ]; then
+ echo "usage: run-fop.sh BOOK_TOP [FOP_ARGS...]"
+ exit 1
+fi
+
+shift
+
+# The fop of last resort.
+DESPERATION_FOP_DIR=${BOOK_TOP}/tools/fop
+DESPERATION_FOP_PGM=${DESPERATION_FOP_DIR}/fop.sh
+
+if [ "${FOP_HOME}X" = X ]; then
+ FOP_HOME=${DESPERATION_FOP_DIR}
+ export FOP_HOME
+fi
+
+
+# Unfortunately, 'which' seems to behave slightly differently on every
+# platform, making it unreliable for shell scripts. Just do it inline
+# instead. Also, note that we search for `fop' or `fop.sh', since
+# different systems seem to package it different ways.
+SAVED_IFS=${IFS}
+IFS=:
+for dir in ${PATH}; do
+ if [ -x ${dir}/fop -a "${FOP_PGM}X" = X ]; then
+ FOP_PGM=${dir}/fop
+ elif [ -x ${dir}/fop.sh -a "${FOP_PGM}X" = X ]; then
+ FOP_PGM=${dir}/fop.sh
+ fi
+done
+IFS=${SAVED_IFS}
+
+if [ "${FOP_PGM}X" = X ]; then
+ FOP_PGM=${DESPERATION_FOP_PGM}
+fi
+
+echo "(Using '${FOP_PGM}' for FOP)"
+
+# FOP is noisy on stdout, and -q doesn't seem to help, so stuff that
+# garbage into /dev/null.
+${FOP_PGM} $@ | grep -v "\[ERROR\]"
+#${FOP_PGM} $@
+
Property changes on: cedar-backup2/trunk/doc/pdf/run-fop.sh
___________________________________________________________________
Added: svn:executable
+ *
Added: svn:keywords
+ Id
Added: svn:mergeinfo
+
Modified: cedar-backup2/trunk/manual/Makefile
===================================================================
--- cedar-backup2/trunk/manual/Makefile 2009-03-29 18:56:50 UTC (rev 935)
+++ cedar-backup2/trunk/manual/Makefile 2009-03-29 19:35:00 UTC (rev 936)
@@ -24,9 +24,6 @@
# completely rewritten) for use with Cedar Backup.
#
# The original Makefile was (c) 2000-2004 CollabNet (see CREDITS).
-#
-# Note that by default, we only build HTML, HTML chunk and PDF output,
-# not Postscript.
########################
@@ -34,7 +31,6 @@
########################
CP = cp
-FOP = ../util/docbook/run-fop.sh
INSTALL = install
MKDIR = mkdir
RM = rm
@@ -59,14 +55,10 @@
MANUAL_CHUNK_DIR = $(MANUAL_DIR)/chunk
MANUAL_HTML_TARGET = $(MANUAL_DIR)/manual.html
MANUAL_CHUNK_TARGET = $(MANUAL_CHUNK_DIR)/index.html # index.html is created last
-MANUAL_PDF_TARGET = $(MANUAL_DIR)/manual.pdf
-MANUAL_PS_TARGET = $(MANUAL_DIR)/manual.ps
-MANUAL_FO_TARGET = $(MANUAL_DIR)/manual.fo
MANUAL_TEXT_TARGET = $(MANUAL_DIR)/manual.txt
MANUAL_XML_SOURCE = $(MANUAL_DIR)/book.xml
MANUAL_ALL_SOURCE = $(MANUAL_DIR)/*.xml
MANUAL_HTML_IMAGES = $(MANUAL_DIR)/images/html/*.png
-MANUAL_PDF_IMAGES = $(MANUAL_DIR)/images/pdf/*.png
#############################################
@@ -75,12 +67,11 @@
all: manual-html manual-chunk
-install: install-manual-pdf install-manual-html install-manual-chunk install-manual-text
+install: install-manual-html install-manual-chunk install-manual-text
clean:
-@$(RM) -f $(MANUAL_HTML_TARGET) $(MANUAL_FO_TARGET) $(MANUAL_TEXT_TARGET)
-@$(RM) -rf $(MANUAL_CHUNK_DIR)
- -@$(RM) -f $(MANUAL_PDF_TARGET) $(MANUAL_PS_TARGET)
$(INSTALL_DIR):
$(INSTALL) --mode=775 -d $(INSTALL_DIR)
@@ -136,32 +127,3 @@
$(INSTALL) --mode=664 $(MANUAL_TEXT_TARGET) $(INSTALL_DIR)
-##################
-# PDF build rules
-##################
-
-manual-pdf: $(MANUAL_PDF_TARGET)
-
-$(MANUAL_PDF_TARGET): $(MANUAL_ALL_SOURCE) $(MANUAL_PDF_IMAGES)
- # For some reason --output conflicts with admon.graphics.path ?!?!
- # $(XSLTPROC) --output $(MANUAL_FO_TARGET) $(XSL_FO) $(MANUAL_XML_SOURCE)
- $(XSLTPROC) $(XSL_FO) $(MANUAL_XML_SOURCE) > $(MANUAL_FO_TARGET)
- $(FOP) $(MANUAL_TOP) -fo $(MANUAL_FO_TARGET) -pdf $(MANUAL_PDF_TARGET)
-
-install-manual-pdf: $(MANUAL_PDF_TARGET) $(INSTALL_DIR)
- $(INSTALL) --mode=664 $(MANUAL_PDF_TARGET) $(INSTALL_DIR)
-
-
-#########################
-# Postscript build rules
-#########################
-
-manual-ps: $(MANUAL_PS_TARGET)
-
-$(MANUAL_PS_TARGET): $(MANUAL_ALL_SOURCE) $(MANUAL_PDF_IMAGES)
- $(XSLTPROC) --output $(MANUAL_FO_TARGET) $(XSL_FO) $(MANUAL_XML_SOURCE)
- $(FOP) $(MANUAL_TOP) -fo $(MANUAL_FO_TARGET) -ps $(MANUAL_PS_TARGET)
-
-install-manual-ps: $(MANUAL_PS_TARGET) $(INSTALL_DIR)
- $(INSTALL) --mode=664 $(MANUAL_PS_TARGET) $(INSTALL_DIR)
-
Deleted: cedar-backup2/trunk/util/docbook/fo-stylesheet.xsl
===================================================================
--- cedar-backup2/trunk/util/docbook/fo-stylesheet.xsl 2009-03-29 18:56:50 UTC (rev 935)
+++ cedar-backup2/trunk/util/docbook/fo-stylesheet.xsl 2009-03-29 19:35:00 UTC (rev 936)
@@ -1,58 +0,0 @@
-<!--
-# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
-#
-# C E D A R
-# S O L U T I O N S "Software done right."
-# S O F T W A R E
-#
-# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
-#
-# Author : Kenneth J. Pronovici <pro...@ie...>
-# Language : XSLT
-# Project : Cedar Backup, release 2
-# Revision : $Id$
-# Purpose : XSLT stylesheet for FO Docbook output (used for PDF and Postscript)
-#
-# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
--->
-<!--
- This stylesheet was originally taken from the Subversion project's book
- (http://svnbook.red-bean.com/) and has been modifed for use with Cedar
- Backup.
-
- The original stylesheet was (c) 2000-2004 CollabNet (see CREDITS).
-
- The major change that I have made to the stylesheet is to use Debian's
- catalog system for locating the official Docbook stylesheet, rather than
- expecting it to be part of the source tree. If your operating system does
- not have a working catalog system, then specify an absolute path to a valid
- stylesheet below where fo/docbook.xsl is imported (or switch to a real
- operating system).
-
- I have also modified the stylesheet to include "admonition" graphics (for
- warning, tip, note, etc.) in the PDF output, and I now use my own greyscale
- images for PDF and Postscript (taken from nwalsh's originals and modified)
- rather than converting the color images from O'Reilly.
--->
-
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version='1.0'>
-
- <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/fo/docbook.xsl"/>
-
- <xsl:param name="fop.extensions" select="1"/>
- <xsl:param name="variablelist.as.blocks" select="1"/>
-
- <xsl:param name="hyphenate">false</xsl:param>
-
- <xsl:param name="paper.type" select="'USletter'"/>
-
- <xsl:param name="page.margin.bottom" select="'0.8in'"/>
- <xsl:param name="page.margin.top" select="'0.8in'"/>
-
- <xsl:param name="footer.rule" select="0"/>
-
- <xsl:param name="admon.graphics" select="1"/>
- <xsl:param name="admon.graphics.extension" select="'.png'"/>
- <xsl:param name="admon.graphics.path">images/pdf/</xsl:param>
-
-</xsl:stylesheet>
Deleted: cedar-backup2/trunk/util/docbook/run-fop.sh
===================================================================
--- cedar-backup2/trunk/util/docbook/run-fop.sh 2009-03-29 18:56:50 UTC (rev 935)
+++ cedar-backup2/trunk/util/docbook/run-fop.sh 2009-03-29 19:35:00 UTC (rev 936)
@@ -1,76 +0,0 @@
-#!/bin/sh
-# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
-#
-# C E D A R
-# S O L U T I O N S "Software done right."
-# S O F T W A R E
-#
-# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
-#
-# Author : Kenneth J. Pronovici <pro...@ie...>
-# Language : Bourne Shell
-# Project : Cedar Backup, release 2
-# Revision : $Id$
-# Purpose : Wrapper script to run the fop program for PDF and Postscript
-#
-# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
-# This script was originally taken from the Subversion project's book
-# (http://svnbook.red-bean.com/). I have not made any modifications to
-# the script for use with Cedar Backup.
-#
-# The original script was (c) 2000-2004 CollabNet (see CREDITS).
-
-# run-fop: Attempt to run fop (or fop.sh), fail articulately otherwise.
-#
-# Usage: run-fop.sh BOOK_TOP [FOP_ARGS...]
-#
-# This script is meant to be invoked by subversion/doc/book/Makefile.
-# The first argument is the top of the book directory, that is,
-# subversion/doc/book (*not* subversion/doc/book/book), and the
-# remaining arguments are passed along to `fop'.
-
-BOOK_TOP=${1}
-
-if [ "${BOOK_TOP}X" = X ]; then
- echo "usage: run-fop.sh BOOK_TOP [FOP_ARGS...]"
- exit 1
-fi
-
-shift
-
-# The fop of last resort.
-DESPERATION_FOP_DIR=${BOOK_TOP}/tools/fop
-DESPERATION_FOP_PGM=${DESPERATION_FOP_DIR}/fop.sh
-
-if [ "${FOP_HOME}X" = X ]; then
- FOP_HOME=${DESPERATION_FOP_DIR}
- export FOP_HOME
-fi
-
-
-# Unfortunately, 'which' seems to behave slightly differently on every
-# platform, making it unreliable for shell scripts. Just do it inline
-# instead. Also, note that we search for `fop' or `fop.sh', since
-# different systems seem to package it different ways.
-SAVED_IFS=${IFS}
-IFS=:
-for dir in ${PATH}; do
- if [ -x ${dir}/fop -a "${FOP_PGM}X" = X ]; then
- FOP_PGM=${dir}/fop
- elif [ -x ${dir}/fop.sh -a "${FOP_PGM}X" = X ]; then
- FOP_PGM=${dir}/fop.sh
- fi
-done
-IFS=${SAVED_IFS}
-
-if [ "${FOP_PGM}X" = X ]; then
- FOP_PGM=${DESPERATION_FOP_PGM}
-fi
-
-echo "(Using '${FOP_PGM}' for FOP)"
-
-# FOP is noisy on stdout, and -q doesn't seem to help, so stuff that
-# garbage into /dev/null.
-${FOP_PGM} $@ | grep -v "\[ERROR\]"
-#${FOP_PGM} $@
-
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2009-03-29 18:56:54
|
Revision: 935
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=935&view=rev
Author: pronovic
Date: 2009-03-29 18:56:50 +0000 (Sun, 29 Mar 2009)
Log Message:
-----------
Fix minor epydoc typos, mostly in @sort directives.
Modified Paths:
--------------
cedar-backup2/trunk/CedarBackup2/cli.py
cedar-backup2/trunk/CedarBackup2/config.py
cedar-backup2/trunk/CedarBackup2/extend/subversion.py
cedar-backup2/trunk/CedarBackup2/filesystem.py
cedar-backup2/trunk/CedarBackup2/peer.py
cedar-backup2/trunk/CedarBackup2/util.py
cedar-backup2/trunk/Changelog
Modified: cedar-backup2/trunk/CedarBackup2/cli.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/cli.py 2009-03-29 18:55:58 UTC (rev 934)
+++ cedar-backup2/trunk/CedarBackup2/cli.py 2009-03-29 18:56:50 UTC (rev 935)
@@ -300,8 +300,6 @@
type (_ActionItem before _ManagedActionItem) and then by index within type.
@cvar SORT_ORDER: Defines a sort order to order properly between types.
-
- @sort: __init__, index, module, function
"""
SORT_ORDER = 0
Modified: cedar-backup2/trunk/CedarBackup2/config.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/config.py 2009-03-29 18:55:58 UTC (rev 934)
+++ cedar-backup2/trunk/CedarBackup2/config.py 2009-03-29 18:56:50 UTC (rev 935)
@@ -430,7 +430,7 @@
- Any action name must be a non-empty string matching C{ACTION_NAME_REGEX}
- @sort: __init__, __repr__, __str__, __cmp__, action, command, before, after
+ @sort: __init__, __repr__, __str__, __cmp__, beforeList, afterList
"""
def __init__(self, beforeList=None, afterList=None):
Modified: cedar-backup2/trunk/CedarBackup2/extend/subversion.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/extend/subversion.py 2009-03-29 18:55:58 UTC (rev 934)
+++ cedar-backup2/trunk/CedarBackup2/extend/subversion.py 2009-03-29 18:56:50 UTC (rev 935)
@@ -124,7 +124,7 @@
Relative exclusions are allowed here. However, there is no configured
ignore file, because repository dir backups are not recursive.
- @sort: __init__, __repr__, __str__, __cmp__, directoryPat, collectMode, compressMode
+ @sort: __init__, __repr__, __str__, __cmp__, directoryPath, collectMode, compressMode
"""
def __init__(self, repositoryType=None, directoryPath=None, collectMode=None, compressMode=None,
Modified: cedar-backup2/trunk/CedarBackup2/filesystem.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/filesystem.py 2009-03-29 18:55:58 UTC (rev 934)
+++ cedar-backup2/trunk/CedarBackup2/filesystem.py 2009-03-29 18:56:50 UTC (rev 935)
@@ -115,7 +115,7 @@
because the operating system never reports a file as a soft link.
@sort: __init__, addFile, addDir, addDirContents, removeFiles, removeDirs,
- removeLinks, removeMatch, removeInvalid, normalize, validate,
+ removeLinks, removeMatch, removeInvalid, normalize,
excludeFiles, excludeDirs, excludeLinks, excludePaths,
excludePatterns, excludeBasenamePatterns, ignoreFile
"""
Modified: cedar-backup2/trunk/CedarBackup2/peer.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/peer.py 2009-03-29 18:55:58 UTC (rev 934)
+++ cedar-backup2/trunk/CedarBackup2/peer.py 2009-03-29 18:56:50 UTC (rev 935)
@@ -39,7 +39,7 @@
"""
Provides backup peer-related objects and utility functions.
-@sort: LocalPeer, Remote Peer
+@sort: LocalPeer, RemotePeer
@var DEF_COLLECT_INDICATOR: Name of the default collect indicator file.
@var DEF_STAGE_INDICATOR: Name of the default stage indicator file.
Modified: cedar-backup2/trunk/CedarBackup2/util.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/util.py 2009-03-29 18:55:58 UTC (rev 934)
+++ cedar-backup2/trunk/CedarBackup2/util.py 2009-03-29 18:56:50 UTC (rev 935)
@@ -42,7 +42,7 @@
"""
Provides general-purpose utilities.
-@sort: AbsolutePathList, ObjectTypeList, RestrictedValueList, RegexMatchList,
+@sort: AbsolutePathList, ObjectTypeList, RestrictedContentList, RegexMatchList,
RegexList, _Vertex, DirectedGraph, PathResolverSingleton,
sortDict, convertSize, getUidGid, changeOwnership, splitCommandLine,
resolveCommand, executeCommand, calculateFileAge, encodePath, nullDevice,
@@ -955,7 +955,7 @@
Diagnostic information is information that is useful to get from users for
debugging purposes. I'm consolidating it all here into one object.
- @sort: __init__, __repr__, __str__, __cmp__
+ @sort: __init__, __repr__, __str__
"""
def __init__(self):
Modified: cedar-backup2/trunk/Changelog
===================================================================
--- cedar-backup2/trunk/Changelog 2009-03-29 18:55:58 UTC (rev 934)
+++ cedar-backup2/trunk/Changelog 2009-03-29 18:56:50 UTC (rev 935)
@@ -1,3 +1,7 @@
+Version 2.19.3 unreleased
+
+ * Fix minor epydoc typos, mostly in @sort directives.
+
Version 2.19.2 08 Dec 2008
* Fix cback-span problem when writing store indicators.
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2009-03-29 18:56:09
|
Revision: 934
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=934&view=rev
Author: pronovic
Date: 2009-03-29 18:55:58 +0000 (Sun, 29 Mar 2009)
Log Message:
-----------
Switch to Python2.4 by default, since lenny doesn't ship with 2.3
Modified Paths:
--------------
cedar-backup2/trunk/Makefile
Modified: cedar-backup2/trunk/Makefile
===================================================================
--- cedar-backup2/trunk/Makefile 2008-12-09 02:07:06 UTC (rev 933)
+++ cedar-backup2/trunk/Makefile 2009-03-29 18:55:58 UTC (rev 934)
@@ -35,8 +35,8 @@
EPYDOC = epydoc
FIND = find
MKDIR = mkdir
-PYCHECKER = PYTHONVER=2.3 pychecker
-PYTHON = python2.3
+PYCHECKER = PYTHONVER=2.4 pychecker
+PYTHON = python2.4
RM = rm
SETUP = $(PYTHON) ./setup.py
SUDO = sudo
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2008-12-09 02:22:02
|
Revision: 931
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=931&view=rev
Author: pronovic
Date: 2008-12-09 01:39:47 +0000 (Tue, 09 Dec 2008)
Log Message:
-----------
Change span to use its own function to write store indicator files
Modified Paths:
--------------
cedar-backup2/trunk/CedarBackup2/tools/span.py
cedar-backup2/trunk/Changelog
Modified: cedar-backup2/trunk/CedarBackup2/tools/span.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/tools/span.py 2008-11-15 18:16:57 UTC (rev 930)
+++ cedar-backup2/trunk/CedarBackup2/tools/span.py 2008-12-09 01:39:47 UTC (rev 931)
@@ -8,7 +8,7 @@
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#
-# Copyright (c) 2007 Kenneth J. Pronovici.
+# Copyright (c) 2007-2008 Kenneth J. Pronovici.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
@@ -71,7 +71,7 @@
from CedarBackup2.cli import DEFAULT_CONFIG, DEFAULT_LOGFILE, DEFAULT_OWNERSHIP, DEFAULT_MODE
from CedarBackup2.actions.constants import STORE_INDICATOR
from CedarBackup2.actions.util import createWriter
-from CedarBackup2.actions.store import consistencyCheck, writeStoreIndicator
+from CedarBackup2.actions.store import consistencyCheck, writeIndicatorFile
from CedarBackup2.actions.util import findDailyDirs
from CedarBackup2.knapsack import firstFit, bestFit, worstFit, alternateFit
@@ -413,7 +413,7 @@
_getReturn("Please replace the disc in your backup device.\nPress return when ready.")
print "==="
- writeStoreIndicator(config, dailyDirs)
+ _writeStoreIndicator(config, dailyDirs)
print ""
print "Completed writing all discs."
@@ -448,6 +448,23 @@
return (results, fileList)
+##################################
+# _writeStoreIndicator() function
+##################################
+
+def _writeStoreIndicator(config, dailyDirs):
+ """
+ Writes a store indicator file into daily directories.
+
+ @param config: Config object.
+ @param dailyDirs: List of daily directories
+ """
+ for dailyDir in dailyDirs:
+ writeIndicatorFile(dailyDir, STORE_INDICATOR,
+ config.options.backupUser,
+ config.options.backupGroup)
+
+
########################
# _getWriter() function
########################
Modified: cedar-backup2/trunk/Changelog
===================================================================
--- cedar-backup2/trunk/Changelog 2008-11-15 18:16:57 UTC (rev 930)
+++ cedar-backup2/trunk/Changelog 2008-12-09 01:39:47 UTC (rev 931)
@@ -1,3 +1,7 @@
+Version 2.19.2 unreleased
+
+ *
+
Version 2.19.1 15 Nov 2008
* Fix bug when logging strange filenames.
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2008-12-09 02:07:13
|
Revision: 933
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=933&view=rev
Author: pronovic
Date: 2008-12-09 02:07:06 +0000 (Tue, 09 Dec 2008)
Log Message:
-----------
Release 2.19.2
Modified Paths:
--------------
cedar-backup2/trunk/CedarBackup2/release.py
cedar-backup2/trunk/Changelog
Modified: cedar-backup2/trunk/CedarBackup2/release.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/release.py 2008-12-09 02:03:44 UTC (rev 932)
+++ cedar-backup2/trunk/CedarBackup2/release.py 2008-12-09 02:07:06 UTC (rev 933)
@@ -34,7 +34,7 @@
AUTHOR = "Kenneth J. Pronovici"
EMAIL = "pro...@ie..."
COPYRIGHT = "2004-2008"
-VERSION = "2.19.1"
-DATE = "15 Nov 2008"
+VERSION = "2.19.2"
+DATE = "08 Dec 2008"
URL = "http://cedar-backup.sourceforge.net/"
Modified: cedar-backup2/trunk/Changelog
===================================================================
--- cedar-backup2/trunk/Changelog 2008-12-09 02:03:44 UTC (rev 932)
+++ cedar-backup2/trunk/Changelog 2008-12-09 02:07:06 UTC (rev 933)
@@ -1,4 +1,4 @@
-Version 2.19.2 unreleased
+Version 2.19.2 08 Dec 2008
* Fix cback-span problem when writing store indicators.
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2008-12-09 02:03:48
|
Revision: 932
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=932&view=rev
Author: pronovic
Date: 2008-12-09 02:03:44 +0000 (Tue, 09 Dec 2008)
Log Message:
-----------
Change span to use its own function to write store indicator files
Modified Paths:
--------------
cedar-backup2/trunk/Changelog
Modified: cedar-backup2/trunk/Changelog
===================================================================
--- cedar-backup2/trunk/Changelog 2008-12-09 01:39:47 UTC (rev 931)
+++ cedar-backup2/trunk/Changelog 2008-12-09 02:03:44 UTC (rev 932)
@@ -1,6 +1,6 @@
Version 2.19.2 unreleased
- *
+ * Fix cback-span problem when writing store indicators.
Version 2.19.1 15 Nov 2008
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2008-11-15 18:17:04
|
Revision: 930
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=930&view=rev
Author: pronovic
Date: 2008-11-15 18:16:57 +0000 (Sat, 15 Nov 2008)
Log Message:
-----------
Tagging the 2.19.1 release of Cedar Backup.
Added Paths:
-----------
cedar-backup2/tags/CEDAR_BACKUP2_V2.19.1/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2008-11-15 18:16:11
|
Revision: 929
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=929&view=rev
Author: pronovic
Date: 2008-11-15 18:16:08 +0000 (Sat, 15 Nov 2008)
Log Message:
-----------
Release 2.19.1
Modified Paths:
--------------
cedar-backup2/trunk/CedarBackup2/release.py
cedar-backup2/trunk/Changelog
Modified: cedar-backup2/trunk/CedarBackup2/release.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/release.py 2008-11-15 18:12:43 UTC (rev 928)
+++ cedar-backup2/trunk/CedarBackup2/release.py 2008-11-15 18:16:08 UTC (rev 929)
@@ -34,7 +34,7 @@
AUTHOR = "Kenneth J. Pronovici"
EMAIL = "pro...@ie..."
COPYRIGHT = "2004-2008"
-VERSION = "2.19.0"
-DATE = "05 Oct 2008"
+VERSION = "2.19.1"
+DATE = "15 Nov 2008"
URL = "http://cedar-backup.sourceforge.net/"
Modified: cedar-backup2/trunk/Changelog
===================================================================
--- cedar-backup2/trunk/Changelog 2008-11-15 18:12:43 UTC (rev 928)
+++ cedar-backup2/trunk/Changelog 2008-11-15 18:16:08 UTC (rev 929)
@@ -1,4 +1,4 @@
-Version 2.19.1 unreleased
+Version 2.19.1 15 Nov 2008
* Fix bug when logging strange filenames.
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pro...@us...> - 2008-11-15 18:12:53
|
Revision: 928
http://cedar-backup.svn.sourceforge.net/cedar-backup/?rev=928&view=rev
Author: pronovic
Date: 2008-11-15 18:12:43 +0000 (Sat, 15 Nov 2008)
Log Message:
-----------
Fix bug when logging strange filenames.
Modified Paths:
--------------
cedar-backup2/trunk/CedarBackup2/filesystem.py
cedar-backup2/trunk/Changelog
Modified: cedar-backup2/trunk/CedarBackup2/filesystem.py
===================================================================
--- cedar-backup2/trunk/CedarBackup2/filesystem.py 2008-10-06 02:39:43 UTC (rev 927)
+++ cedar-backup2/trunk/CedarBackup2/filesystem.py 2008-11-15 18:12:43 UTC (rev 928)
@@ -304,10 +304,12 @@
logger.debug("Path [%s] is excluded based on excludePaths." % path)
return 0
for pattern in self.excludePatterns:
+ pattern = encodePath(pattern) # use same encoding as filenames
if re.compile(r"^%s$" % pattern).match(path): # safe to assume all are valid due to RegexList
logger.debug("Path [%s] is excluded based on pattern [%s]." % (path, pattern))
return 0
for pattern in self.excludeBasenamePatterns: # safe to assume all are valid due to RegexList
+ pattern = encodePath(pattern) # use same encoding as filenames
if re.compile(r"^%s$" % pattern).match(os.path.basename(path)):
logger.debug("Path [%s] is excluded based on basename pattern [%s]." % (path, pattern))
return 0
@@ -347,10 +349,12 @@
logger.debug("Path [%s] is excluded based on excludePaths." % path)
return 0
for pattern in self.excludePatterns: # safe to assume all are valid due to RegexList
+ pattern = encodePath(pattern) # use same encoding as filenames
if re.compile(r"^%s$" % pattern).match(path):
logger.debug("Path [%s] is excluded based on pattern [%s]." % (path, pattern))
return 0
for pattern in self.excludeBasenamePatterns: # safe to assume all are valid due to RegexList
+ pattern = encodePath(pattern) # use same encoding as filenames
if re.compile(r"^%s$" % pattern).match(os.path.basename(path)):
logger.debug("Path [%s] is excluded based on basename pattern [%s]." % (path, pattern))
return 0
@@ -460,10 +464,12 @@
logger.debug("Path [%s] is excluded based on excludePaths." % path)
return added
for pattern in self.excludePatterns: # safe to assume all are valid due to RegexList
+ pattern = encodePath(pattern) # use same encoding as filenames
if re.compile(r"^%s$" % pattern).match(path):
logger.debug("Path [%s] is excluded based on pattern [%s]." % (path, pattern))
return added
for pattern in self.excludeBasenamePatterns: # safe to assume all are valid due to RegexList
+ pattern = encodePath(pattern) # use same encoding as filenames
if re.compile(r"^%s$" % pattern).match(os.path.basename(path)):
logger.debug("Path [%s] is excluded based on basename pattern [%s]." % (path, pattern))
return added
@@ -537,6 +543,7 @@
removed += 1
else:
try:
+ pattern = encodePath(pattern) # use same encoding as filenames
compiled = re.compile(pattern)
except re.error:
raise ValueError("Pattern is not a valid regular expression.")
@@ -579,6 +586,7 @@
removed += 1
else:
try:
+ pattern = encodePath(pattern) # use same encoding as filenames
compiled = re.compile(pattern)
except re.error:
raise ValueError("Pattern is not a valid regular expression.")
@@ -619,6 +627,7 @@
removed += 1
else:
try:
+ pattern = encodePath(pattern) # use same encoding as filenames
compiled = re.compile(pattern)
except re.error:
raise ValueError("Pattern is not a valid regular expression.")
@@ -653,6 +662,7 @@
@raise ValueError: If the passed-in pattern is not a valid regular expression.
"""
try:
+ pattern = encodePath(pattern) # use same encoding as filenames
compiled = re.compile(pattern)
except re.error:
raise ValueError("Pattern is not a valid regular expression.")
Modified: cedar-backup2/trunk/Changelog
===================================================================
--- cedar-backup2/trunk/Changelog 2008-10-06 02:39:43 UTC (rev 927)
+++ cedar-backup2/trunk/Changelog 2008-11-15 18:12:43 UTC (rev 928)
@@ -1,3 +1,7 @@
+Version 2.19.1 unreleased
+
+ * Fix bug when logging strange filenames.
+
Version 2.19.0 05 Oct 2008
* Fix a few typos in the CREDITS file.
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|