build: use Logs.error() and Logs.info() instead of print()
authorAndrew Tridgell <tridge@samba.org>
Fri, 9 Apr 2010 11:12:02 +0000 (21:12 +1000)
committerAndrew Tridgell <tridge@samba.org>
Fri, 9 Apr 2010 11:12:09 +0000 (21:12 +1000)
this gives appropriate colors on output, and ensures it works with
compiler output

buildtools/wafsamba/samba_autoconf.py
buildtools/wafsamba/samba_bundled.py
buildtools/wafsamba/samba_deps.py
buildtools/wafsamba/samba_dist.py
buildtools/wafsamba/samba_utils.py
buildtools/wafsamba/wafsamba.py

index 4731a4e13d5db52b9946442796dd4aafc6fd04ac..fcd900dec13c28d632e57434b3bd0a4b62ed2a60 100644 (file)
@@ -1,6 +1,6 @@
 # a waf tool to add autoconf-like macros to the configure section
 
-import Build, os, Options, preproc
+import Build, os, Options, preproc, Logs
 import string
 from Configure import conf
 from samba_utils import *
@@ -456,7 +456,7 @@ def CHECK_LIB(conf, libs, mandatory=False, empty_decl=True):
 
         if not conf.check(lib=lib, uselib_store=lib, ccflags=ccflags, ldflags=ldflags):
             if mandatory:
-                print("Mandatory library '%s' not found for functions '%s'" % (lib, list))
+                Logs.error("Mandatory library '%s' not found for functions '%s'" % (lib, list))
                 sys.exit(1)
             if empty_decl:
                 # if it isn't a mandatory library, then remove it from dependency lists
@@ -511,7 +511,7 @@ def CHECK_FUNCS_IN(conf, list, library, mandatory=False, checklibc=False,
     for lib in liblist[:]:
         if not GET_TARGET_TYPE(conf, lib) == 'SYSLIB':
             if mandatory:
-                print("Mandatory library '%s' not found for functions '%s'" % (lib, list))
+                Logs.error("Mandatory library '%s' not found for functions '%s'" % (lib, list))
                 sys.exit(1)
             # if it isn't a mandatory library, then remove it from dependency lists
             liblist.remove(lib)
index e0a8e54eaec3b05d75649e79569f610fb0f9ceab..bab4143a9acee470a8f53a39d3e476ee858fb0c0 100644 (file)
@@ -1,6 +1,7 @@
 # functions to support bundled libraries
 
 from Configure import conf
+import Logs
 from samba_utils import *
 
 def BUNDLED_NAME(bld, name, bundled_extension):
@@ -78,7 +79,7 @@ def CHECK_BUNDLED_SYSTEM(conf, libname, minversion='0.0.0',
             f = 'FOUND_SYSTEM_%s' % syslib
             if not f in conf.env:
                 if 'NONE' in conf.env.BUNDLED_LIBS or '!'+libname in conf.env.BUNDLED_LIBS:
-                    print('ERROR: Use of system library %s depends on missing system library %s' % (libname, syslib))
+                    Logs.error('ERROR: Use of system library %s depends on missing system library %s' % (libname, syslib))
                     sys.exit(1)
                 conf.env[found] = False
                 return False
@@ -103,6 +104,6 @@ def CHECK_BUNDLED_SYSTEM(conf, libname, minversion='0.0.0',
             return True
     conf.env[found] = False
     if 'NONE' in conf.env.BUNDLED_LIBS or '!'+libname in conf.env.BUNDLED_LIBS:
-        print('ERROR: System library %s of version %s not found, and bundling disabled' % (libname, minversion))
+        Logs.error('ERROR: System library %s of version %s not found, and bundling disabled' % (libname, minversion))
         sys.exit(1)
     return False
index 452120d657f72c6f16b0d8b4cd4016c880bf61f7..232ed34ae6072e521be1f6ed8ea6862271f42666 100644 (file)
@@ -1,6 +1,6 @@
 # Samba automatic dependency handling and project rules
 
-import Build, os, re, Environment
+import Build, os, re, Environment, Logs
 from samba_utils import *
 from samba_autoconf import *
 from samba_bundled import BUILTIN_LIBRARY
@@ -17,7 +17,7 @@ def TARGET_ALIAS(bld, target, alias):
     '''define an alias for a target name'''
     cache = LOCAL_CACHE(bld, 'TARGET_ALIAS')
     if alias in cache:
-        print("Target alias %s already set to %s : newalias %s" % (alias, cache[alias], target))
+        Logs.error("Target alias %s already set to %s : newalias %s" % (alias, cache[alias], target))
         sys.exit(1)
     cache[alias] = target
 Build.BuildContext.TARGET_ALIAS = TARGET_ALIAS
@@ -258,7 +258,7 @@ def check_duplicate_sources(bld, tgt_list):
                 if s['dep'] == s2['dep']: continue
                 common = s['src'].intersection(s2['src'])
                 if common.difference(seen):
-                    print("Target %s has duplicate source files in %s and %s : %s" % (t.sname,
+                    Logs.error("Target %s has duplicate source files in %s and %s : %s" % (t.sname,
                                                                                       s['dep'], s2['dep'],
                                                                                       common))
                     seen = seen.union(common)
@@ -279,7 +279,7 @@ def check_orpaned_targets(bld, tgt_list):
         type = target_dict[t.sname]
         if not type in ['BINARY', 'LIBRARY', 'MODULE', 'ET', 'PYTHON']:
             if re.search('^PIDL_', t.sname) is None:
-                print("Target %s of type %s is unused by any other target" % (t.sname, type))
+                Logs.warn("Target %s of type %s is unused by any other target" % (t.sname, type))
 
 
 def show_final_deps(bld, tgt_list):
@@ -328,7 +328,7 @@ def build_direct_deps(bld, tgt_list):
             d = EXPAND_ALIAS(bld, d)
             if d == t.sname: continue
             if not d in targets:
-                print("Unknown dependency %s in %s" % (d, t.sname))
+                Logs.error("Unknown dependency %s in %s" % (d, t.sname))
                 sys.exit(1)
             if targets[d] in [ 'EMPTY', 'DISABLED' ]:
                 continue
@@ -343,7 +343,8 @@ def build_direct_deps(bld, tgt_list):
                 continue
             t2 = bld.name_to_obj(d, bld.env)
             if t2 is None:
-                print("no task %s type %s" % (d, targets[d]))
+                Logs.error("no task %s of type %s in %s" % (d, targets[d], t.sname))
+                sys.exit(1)
             if t2.samba_type in [ 'LIBRARY', 'MODULE' ]:
                 t.direct_libs.add(d)
             elif t2.samba_type in [ 'SUBSYSTEM', 'ASN1', 'PYTHON' ]:
@@ -665,7 +666,7 @@ def calculate_final_deps(bld, tgt_list, loops):
     while reduce_objects(bld, tgt_list):
         count += 1
         if count > 100:
-            print("WARNING: Unable to remove all inter-target object duplicates")
+            Logs.warn("WARNING: Unable to remove all inter-target object duplicates")
             break
     debug('deps: Object reduction took %u iterations', count)
 
@@ -822,7 +823,7 @@ def check_project_rules(bld):
             continue
         t = bld.name_to_obj(tgt, bld.env)
         if t is None:
-            print("Target %s of type %s has no task generator" % (tgt, type))
+            Logs.error("Target %s of type %s has no task generator" % (tgt, type))
             sys.exit(1)
         tgt_list.append(t)
 
@@ -831,7 +832,7 @@ def check_project_rules(bld):
     if load_samba_deps(bld, tgt_list):
         return
 
-    print("Checking project rules ...")
+    Logs.info("Checking project rules ...")
 
     debug('deps: project rules checking started')
 
@@ -850,7 +851,7 @@ def check_project_rules(bld):
     #check_orpaned_targets(bld, tgt_list)
 
     if not check_duplicate_sources(bld, tgt_list):
-        print("Duplicate sources present - aborting")
+        Logs.error("Duplicate sources present - aborting")
         sys.exit(1)
 
     show_final_deps(bld, tgt_list)
@@ -860,7 +861,7 @@ def check_project_rules(bld):
 
     save_samba_deps(bld, tgt_list)
 
-    print("Project rules pass")
+    Logs.info("Project rules pass")
 
 
 def CHECK_PROJECT_RULES(bld):
index 0fa8dbee032284f157d6afbd0925a6ec084d2dbc..aea45c57706e92fdec014774e2cec83ffa6ffbf6 100644 (file)
@@ -33,7 +33,7 @@ def dist(appname='',version=''):
     srcdir = os.path.normpath(os.path.join(os.path.dirname(Utils.g_module.root_path), Utils.g_module.srcdir))
 
     if not dist_dirs:
-        print('You must use samba_dist.DIST_DIRS() to set which directories to package')
+        Logs.error('You must use samba_dist.DIST_DIRS() to set which directories to package')
         sys.exit(1)
 
     dist_base = '%s-%s' % (appname, version)
@@ -52,7 +52,7 @@ def dist(appname='',version=''):
         try:
             files = Utils.cmd_output(git_cmd).split()
         except:
-            print('git command failed: %s' % ' '.join(git_cmd))
+            Logs.error('git command failed: %s' % ' '.join(git_cmd))
             sys.exit(1)
         for f in files:
             abspath = os.path.join(srcdir, f)
@@ -65,7 +65,7 @@ def dist(appname='',version=''):
 
     tar.close()
 
-    print('Created %s' % dist_name)
+    Logs.info('Created %s' % dist_name)
     return dist_name
 
 
index 1df70fdbf52f822ad38618549bb336f57269c8fd..8016da44bc2205d066973e4eaf2edc680d527839 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, sys, Options, Utils, Task, re, fnmatch
+import Build, os, sys, Options, Utils, Task, re, fnmatch, Logs
 from TaskGen import feature, before
 from Configure import conf
 from Logs import debug
@@ -102,7 +102,7 @@ def LOCAL_CACHE_SET(ctx, cachename, key, value):
 def ASSERT(ctx, expression, msg):
     '''a build assert call'''
     if not expression:
-        sys.stderr.write("ERROR: %s\n" % msg)
+        Logs.error("ERROR: %s\n" % msg)
         raise AssertionError
 Build.BuildContext.ASSERT = ASSERT
 
@@ -220,7 +220,7 @@ def subst_vars_error(string, env):
         if re.match('\$\{\w+\}', v):
             vname = v[2:-1]
             if not vname in env:
-                print("Failed to find variable %s in %s" % (vname, string))
+                Logs.error("Failed to find variable %s in %s" % (vname, string))
                 sys.exit(1)
             v = env[vname]
         out.append(v)
@@ -338,7 +338,7 @@ def EXPAND_VARIABLES(ctx, varstr, vars=None):
     # make sure there is nothing left. Also check for the common
     # typo of $( instead of ${
     if ret.find('${') != -1 or ret.find('$(') != -1:
-        print('Failed to substitute all variables in varstr=%s' % ret)
+        Logs.error('Failed to substitute all variables in varstr=%s' % ret)
         sys.exit(1)
     return ret
 Build.BuildContext.EXPAND_VARIABLES = EXPAND_VARIABLES
@@ -356,7 +356,7 @@ def RUN_COMMAND(cmd,
         return os.WEXITSTATUS(status)
     if os.WIFSIGNALED(status):
         return - os.WTERMSIG(status)
-    print("Unknown exit reason %d for command: %s" (status, cmd))
+    Logs.error("Unknown exit reason %d for command: %s" (status, cmd))
     return -1
 
 
@@ -434,7 +434,7 @@ def RECURSE(ctx, directory):
         return ctx.sub_config(relpath)
     if ctxclass == 'BuildContext':
         return ctx.add_subdirs(relpath)
-    print('Unknown RECURSE context class', ctxclass)
+    Logs.error('Unknown RECURSE context class', ctxclass)
     raise
 Options.Handler.RECURSE = RECURSE
 Build.BuildContext.RECURSE = RECURSE
index 08d3d20137737af143936c974d078c918cbf1a24..e2d8052bc9b67fdaa7e56e6cbe78095dfe1ed433 100644 (file)
@@ -625,8 +625,8 @@ def subst_at_vars(task):
             if not vname in task.env and vname.upper() in task.env:
                 vname = vname.upper()
             if not vname in task.env:
-                print("Unknown substitution %s in %s" % (v, task.name))
-                raise
+                Logs.error("Unknown substitution %s in %s" % (v, task.name))
+                sys.exit(1)
             v = SUBST_VARS_RECURSIVE(task.env[vname], task.env)
             # now we back substitute the allowed pc vars
             for (b, m) in back_sub: