build: nicer progress display for a standard build
authorAndrew Tridgell <tridge@samba.org>
Mon, 29 Mar 2010 05:59:13 +0000 (16:59 +1100)
committerAndrew Tridgell <tridge@samba.org>
Tue, 6 Apr 2010 10:27:15 +0000 (20:27 +1000)
buildtools/wafsamba/samba_errtable.py
buildtools/wafsamba/samba_pidl.py
buildtools/wafsamba/wafsamba.py

index 8f0980220f52e589829ac15cd31e8b476c480a45..b8c60316b3819afc05f5d4fb5541b39c83c282c3 100644 (file)
@@ -16,12 +16,12 @@ def SAMBA_ERRTABLE(bld, name, source):
     out_files.append('%s.c' % bname)
     out_files.append('%s.h' % bname)
 
-    t = bld(rule='${SRC[0].abspath(env)} . ${TGT[0].parent.abspath(env)} default/source4/heimdal_build/compile_et ${SRC[2].abspath(env)} ${TGT[0].bldpath(env)}',
+    t = bld(rule='${SRC[1].abspath(env)} . ${TGT[0].parent.abspath(env)} default/source4/heimdal_build/compile_et ${SRC[0].abspath(env)} ${TGT[0].bldpath(env)}',
             ext_out = '.c',
             before  = 'cc',
             on_results = True,
             shell   = True,
-            source  = ['et_compile_wrapper.sh', 'compile_et', source],
+            source  = [source, 'et_compile_wrapper.sh', 'compile_et'],
             target  = out_files,
             name    = name)
 Build.BuildContext.SAMBA_ERRTABLE = SAMBA_ERRTABLE
index 1c5e1b0aa6347c99e9f19ffffa4e1d76e79ed770..132d0cf6d5465806c8bde0a84d533db6ce15c5da 100644 (file)
@@ -56,7 +56,7 @@ def SAMBA_PIDL(bld, pname, source,
         pidl_src_nodes = bld.pidl_files_cache
 
     # the cd .. is needed because pidl currently is sensitive to the directory it is run in
-    t = bld(rule='cd .. && ${PIDL} ${OPTIONS} --outputdir ${OUTPUTDIR} -- ${SRC[0].abspath(env)}',
+    t = bld(rule='cd .. && ${PIDL} --quiet ${OPTIONS} --outputdir ${OUTPUTDIR} -- ${SRC[0].abspath(env)}',
             ext_out    = '.c',
             before     = 'cc',
             on_results = True,
index 1ab583fcc9d24b807f33da65a9744d3ea5bdd9d5..826760c02eb5b46a69000c4f942bc8a1685a52dd 100644 (file)
@@ -1,7 +1,7 @@
 # a waf tool to add autoconf-like macros to the configure section
 # and for SAMBA_ macros for building libraries, binaries etc
 
-import Build, os, Options, Task, Utils, cc, TaskGen, fnmatch, re, shutil
+import Build, os, Options, Task, Utils, cc, TaskGen, fnmatch, re, shutil, Logs
 from Configure import conf
 from Logs import debug
 from samba_utils import SUBST_VARS_RECURSIVE
@@ -777,22 +777,42 @@ def PKG_CONFIG_FILES(bld, pc_files, vnum=None):
 Build.BuildContext.PKG_CONFIG_FILES = PKG_CONFIG_FILES
 
 
-# override the display of the compilation and linking messages
-def build_progress(self):
-    return "[%d/%d]" % (self.position[0], self.position[1])
 
-def cc_display(self):
-    if Options.options.progress_bar != 0:
-        return Task.Task.display(self)
-    fname = self.inputs[0].bldpath(self.env)
-    if fname[0:3] == '../':
-        fname = fname[3:]
-    return "%s Compiling %s\n" % (build_progress(self), fname)
-Task.TaskBase.classes['cc'].display = cc_display
+#############################################################
+# give a nicer display when building different types of files
+def progress_display(self, msg, fname):
+    col1 = Logs.colors(self.color)
+    col2 = Logs.colors.NORMAL
+    total = self.position[1]
+    n = len(str(total))
+    fs = '[%%%dd/%%%dd] %s %%s%%s%%s\n' % (n, n, msg)
+    return fs % (self.position[0], self.position[1], col1, fname, col2)
 
 def link_display(self):
     if Options.options.progress_bar != 0:
-        return Task.Task.display(self)
+        return Task.Task.old_display(self)
     fname = self.outputs[0].bldpath(self.env)
-    return "%s Linking %s\n" % (build_progress(self), fname)
+    return progress_display(self, 'Linking', fname)
 Task.TaskBase.classes['cc_link'].display = link_display
+
+def samba_display(self):
+    if Options.options.progress_bar != 0:
+        return Task.Task.old_display(self)
+    fname = self.inputs[0].bldpath(self.env)
+    if fname[0:3] == '../':
+        fname = fname[3:]
+    ext_loc = fname.rfind('.')
+    if ext_loc == -1:
+        return Task.Task.old_display(self)
+    ext = fname[ext_loc:]
+
+    ext_map = { '.idl' : 'Compiling IDL',
+                '.et'  : 'Compiling ERRTABLE',
+                '.asn1': 'Compiling ASN1',
+                '.c'   : 'Compiling' }
+    if ext in ext_map:
+        return progress_display(self, ext_map[ext], fname)
+    return Task.Task.old_display(self)
+
+Task.TaskBase.classes['Task'].old_display = Task.TaskBase.classes['Task'].display
+Task.TaskBase.classes['Task'].display = samba_display