Changeset 4ce931b in rtems-source-builder


Ignore:
Timestamp:
Apr 20, 2013, 11:47:28 AM (6 years ago)
Author:
Chris Johns <chrisj@…>
Branches:
4.10, 4.11, 4.9, master
Children:
29a300a
Parents:
fd5042a
Message:

Add CVS download support.

These changes complete the CVS download support.

Files:
1 added
5 edited

Legend:

Unmodified
Added
Removed
  • rtems/config/snapshots/gcc-4.7-branch.mc

    rfd5042a r4ce931b  
    1 [gcc-4.7-snapshot]
     1[gcc-snapshot]
    22GCC_Version: none, override, '4.7.3-branch'
    3 Source0:     none, override, 'git://gcc.gnu.org/git/gcc.git?reset=hard?branch=gcc-4_7-branch'
     3Source0:     none, override, 'git://gcc.gnu.org/git/gcc.git?branch=gcc-4_7-branch'
    44Patch0:      none, override, '%{rtems_gcc_patches}/gcc-4.7.3-rtems4.11-20130414.diff'
  • source-builder/config/gcc-4.7-1.cfg

    rfd5042a r4ce931b  
    77
    88#
    9 # Select the GCC 4.7 Snapshot Macro Map
     9# Select Snapshot Macro Maps
    1010#
    11 %select gcc-4.7-snapshot
     11%select gcc-snapshot
     12%select newlib-snapshot
     13%select mpfr-snapshot
     14%select mpc-snapshot
     15%select gmp-snapshot
    1216
    1317#
  • source-builder/config/gcc-common-1.cfg

    rfd5042a r4ce931b  
    1212%endif
    1313
     14#
     15# The package description.
     16#
    1417Name:      %{_target}-gcc-%{gcc_version}-newlib-%{newlib_version}-%{release}
    1518Summary:   GCC v%{gcc_version} and Newlib v%{newlib_version} for target %{_target} on host %{_host}
  • source-builder/sb/cvs.py

    rfd5042a r4ce931b  
    3232    """An object to manage a cvs repo."""
    3333
    34     def _cvs_exit_code(self, ec, output):
     34    def _cvs_exit_code(self, cmd, ec, output):
    3535        if ec:
    3636            print output
    37             raise error.general('cvs command failed (%s): %d' % (self.cvs, ec))
     37            raise error.general('cvs command failed (%s): %d' % (cmd, ec))
    3838
    3939    def _parse_args(self, url):
     
    5050        return opts
    5151
    52     def _run(self, args, check = False):
     52    def _run(self, args, check = False, cwd = None):
    5353        e = execute.capture_execution()
    5454        if path.exists(self.path):
    5555            cwd = self.path
    56         else:
    57             cwd = None
    58         exit_code, proc, output = e.spawn([self.cvs, '-q'] + args, cwd = cwd)
     56        cmd = [self.cvs, '-q'] + args
     57        exit_code, proc, output = e.spawn(cmd, cwd = cwd)
    5958        if check:
    60             self._cvs_exit_code(exit_code, output)
     59            self._cvs_exit_code(cmd, exit_code, output)
    6160        return exit_code, output
    6261
    63     def __init__(self, _path, opts, macros = None):
     62    def __init__(self, _path, opts, macros = None, prefix = None):
    6463        self.path = _path
    6564        self.opts = opts
     65        self.prefix = prefix
    6666        if macros is None:
    6767            self.macros = opts.defaults
     
    8383        return (int(vs[0]), int(vs[1]), int(vs[2]))
    8484
    85     def checkout(self, root, path, module = ''):
    86         ec, output = self._run(['-d', root, 'co', '-N', '-d', path, module], check = True)
     85    def checkout(self, root, module = None, tag = None, date = None):
     86        cmd = ['-d', root, 'co', '-N']
     87        if tag:
     88           cmd += ['-r', tag]
     89        if date:
     90            cmd += ['-D', date]
     91        if module:
     92            cmd += [module]
     93        ec, output = self._run(cmd, check = True)
    8794
    8895    def update(self):
     
    138145    c = repo(ldir, opts)
    139146    if not path.exists(ldir):
    140         c.checkout(':pserver:anoncvs@sourceware.org:/cvs/src', ldir, 'newlib')
     147        path.mkdir(ldir)
     148        c.checkout(':pserver:anoncvs@sourceware.org:/cvs/src', module = 'newlib')
    141149    print c.cvs_version()
    142150    print c.valid()
  • source-builder/sb/download.py

    rfd5042a r4ce931b  
    2929import urlparse
    3030
     31import cvs
    3132import error
    3233import git
     
    7273    source['symlink'] = source['local']
    7374
     75def _cvs_parser(source, config, opts):
     76    #
     77    # Symlink.
     78    #
     79    if not source['url'].startswith('cvs://'):
     80        raise error.general('invalid cvs path: %s' % (source['url']))
     81    us = source['url'].split('?')
     82    try:
     83        url = us[0]
     84        source['file'] = \
     85            url[url[6:].index(':') + 7:].replace('/', '_').replace('@', '_').replace('.', '_')
     86        source['cvsroot'] = ':%s:' % (url[6:url[6:].index('/') + 6:])
     87    except:
     88        raise error.general('invalid cvs path: %s' % (source['url']))
     89    source['local'] = path.join(source['local_prefix'], 'cvs', source['file'])
     90    if 'src_prefix' in source:
     91        source['symlink'] = path.join(source['local'])
     92    else:
     93        source['symlink'] = source['local']
    7494
    7595def _file_parser(source, config, opts):
     
    82102            'ftp':  _http_parser,
    83103            'git':  _git_parser,
     104            'cvs':  _cvs_parser,
    84105            'file': _file_parser }
    85106
     
    189210    return True
    190211
     212def _cvs_downloader(url, local, config, opts):
     213    rlp = os.path.relpath(path.host(local))
     214    us = url.split('?')
     215    module = None
     216    tag = None
     217    date = None
     218    src_prefix = None
     219    for a in us[1:]:
     220        _as = a.split('=')
     221        if _as[0] == 'module':
     222            if len(_as) != 2:
     223                raise error.general('invalid cvs module: %s' % (a))
     224            module = _as[1]
     225        elif _as[0] == 'src-prefix':
     226            if len(_as) != 2:
     227                raise error.general('invalid cvs src-prefix: %s' % (a))
     228            src_prefix = _as[1]
     229        elif _as[0] == 'tag':
     230            if len(_as) != 2:
     231                raise error.general('invalid cvs tag: %s' % (a))
     232            tag = _as[1]
     233        elif _as[0] == 'date':
     234            if len(_as) != 2:
     235                raise error.general('invalid cvs date: %s' % (a))
     236            date = _as[1]
     237    repo = cvs.repo(local, opts, config.macros, src_prefix)
     238    if not repo.valid():
     239        _notice(opts, 'cvs: checkout: %s -> %s' % (us[0], rlp))
     240        if not opts.dry_run():
     241            repo.checkout(':%s' % (us[0][6:]), module, tag, date)
     242    for a in us[1:]:
     243        _as = a.split('=')
     244        if _as[0] == 'update':
     245            _notice(opts, 'cvs: update: %s' % (us[0]))
     246            if not opts.dry_run():
     247                repo.update()
     248        elif _as[0] == 'reset':
     249            _notice(opts, 'cvs: reset: %s' % (us[0]))
     250            if not opts.dry_run():
     251                repo.reset()
     252    return True
     253
    191254def _file_downloader(url, local, config, opts):
    192255    if path.exists(local):
     
    197260                'ftp':  _http_downloader,
    198261                'git':  _git_downloader,
    199                 'file':  _file_downloader }
     262                'cvs':  _cvs_downloader,
     263                'file': _file_downloader }
    200264
    201265def get_file(url, local, opts, config):
Note: See TracChangeset for help on using the changeset viewer.