Changeset cafbcc6 in rtems-source-builder


Ignore:
Timestamp:
Feb 21, 2013, 8:03:09 AM (7 years ago)
Author:
Chris Johns <chrisj@…>
Branches:
4.10, 4.11, 4.9, master
Children:
ee47d72
Parents:
729f0bb
Message:

Support directly installing.

By default the Source Builder now directly installs in the prefix and
does not create tar files. You need to supply options to create build
set level tar files and/or package level tar files.

Location:
source-builder/sb
Files:
2 edited

Legend:

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

    r729f0bb rcafbcc6  
    6262    """Create and manage a shell script."""
    6363
    64     def __init__(self, quiet = True):
     64    def __init__(self, quiet = True, trace = False):
    6565        self.quiet = quiet
     66        self.trace = trace
    6667        self.reset()
    6768
     
    7778            for l in text:
    7879                i += 1
    79                 log.output('script:%3d: ' % (self.lc + i) + l)
     80                log.output('script:%3d: %s' % (self.lc + i, l))
     81                if self.trace:
     82                    print '%3d: S %s' % (self.lc + i,  l)
    8083        self.lc += len(text)
    8184        self.body.extend(text)
     
    102105    """Build a package given a config file."""
    103106
    104     def __init__(self, name, _defaults, opts):
     107    def __init__(self, name, create_tar_files, _defaults, opts):
    105108        self.opts = opts
     109        self.create_tar_files = create_tar_files
    106110        _notice(opts, 'building: ' + name)
    107111        self.config = config.file(name, _defaults = _defaults, opts = opts)
    108         self.script = script(quiet = opts.quiet())
     112        self.script = script(quiet = opts.quiet(), trace = opts.trace())
    109113
    110114    def _output(self, text):
     
    401405
    402406    def files(self, package):
    403         self.script.append('echo "==> %files:"')
    404         prefixbase = self.opts.prefixbase()
    405         if prefixbase is None:
    406             prefixbase = ''
    407         inpath = path.join('%{buildroot}', prefixbase)
    408         tardir = path.abspath(self.config.expand('%{_tardir}'))
    409         self.script.append(self.config.expand('if test -d %s; then' % (inpath)))
    410         self.script.append('  mkdir -p %s' % tardir)
    411         self.script.append(self.config.expand('  cd ' + inpath))
    412         tar = path.join(tardir, package.long_name() + '.tar.bz2')
    413         cmd = self.config.expand('  %{__tar} -cf - . ' + '| %{__bzip2} > ' + tar)
    414         self.script.append(cmd)
    415         self.script.append(self.config.expand('  cd %{_builddir}'))
    416         self.script.append('fi')
     407        if self.create_tar_files:
     408            self.script.append('echo "==> %files:"')
     409            prefixbase = self.opts.prefixbase()
     410            if prefixbase is None:
     411                prefixbase = ''
     412            inpath = path.join('%{buildroot}', prefixbase)
     413            tardir = path.abspath(self.config.expand('%{_tardir}'))
     414            self.script.append(self.config.expand('if test -d %s; then' % (inpath)))
     415            self.script.append('  mkdir -p %s' % tardir)
     416            self.script.append(self.config.expand('  cd ' + inpath))
     417            tar = path.join(tardir, package.long_name() + '.tar.bz2')
     418            cmd = self.config.expand('  %{__tar} -cf - . ' + '| %{__bzip2} > ' + tar)
     419            self.script.append(cmd)
     420            self.script.append(self.config.expand('  cd %{_builddir}'))
     421            self.script.append('fi')
    417422
    418423    def clean(self, package):
     
    496501            _notice(opts, 'warning: forcing build with known host setup problems')
    497502        if opts.get_arg('--list-configs'):
    498             list_configs(opts, _defaults)
     503            configs = get_configs(opts, _defaults)
     504            for p in configs['paths']:
     505                print 'Examining: %s' % (os.path.relpath(p))
     506                for c in configs['files']:
     507                    if c.endswith('.cfg'):
     508                        print '    %s' % (c)
    499509        else:
    500510            for config_file in opts.config_files():
    501                 b = build(config_file, _defaults = _defaults, opts = opts)
     511                b = build(config_file, True, _defaults = _defaults, opts = opts)
    502512                b.make()
    503513                del b
  • source-builder/sb/setbuilder.py

    r729f0bb rcafbcc6  
    8080
    8181    def copy(self, src, dst):
    82         if os.path.isdir(path.host(src)):
    83             topdir = self.opts.expand('%{_topdir}', self.defaults)
    84             what = '%s -> %s' % \
    85                 (path.host(src[len(topdir) + 1:]), path.host(dst[len(topdir) + 1:]))
    86             if self.opts.trace():
    87                 _notice(self.opts, 'installing: %s' % (what))
    88             if not self.opts.dry_run():
    89                 try:
    90                     files = distutils.dir_util.copy_tree(path.host(src),
    91                                                          path.host(dst))
    92                     for f in files:
    93                         self._output(f)
    94                 except IOError, err:
    95                     raise error.general('installing tree: %s: %s' % (what, str(err)))
    96                 except distutils.errors.DistutilsFileError, err:
    97                     raise error.general('installing tree: %s' % (str(err)))
     82        if not os.path.isdir(path.host(src)):
     83            raise error.general('copying tree: no source directory: %s' % (path.host(src)))
     84        if not self.opts.dry_run():
     85            try:
     86                files = distutils.dir_util.copy_tree(path.host(src),
     87                                                     path.host(dst))
     88                for f in files:
     89                    self._output(f)
     90            except IOError, err:
     91                raise error.general('copying tree: %s: %s' % (what, str(err)))
     92            except distutils.errors.DistutilsFileError, err:
     93                raise error.general('copying tree: %s' % (str(err)))
    9894
    9995    def first_package(self, _build):
     
    115111
    116112    def every_package(self, _build, tmproot):
    117         self.copy(_build.config.abspath('%{buildroot}'), tmproot)
     113        src = _build.config.abspath('%{buildroot}')
     114        dst = tmproot
     115        if self.opts.get_arg('--bset-tar-file'):
     116            what = '%s -> %s' % \
     117                (os.path.relpath(path.host(src)), os.path.relpath(path.host(dst)))
     118            if self.opts.trace():
     119                _notice(self.opts, 'collecting: %s' % (what))
     120            self.copy(src, dst)
     121        if not self.opts.get_arg('--no-install'):
     122            dst = _build.config.expand('%{_prefix}')
     123            src = path.join(src, dst)
     124            _notice(self.opts, 'installing: %s -> %s' % \
     125                        (self.bset_pkg, os.path.relpath(path.host(dst))))
     126            self.copy(src, dst)
    118127
    119128    def last_package(self, _build, tmproot):
    120         tar = path.join(_build.config.expand('%{_tardir}'),
    121                         _build.config.expand('%s.tar.bz2' % (self.bset_pkg)))
    122         _notice(self.opts, 'tarball: %s' % os.path.relpath(path.host(tar)))
    123         if not self.opts.dry_run():
    124             cmd = _build.config.expand("'cd " + tmproot + \
    125                                            " && %{__tar} -cf - . | %{__bzip2} > " + tar + "'")
    126             _build.run(cmd, shell_opts = '-c', cwd = tmproot)
     129        if self.opts.get_arg('--bset-tar-file'):
     130            tar = path.join(_build.config.expand('%{_tardir}'),
     131                            _build.config.expand('%s.tar.bz2' % (self.bset_pkg)))
     132            _notice(self.opts, 'tarball: %s -> %s' %
     133                    (os.path.relpath(path.host(tmproot)), os.path.relpath(path.host(tar))))
     134            if not self.opts.dry_run():
     135                cmd = _build.config.expand("'cd " + tmproot + \
     136                                               " && %{__tar} -cf - . | %{__bzip2} > " + tar + "'")
     137                _build.run(cmd, shell_opts = '-c', cwd = tmproot)
    127138
    128139    def parse(self, bset):
     
    235246                        del bs
    236247                    elif configs[s].endswith('.cfg'):
    237                         b = build.build(configs[s], _defaults = self.defaults, opts = self.opts)
     248                        b = build.build(configs[s],
     249                                        self.opts.get_arg('--pkg-tar-files'),
     250                                        _defaults = self.defaults,
     251                                        opts = self.opts)
    238252                        if s == 0:
    239253                            tmproot = self.first_package(b)
     
    269283    import sys
    270284    try:
    271         optargs = { '--keep-going': 'Do not stop on error.',
    272                     '--list-configs': 'List available configurations',
    273                     '--list-bsets': 'List available build sets'}
     285        optargs = { '--list-configs':  'List available configurations',
     286                    '--list-bsets':    'List available build sets',
     287                    '--keep-going':    'Do not stop on error.',
     288                    '--no-install':    'Do not install the packages to the prefix.',
     289                    '--bset-tar-file': 'Create a build set tar file',
     290                    '--pkg-tar-files': 'Create package tar files' }
    274291        opts, _defaults = defaults.load(sys.argv, optargs)
    275292        log.default = log.log(opts.logfiles())
Note: See TracChangeset for help on using the changeset viewer.