Some more compatibility in compat15.py

This commit is contained in:
Thomas Nagy 2014-09-30 23:53:52 +02:00
parent 9a0a7ca562
commit f748a01907
No known key found for this signature in database
GPG Key ID: 67A565EDFDF90E64
1 changed files with 61 additions and 11 deletions

View File

@ -39,8 +39,43 @@ Build.BuildContext.new_task_gen = Build.BuildContext.__call__
Build.BuildContext.is_install = 0 Build.BuildContext.is_install = 0
Node.Node.relpath_gen = Node.Node.path_from Node.Node.relpath_gen = Node.Node.path_from
Utils.pproc = Utils.subprocess
Utils.get_term_cols = Logs.get_term_cols
def cmd_output(cmd, **kw):
silent = False
if 'silent' in kw:
silent = kw['silent']
del(kw['silent'])
if 'e' in kw:
tmp = kw['e']
del(kw['e'])
kw['env'] = tmp
kw['shell'] = isinstance(cmd, str)
kw['stdout'] = Utils.subprocess.PIPE
if silent:
kw['stderr'] = Utils.subprocess.PIPE
try:
p = Utils.subprocess.Popen(cmd, **kw)
output = p.communicate()[0]
except OSError, e:
raise ValueError(str(e))
if p.returncode:
if not silent:
msg = "command execution failed: %s -> %r" % (cmd, str(output))
raise ValueError(msg)
output = ''
return output
Utils.cmd_output = cmd_output
def name_to_obj(self, s, env=None): def name_to_obj(self, s, env=None):
Logs.warn('compat: change "name_to_obj(name, env)" by "get_tgen_by_name(name)"') if Logs.verbose:
Logs.warn('compat: change "name_to_obj(name, env)" by "get_tgen_by_name(name)"')
return self.get_tgen_by_name(s) return self.get_tgen_by_name(s)
Build.BuildContext.name_to_obj = name_to_obj Build.BuildContext.name_to_obj = name_to_obj
@ -66,7 +101,8 @@ def retrieve(self, name, fromenv=None):
self.prepare_env(env) self.prepare_env(env)
self.all_envs[name] = env self.all_envs[name] = env
else: else:
if fromenv: Logs.warn("The environment %s may have been configured already" % name) if fromenv:
Logs.warn("The environment %s may have been configured already" % name)
return env return env
Configure.ConfigurationContext.retrieve = retrieve Configure.ConfigurationContext.retrieve = retrieve
@ -99,25 +135,35 @@ eld = Context.load_tool
def load_tool(*k, **kw): def load_tool(*k, **kw):
ret = eld(*k, **kw) ret = eld(*k, **kw)
if 'set_options' in ret.__dict__: if 'set_options' in ret.__dict__:
Logs.warn('compat: rename "set_options" to options') if Logs.verbose:
Logs.warn('compat: rename "set_options" to options')
ret.options = ret.set_options ret.options = ret.set_options
if 'detect' in ret.__dict__: if 'detect' in ret.__dict__:
Logs.warn('compat: rename "detect" to "configure"') if Logs.verbose:
Logs.warn('compat: rename "detect" to "configure"')
ret.configure = ret.detect ret.configure = ret.detect
return ret return ret
Context.load_tool = load_tool Context.load_tool = load_tool
def get_curdir(self):
return self.path.abspath()
Context.Context.curdir = property(get_curdir, Utils.nada)
rev = Context.load_module rev = Context.load_module
def load_module(path, encoding=None): def load_module(path, encoding=None):
ret = rev(path, encoding) ret = rev(path, encoding)
if 'set_options' in ret.__dict__: if 'set_options' in ret.__dict__:
Logs.warn('compat: rename "set_options" to "options" (%r)' % path) if Logs.verbose:
Logs.warn('compat: rename "set_options" to "options" (%r)' % path)
ret.options = ret.set_options ret.options = ret.set_options
if 'srcdir' in ret.__dict__: if 'srcdir' in ret.__dict__:
Logs.warn('compat: rename "srcdir" to "top" (%r)' % path) if Logs.verbose:
Logs.warn('compat: rename "srcdir" to "top" (%r)' % path)
ret.top = ret.srcdir ret.top = ret.srcdir
if 'blddir' in ret.__dict__: if 'blddir' in ret.__dict__:
Logs.warn('compat: rename "blddir" to "out" (%r)' % path) if Logs.verbose:
Logs.warn('compat: rename "blddir" to "out" (%r)' % path)
ret.out = ret.blddir ret.out = ret.blddir
return ret return ret
Context.load_module = load_module Context.load_module = load_module
@ -126,15 +172,18 @@ old_post = TaskGen.task_gen.post
def post(self): def post(self):
self.features = self.to_list(self.features) self.features = self.to_list(self.features)
if 'cc' in self.features: if 'cc' in self.features:
Logs.warn('compat: the feature cc does not exist anymore (use "c")') if Logs.verbose:
Logs.warn('compat: the feature cc does not exist anymore (use "c")')
self.features.remove('cc') self.features.remove('cc')
self.features.append('c') self.features.append('c')
if 'cstaticlib' in self.features: if 'cstaticlib' in self.features:
Logs.warn('compat: the feature cstaticlib does not exist anymore (use "cstlib" or "cxxstlib")') if Logs.verbose:
Logs.warn('compat: the feature cstaticlib does not exist anymore (use "cstlib" or "cxxstlib")')
self.features.remove('cstaticlib') self.features.remove('cstaticlib')
self.features.append(('cxx' in self.features) and 'cxxstlib' or 'cstlib') self.features.append(('cxx' in self.features) and 'cxxstlib' or 'cstlib')
if getattr(self, 'ccflags', None): if getattr(self, 'ccflags', None):
Logs.warn('compat: "ccflags" was renamed to "cflags"') if Logs.verbose:
Logs.warn('compat: "ccflags" was renamed to "cflags"')
self.cflags = self.ccflags self.cflags = self.ccflags
return old_post(self) return old_post(self)
TaskGen.task_gen.post = post TaskGen.task_gen.post = post
@ -165,7 +214,8 @@ def apply_uselib_local(self):
seen = set([]) seen = set([])
tmp = Utils.deque(names) # consume a copy of the list of names tmp = Utils.deque(names) # consume a copy of the list of names
if tmp: if tmp:
Logs.warn('compat: "uselib_local" is deprecated, replace by "use"') if Logs.verbose:
Logs.warn('compat: "uselib_local" is deprecated, replace by "use"')
while tmp: while tmp:
lib_name = tmp.popleft() lib_name = tmp.popleft()
# visit dependencies only once # visit dependencies only once