mirror of
https://git.rtems.org/rtems-source-builder
synced 2024-10-09 07:15:10 +08:00
Package data into macro, sources from macro and a bug fix.
Package descritions and info and now always added to macros. Hack to get the source in macros into the source this. This needs to move to the package class and will soon. Fix a bug where the old defines was still referenced.
This commit is contained in:
parent
014bfa9572
commit
5c7b1ef1e7
@ -81,17 +81,26 @@ class package:
|
|||||||
|
|
||||||
return s
|
return s
|
||||||
|
|
||||||
|
def _macro_override(self, info, macro):
|
||||||
|
'''See if a macro overrides this setting.'''
|
||||||
|
overridden = self.config.macros.overridden(macro)
|
||||||
|
if overridden:
|
||||||
|
return self.config.macros.expand(macro)
|
||||||
|
return info
|
||||||
|
|
||||||
def directive_extend(self, dir, data):
|
def directive_extend(self, dir, data):
|
||||||
if dir not in self.directives:
|
if dir not in self.directives:
|
||||||
self.directives[dir] = []
|
self.directives[dir] = []
|
||||||
for i in range(0, len(data)):
|
for i in range(0, len(data)):
|
||||||
data[i] = data[i].strip()
|
data[i] = data[i].strip()
|
||||||
self.directives[dir].extend(data)
|
self.directives[dir].extend(data)
|
||||||
|
self.config.macros[dir] = '\n'.join(self.directives[dir])
|
||||||
|
|
||||||
def info_append(self, info, data):
|
def info_append(self, info, data):
|
||||||
if info not in self.infos:
|
if info not in self.infos:
|
||||||
self.infos[info] = []
|
self.infos[info] = []
|
||||||
self.infos[info].append(data)
|
self.infos[info].append(data)
|
||||||
|
self.config.macros[info] = '\n'.join(self.infos[info])
|
||||||
|
|
||||||
def get_info(self, info, expand = True):
|
def get_info(self, info, expand = True):
|
||||||
if info in self.infos:
|
if info in self.infos:
|
||||||
@ -134,8 +143,10 @@ class package:
|
|||||||
def name(self):
|
def name(self):
|
||||||
info = self.find_info('name')
|
info = self.find_info('name')
|
||||||
if info:
|
if info:
|
||||||
return info[0]
|
n = info[0]
|
||||||
return self._name
|
else:
|
||||||
|
n = self._name
|
||||||
|
return self._macro_override(n, 'name')
|
||||||
|
|
||||||
def summary(self):
|
def summary(self):
|
||||||
info = self.find_info('summary')
|
info = self.find_info('summary')
|
||||||
@ -168,7 +179,7 @@ class package:
|
|||||||
return info[0]
|
return info[0]
|
||||||
|
|
||||||
def sources(self):
|
def sources(self):
|
||||||
return self.extract_info('source');
|
return self.extract_info('source')
|
||||||
|
|
||||||
def patches(self):
|
def patches(self):
|
||||||
return self.extract_info('patch')
|
return self.extract_info('patch')
|
||||||
@ -205,7 +216,8 @@ class file:
|
|||||||
_ignore = [ re.compile('%setup'),
|
_ignore = [ re.compile('%setup'),
|
||||||
re.compile('%configure'),
|
re.compile('%configure'),
|
||||||
re.compile('%source[0-9]*'),
|
re.compile('%source[0-9]*'),
|
||||||
re.compile('%patch[0-9]*') ]
|
re.compile('%patch[0-9]*'),
|
||||||
|
re.compile('%select') ]
|
||||||
|
|
||||||
def __init__(self, name, opts, macros = None):
|
def __init__(self, name, opts, macros = None):
|
||||||
self.opts = opts
|
self.opts = opts
|
||||||
@ -458,6 +470,14 @@ class file:
|
|||||||
self._error("macro '%s' not found" % (mn))
|
self._error("macro '%s' not found" % (mn))
|
||||||
return self._shell(s)
|
return self._shell(s)
|
||||||
|
|
||||||
|
def _select(self, config, ls):
|
||||||
|
if len(ls) != 2:
|
||||||
|
self._warning('invalid select statement')
|
||||||
|
else:
|
||||||
|
r = self.macros.set_read_map(ls[1])
|
||||||
|
if self.opts.trace():
|
||||||
|
print '_select: ', r, ls[1], self.macros.maps()
|
||||||
|
|
||||||
def _define(self, config, ls):
|
def _define(self, config, ls):
|
||||||
if len(ls) <= 1:
|
if len(ls) <= 1:
|
||||||
self._warning('invalid macro definition')
|
self._warning('invalid macro definition')
|
||||||
@ -658,6 +678,9 @@ class file:
|
|||||||
else:
|
else:
|
||||||
name = self.name + '-' + ls[1]
|
name = self.name + '-' + ls[1]
|
||||||
return ('package', name)
|
return ('package', name)
|
||||||
|
elif ls[0] == '%select':
|
||||||
|
if isvalid:
|
||||||
|
self._select(config, ls)
|
||||||
elif ls[0] == '%error':
|
elif ls[0] == '%error':
|
||||||
if isvalid:
|
if isvalid:
|
||||||
return ('data', ['%%error %s' % (self._name_line_msg(l[7:]))])
|
return ('data', ['%%error %s' % (self._name_line_msg(l[7:]))])
|
||||||
@ -733,7 +756,8 @@ class file:
|
|||||||
return
|
return
|
||||||
if _package not in self._packages:
|
if _package not in self._packages:
|
||||||
self._packages[_package] = package(_package,
|
self._packages[_package] = package(_package,
|
||||||
self.define('%{_arch}'))
|
self.define('%{_arch}'),
|
||||||
|
self)
|
||||||
self.package = _package
|
self.package = _package
|
||||||
|
|
||||||
def _directive_extend(self, dir, data):
|
def _directive_extend(self, dir, data):
|
||||||
@ -877,9 +901,6 @@ class file:
|
|||||||
info_data = ls[0].strip()
|
info_data = ls[0].strip()
|
||||||
if info is not None:
|
if info is not None:
|
||||||
self._info_append(info, info_data)
|
self._info_append(info, info_data)
|
||||||
# It seems like the info's also appear as
|
|
||||||
# defines or can be accessed via macros.
|
|
||||||
self._define(None, ('', info, info_data))
|
|
||||||
else:
|
else:
|
||||||
self._warning("invalid format: '%s'" % (info_data[:-1]))
|
self._warning("invalid format: '%s'" % (info_data[:-1]))
|
||||||
else:
|
else:
|
||||||
@ -925,8 +946,8 @@ class file:
|
|||||||
return self._expand(line)
|
return self._expand(line)
|
||||||
|
|
||||||
def macro(self, name):
|
def macro(self, name):
|
||||||
if name.lower() in self.defines:
|
if name in self.macros:
|
||||||
return self.defines[name.lower()]
|
return self.macros[name]
|
||||||
raise error.general('macro "%s" not found' % (name))
|
raise error.general('macro "%s" not found' % (name))
|
||||||
|
|
||||||
def directive(self, _package, name):
|
def directive(self, _package, name):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user