[Checkins] SVN: zc.recipe.deployment/trunk/src/zc/recipe/deployment/ backward compatibility fix: do not force prefix to be absolute

Fred Drake cvs-admin at zope.org
Thu Mar 21 15:47:08 UTC 2013


Log message for revision 130149:
  backward compatibility fix: do not force prefix to be absolute

Changed:
  U   zc.recipe.deployment/trunk/src/zc/recipe/deployment/__init__.py
  U   zc.recipe.deployment/trunk/src/zc/recipe/deployment/paths.txt

-=-
Modified: zc.recipe.deployment/trunk/src/zc/recipe/deployment/__init__.py
===================================================================
--- zc.recipe.deployment/trunk/src/zc/recipe/deployment/__init__.py	2013-03-21 14:56:12 UTC (rev 130148)
+++ zc.recipe.deployment/trunk/src/zc/recipe/deployment/__init__.py	2013-03-21 15:47:08 UTC (rev 130149)
@@ -45,8 +45,10 @@
             options['name'] = name
 
         name = options['name']
-        prefix = os.path.join('/', options.get('prefix') or '/')
-        options['prefix'] = prefix
+        prefix = options.get('prefix')
+        if not prefix:
+            prefix = '/'
+            options['prefix'] = prefix
 
         etc_prefix = options.get('etc-prefix')
         if not etc_prefix:
@@ -87,13 +89,13 @@
                     deprecated('log', 'log-directory')
                 else:
                     deprecated('log')
-            log = options.get('log') or 'var/log'
+            log = os.path.join(prefix, options.get('log') or 'var/log')
             if options.get('run'):
                 if options.get('run-directory'):
                     deprecated('run', 'run-directory')
                 else:
                     deprecated('run')
-            run = options.get('run') or 'var/run'
+            run = os.path.join(prefix, options.get('run') or 'var/run')
 
         def directory(key, base, *tail):
             key += '-directory'
@@ -101,7 +103,7 @@
             if setting:
                 path = os.path.join(prefix, setting)
             else:
-                path = os.path.join(prefix, base, *tail)
+                path = os.path.join(base, *tail)
             options[key] = path
 
         options['etc-prefix'] = etc

Modified: zc.recipe.deployment/trunk/src/zc/recipe/deployment/paths.txt
===================================================================
--- zc.recipe.deployment/trunk/src/zc/recipe/deployment/paths.txt	2013-03-21 14:56:12 UTC (rev 130148)
+++ zc.recipe.deployment/trunk/src/zc/recipe/deployment/paths.txt	2013-03-21 15:47:08 UTC (rev 130149)
@@ -91,6 +91,20 @@
      'run-directory': '/usr/local/var/run/myapp',
      'var-prefix': '/usr/local/var'}
 
+    >>> compute({"prefix": "myspot"})
+    {'cache-directory': 'myspot/var/cache/myapp',
+     'crontab-directory': 'myspot/etc/cron.d',
+     'etc-directory': 'myspot/etc/myapp',
+     'etc-prefix': 'myspot/etc',
+     'lib-directory': 'myspot/var/lib/myapp',
+     'log-directory': 'myspot/var/log/myapp',
+     'logrotate-directory': 'myspot/etc/logrotate.d',
+     'name': 'myapp',
+     'prefix': 'myspot',
+     'rc-directory': 'myspot/etc/init.d',
+     'run-directory': 'myspot/var/run/myapp',
+     'var-prefix': 'myspot/var'}
+
 The ``etc``, ``log`` and ``run`` settings cause the "roots" of the
 corresponding directories to be placed in the specified locations; the
 deployment-specific directory is still used.  Note that these are
@@ -151,6 +165,24 @@
     zc.recipe.deployment WARNING
       using deprecated 'run' setting
 
+The same applies for the ``etc-prefix`` and ``var-prefix`` settings:
+
+    >>> compute({"etc-prefix": "antsy",
+    ...          "prefix": "/usr/local",
+    ...          "var-prefix": "bigdisk"})
+    {'cache-directory': '/usr/local/bigdisk/cache/myapp',
+     'crontab-directory': '/usr/local/antsy/cron.d',
+     'etc-directory': '/usr/local/antsy/myapp',
+     'etc-prefix': '/usr/local/antsy',
+     'lib-directory': '/usr/local/bigdisk/lib/myapp',
+     'log-directory': '/usr/local/bigdisk/log/myapp',
+     'logrotate-directory': '/usr/local/antsy/logrotate.d',
+     'name': 'myapp',
+     'prefix': '/usr/local',
+     'rc-directory': '/usr/local/antsy/init.d',
+     'run-directory': '/usr/local/bigdisk/run/myapp',
+     'var-prefix': '/usr/local/bigdisk'}
+
 Output options ending in '-directory' can be specified directly; these
 values will be retained instead of being clobbered by computed values:
 
@@ -185,25 +217,25 @@
       found deprecated 'log' setting (used 'log-directory' instead)
 
 
-Paths are absolute
+Handling of prefix
 ------------------
 
-Output paths (option names ending in '-directory') are absolute, even if
-``prefix`` is relative:
+Output paths based on prefix are relative paths if ``prefix`` is
+relative:
 
     >>> compute({"prefix": "my/prefix"})
-    {'cache-directory': '/my/prefix/var/cache/myapp',
-     'crontab-directory': '/my/prefix/etc/cron.d',
-     'etc-directory': '/my/prefix/etc/myapp',
-     'etc-prefix': '/my/prefix/etc',
-     'lib-directory': '/my/prefix/var/lib/myapp',
-     'log-directory': '/my/prefix/var/log/myapp',
-     'logrotate-directory': '/my/prefix/etc/logrotate.d',
+    {'cache-directory': 'my/prefix/var/cache/myapp',
+     'crontab-directory': 'my/prefix/etc/cron.d',
+     'etc-directory': 'my/prefix/etc/myapp',
+     'etc-prefix': 'my/prefix/etc',
+     'lib-directory': 'my/prefix/var/lib/myapp',
+     'log-directory': 'my/prefix/var/log/myapp',
+     'logrotate-directory': 'my/prefix/etc/logrotate.d',
      'name': 'myapp',
-     'prefix': '/my/prefix',
-     'rc-directory': '/my/prefix/etc/init.d',
-     'run-directory': '/my/prefix/var/run/myapp',
-     'var-prefix': '/my/prefix/var'}
+     'prefix': 'my/prefix',
+     'rc-directory': 'my/prefix/etc/init.d',
+     'run-directory': 'my/prefix/var/run/myapp',
+     'var-prefix': 'my/prefix/var'}
 
     >>> compute({"crontab-directory": "my-crontabs",
     ...          "etc": "antsy",
@@ -211,20 +243,20 @@
     ...          "logrotate-directory": "my-logrotations",
     ...          "prefix": "my/prefix",
     ...          "rc-directory": "my-rcs"})
-    {'cache-directory': '/my/prefix/var/cache/myapp',
-     'crontab-directory': '/my/prefix/my-crontabs',
+    {'cache-directory': 'my/prefix/var/cache/myapp',
+     'crontab-directory': 'my/prefix/my-crontabs',
      'etc': 'antsy',
-     'etc-directory': '/my/prefix/antsy/myapp',
-     'etc-prefix': '/my/prefix/antsy',
-     'lib-directory': '/my/prefix/var/lib/myapp',
+     'etc-directory': 'my/prefix/antsy/myapp',
+     'etc-prefix': 'my/prefix/antsy',
+     'lib-directory': 'my/prefix/var/lib/myapp',
      'log': 'var/someplace',
-     'log-directory': '/my/prefix/var/someplace/myapp',
-     'logrotate-directory': '/my/prefix/my-logrotations',
+     'log-directory': 'my/prefix/var/someplace/myapp',
+     'logrotate-directory': 'my/prefix/my-logrotations',
      'name': 'myapp',
-     'prefix': '/my/prefix',
-     'rc-directory': '/my/prefix/my-rcs',
-     'run-directory': '/my/prefix/var/run/myapp',
-     'var-prefix': '/my/prefix/var'}
+     'prefix': 'my/prefix',
+     'rc-directory': 'my/prefix/my-rcs',
+     'run-directory': 'my/prefix/var/run/myapp',
+     'var-prefix': 'my/prefix/var'}
     zc.recipe.deployment WARNING
       using deprecated 'etc' setting
     zc.recipe.deployment WARNING



More information about the checkins mailing list