commit-gnue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gnue] r9667 - trunk/gnue-common/src/setup


From: reinhard
Subject: [gnue] r9667 - trunk/gnue-common/src/setup
Date: Wed, 6 Jun 2007 02:35:00 -0500 (CDT)

Author: reinhard
Date: 2007-06-06 02:34:59 -0500 (Wed, 06 Jun 2007)
New Revision: 9667

Modified:
   trunk/gnue-common/src/setup/GSetup.py
Log:
Allow *.dist_template processing for all tools.


Modified: trunk/gnue-common/src/setup/GSetup.py
===================================================================
--- trunk/gnue-common/src/setup/GSetup.py       2007-06-06 06:54:31 UTC (rev 
9666)
+++ trunk/gnue-common/src/setup/GSetup.py       2007-06-06 07:34:59 UTC (rev 
9667)
@@ -1,4 +1,4 @@
-# GNU Enterprise Common Library - Installation Helper For Packages
+# GNU Enterprise Common Library - Installation Helper For Tools
 #
 # This file is part of GNU Enterprise.
 #
@@ -26,6 +26,7 @@
 import os
 from distutils import log
 from distutils.core import setup
+from distutils.filelist import FileList
 import distutils.command.sdist
 import distutils.command.build
 import distutils.command.install
@@ -73,10 +74,62 @@
     _setup.do_build_files ('sdist')
     distutils.command.sdist.sdist.run (self)
 
+  def prune_file_list(self):
+    distutils.command.sdist.sdist.prune_file_list(self)
+    self.filelist.exclude_pattern('*.dist_template', anchor=0)
+
   def make_release_tree (self, base_dir, files):
     distutils.command.sdist.sdist.make_release_tree (self, base_dir, files)
+    self.process_templates(base_dir)
     _setup.do_build_svnrev (os.path.join(base_dir, 'src', 'svnrev.py'))
 
+  def process_templates(self, target):
+
+    # Build list of files to be processed.
+    filelist = FileList()
+    if filelist.include_pattern('*.dist_template', anchor=0) == 0:
+        # Nothing to do.
+        return
+
+    # FIXME: For compatibility with old packages not yet using the version
+    # module. Change to unconditional import in gnue-common 0.8.
+    try:
+        from src import version
+    except:
+        return
+
+    # List of keywords to replace.
+    keywords = {
+            ':PACKAGE:': self.distribution.get_name(),
+            ':TITLE:': self.distribution.get_description(),
+            ':VERSION:': self.distribution.get_version(),
+            ':MAJOR:': str(version.major),
+            ':MINOR:': str(version.minor),
+            ':PHASE:': str(version.phase),
+            ':BUILD:': str(version.build),
+            ':SVN:': str(version.svn)}
+    # Hack for version numbering schemes that are limited to x.y.z.
+    if version.phase == 'final':
+        keywords[':FINAL:'] = str(version.build)
+    else:
+        keywords[':FINAL:'] = '0'
+
+    for src in filelist.files:
+        dst = os.path.join(target, src[:-14])
+        args = (src, dst, keywords)
+        self.execute(self.__process_template, args,
+                "generating %s from %s" % (dst, src))
+
+  def __process_template(self, src, dst, keywords):
+    infile = open(src, 'r')
+    content = infile.read()
+    infile.close()
+    for keyword, value in keywords.iteritems():
+        content = content.replace(keyword, value)
+    outfile = open(dst, 'w')
+    outfile.write(content)
+    outfile.close()
+
 # =============================================================================
 # build: if done from SVN, build files to be installed first
 # =============================================================================





reply via email to

[Prev in Thread] Current Thread [Next in Thread]