Changeset bf23399 in rtems-source-builder


Ignore:
Timestamp:
Apr 27, 2013, 11:56:33 AM (7 years ago)
Author:
Chris Johns <chrisj@…>
Branches:
4.10, 4.11, 4.9, master
Children:
c12323f
Parents:
3ff992b
Message:

Add a grep function and timestamp.

Fix the acinclude.m4.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • source-builder/sb/bootstrap.py

    r3ff992b rbf23399  
    4141                confs += [path.shell(path.join(root, f))]
    4242    return confs
     43
     44def _grep(file, pattern):
     45    rege = re.compile(pattern)
     46    try:
     47        f = open(file, 'r')
     48        matches = [rege.match(l) != None for l in f.readlines()]
     49        f.close()
     50    except IOError, err:
     51        raise error.general('error reading: %s' % (file))
     52    return True in matches
    4353
    4454class command:
     
    7080class autoreconf:
    7181
    72     def __init__(self, configure):
     82    def __init__(self, topdir, configure):
     83        self.topdir = topdir
    7384        self.configure = configure
    7485        self.cwd = path.dirname(self.configure)
     
    7889
    7990    def bspopts(self):
    80         try:
    81             c = open(self.configure, 'r')
    82             c_lines = c.readlines()
    83             c.close()
    84         except IOError, err:
    85             raise error.general('error reading: %s' % (configure))
    86         if 'RTEMS_CHECK_BSPDIR' in c_lines:
     91        if _grep(self.configure, 'RTEMS_CHECK_BSPDIR'):
    8792            bsp_specs = _collect(self.cwd, 'bsp_specs')
    8893            try:
    89                 acinclude = path.join(self.cwd, acinclude.m4)
     94                acinclude = path.join(self.cwd, 'acinclude.m4')
    9095                b = open(acinclude, 'w')
    91                 b.write('# RTEMS_CHECK_BSPDIR(RTEMS_BSP_FAMILY) ')
    92                 b.write('AC_DEFUN([RTEMS_CHECK_BSPDIR],')
    93                 b.write('[')
    94                 b.write(' case "$1" in')
     96                b.write('# RTEMS_CHECK_BSPDIR(RTEMS_BSP_FAMILY) ' + os.linesep)
     97                b.write('AC_DEFUN([RTEMS_CHECK_BSPDIR],' + os.linesep)
     98                b.write('[' + os.linesep)
     99                b.write(' case "$1" in' + os.linesep)
    95100                for bs in bsp_specs:
    96                     b.write('   %s )' % (path.dirname(bs)))
    97                     b.write('     AC_CONFIG_SUBDIRS([%s]);;' % (path.dirname(bs)))
    98                 b.write('  *)')
    99                 b.write('    AC_MSG_ERROR([Invalid BSP]);;')
    100                 b.write('  esac')
    101                 b.write('])')
     101                    dir = path.dirname(bs)[len(self.cwd) + 1:]
     102                    b.write('   %s )%s' % (dir, os.linesep))
     103                    b.write('     AC_CONFIG_SUBDIRS([%s]);;%s' % (dir, os.linesep))
     104                b.write('  *)' + os.linesep)
     105                b.write('    AC_MSG_ERROR([Invalid BSP]);;' + os.linesep)
     106                b.write('  esac' + os.linesep)
     107                b.write('])' + os.linesep)
    102108                b.close()
    103109            except IOError, err:
     
    111117            if self.command.exit_code != 0:
    112118                raise error.general('error: autoreconf: %s' % (' '.join(self.command.cmd)))
     119            makefile = path.join(self.cwd, 'Makefile.am')
     120            if path.exists(makefile):
     121                if _grep(makefile, 'stamp-h\.in'):
     122                    stamp_h = path.join(self.cwd, 'stamp-h.in')
     123                    try:
     124                        t = open(stamp_h, 'w')
     125                        t.write('timestamp')
     126                        t.close()
     127                    except IOError, err:
     128                        raise error.general('error writing: %s' % (stamp_h))
    113129
    114130def generate(topdir, jobs):
     
    123139            log.notice('%3d/%3d: autoreconf: %s' % \
    124140                           (next + 1, len(confs), confs[next][len(topdir) + 1:]))
    125             autoreconfs += [autoreconf(confs[next])]
     141            autoreconfs += [autoreconf(topdir, confs[next])]
    126142            next += 1
    127143        else:
     
    139155
    140156    def __init__(self, topdir, makefile):
     157        self.topdir = topdir
    141158        self.makefile = makefile
    142         self.topdir = topdir
    143159        self.preinstall = path.join(path.dirname(makefile), 'preinstall.am')
    144160        self.command = command([path.join(topdir, 'ampolish3'), makefile], self.topdir)
     
    165181    start_time = datetime.datetime.now()
    166182    makes = []
    167     pre = re.compile('include .*/preinstall\.am')
    168183    for am in _collect(topdir, 'Makefile.am'):
    169         try:
    170             m = open(am, 'r')
    171             am_lines = m.readlines()
    172             m.close()
    173         except IOError, err:
    174             raise error.general('error reading: %s' % (am))
    175         ml = [pre.match(l) != None for l in am_lines]
    176         if True in ml:
     184        if _grep(am, 'include .*/preinstall\.am'):
    177185            makes += [am]
    178186    next = 0
Note: See TracChangeset for help on using the changeset viewer.