Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
# even though the makefile used to generate the options doesn't use it):
if (mk.vars['WRITE_OPTIONS_FILE'] != '1' or mk.vars['OPTIONS_FILE'] == ''):
if mk.vars['FORMAT_NEEDS_OPTION_VALUES_FOR_CONDITIONS'] != '0':
usedOpts = []
for c in mk.conditions.values():
usedOpts += [x.option.name for x in c.exprs]
for o in mk.options:
if ((o not in mk.__usageTracker.map) and (o not in usedOpts)
and (o not in vars_to_keep)):
toKill.append((mk.options, mk.__vars_opt, o))
else:
for o in mk.options:
if o not in mk.__usageTracker.map and o not in vars_to_keep:
toKill.append((mk.options, mk.__vars_opt, o))
for v in mk.cond_vars:
if v not in mk.__usageTracker.map and v not in vars_to_keep:
toKill.append((mk.cond_vars, mk.__vars_opt, v))
for v in mk.make_vars:
if v not in mk.__usageTracker.map and v not in vars_to_keep:
toKill.append((mk.make_vars, mk.vars, v))
if config.verbose:
sys.stdout.write(': %i of %i\n' % (len(toKill),
len(mk.options)+len(mk.cond_vars)+len(mk.make_vars)))
for dict1, dict2, key in toKill:
del dict1[key]
del dict2[key]
return len(toKill) > 0
def flattenConfig(cfg):
# make copy of mk.vars, we'll need to restore it later:
orig_vars = mk.vars
mk.vars = copy.deepcopy(mk.vars)
orig_targets = mk.targets
mk.targets = copy.deepcopy(mk.targets)
orig_make_vars = mk.make_vars
mk.make_vars = {}
orig_cond_vars = mk.cond_vars
mk.cond_vars = {}
if 'configs' in mk.vars: del mk.vars['configs']
for t in mk.targets.values():
if 'configs' in t.vars: del t.vars['configs']
# add option values in this configuration:
for opt in cfg:
mk.vars[opt] = cfg[opt]
# add conditional variables:
for cv in orig_cond_vars.values():
mk.vars[cv.name] = ''
for val in cv.values:
ok = 1
for e in val.cond.exprs:
if e.option.values == None and e.option.default != e.value:
if use == '0':
toDel.append(t)
else:
orig_targets[t].vars['configs'][__cfg2str(cfg)] = tar.vars
for t in toDel:
del mk.targets[t]
finalize.replaceEscapeSequences()
myvars = mk.vars
mytgt = mk.targets
mk.vars = orig_vars
mk.targets = orig_targets
mk.cond_vars = orig_cond_vars
mk.make_vars = orig_make_vars
return (myvars, mytgt)
def flattenConfig(cfg):
# make copy of mk.vars, we'll need to restore it later:
orig_vars = mk.vars
mk.vars = copy.deepcopy(mk.vars)
orig_targets = mk.targets
mk.targets = copy.deepcopy(mk.targets)
orig_make_vars = mk.make_vars
mk.make_vars = {}
orig_cond_vars = mk.cond_vars
mk.cond_vars = {}
if 'configs' in mk.vars: del mk.vars['configs']
for t in mk.targets.values():
if 'configs' in t.vars: del t.vars['configs']
# add option values in this configuration:
for opt in cfg:
mk.vars[opt] = cfg[opt]
# add conditional variables:
for cv in orig_cond_vars.values():
mk.vars[cv.name] = ''
for val in cv.values:
ok = 1
for e in val.cond.exprs:
if len(cv.values) == 0:
toDel.append((c, ''))
else:
val = cv.values[0].value
if val != '': continue
purge = 1
for v in cv.values[1:]:
if v.value != val:
purge = 0
break
if purge: toDel.append((c,val))
if config.verbose:
sys.stdout.write(': %i of %i\n' % (len(toDel), len(mk.cond_vars)))
for c, val in toDel:
t = mk.cond_vars[c].target
del mk.cond_vars[c]
mk.setVar(c, val, target=t)
return len(toDel) > 0
def eliminateDuplicateCondVars():
"""Removes duplicate conditional variables, i.e. if there are two
cond. variables with exactly same definition, remove them."""
duplicates = []
if config.verbose:
sys.stdout.write('eliminating duplicate conditional variables')
sys.stdout.flush()
before = len(mk.cond_vars)
keys = mk.cond_vars.keys()
lng = len(keys)
for c1 in range(0,lng):
for c2 in range(c1+1,lng):
cv1 = mk.cond_vars[keys[c1]]
cv2 = mk.cond_vars[keys[c2]]
if cv1.equals(cv2):
duplicates.append((cv1, cv2))
break
def commonPrefix(s1, s2):
prefix = ''
for i in range(0, min(len(s1), len(s2))):
if s1[i] != s2[i]: break
prefix += s1[i]
return prefix.rstrip('_')
checkConditionsSupport(e)
if 'scope' in e.props:
raise ReaderError(e, "conditional variable can't have nondefault scope ('%s')" % e.props['scope'])
if target != None:
if (not overwrite) and (name in target.vars):
return
name = '__%s_%s' % (target.id.replace('-','_').replace('.','_').replace('/','_'),
basename)
mk.setVar(e.props['var'], '$(%s)' % name,
eval=0, target=target,
add_dict=add_dict, hints=hints)
if cond == None:
raise ReaderError(e, "malformed condition: '%s': must be constant expression, equality test or conjunction of them" % condstr)
if name in mk.cond_vars:
if not overwrite:
return
var = mk.cond_vars[name]
else:
var = mk.CondVar(name, target)
mk.addCondVar(var, hints)
if doEval:
value = mk.evalExpr(e_if.value,target=target,add_dict=add_dict)
else:
value = e_if.value
var.add(cond, value)
finally:
errors.popCtx()
if noValueSet:
isCond = 0
for c in mk.cond_vars:
cv = mk.cond_vars[c]
if len(cv.values) == 0:
toDel.append((c, ''))
else:
val = cv.values[0].value
if val != '': continue
purge = 1
for v in cv.values[1:]:
if v.value != val:
purge = 0
break
if purge: toDel.append((c,val))
if config.verbose:
sys.stdout.write(': %i of %i\n' % (len(toDel), len(mk.cond_vars)))
for c, val in toDel:
t = mk.cond_vars[c].target
del mk.cond_vars[c]
mk.setVar(c, val, target=t)
return len(toDel) > 0