[PATCH] sb/bootstrap: Remove the sb-bootsrap command

Gedare Bloom gedare at rtems.org
Mon Aug 10 15:20:32 UTC 2020


Please cleanup the doco too:
rtems-docs$ grep -r sb-boot
user/installation/developer.rst:  $ /c/opt/rtems/rsb/source-builder/sb-bootstrap
user/installation/kernel.rst:  $ ./bootstrap -c &&
$HOME/development/rtems/rsb/source-builder/sb-bootstrap
eclipse/rtems.rst:the RSB's `sb-bootstrap` to run the bootstrap
process in parallel on all

On Mon, Aug 10, 2020 at 12:53 AM <chrisj at rtems.org> wrote:
>
> From: Chris Johns <chrisj at rtems.org>
>
> Closes #4046
> ---
>  source-builder/sb-bootstrap        |  27 ---
>  source-builder/sb/bootstrap.py     | 273 -----------------------------
>  source-builder/sb/cmd-bootstrap.py |  29 ---
>  3 files changed, 329 deletions(-)
>  delete mode 100755 source-builder/sb-bootstrap
>  delete mode 100644 source-builder/sb/bootstrap.py
>  delete mode 100755 source-builder/sb/cmd-bootstrap.py
>
> diff --git a/source-builder/sb-bootstrap b/source-builder/sb-bootstrap
> deleted file mode 100755
> index 618e2bb..0000000
> --- a/source-builder/sb-bootstrap
> +++ /dev/null
> @@ -1,27 +0,0 @@
> -#! /bin/sh
> -#
> -# RTEMS Tools Project (http://www.rtems.org/)
> -# Copyright 2018 Chris Johns (chrisj at rtems.org)
> -# All rights reserved.
> -#
> -# This file is part of the RTEMS Tools package in 'rtems-tools'.
> -#
> -# Permission to use, copy, modify, and/or distribute this software for any
> -# purpose with or without fee is hereby granted, provided that the above
> -# copyright notice and this permission notice appear in all copies.
> -#
> -# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
> -# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
> -# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
> -# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
> -# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
> -# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
> -# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
> -#
> -set -e
> -base=$(dirname $0)
> -PYTHON_CMD=${base}/sb/cmd-bootstrap.py
> -if test -f ${base}/sb/python-wrapper.sh; then
> -  . ${base}/sb/python-wrapper.sh
> -fi
> -echo "error: python wrapper not found"
> diff --git a/source-builder/sb/bootstrap.py b/source-builder/sb/bootstrap.py
> deleted file mode 100644
> index ec7d7c3..0000000
> --- a/source-builder/sb/bootstrap.py
> +++ /dev/null
> @@ -1,273 +0,0 @@
> -#
> -# RTEMS Tools Project (http://www.rtems.org/)
> -# Copyright 2013-2016 Chris Johns (chrisj at rtems.org)
> -# All rights reserved.
> -#
> -# This file is part of the RTEMS Tools package in 'rtems-tools'.
> -#
> -# Permission to use, copy, modify, and/or distribute this software for any
> -# purpose with or without fee is hereby granted, provided that the above
> -# copyright notice and this permission notice appear in all copies.
> -#
> -# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
> -# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
> -# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
> -# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
> -# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
> -# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
> -# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
> -#
> -
> -from __future__ import print_function
> -
> -import datetime
> -import operator
> -import os
> -import re
> -import sys
> -import threading
> -import time
> -
> -import error
> -import log
> -import options
> -import path
> -import version
> -
> -def _collect(path_, file):
> -    confs = []
> -    for root, dirs, files in os.walk(path.host(path_), topdown = True):
> -        for f in files:
> -            if f == file:
> -                confs += [path.shell(path.join(root, f))]
> -    return confs
> -
> -def _grep(file, pattern):
> -    rege = re.compile(pattern)
> -    try:
> -        f = open(path.host(file), 'r')
> -        matches = [rege.match(l) != None for l in f.readlines()]
> -        f.close()
> -    except IOError as err:
> -        raise error.general('reading: %s' % (file))
> -    return True in matches
> -
> -class command:
> -
> -    def __init__(self, cmd, cwd):
> -        self.exit_code = 0
> -        self.thread = None
> -        self.output = None
> -        self.cmd = cmd
> -        self.cwd = cwd
> -        self.result = None
> -
> -    def runner(self):
> -
> -        import subprocess
> -
> -        #
> -        # Support Python 2.6
> -        #
> -        if "check_output" not in dir(subprocess):
> -            def f(*popenargs, **kwargs):
> -                if 'stdout' in kwargs:
> -                    raise ValueError('stdout argument not allowed, it will be overridden.')
> -                process = subprocess.Popen(stdout=subprocess.PIPE, *popenargs, **kwargs)
> -                output, unused_err = process.communicate()
> -                retcode = process.poll()
> -                if retcode:
> -                    cmd = kwargs.get("args")
> -                    if cmd is None:
> -                        cmd = popenargs[0]
> -                    raise subprocess.CalledProcessError(retcode, cmd)
> -                return output
> -            subprocess.check_output = f
> -
> -        self.start_time = datetime.datetime.now()
> -        self.exit_code = 0
> -        try:
> -            try:
> -                if os.name == 'nt':
> -                    cmd = ['sh', '-c'] + self.cmd
> -                else:
> -                    cmd = self.cmd
> -                self.output = subprocess.check_output(cmd, cwd = path.host(self.cwd))
> -            except subprocess.CalledProcessError as cpe:
> -                self.exit_code = cpe.returncode
> -                self.output = cpe.output
> -            except OSError as ose:
> -                raise error.general('bootstrap failed: %s in %s: %s' % \
> -                                        (' '.join(cmd), path.host(self.cwd), (str(ose))))
> -            except KeyboardInterrupt:
> -                pass
> -            except:
> -                raise
> -        except:
> -            self.result = sys.exc_info()
> -        self.end_time = datetime.datetime.now()
> -
> -    def run(self):
> -        self.thread = threading.Thread(target = self.runner)
> -        self.thread.start()
> -
> -    def is_alive(self):
> -        return self.thread and self.thread.is_alive()
> -
> -    def reraise(self):
> -        if self.result is not None:
> -            raise self.result[0](self.result[1])
> -
> -class autoreconf:
> -
> -    def __init__(self, topdir, configure):
> -        self.topdir = topdir
> -        self.configure = configure
> -        self.cwd = path.dirname(self.configure)
> -        self.command = command(['autoreconf', '-i', '--no-recursive'], self.cwd)
> -        self.command.run()
> -
> -    def is_alive(self):
> -        return self.command.is_alive()
> -
> -    def post_process(self):
> -        if self.command is not None:
> -            self.command.reraise()
> -            if self.command.exit_code != 0:
> -                raise error.general('error: autoreconf: %s' % (' '.join(self.command.cmd)))
> -            makefile = path.join(self.cwd, 'Makefile.am')
> -            if path.exists(makefile):
> -                if _grep(makefile, 'stamp-h\.in'):
> -                    stamp_h = path.join(self.cwd, 'stamp-h.in')
> -                    try:
> -                        t = open(path.host(stamp_h), 'w')
> -                        t.write('timestamp')
> -                        t.close()
> -                    except IOError as err:
> -                        raise error.general('writing: %s' % (stamp_h))
> -
> -def generate(topdir, jobs):
> -    if type(jobs) is str:
> -        jobs = int(jobs)
> -    start_time = datetime.datetime.now()
> -    confs = _collect(topdir, 'configure.ac')
> -    next = 0
> -    autoreconfs = []
> -    while next < len(confs) or len(autoreconfs) > 0:
> -        if next < len(confs) and len(autoreconfs) < jobs:
> -            log.notice('%3d/%3d: autoreconf: %s' % \
> -                           (next + 1, len(confs), confs[next][len(topdir) + 1:]))
> -            autoreconfs += [autoreconf(topdir, confs[next])]
> -            next += 1
> -        else:
> -            for ac in autoreconfs:
> -                if not ac.is_alive():
> -                    ac.post_process()
> -                    autoreconfs.remove(ac)
> -                    del ac
> -            if len(autoreconfs) >= jobs:
> -                time.sleep(1)
> -    end_time = datetime.datetime.now()
> -    log.notice('Bootstrap time: %s' % (str(end_time - start_time)))
> -
> -class ampolish3:
> -
> -    def __init__(self, topdir, makefile):
> -        self.topdir = topdir
> -        self.makefile = makefile
> -        self.preinstall = path.join(path.dirname(makefile), 'preinstall.am')
> -        self.command = command([path.join(topdir, 'ampolish3'), makefile], self.topdir)
> -        self.command.run()
> -
> -    def is_alive(self):
> -        return self.command.is_alive()
> -
> -    def post_process(self):
> -        if self.command is not None:
> -            if self.command.exit_code != 0:
> -                raise error.general('error: ampolish3: %s' % (' '.join(self.command.cmd)))
> -            try:
> -                p = open(path.host(self.preinstall), 'w')
> -                for l in self.command.output:
> -                    p.write(l)
> -                p.close()
> -            except IOError as err:
> -                raise error.general('writing: %s' % (self.preinstall))
> -
> -def preinstall(topdir, jobs):
> -    if type(jobs) is str:
> -        jobs = int(jobs)
> -    start_time = datetime.datetime.now()
> -    makes = []
> -    for am in _collect(topdir, 'Makefile.am'):
> -        if _grep(am, 'include .*/preinstall\.am'):
> -            makes += [am]
> -    next = 0
> -    ampolish3s = []
> -    while next < len(makes) or len(ampolish3s) > 0:
> -        if next < len(makes) and len(ampolish3s) < jobs:
> -            log.notice('%3d/%3d: ampolish3: %s' % \
> -                           (next + 1, len(makes), makes[next][len(topdir) + 1:]))
> -            ampolish3s += [ampolish3(topdir, makes[next])]
> -            next += 1
> -        else:
> -            for ap in ampolish3s:
> -                if not ap.is_alive():
> -                    ap.post_process()
> -                    ampolish3s.remove(ap)
> -                    del ap
> -            if len(ampolish3s) >= jobs:
> -                time.sleep(1)
> -    end_time = datetime.datetime.now()
> -    log.notice('Preinstall time: %s' % (str(end_time - start_time)))
> -
> -def run(args):
> -    try:
> -        #
> -        # On Windows MSYS2 prepends a path to itself to the environment
> -        # path. This means the RTEMS specific automake is not found and which
> -        # breaks the bootstrap. We need to remove the prepended path. Also
> -        # remove any ACLOCAL paths from the environment.
> -        #
> -        if os.name == 'nt':
> -            cspath = os.environ['PATH'].split(os.pathsep)
> -            if 'msys' in cspath[0] and cspath[0].endswith('bin'):
> -                os.environ['PATH'] = os.pathsep.join(cspath[1:])
> -            if 'ACLOCAL_PATH' in os.environ:
> -                #
> -                # The clear fails on a current MSYS2 python (Feb 2016). Delete
> -                # the entry if the clear fails.
> -                #
> -                try:
> -                    os.environ['ACLOCAL_PATH'].clear()
> -                except:
> -                    del os.environ['ACLOCAL_PATH']
> -        optargs = { '--rtems':       'The RTEMS source directory',
> -                    '--preinstall':  'Preinstall AM generation' }
> -        log.notice('RTEMS Source Builder - RTEMS Bootstrap, %s' % (version.string()))
> -        opts = options.load(sys.argv, optargs, logfile = False)
> -        if opts.get_arg('--rtems'):
> -            topdir = opts.get_arg('--rtems')
> -        else:
> -            topdir = os.getcwd()
> -        if opts.get_arg('--preinstall'):
> -            preinstall(topdir, opts.jobs(opts.defaults['_ncpus']))
> -        else:
> -            generate(topdir, opts.jobs(opts.defaults['_ncpus']))
> -    except error.general as gerr:
> -        print(gerr)
> -        print('Bootstrap FAILED', file = sys.stderr)
> -        sys.exit(1)
> -    except error.internal as ierr:
> -        print(ierr)
> -        print('Bootstrap FAILED', file = sys.stderr)
> -        sys.exit(1)
> -    except error.exit as eerr:
> -        pass
> -    except KeyboardInterrupt:
> -        log.notice('abort: user terminated')
> -        sys.exit(1)
> -    sys.exit(0)
> -
> -if __name__ == "__main__":
> -    run(sys.argv)
> diff --git a/source-builder/sb/cmd-bootstrap.py b/source-builder/sb/cmd-bootstrap.py
> deleted file mode 100755
> index 0243237..0000000
> --- a/source-builder/sb/cmd-bootstrap.py
> +++ /dev/null
> @@ -1,29 +0,0 @@
> -#
> -# RTEMS Tools Project (http://www.rtems.org/)
> -# Copyright 2013 Chris Johns (chrisj at rtems.org)
> -# All rights reserved.
> -#
> -# This file is part of the RTEMS Tools package in 'rtems-tools'.
> -#
> -# Permission to use, copy, modify, and/or distribute this software for any
> -# purpose with or without fee is hereby granted, provided that the above
> -# copyright notice and this permission notice appear in all copies.
> -#
> -# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
> -# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
> -# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
> -# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
> -# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
> -# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
> -# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
> -
> -from __future__ import print_function
> -
> -import sys, os
> -
> -try:
> -    import bootstrap
> -    bootstrap.run(sys.argv)
> -except ImportError:
> -    print("Incorrect Source Builder installation", file = sys.stderr)
> -    sys.exit(1)
> --
> 2.27.0
>
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel


More information about the devel mailing list