Changeset 97a685f in rtems-source-builder


Ignore:
Timestamp:
Apr 30, 2013, 1:20:54 AM (6 years ago)
Author:
Chris Johns <chrisj@…>
Branches:
4.10, 4.11, 4.9, master
Children:
fbb39e7
Parents:
dfdc129
Message:

Add mail support to mail reports.

Location:
source-builder
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • source-builder/defaults.mc

    rdfdc129 r97a685f  
    248248_forced_static:     none,         none, '-Xlinker -Bstatic ${LIBS_STATIC} -Xlinker -Bdynamic'
    249249__xz:                exe,     required, '/usr/bin/xz'
     250
     251# Mail Support
     252_mail_smtp_host:   none,         none, 'localhost'
     253_mail_tools_to:    none,         none, 'rtems-tooltestresults@rtems.org'
  • source-builder/sb/git.py

    rdfdc129 r97a685f  
    149149        return _remotes
    150150
     151    def email(self):
     152        _email = None
     153        _name = None
     154        ec, output = self._run(['config', '--list'])
     155        if ec == 0:
     156            for l in output.split('\n'):
     157                if l.startswith('user.email'):
     158                    ls = l.split('=')
     159                    if len(ls) >= 2:
     160                        _email = ls[1]
     161                elif l.startswith('user.name'):
     162                    ls = l.split('=')
     163                    if len(ls) >= 2:
     164                        _name = ls[1]
     165        if _email is not None:
     166            if _name is not None:
     167                _email = '%s <%s>' % (_name, _email)
     168            return _email
     169        return None
     170
    151171    def head(self):
    152172        hash = ''
     
    167187    print g.clean()
    168188    print g.remotes()
     189    print g.email()
    169190    print g.head()
  • source-builder/sb/setbuilder.py

    rdfdc129 r97a685f  
    3636    import error
    3737    import log
     38    import mailer
    3839    import options
    3940    import path
     
    6061        self.bset = bset
    6162        self.bset_pkg = '%s-%s-set' % (self.macros.expand('%{_target}'), self.bset)
    62         self.email_report = ''
    63 
    64     def write_email_report(self, text, prepend = False):
     63        self.mail_report = ''
     64
     65    def write_mail_report(self, text, prepend = False):
    6566        if len(text) == 0 or text[-1] != '\n' or text[-1] != '\r':
    6667            text += os.linesep
    6768        if prepend:
    68             self.email_report = text + self.email_report
     69            self.mail_report = text + self.mail_report
    6970        else:
    70             self.email_report += text
     71            self.mail_report += text
    7172
    7273    def copy(self, src, dst):
     
    8586
    8687    def report(self, _config, _build):
    87         if not _build.opts.get_arg('--no-report') and not _build.opts.get_arg('--no-email'):
     88        if not _build.opts.get_arg('--no-report') and _build.opts.get_arg('--mail'):
    8889            format = _build.opts.get_arg('--report-format')
    8990            if format is None:
     
    119120                    r.write(outname)
    120121                del r
    121             if not _build.opts.get_arg('--no-email'):
     122            if _build.opts.get_arg('--mail'):
    122123                r = reports.report('text', self.configs, _build.opts, _build.macros)
    123124                r.setup()
    124125                r.introduction(_build.config.file_name())
    125126                r.config(_build.config, _build.opts, _build.macros)
    126                 self.email_report += r.out
     127                self.mail_report += r.out
    127128                del r
    128129
     
    276277        log.notice('Build Set: %s' % (self.bset))
    277278
    278         if not self.opts.get_arg('--no-email'):
    279             email_report_header = \
    280                 'Build Set: %s (%s)' % (self.bset, datetime.datetime.now().ctime())
     279        if self.opts.get_arg('--mail'):
     280            mail_report_subject = \
     281                'Build Set: %s %s (%s)' % (self.bset,
     282                                           self.macros.expand('%{_host}'),
     283                                           datetime.datetime.now().ctime())
    281284
    282285        configs = self.load()
     
    318321                        raise error.general('invalid config type: %s' % (configs[s]))
    319322                except error.general, gerr:
    320                     self.write_email_report(str(gerr))
     323                    self.write_mail_report(str(gerr))
    321324                    if self.opts.keep_going():
    322325                        print gerr
     
    345348        os.environ['PATH'] = current_path
    346349
    347         log.notice('Build Set: Time %s' % (str(end - start)))
    348 
    349         if not self.opts.get_arg('--no-email'):
    350             self.write_email_report('', True)
    351             self.write_email_report('  Build Time %s' % (str(end - start)), True)
    352             self.write_email_report(email_report_header, True)
     350        build_time = str(end - start)
     351
     352        if self.opts.get_arg('--mail'):
     353            to_addr = self.opts.get_arg('--mail-to')
     354            if to_addr is not None:
     355                to_addr = to_addr[1]
     356            else:
     357                to_addr = self.macros.expand('%{_mail_tools_to}')
     358            log.notice('Mailing report: %s' % (to_addr))
     359            self.write_mail_report('Build Time %s' % (build_time), True)
     360            m = mailer.mail(self.opts)
     361            if not self.opts.dry_run():
     362                m.send(to_addr, mail_report_subject, self.mail_report)
     363
     364        log.notice('Build Set: Time %s' % (build_time))
    353365
    354366def list_bset_cfg_files(opts, configs):
     
    375387                    '--pkg-tar-files': 'Create package tar files',
    376388                    '--no-report':     'Do not create a package report.',
    377                     '--report-format': 'The report format (text, html, asciidoc).',
    378                     '--no-email':      'Do not send an email report.',
    379                     '--smtp-host':     'SMTP host to send via.',
    380                     '--email-to':      'Email address to send the email too.',
    381                     '--email-from':    'Email address the report is from.' }
     389                    '--report-format': 'The report format (text, html, asciidoc).' }
     390        mailer.append_options(optargs)
    382391        opts = options.load(sys.argv, optargs)
    383392        log.notice('RTEMS Source Builder - Set Builder, v%s' % (version.str()))
Note: See TracChangeset for help on using the changeset viewer.