Changeset f88fcf3 in rtems-source-builder


Ignore:
Timestamp:
Mar 7, 2016, 12:56:02 AM (4 years ago)
Author:
Chris Johns <chrisj@…>
Branches:
4.11
Children:
e02eaa6
Parents:
76188ee4
git-author:
Chris Johns <chrisj@…> (03/07/16 00:56:02)
git-committer:
Chris Johns <chrisj@…> (03/07/16 02:16:17)
Message:

sb: Update code base to support Python3 and Python2.

Fix Windows support to allow MSYS2 Python to be used.

Updates #2619.

Location:
source-builder
Files:
29 edited

Legend:

Unmodified
Added
Removed
  • source-builder/pkg-config

    r76188ee4 rf88fcf3  
    22#
    33# RTEMS Tools Project (http://www.rtems.org/)
    4 # Copyright 2014 Chris Johns (chrisj@rtems.org)
     4# Copyright 2014-2016 Chris Johns (chrisj@rtems.org)
    55# All rights reserved.
    66#
     
    3030#
    3131
     32from __future__ import print_function
     33
    3234import os
    3335import sys
     
    4345        import argparse
    4446    except:
    45         print >> sys.stderr, "Incorrect Source Builder installation"
     47        print("Incorrect Source Builder installation", file = sys.stderr)
    4648        sys.exit(1)
    4749
     
    4951    import pkgconfig
    5052except ImportError:
    51     print >> sys.stderr, "Incorrect Source Builder installation"
     53    print("Incorrect Source Builder installation", file = sys.stderr)
    5254    sys.exit(1)
    5355
     
    8284        if lf:
    8385            if out != sys.stdout and trace_stdout:
    84                 print s
    85             print >> out, s
     86                print(s)
     87            print(s, file = out)
    8688        else:
    8789            if out != sys.stdout and trace_stdout:
    88                 print s,
    89             print >> out, s,
     90                print(s, end = '', flush = True)
     91            print(out, s, end = '', flush = True)
    9092
    9193def run(argv):
     
    192194            if args.cflags:
    193195                if len(flags['cflags']):
    194                     print flags['cflags']
     196                    print(flags['cflags'])
    195197                    log('cflags: %s' % (flags['cflags']))
    196198                else:
     
    198200            if args.libs:
    199201                if len(flags['libs']):
    200                     print flags['libs']
     202                    print(flags['libs'])
    201203                    log('libs: %s' % (flags['libs']))
    202204                else:
     
    216218    log('ec = %d' % (ec))
    217219except ImportError:
    218     print >> sys.stderr, "incorrect package config installation"
     220    print("incorrect package config installation", file = sys.stderr)
    219221    sys.exit(1)
    220222except pkgconfig.error, e:
    221     print >> sys.stderr, 'error: %s' % (e)
     223    print('error: %s' % (e), file = sys.stderr)
    222224    sys.exit(1)
    223225sys.exit(ec)
  • source-builder/sb-bootstrap

    r76188ee4 rf88fcf3  
    1919# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
    2020
     21from __future__ import print_function
     22
    2123import sys, os
    2224base = os.path.dirname(sys.argv[0])
     
    2628    bootstrap.run(sys.argv)
    2729except ImportError:
    28     print >> sys.stderr, "Incorrect Source Builder installation"
     30    print("Incorrect Source Builder installation", file = sys.stderr)
    2931    sys.exit(1)
  • source-builder/sb-builder

    r76188ee4 rf88fcf3  
    1919# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
    2020
     21from __future__ import print_function
     22
    2123import sys, os
    2224base = os.path.dirname(sys.argv[0])
     
    2628    build.run(sys.argv)
    2729except ImportError:
    28     print >> sys.stderr, "Incorrect Source Builder installation"
     30    print("Incorrect Source Builder installation", file = sys.stderr)
    2931    sys.exit(1)
  • source-builder/sb-check

    r76188ee4 rf88fcf3  
    1919# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
    2020
     21from __future__ import print_function
     22
    2123import sys, os
    2224base = os.path.dirname(sys.argv[0])
     
    2628    check.run()
    2729except ImportError:
    28     print >> sys.stderr, "Incorrect Set Bulder installation"
     30    print("Incorrect Source Builder installation", file = sys.stderr)
    2931    sys.exit(1)
  • source-builder/sb-defaults

    r76188ee4 rf88fcf3  
    1919# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
    2020
     21from __future__ import print_function
     22
    2123import sys, os
    2224base = os.path.dirname(sys.argv[0])
     
    2628    options.run(sys.argv)
    2729except ImportError:
    28     print >> sys.stderr, "Incorrect Defaults installation"
     30    print("Incorrect Source Builder installation", file = sys.stderr)
    2931    sys.exit(1)
  • source-builder/sb-reports

    r76188ee4 rf88fcf3  
    1919# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
    2020
     21from __future__ import print_function
     22
    2123import sys, os
    2224base = os.path.dirname(sys.argv[0])
     
    2628    reports.run(sys.argv)
    2729except ImportError:
    28     print >> sys.stderr, "Incorrect Defaults installation"
     30    print("Incorrect Source Builder installation", file = sys.stderr)
    2931    sys.exit(1)
  • source-builder/sb-rtems-config

    r76188ee4 rf88fcf3  
    1919# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
    2020
     21from __future__ import print_function
     22
    2123import sys, os
    2224base = os.path.dirname(sys.argv[0])
     
    2628    rtemsconfig.run(sys.argv)
    2729except ImportError:
    28     print >> sys.stderr, "Incorrect Set Bulder installation"
     30    print("Incorrect Source Builder installation", file = sys.stderr)
    2931    sys.exit(1)
  • source-builder/sb-set-builder

    r76188ee4 rf88fcf3  
    1919# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
    2020
     21from __future__ import print_function
     22
    2123import sys, os
    2224base = os.path.dirname(sys.argv[0])
    2325sys.path.insert(0, base + '/sb')
     26
     27import setbuilder
     28
    2429try:
    2530    import setbuilder
    2631    setbuilder.run()
    2732except ImportError:
    28     print >> sys.stderr, "Incorrect Set Bulder installation"
     33    print("Incorrect Source Builder installation", file = sys.stderr)
    2934    sys.exit(1)
  • source-builder/sb/bootstrap.py

    r76188ee4 rf88fcf3  
    1919#
    2020
     21from __future__ import print_function
     22
    2123import datetime
    2224import operator
     
    4749        matches = [rege.match(l) != None for l in f.readlines()]
    4850        f.close()
    49     except IOError, err:
     51    except IOError as err:
    5052        raise error.general('reading: %s' % (file))
    5153    return True in matches
     
    9294                    cmd = self.cmd
    9395                self.output = subprocess.check_output(cmd, cwd = path.host(self.cwd))
    94             except subprocess.CalledProcessError, cpe:
     96            except subprocess.CalledProcessError as cpe:
    9597                self.exit_code = cpe.returncode
    9698                self.output = cpe.output
    97             except OSError, ose:
     99            except OSError as ose:
    98100                raise error.general('bootstrap failed: %s in %s: %s' % \
    99101                                        (' '.join(cmd), path.host(self.cwd), (str(ose))))
     
    115117    def reraise(self):
    116118        if self.result is not None:
    117             raise self.result[0], self.result[1], self.result[2]
     119            raise self.result[0](self.result[1]).with_traceback(self.result[2])
    118120
    119121class autoreconf:
     
    146148                b.write('])' + os.linesep)
    147149                b.close()
    148             except IOError, err:
     150            except IOError as err:
    149151                raise error.general('writing: %s' % (acinclude))
    150152
     
    165167                        t.write('timestamp')
    166168                        t.close()
    167                     except IOError, err:
     169                    except IOError as err:
    168170                        raise error.general('writing: %s' % (stamp_h))
    169171
     
    213215                    p.write(l)
    214216                p.close()
    215             except IOError, err:
     217            except IOError as err:
    216218                raise error.general('writing: %s' % (self.preinstall))
    217219
     
    276278        else:
    277279            generate(topdir, opts.jobs(opts.defaults['_ncpus']))
    278     except error.general, gerr:
    279         print gerr
    280         print >> sys.stderr, 'Bootstrap FAILED'
     280    except error.general as gerr:
     281        print(gerr)
     282        print('Bootstrap FAILED', file = sys.stderr)
    281283        sys.exit(1)
    282     except error.internal, ierr:
    283         print ierr
    284         print >> sys.stderr, 'Bootstrap FAILED'
     284    except error.internal as ierr:
     285        print(ierr)
     286        print('Bootstrap FAILED', file = sys.stderr)
    285287        sys.exit(1)
    286     except error.exit, eerr:
     288    except error.exit as eerr:
    287289        pass
    288290    except KeyboardInterrupt:
  • source-builder/sb/build.py

    r76188ee4 rf88fcf3  
    2323#
    2424
     25from __future__ import print_function
     26
    2527import copy
    2628import getopt
     
    3032import stat
    3133import sys
    32 import urllib2
    33 import urlparse
    3434
    3535try:
     
    4646    import version
    4747except KeyboardInterrupt:
    48     print 'abort: user terminated'
     48    print('abort: user terminated')
    4949    sys.exit(1)
    5050except:
    51     print 'error: unknown application load error'
     51    print('error: unknown application load error')
    5252    sys.exit(1)
    5353
     
    8282                         stat.S_IRGRP | stat.S_IXGRP | \
    8383                         stat.S_IROTH | stat.S_IXOTH)
    84         except IOError, err:
     84        except IOError as err:
    8585            raise error.general('creating script: ' + name)
    8686        except:
     
    129129            self.script = script()
    130130            self.macros['buildname'] = self._name_(self.macros['name'])
    131         except error.general, gerr:
     131        except error.general as gerr:
    132132            log.notice(str(gerr))
    133133            log.stderr('Build FAILED')
    134134            raise
    135         except error.internal, ierr:
     135        except error.internal as ierr:
    136136            log.notice(str(ierr))
    137137            log.stderr('Internal Build FAILED')
     
    233233        try:
    234234            opts, args = getopt.getopt(args[1:], 'qDcn:ba')
    235         except getopt.GetoptError, ge:
     235        except getopt.GetoptError as ge:
    236236            raise error.general('source setup error: %s' % str(ge))
    237237        quiet = False
     
    474474                    log.notice('building: %s%s' % (cxc_label, name))
    475475                    self.run(sn)
    476             except error.general, gerr:
     476            except error.general as gerr:
    477477                log.notice(str(gerr))
    478478                log.stderr('Build FAILED')
    479479                self._generate_report_('Build: %s' % (gerr))
    480480                raise
    481             except error.internal, ierr:
     481            except error.internal as ierr:
    482482                log.notice(str(ierr))
    483483                log.stderr('Internal Build FAILED')
     
    547547            configs = get_configs(opts)
    548548            for p in configs['paths']:
    549                 print 'Examining: %s' % (os.path.relpath(p))
     549                print('Examining: %s' % (os.path.relpath(p)))
    550550                for c in configs['files']:
    551551                    if c.endswith('.cfg'):
    552                         print '    %s' % (c)
     552                        print('    %s' % (c))
    553553        else:
    554554            for config_file in opts.config_files():
     
    556556                b.make()
    557557                b = None
    558     except error.general, gerr:
     558    except error.general as gerr:
    559559        log.stderr('Build FAILED')
    560560        ec = 1
    561     except error.internal, ierr:
     561    except error.internal as ierr:
    562562        log.stderr('Internal Build FAILED')
    563563        ec = 1
    564     except error.exit, eerr:
     564    except error.exit as eerr:
    565565        pass
    566566    except KeyboardInterrupt:
  • source-builder/sb/check.py

    r76188ee4 rf88fcf3  
    11#
    22# RTEMS Tools Project (http://www.rtems.org/)
    3 # Copyright 2010-2012 Chris Johns (chrisj@rtems.org)
     3# Copyright 2010-2016 Chris Johns (chrisj@rtems.org)
    44# All rights reserved.
    55#
     
    2121# Check the defaults for a specific host.
    2222#
     23
     24from __future__ import print_function
    2325
    2426import os
     
    131133    sane = True
    132134
    133     for d in opts.defaults.keys():
     135    for d in list(opts.defaults.keys()):
    134136        try:
    135137            (test, constraint, value) = opts.defaults.get(d)
     
    165167        log.notice('RTEMS Source Builder - Check, %s' % (version.str()))
    166168        if host_setup(_opts):
    167             print 'Environment is ok'
     169            print('Environment is ok')
    168170        else:
    169             print 'Environment is not correctly set up'
    170     except error.general, gerr:
    171         print gerr
     171            print('Environment is not correctly set up')
     172    except error.general as gerr:
     173        print(gerr)
    172174        sys.exit(1)
    173     except error.internal, ierr:
    174         print ierr
     175    except error.internal as ierr:
     176        print(ierr)
    175177        sys.exit(1)
    176     except error.exit, eerr:
     178    except error.exit as eerr:
    177179        pass
    178180    except KeyboardInterrupt:
  • source-builder/sb/config.py

    r76188ee4 rf88fcf3  
    11#
    22# RTEMS Tools Project (http://www.rtems.org/)
    3 # Copyright 2010-2013 Chris Johns (chrisj@rtems.org)
     3# Copyright 2010-2016 Chris Johns (chrisj@rtems.org)
    44# All rights reserved.
    55#
     
    2626#
    2727
     28from __future__ import print_function
     29
    2830import copy
     31from functools import reduce
    2932import os
    3033import re
     
    4043    import sources
    4144except KeyboardInterrupt:
    42     print 'user terminated'
     45    print('user terminated', file = sys.stderr)
    4346    sys.exit(1)
    4447except:
    45     print 'error: unknown application load error'
     48    print('error: unknown application load error', file = sys.stderr)
    4649    sys.exit(1)
    4750
     
    7679        def _dictlist(dl):
    7780            s = ''
    78             dll = dl.keys()
     81            dll = list(dl.keys())
    7982            dll.sort()
    8083            for d in dll:
     
    251254        def _dict(dd):
    252255            s = ''
    253             ddl = dd.keys()
     256            ddl = list(dd.keys())
    254257            ddl.sort()
    255258            for d in ddl:
     
    340343        trace_me = False
    341344        if trace_me:
    342             print '------------------------------------------------------'
     345            print('------------------------------------------------------')
    343346        macros = []
    344347        nesting = []
     
    347350        while c < len(s):
    348351            if trace_me:
    349                 print 'ms:', c, '"' + s[c:] + '"', has_braces, len(nesting), nesting
     352                print('ms:', c, '"' + s[c:] + '"', has_braces, len(nesting), nesting)
    350353            #
    351354            # We need to watch for shell type variables or the form '${var}' because
     
    395398            c += 1
    396399        if trace_me:
    397             print 'ms:', macros
     400            print('ms:', macros)
    398401        if trace_me:
    399             print '-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-='
     402            print('-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=')
    400403        return macros
    401404
     
    436439                        ver = self.macros.expand(test[2])
    437440                    ok = pkg.check(op, ver)
    438             except pkgconfig.error, pe:
     441            except pkgconfig.error as pe:
    439442                self._error('pkgconfig: check: %s' % (pe))
    440443            except:
     
    460463                    pkg_flags = ' '.join(fflags)
    461464                log.trace('pkgconfig: %s: %s' % (flags, pkg_flags))
    462             except pkgconfig.error, pe:
     465            except pkgconfig.error as pe:
    463466                self._error('pkgconfig: %s: %s' % (flags, pe))
    464467            except:
     
    11281131            log.trace('config: %s: _open: %s' % (self.name, path.host(configname)))
    11291132            config = open(path.host(configname), 'r')
    1130         except IOError, err:
     1133        except IOError as err:
    11311134            raise error.general('error opening config file: %s' % (path.host(configname)))
    11321135
     
    11721175
    11731176    def defined(self, name):
    1174         return self.macros.has_key(name)
     1177        return name in self.macros
    11751178
    11761179    def define(self, name):
     
    12301233        log.trace('config: count %d' % (len(opts.config_files())))
    12311234        for config_file in opts.config_files():
    1232             s = file(config_file, opts)
    1233             print s
     1235            s = open(config_file, opts)
     1236            print(s)
    12341237            del s
    1235     except error.general, gerr:
    1236         print gerr
     1238    except error.general as gerr:
     1239        print(gerr)
    12371240        sys.exit(1)
    1238     except error.internal, ierr:
    1239         print ierr
     1241    except error.internal as ierr:
     1242        print(ierr)
    12401243        sys.exit(1)
    12411244    except KeyboardInterrupt:
  • source-builder/sb/cvs.py

    r76188ee4 rf88fcf3  
    11#
    22# RTEMS Tools Project (http://www.rtems.org/)
    3 # Copyright 2010-2013 Chris Johns (chrisj@rtems.org)
     3# Copyright 2010-2016 Chris Johns (chrisj@rtems.org)
    44# All rights reserved.
    55#
     
    2121# Provide some basic access to the cvs command.
    2222#
     23
     24from __future__ import print_function
    2325
    2426import os
     
    152154        path.mkdir(ldir)
    153155        c.checkout(':pserver:anoncvs@sourceware.org:/cvs/src', module = 'newlib')
    154     print c.cvs_version()
    155     print c.valid()
    156     print c.status()
     156    print(c.cvs_version())
     157    print(c.valid())
     158    print(c.status())
    157159    c.reset()
    158     print c.clean()
     160    print(c.clean())
  • source-builder/sb/download.py

    r76188ee4 rf88fcf3  
    2323#
    2424
     25from __future__ import print_function
     26
    2527import hashlib
    2628import os
    2729import stat
    2830import sys
    29 import urllib2
    30 import urlparse
     31try:
     32    import urllib.request as urllib_request
     33    import urllib.parse as urllib_parse
     34    import urllib.error as urllib_error
     35except ImportError:
     36    import urllib as urllib_request
     37    import urllib as urllib_parse
     38    import urllib as urllib_error
    3139
    3240import cvs
     
    5058def _humanize_bytes(bytes, precision = 1):
    5159    abbrevs = (
    52         (1 << 50L, 'PB'),
    53         (1 << 40L, 'TB'),
    54         (1 << 30L, 'GB'),
    55         (1 << 20L, 'MB'),
    56         (1 << 10L, 'kB'),
     60        (1 << 50, 'PB'),
     61        (1 << 40, 'TB'),
     62        (1 << 30, 'GB'),
     63        (1 << 20, 'MB'),
     64        (1 << 10, 'kB'),
    5765        (1, ' bytes')
    5866    )
     
    8391            _in = open(path.host(absfile), 'rb')
    8492            hasher.update(_in.read())
    85         except IOError, err:
     93        except IOError as err:
    8694            log.notice('hash: %s: read error: %s' % (file_, str(err)))
    8795            failed = True
     
    104112                try:
    105113                    os.remove(path.host(absfile))
    106                 except IOError, err:
     114                except IOError as err:
    107115                    raise error.general('hash: %s: remove: %s' % (absfile, str(err)))
    108116                except:
     
    318326    #
    319327    if url.startswith('https://api.github.com'):
    320         url = urlparse.urljoin(url, config.expand('tarball/%{version}'))
     328        url = urllib_parse.urljoin(url, config.expand('tarball/%{version}'))
    321329    dst = os.path.relpath(path.host(local))
    322330    log.notice('download: %s -> %s' % (url, dst))
     
    336344                _in = None
    337345                _ssl_context = None
     346                _urllib_url = url
    338347                try:
    339348                    import ssl
    340349                    _ssl_context = ssl._create_unverified_context()
    341                     _in = urllib2.urlopen(url, context = _ssl_context)
     350                    _in = urllib_request.urlopen(_urllib_url, context = _ssl_context)
    342351                except:
    343352                    _ssl_context = None
    344353                if _ssl_context is None:
    345                     _in = urllib2.urlopen(url)
     354                    _in = urllib_request.urlopen(_urllib_url)
    346355                if url != _in.geturl():
    347356                    log.notice(' redirect: %s' % (_in.geturl()))
     
    373382                log.stdout_raw('\n')
    374383                raise
    375         except IOError, err:
     384        except IOError as err:
    376385            log.notice('download: %s: error: %s' % (url, str(err)))
    377386            if path.exists(local):
    378387                os.remove(path.host(local))
    379388            failed = True
    380         except ValueError, err:
     389        except ValueError as err:
    381390            log.notice('download: %s: error: %s' % (url, str(err)))
    382391            if path.exists(local):
     
    571580        # Split up the URL we are being asked to download.
    572581        #
    573         url_path = urlparse.urlsplit(url)[2]
     582        url_path = urllib_parse.urlsplit(url)[2]
    574583        slash = url_path.rfind('/')
    575584        if slash < 0:
     
    581590            if base[-1:] != '/':
    582591                base += '/'
    583             next_url = urlparse.urljoin(base, url_file)
     592            next_url = urllib_parse.urljoin(base, url_file)
    584593            log.trace('url: %s' %(next_url))
    585594            urls.append(next_url)
  • source-builder/sb/error.py

    r76188ee4 rf88fcf3  
    1717# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
    1818# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
     19
     20from __future__ import print_function
    1921
    2022#
     
    4749    try:
    4850        raise general('a general error')
    49     except general, gerr:
    50         print 'caught:', gerr
     51    except general as gerr:
     52        print('caught:', gerr)
    5153    try:
    5254        raise internal('an internal error')
    53     except internal, ierr:
    54         print 'caught:', ierr
     55    except internal as ierr:
     56        print('caught:', ierr)
  • source-builder/sb/execute.py

    r76188ee4 rf88fcf3  
    11#
    22# RTEMS Tools Project (http://www.rtems.org/)
    3 # Copyright 2010-2012 Chris Johns (chrisj@rtems.org)
     3# Copyright 2010-2016 Chris Johns (chrisj@rtems.org)
    44# All rights reserved.
    55#
     
    2424#
    2525
     26from __future__ import print_function
     27
     28import functools
    2629import os
    2730import re
     
    8285    cmd = arg_subst(command, subst)
    8386    def add(x, y): return x + ' ' + str(y)
    84     return reduce(add, cmd, '')
     87    return functools.reduce(add, cmd, '')
    8588
    8689class execute:
     
    106109            while True:
    107110                line = fh.readline()
     111                # str and bytes are the same type in Python2
     112                if type(line) is not str and type(line) is bytes:
     113                    line = line.decode(sys.stdout.encoding)
    108114                count += 1
    109115                if len(line) == 0:
     
    156162            if type(command) is list:
    157163                def add(x, y): return x + ' ' + str(y)
    158                 s = reduce(add, command, '')[1:]
     164                s = functools.reduce(add, command, '')[1:]
    159165            what = 'spawn'
    160166            if shell:
     
    192198            if self.verbose:
    193199                log.output('exit: ' + str(exit_code))
    194         except OSError, ose:
     200        except OSError as ose:
    195201            exit_code = ose.errno
    196202            if self.verbose:
     
    326332                             capture = False, stdin = subprocess.PIPE)
    327333        if ec == 0:
    328             print 'piping input into ' + commands['pipe'][0] + ': ' + \
    329                   commands['pipe'][2]
    330             proc.stdin.write(commands['pipe'][2])
     334            print('piping input into ' + commands['pipe'][0] + ': ' + \
     335                  commands['pipe'][2])
     336            proc.stdin.write(bytes(commands['pipe'][2], sys.stdin.encoding))
    331337            proc.stdin.close()
    332338            e.capture(proc)
     
    353359    commands['unix']['pipe'] = ('grep', 'hello', 'hello world')
    354360
    355     print arg_list('cmd a1 a2 "a3 is a string" a4')
    356     print arg_list('cmd b1 b2 "b3 is a string a4')
    357     print arg_subst(['nothing', 'xx-%0-yyy', '%1', '%2-something'],
    358                     ['subst0', 'subst1', 'subst2'])
     361    print(arg_list('cmd a1 a2 "a3 is a string" a4'))
     362    print(arg_list('cmd b1 b2 "b3 is a string a4'))
     363    print(arg_subst(['nothing', 'xx-%0-yyy', '%1', '%2-something'],
     364                    ['subst0', 'subst1', 'subst2']))
    359365
    360366    e = execute(error_prefix = 'ERR: ', verbose = True)
  • source-builder/sb/git.py

    r76188ee4 rf88fcf3  
    11#
    22# RTEMS Tools Project (http://www.rtems.org/)
    3 # Copyright 2010-2013 Chris Johns (chrisj@rtems.org)
     3# Copyright 2010-2016 Chris Johns (chrisj@rtems.org)
    44# All rights reserved.
    55#
     
    2121# Provide some basic access to the git command.
    2222#
     23
     24from __future__ import print_function
    2325
    2426import os
     
    202204    opts = options.load(sys.argv)
    203205    g = repo('.', opts)
    204     print g.git_version()
    205     print g.valid()
    206     print g.status()
    207     print g.clean()
    208     print g.remotes()
    209     print g.email()
    210     print g.head()
     206    print(g.git_version())
     207    print(g.valid())
     208    print(g.status())
     209    print(g.clean())
     210    print(g.remotes())
     211    print(g.email())
     212    print(g.head())
  • source-builder/sb/linux.py

    r76188ee4 rf88fcf3  
    122122        }
    123123
    124     if variations.has_key(distro):
     124    if distro in variations:
    125125        for v in variations[distro]:
    126126            if path.exists(variations[distro][v][2]):
  • source-builder/sb/log.py

    r76188ee4 rf88fcf3  
    2121# Log output to stdout and/or a file.
    2222#
     23
     24from __future__ import print_function
    2325
    2426import os
     
    5759    else:
    5860        for l in text.replace(chr(13), '').splitlines():
    59             print l
     61            print(l)
    6062        sys.stdout.flush()
    6163
    6264def stdout_raw(text = os.linesep):
    63     print text,
     65    print(text, end=' ')
    6466    sys.stdout.flush()
    6567
    6668def stderr(text = os.linesep, log = None):
    6769    for l in text.replace(chr(13), '').splitlines():
    68         print >> sys.stderr, l
     70        print(l, file = sys.stderr)
    6971        sys.stderr.flush()
    7072
     
    7678    if not quiet and default is not None and not default.has_stdout():
    7779        for l in text.replace(chr(13), '').splitlines():
    78             print l
     80            print(l)
    7981        sys.stdout.flush()
    8082    _output(text, log)
     
    115117                else:
    116118                    try:
    117                         self.fhs.append(file(s, 'w'))
    118                     except IOError, ioe:
     119                        self.fhs.append(open(s, 'w'))
     120                    except IOError as ioe:
    119121                         raise error.general("creating log file '" + s + \
    120122                                             "': " + str(ioe))
     
    169171    l.output('log: hello world NONE')
    170172    l.flush()
    171     print '=-' * 40
    172     print 'tail: %d' % (len(l.tail))
    173     print l
    174     print '=-' * 40
     173    print('=-' * 40)
     174    print('tail: %d' % (len(l.tail)))
     175    print(l)
     176    print('=-' * 40)
    175177    for i in range(0, 10):
    176178        l.output('log: hello world 2: %d\n' % (i))
    177179    l.flush()
    178     print '=-' * 40
    179     print 'tail: %d' % (len(l.tail))
    180     print l
    181     print '=-' * 40
     180    print('=-' * 40)
     181    print('tail: %d' % (len(l.tail)))
     182    print(l)
     183    print('=-' * 40)
    182184    for i in [0, 1]:
    183185        quiet = False
    184186        tracing = False
    185         print '- quiet:%s - trace:%s %s' % (str(quiet), str(tracing), '-' * 30)
     187        print('- quiet:%s - trace:%s %s' % (str(quiet), str(tracing), '-' * 30))
    186188        trace('trace with quiet and trace off')
    187189        notice('notice with quiet and trace off')
    188190        quiet = True
    189191        tracing = False
    190         print '- quiet:%s - trace:%s %s' % (str(quiet), str(tracing), '-' * 30)
     192        print('- quiet:%s - trace:%s %s' % (str(quiet), str(tracing), '-' * 30))
    191193        trace('trace with quiet on and trace off')
    192194        notice('notice with quiet on and trace off')
    193195        quiet = False
    194196        tracing = True
    195         print '- quiet:%s - trace:%s %s' % (str(quiet), str(tracing), '-' * 30)
     197        print('- quiet:%s - trace:%s %s' % (str(quiet), str(tracing), '-' * 30))
    196198        trace('trace with quiet off and trace on')
    197199        notice('notice with quiet off and trace on')
    198200        quiet = True
    199201        tracing = True
    200         print '- quiet:%s - trace:%s %s' % (str(quiet), str(tracing), '-' * 30)
     202        print('- quiet:%s - trace:%s %s' % (str(quiet), str(tracing), '-' * 30))
    201203        trace('trace with quiet on and trace on')
    202204        notice('notice with quiet on and trace on')
    203205        default = l
    204     print '=-' * 40
    205     print 'tail: %d' % (len(l.tail))
    206     print l
    207     print '=-' * 40
     206    print('=-' * 40)
     207    print('tail: %d' % (len(l.tail)))
     208    print(l)
     209    print('=-' * 40)
    208210    del l
  • source-builder/sb/macros.py

    r76188ee4 rf88fcf3  
    2222#
    2323
     24from __future__ import print_function
     25
    2426import re
    2527import os
     
    4244            return self
    4345
    44         def next(self):
     46        def __next__(self):
    4547            if self.index < len(self.keys):
    4648                key = self.keys[self.index]
     
    5153        def iterkeys(self):
    5254            return self.keys
     55
     56    def _unicode_to_str(self, us):
     57        try:
     58            if type(us) == unicode:
     59                return us.encode('ascii', 'replace')
     60        except:
     61            pass
     62        try:
     63            if type(us) == bytes:
     64                return us.encode('ascii', 'replace')
     65        except:
     66            pass
     67        return us
    5368
    5469    def __init__(self, name = None, original = None, sbdir = '.'):
     
    125140
    126141    def __iter__(self):
    127         return macros.macro_iterator(self.keys())
     142        return macros.macro_iterator(list(self.keys()))
    128143
    129144    def __getitem__(self, key):
     
    134149
    135150    def __setitem__(self, key, value):
     151        key = self._unicode_to_str(key)
    136152        if type(key) is not str:
    137153            raise TypeError('bad key type (want str): %s' % (type(key)))
     154        if type(value) is not tuple:
     155            value = self._unicode_to_str(value)
    138156        if type(value) is str:
    139157            value = ('none', 'none', value)
     
    142160        if len(value) != 3:
    143161            raise TypeError('bad value tuple (len not 3): %d' % (len(value)))
     162        value = (self._unicode_to_str(value[0]),
     163                 self._unicode_to_str(value[1]),
     164                 self._unicode_to_str(value[2]))
    144165        if type(value[0]) is not str:
    145166            raise TypeError('bad value tuple type field: %s' % (type(value[0])))
     
    164185
    165186    def __len__(self):
    166         return len(self.keys())
     187        return len(list(self.keys()))
    167188
    168189    def keys(self, globals = True):
    169190        if globals:
    170             keys = self.macros['global'].keys()
     191            keys = list(self.macros['global'].keys())
    171192        else:
    172193            keys = []
     
    183204        if type(key) is not str:
    184205            raise TypeError('bad key type (want str): %s' % (type(key)))
    185         if self.key_filter(key) not in self.keys():
     206        if self.key_filter(key) not in list(self.keys()):
    186207            return False
    187208        return True
     
    196217
    197218    def maps(self):
    198         return self.macros.keys()
     219        return list(self.macros.keys())
    199220
    200221    def map_keys(self, _map):
     
    227248        trace_me = False
    228249        if trace_me:
    229             print '[[[[]]]] parsing macros'
     250            print('[[[[]]]] parsing macros')
    230251        macros = { 'global': {} }
    231252        map = 'global'
     
    239260            if len(l) == 0:
    240261                continue
     262            l = self._unicode_to_str(l)
    241263            l_remaining = l
    242264            for c in l:
    243265                if trace_me:
    244                     print ']]]]]]]] c:%s(%d) s:%s t:"%s" m:%r M:%s' % \
    245                         (c, ord(c), state, token, macro, map)
     266                    print(']]]]]]]] c:%s(%d) s:%s t:"%s" m:%r M:%s' % \
     267                        (c, ord(c), state, token, macro, map))
    246268                l_remaining = l_remaining[1:]
    247269                if c is '#' and not state.startswith('value'):
     
    346368                    raise error.internal('bad state: %s' % (state))
    347369                if state is 'macro':
    348                     macros[map][macro[0].lower()] = (macro[1], macro[2], macro[3])
     370                    macros[map][self._unicode_to_str(macro[0].lower())] = \
     371                                (self._unicode_to_str(macro[1]),
     372                                 self._unicode_to_str(macro[2]),
     373                                 self._unicode_to_str(macro[3]))
    349374                    macro = []
    350375                    token = ''
     
    366391                    self.files += [n]
    367392                    return
    368                 except IOError, err:
     393                except IOError as err:
    369394                    pass
    370395        raise error.general('opening macro file: %s' % \
     
    482507    import copy
    483508    import sys
    484     m = macros(name = 'defaults.mc')
     509    m = macros()
    485510    d = copy.copy(m)
    486511    m['test1'] = 'something'
    487     if d.has_key('test1'):
    488         print 'error: copy failed.'
     512    if 'test1' in d:
     513        print('error: copy failed.')
    489514        sys.exit(1)
    490515    m.parse("[test]\n" \
    491516            "test1: none, undefine, ''\n" \
    492517            "name:  none, override, 'pink'\n")
    493     print 'set test:', m.set_read_map('test')
     518    print('set test:', m.set_read_map('test'))
    494519    if m['name'] != 'pink':
    495         print 'error: override failed. name is %s' % (m['name'])
     520        print('error: override failed. name is %s' % (m['name']))
    496521        sys.exit(1)
    497     if m.has_key('test1'):
    498         print 'error: map undefine failed.'
     522    if 'test1' in m:
     523        print('error: map undefine failed.')
    499524        sys.exit(1)
    500     print 'unset test:', m.unset_read_map('test')
    501     print m
    502     print m.keys()
     525    print('unset test:', m.unset_read_map('test'))
     526    print(m)
     527    print(list(m.keys()))
  • source-builder/sb/mailer.py

    r76188ee4 rf88fcf3  
    2121# Manage emailing results or reports.
    2222#
     23
     24from __future__ import print_function
    2325
    2426import os
     
    6567                lines = mrc.readlines()
    6668                mrc.close()
    67             except IOError, err:
     69            except IOError as err:
    6870                raise error.general('error reading: %s' % (mailrc))
    6971            for l in lines:
     
    9496            s = smtplib.SMTP(self.smtp_host())
    9597            s.sendmail(from_addr, [to_addr], msg)
    96         except smtplib.SMTPException, se:
     98        except smtplib.SMTPException as se:
    9799            raise error.general('sending mail: %s' % (str(se)))
    98         except socket.error, se:
     100        except socket.error as se:
    99101            raise error.general('sending mail: %s' % (str(se)))
    100102
     
    105107    opts = options.load(sys.argv, optargs = optargs, defaults = 'defaults.mc')
    106108    m = mail(opts)
    107     print 'From: %s' % (m.from_address())
    108     print 'SMTP Host: %s' % (m.smtp_host())
     109    print('From: %s' % (m.from_address()))
     110    print('SMTP Host: %s' % (m.smtp_host()))
    109111    m.send(m.from_address(), 'Test mailer.py', 'This is a test')
  • source-builder/sb/options.py

    r76188ee4 rf88fcf3  
    11#
    22# RTEMS Tools Project (http://www.rtems.org/)
    3 # Copyright 2010-2013 Chris Johns (chrisj@rtems.org)
     3# Copyright 2010-2016 Chris Johns (chrisj@rtems.org)
    44# All rights reserved.
    55#
     
    2222#
    2323
     24from __future__ import print_function
     25
    2426import datetime
    2527import glob
     
    4244
    4345#
    44 # Save the host state.
     46# Save the host and POSIX state.
    4547#
    4648host_windows = False
     49host_posix = True
    4750
    4851class command_line:
     
    97100        def _dict(dd):
    98101            s = ''
    99             ddl = dd.keys()
     102            ddl = list(dd.keys())
    100103            ddl.sort()
    101104            for d in ddl:
     
    190193
    191194    def help(self):
    192         print '%s: [options] [args]' % (self.command_name)
    193         print 'RTEMS Source Builder, an RTEMS Tools Project (c) 2012-2015 Chris Johns'
    194         print 'Options and arguments:'
    195         print '--force                : Force the build to proceed'
    196         print '--quiet                : Quiet output (not used)'
    197         print '--trace                : Trace the execution'
    198         print '--dry-run              : Do everything but actually run the build'
    199         print '--warn-all             : Generate warnings'
    200         print '--no-clean             : Do not clean up the build tree'
    201         print '--always-clean         : Always clean the build tree, even with an error'
    202         print '--keep-going           : Do not stop on an error.'
    203         print '--regression           : Set --no-install, --keep-going and --always-clean'
    204         print '--jobs                 : Run with specified number of jobs, default: num CPUs.'
    205         print '--host                 : Set the host triplet'
    206         print '--build                : Set the build triplet'
    207         print '--target               : Set the target triplet'
    208         print '--prefix path          : Tools build prefix, ie where they are installed'
    209         print '--topdir path          : Top of the build tree, default is $PWD'
    210         print '--configdir path       : Path to the configuration directory, default: ./config'
    211         print '--builddir path        : Path to the build directory, default: ./build'
    212         print '--sourcedir path       : Path to the source directory, default: ./source'
    213         print '--tmppath path         : Path to the temp directory, default: ./tmp'
    214         print '--macros file[,[file]  : Macro format files to load after the defaults'
    215         print '--log file             : Log file where all build out is written too'
    216         print '--url url[,url]        : URL to look for source'
    217         print '--no-download          : Disable the source downloader'
    218         print '--no-install           : Do not install the packages to the prefix'
    219         print '--targetcflags flags   : List of C flags for the target code'
    220         print '--targetcxxflags flags : List of C++ flags for the target code'
    221         print '--libstdcxxflags flags : List of C++ flags to build the target libstdc++ code'
    222         print '--with-<label>         : Add the --with-<label> to the build'
    223         print '--without-<label>      : Add the --without-<label> to the build'
    224         print '--rtems-tools path     : Path to an install RTEMS tool set'
    225         print '--rtems-bsp arc/bsp    : Standard RTEMS architecure and BSP specifier'
    226         print '--rtems-version ver    : The RTEMS major/minor version string'
     195        print('%s: [options] [args]' % (self.command_name))
     196        print('RTEMS Source Builder, an RTEMS Tools Project (c) 2012-2015 Chris Johns')
     197        print('Options and arguments:')
     198        print('--force                : Force the build to proceed')
     199        print('--quiet                : Quiet output (not used)')
     200        print('--trace                : Trace the execution')
     201        print('--dry-run              : Do everything but actually run the build')
     202        print('--warn-all             : Generate warnings')
     203        print('--no-clean             : Do not clean up the build tree')
     204        print('--always-clean         : Always clean the build tree, even with an error')
     205        print('--keep-going           : Do not stop on an error.')
     206        print('--regression           : Set --no-install, --keep-going and --always-clean')
     207        print('--jobs                 : Run with specified number of jobs, default: num CPUs.')
     208        print('--host                 : Set the host triplet')
     209        print('--build                : Set the build triplet')
     210        print('--target               : Set the target triplet')
     211        print('--prefix path          : Tools build prefix, ie where they are installed')
     212        print('--topdir path          : Top of the build tree, default is $PWD')
     213        print('--configdir path       : Path to the configuration directory, default: ./config')
     214        print('--builddir path        : Path to the build directory, default: ./build')
     215        print('--sourcedir path       : Path to the source directory, default: ./source')
     216        print('--tmppath path         : Path to the temp directory, default: ./tmp')
     217        print('--macros file[,[file]  : Macro format files to load after the defaults')
     218        print('--log file             : Log file where all build out is written too')
     219        print('--url url[,url]        : URL to look for source')
     220        print('--no-download          : Disable the source downloader')
     221        print('--no-install           : Do not install the packages to the prefix')
     222        print('--targetcflags flags   : List of C flags for the target code')
     223        print('--targetcxxflags flags : List of C++ flags for the target code')
     224        print('--libstdcxxflags flags : List of C++ flags to build the target libstdc++ code')
     225        print('--with-<label>         : Add the --with-<label> to the build')
     226        print('--without-<label>      : Add the --without-<label> to the build')
     227        print('--rtems-tools path     : Path to an install RTEMS tool set')
     228        print('--rtems-bsp arc/bsp    : Standard RTEMS architecure and BSP specifier')
     229        print('--rtems-version ver    : The RTEMS major/minor version string')
    227230        if self.optargs:
    228231            for a in self.optargs:
    229                 print '%-22s : %s' % (a, self.optargs[a])
     232                print('%-22s : %s' % (a, self.optargs[a]))
    230233        raise error.exit()
    231234
     
    484487        config = path.shell(config)
    485488        if '*' in config or '?' in config:
    486             print config
     489            print(config)
    487490            configdir = path.dirname(config)
    488491            configbase = path.basename(config)
     
    563566
    564567    global host_windows
     568    global host_posix
    565569
    566570    #
     
    587591            overrides = windows.load()
    588592            host_windows = True
     593            host_posix = False
    589594        except:
    590595            raise error.general('failed to load Windows host support')
     
    592597        uname = os.uname()
    593598        try:
    594             if uname[0].startswith('CYGWIN_NT'):
     599            if uname[0].startswith('MINGW64_NT'):
     600                import windows
     601                overrides = windows.load()
     602                host_windows = True
     603            elif uname[0].startswith('CYGWIN_NT'):
    595604                import windows
    596605                overrides = windows.load()
     
    643652        log.notice('with-opt1: %r' % (_opts.with_arg('opt1')))
    644653        log.notice('without-opt2: %r' % (_opts.with_arg('opt2')))
    645     except error.general, gerr:
    646         print gerr
     654    except error.general as gerr:
     655        print(gerr)
    647656        sys.exit(1)
    648     except error.internal, ierr:
    649         print ierr
     657    except error.internal as ierr:
     658        print(ierr)
    650659        sys.exit(1)
    651     except error.exit, eerr:
     660    except error.exit as eerr:
    652661        pass
    653662    except KeyboardInterrupt:
  • source-builder/sb/path.py

    r76188ee4 rf88fcf3  
    11#
    22# RTEMS Tools Project (http://www.rtems.org/)
    3 # Copyright 2010-2015 Chris Johns (chrisj@rtems.org)
     3# Copyright 2010-2016 Chris Johns (chrisj@rtems.org)
    44# All rights reserved.
    55#
     
    2323# level. This allows macro expansion to work.
    2424#
     25
     26from __future__ import print_function
    2527
    2628import log
     
    120122            try:
    121123                os.makedirs(host(path))
    122             except IOError, err:
    123                 raise error.general('cannot make directory: %s' % (path))
    124             except OSError, err:
    125                 raise error.general('cannot make directory: %s' % (path))
    126             except WindowsError, err:
     124            except IOError as err:
     125                raise error.general('cannot make directory: %s' % (path))
     126            except OSError as err:
     127                raise error.general('cannot make directory: %s' % (path))
     128            except WindowsError as err:
    127129                raise error.general('cannot make directory: %s' % (path))
    128130        else:
    129131            try:
    130132                os.makedirs(host(path))
    131             except IOError, err:
    132                 raise error.general('cannot make directory: %s' % (path))
    133             except OSError, err:
     133            except IOError as err:
     134                raise error.general('cannot make directory: %s' % (path))
     135            except OSError as err:
    134136                raise error.general('cannot make directory: %s' % (path))
    135137
     
    173175    try:
    174176        shutil.copy(hsrc, hdst)
    175     except OSError, why:
     177    except OSError as why:
    176178        if windows:
    177179            if WindowsError is not None and isinstance(why, WindowsError):
     
    192194
    193195    if trace:
    194         print 'path.copy_tree:'
    195         print '   src: %s' % (src)
    196         print '  hsrc: %s' % (hsrc)
    197         print '   dst: %s' % (dst)
    198         print '  hdst: %s' % (hdst)
    199         print ' names: %r' % (names)
     196        print('path.copy_tree:')
     197        print('   src: %s' % (src))
     198        print('  hsrc: %s' % (hsrc))
     199        print('   dst: %s' % (dst))
     200        print('  hdst: %s' % (hdst))
     201        print(' names: %r' % (names))
    200202
    201203    if not os.path.isdir(hdst):
    202204        if trace:
    203             print ' mkdir: %s' % (hdst)
     205            print(' mkdir: %s' % (hdst))
    204206        try:
    205207            os.makedirs(hdst)
    206         except OSError, why:
     208        except OSError as why:
    207209            raise error.general('copying tree: cannot create target directory %s: %s' % \
    208210                                (hdst, str(why)))
     
    231233            else:
    232234                    shutil.copy2(host(srcname), host(dstname))
    233         except shutil.Error, err:
     235        except shutil.Error as err:
    234236            raise error.general('copying tree: %s -> %s: %s' % \
    235237                                (hsrc, hdst, str(err)))
    236         except EnvironmentError, why:
     238        except EnvironmentError as why:
    237239            raise error.general('copying tree: %s -> %s: %s' % \
    238240                                (srcname, dstname, str(why)))
    239241    try:
    240242        shutil.copystat(hsrc, hdst)
    241     except OSError, why:
     243    except OSError as why:
    242244        if windows:
    243245            if WindowsError is not None and isinstance(why, WindowsError):
     
    247249
    248250if __name__ == '__main__':
    249     print host('/a/b/c/d-e-f')
    250     print host('//a/b//c/d-e-f')
    251     print shell('/w/x/y/z')
    252     print basename('/as/sd/df/fg/me.txt')
    253     print dirname('/as/sd/df/fg/me.txt')
    254     print join('/d', 'g', '/tyty/fgfg')
     251    print(host('/a/b/c/d-e-f'))
     252    print(host('//a/b//c/d-e-f'))
     253    print(shell('/w/x/y/z'))
     254    print(basename('/as/sd/df/fg/me.txt'))
     255    print(dirname('/as/sd/df/fg/me.txt'))
     256    print(join('/d', 'g', '/tyty/fgfg'))
    255257    windows = True
    256     print host('/a/b/c/d-e-f')
    257     print host('//a/b//c/d-e-f')
    258     print shell('/w/x/y/z')
    259     print shell('w:/x/y/z')
    260     print basename('x:/sd/df/fg/me.txt')
    261     print dirname('x:/sd/df/fg/me.txt')
    262     print join('s:/d/e\\f/g', '/h', '/tyty/zxzx', '\\mm\\nn/p')
     258    print(host('/a/b/c/d-e-f'))
     259    print(host('//a/b//c/d-e-f'))
     260    print(shell('/w/x/y/z'))
     261    print(shell('w:/x/y/z'))
     262    print(basename('x:/sd/df/fg/me.txt'))
     263    print(dirname('x:/sd/df/fg/me.txt'))
     264    print(join('s:/d/e\\f/g', '/h', '/tyty/zxzx', '\\mm\\nn/p'))
  • source-builder/sb/pkgconfig.py

    r76188ee4 rf88fcf3  
    22#
    33# RTEMS Tools Project (http://www.rtems.org/)
    4 # Copyright 2014 Chris Johns (chrisj@rtems.org)
     4# Copyright 2014-2016 Chris Johns (chrisj@rtems.org)
    55# All rights reserved.
    66#
     
    3434# provided by the full pkg-config so packages can configure and build.
    3535#
     36
     37from __future__ import print_function
    3638
    3739import copy
     
    197199    def dump_loaded():
    198200        for n in sorted(package.loaded):
    199             print package.loaded[n]._str()
     201            print(package.loaded[n]._str())
    200202
    201203    def __init__(self, name = None, prefix = None,
     
    459461                        rhs = l[d + 1:]
    460462                        if tm:
    461                             print('define: ' + str(define) + ', lhs: ' + lhs + ', ' + rhs)
     463                            print(('define: ' + str(define) + ', lhs: ' + lhs + ', ' + rhs))
    462464                        if define:
    463465                            self.defines[lhs] = rhs
  • source-builder/sb/reports.py

    r76188ee4 rf88fcf3  
    2323#
    2424
     25from __future__ import print_function
     26
    2527import copy
    2628import datetime
     
    4446    import version
    4547except KeyboardInterrupt:
    46     print 'user terminated'
     48    print('user terminated', file = sys.stderr)
    4749    sys.exit(1)
    4850except:
    49     print 'error: unknown application load error'
     51    print('error: unknown application load error', file = sys.stderr)
    5052    sys.exit(1)
    5153
     
    105107
    106108    def buildset_start(self, nest_level, name):
    107         self.line('=-' * (_line_len / 2))
     109        self.line('=-' * int(_line_len / 2))
    108110        self.line('Build Set: (%d) %s' % (nest_level, name))
    109111
     
    217219    def buildset_start(self, nest_level, name):
    218220        h = '%s' % (name)
    219         self.line('=%s %s' % ('=' * nest_level, h))
     221        self.line('=%s %s' % ('=' * int(nest_level), h))
    220222
    221223    def info(self, nest_level, name, info, separated):
     
    267269
    268270    def post_process(self):
    269         import StringIO
    270         infile = StringIO.StringIO(self.content)
    271         outfile = StringIO.StringIO()
     271        import io
     272        infile = io.StringIO(self.content)
     273        outfile = io.StringIO()
    272274        try:
    273275            import asciidocapi
     
    648650            if len(sources):
    649651                if 'sources' in tree:
    650                     tree['sources'] = dict(tree['sources'].items() + sources.items())
     652                    tree['sources'] = dict(list(tree['sources'].items()) + list(sources.items()))
    651653                else:
    652654                    tree['sources'] = sources
    653655            if len(patches):
    654656                if 'patches' in tree:
    655                     tree['patches'] = dict(tree['patches'].items() + patches.items())
     657                    tree['patches'] = dict(list(tree['patches'].items()) + list(patches.items()))
    656658                else:
    657659                    tree['patches'] = patches
     
    683685                for f in range(0, len(files) - 1):
    684686                    self.output('; %s  |- %s' % (prefix, files[f]))
    685                 if 'bset' in tree and len(tree['bset'].keys()):
     687                if 'bset' in tree and len(list(tree['bset'].keys())):
    686688                    c = '|'
    687689                else:
     
    718720
    719721    def generate_ini(self):
    720         nodes = sorted([node for node in self.tree.keys() if node != 'bset'])
     722        nodes = sorted([node for node in list(self.tree.keys()) if node != 'bset'])
    721723        self.output(';')
    722724        self.output('; Configuration Tree:')
     
    743745                o.close()
    744746                del o
    745             except IOError, err:
     747            except IOError as err:
    746748                raise error.general('writing output file: %s: %s' % (name, err))
    747749
     
    788790        if opts.get_arg('--output') and len(opts.params()) > 1:
    789791            raise error.general('--output can only be used with a single config')
    790         print 'RTEMS Source Builder, Reporter, %s' % (version.str())
     792        print('RTEMS Source Builder, Reporter, %s' % (version.str()))
    791793        opts.log_info()
    792794        if not check.host_setup(opts):
     
    828830        else:
    829831            raise error.general('invalid config type: %s' % (config))
    830     except error.general, gerr:
    831         print gerr
     832    except error.general as gerr:
     833        print(gerr)
    832834        sys.exit(1)
    833     except error.internal, ierr:
    834         print ierr
     835    except error.internal as ierr:
     836        print(ierr)
    835837        sys.exit(1)
    836     except error.exit, eerr:
     838    except error.exit as eerr:
    837839        pass
    838840    except KeyboardInterrupt:
  • source-builder/sb/rtemsconfig.py

    r76188ee4 rf88fcf3  
    11#
    22# RTEMS Tools Project (http://www.rtems.org/)
    3 # Copyright 2013 Chris Johns (chrisj@rtems.org)
     3# Copyright 2013-2016 Chris Johns (chrisj@rtems.org)
    44# All rights reserved.
    55#
     
    1919#
    2020
     21from __future__ import print_function
     22
    2123import datetime
    2224import operator
     
    4749        matches = [rege.match(l) != None for l in f.readlines()]
    4850        f.close()
    49     except IOError, err:
     51    except IOError as err:
    5052        raise error.general('error reading: %s' % (file))
    5153    return True in matches
     
    8789            cmd = [self.opts.defaults.expand(c) for c in self.cmd]
    8890            self.output = subprocess.check_output(cmd, cwd = self.cwd)
    89         except subprocess.CalledProcessError, cpe:
     91        except subprocess.CalledProcessError as cpe:
    9092            self.exit_code = cpe.returncode
    9193            self.output = cpe.output
     
    169171
    170172    def find(self, name):
    171         _keys = self.keys()
     173        _keys = list(self.keys())
    172174        nl = name.lower()
    173175        if nl in _keys and not nl in bsp_config.filter_out:
     
    194196            log.notice('RTEMS Source Builder - RTEMS Configuration, %s' % (version.str()))
    195197            opts.log_info()
    196             configs = bsp.keys()
     198            configs = list(bsp.keys())
    197199            for c in sorted(configs.keys()):
    198                 print c
     200                print(c)
    199201        else:
    200202            for p in opts.params():
    201                 print bsp.find(p)
    202 
    203     except error.general, gerr:
    204         print gerr
     203                print(bsp.find(p))
     204
     205    except error.general as gerr:
     206        print(gerr)
    205207        sys.exit(1)
    206     except error.internal, ierr:
    207         print ierr
     208    except error.internal as ierr:
     209        print(ierr)
    208210        sys.exit(1)
    209     except error.exit, eerr:
     211    except error.exit as eerr:
    210212        pass
    211213    except KeyboardInterrupt:
  • source-builder/sb/setbuilder.py

    r76188ee4 rf88fcf3  
    11#
    22# RTEMS Tools Project (http://www.rtems.org/)
    3 # Copyright 2010-2013 Chris Johns (chrisj@rtems.org)
     3# Copyright 2010-2016 Chris Johns (chrisj@rtems.org)
    44# All rights reserved.
    55#
     
    2323#
    2424
     25from __future__ import print_function
     26
    2527import copy
    2628import datetime
     
    4244    import version
    4345except KeyboardInterrupt:
    44     print 'abort: user terminated'
     46    print('abort: user terminated', file = sys.stderr)
    4547    sys.exit(1)
    4648except:
    47     print 'error: unknown application load error'
     49    raise
     50    print('error: unknown application load error', file = sys.stderr)
    4851    sys.exit(1)
    4952
     
    226229            log.trace('_bset: %s: open: %s' % (self.bset, bsetname))
    227230            bset = open(path.host(bsetname), 'r')
    228         except IOError, err:
     231        except IOError as err:
    229232            raise error.general('error opening bset file: %s' % (bsetname))
    230233
     
    364367                    else:
    365368                        raise error.general('invalid config type: %s' % (configs[s]))
    366                 except error.general, gerr:
     369                except error.general as gerr:
    367370                    have_errors = True
    368371                    if b is not None:
     
    406409            for b in builds:
    407410                del b
    408         except error.general, gerr:
     411        except error.general as gerr:
    409412            if not build_error:
    410413                log.stderr(str(gerr))
     
    448451            ext = '.bset'
    449452        for p in configs['paths']:
    450             print 'Examining: %s' % (os.path.relpath(p))
     453            print('Examining: %s' % (os.path.relpath(p)))
    451454        for c in configs['files']:
    452455            if c.endswith(ext):
    453                 print '    %s' % (c)
     456                print('    %s' % (c))
    454457        return True
    455458    return False
     
    498501            for d in sorted(set(deps)):
    499502                c += 1
    500                 print 'dep[%d]: %s' % (c, d)
    501     except error.general, gerr:
     503                print('dep[%d]: %s' % (c, d))
     504    except error.general as gerr:
    502505        if not setbuilder_error:
    503506            log.stderr(str(gerr))
    504507        log.stderr('Build FAILED')
    505508        ec = 1
    506     except error.internal, ierr:
     509    except error.internal as ierr:
    507510        if not setbuilder_error:
    508511            log.stderr(str(ierr))
    509512        log.stderr('Internal Build FAILED')
    510513        ec = 1
    511     except error.exit, eerr:
     514    except error.exit as eerr:
    512515        pass
    513516    except KeyboardInterrupt:
  • source-builder/sb/version.py

    r76188ee4 rf88fcf3  
    11#
    22# RTEMS Tools Project (http://www.rtems.org/)
    3 # Copyright 2010-2015 Chris Johns (chrisj@rtems.org)
     3# Copyright 2010-2016 Chris Johns (chrisj@rtems.org)
    44# All rights reserved.
    55#
     
    2222# to the top directory.
    2323#
     24
     25from __future__ import print_function
    2426
    2527import sys
     
    4951    for ver in [top, '..']:
    5052        if path.exists(path.join(ver, 'VERSION')):
    51             import ConfigParser
    52             v = ConfigParser.SafeConfigParser()
     53            import configparser
     54            v = configparser.SafeConfigParser()
    5355            v.read(path.join(ver, 'VERSION'))
    5456            return v
     
    108110
    109111if __name__ == '__main__':
    110     print 'Version: %s' % (str())
     112    print('Version: %s' % (str()))
  • source-builder/sb/windows.py

    r76188ee4 rf88fcf3  
    3131    # Default to the native Windows Python.
    3232    uname = 'win32'
    33     if os.environ.has_key('PROCESSOR_ARCHITECTURE'):
     33    if 'PROCESSOR_ARCHITECTURE' in os.environ:
    3434        if os.environ['PROCESSOR_ARCHITECTURE'] == 'AMD64':
    3535            hosttype = 'x86_64'
     
    4242        machsize = '32'
    4343
    44     # See if this is actually Cygwin Python
     44    uname = 'mingw32'
     45    machine = 'w%s' % (machsize)
     46
     47    # See if this is actually MSYS2/Cygwin Python
    4548    if os.name == 'posix':
    46         try:
    47             uname = os.uname()
    48             hosttype = uname[4]
    49             uname = uname[0]
    50             if uname.startswith('CYGWIN'):
    51                 uname = 'cygwin'
    52                 host_triple = hosttype + '-pc-' + uname
    53                 build_triple = hosttype + '-pc-' + uname
    54             else:
    55                 raise error.general('invalid POSIX python')
    56         except:
     49        _uname = os.uname()
     50        if _uname[0].startswith('MINGW'):
    5751            pass
    58     else:
    59         host_triple = '%s-w%s-mingw32' % (hosttype, machsize)
    60         build_triple = '%s-w%s-mingw32' % (hosttype, machsize)
     52        elif _uname[0].startswith('CYGWIN'):
     53            hosttype = _uname[4]
     54            uname = 'cygwin'
     55            machine = 'pc'
     56        else:
     57            raise error.general('invalid POSIX python for Windows')
    6158
    62     if os.environ.has_key('NUMBER_OF_PROCESSORS'):
     59    host_triple = '%s-%s-%s' % (hosttype, machine, uname)
     60    build_triple = '%s-%s-%s' % (hosttype, machine, uname)
     61
     62    if 'NUMBER_OF_PROCESSORS' in os.environ:
    6363        ncpus = os.environ['NUMBER_OF_PROCESSORS']
    6464    else:
    6565        ncpus = '1'
    6666
    67     if os.environ.has_key('MSYSTEM'):
     67    if 'MSYSTEM' in os.environ:
    6868        os.environ.pop('NUMBER_OF_PROCESSORS')
    6969
Note: See TracChangeset for help on using the changeset viewer.