build-many-glibcs.py: Add --exclude option

m68k-linux-gnu-coldfire-soft GCC and glibc often won't build due to

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103370

which results in build-many-glibcs.py failure.  Add an option, --exclude,
to exclude some targets.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
Reviewed-by: Sam James <sam@gentoo.org>
This commit is contained in:
H.J. Lu 2024-12-25 05:05:31 +08:00
parent a3db3fe42b
commit 757ac24f8f

View File

@ -107,7 +107,7 @@ class Context(object):
"""The global state associated with builds in a given directory.""" """The global state associated with builds in a given directory."""
def __init__(self, topdir, parallelism, keep, replace_sources, strip, def __init__(self, topdir, parallelism, keep, replace_sources, strip,
full_gcc, action, shallow=False): full_gcc, action, exclude, shallow=False):
"""Initialize the context.""" """Initialize the context."""
self.topdir = topdir self.topdir = topdir
self.parallelism = parallelism self.parallelism = parallelism
@ -115,6 +115,7 @@ class Context(object):
self.replace_sources = replace_sources self.replace_sources = replace_sources
self.strip = strip self.strip = strip
self.full_gcc = full_gcc self.full_gcc = full_gcc
self.exclude = exclude
self.shallow = shallow self.shallow = shallow
self.srcdir = os.path.join(topdir, 'src') self.srcdir = os.path.join(topdir, 'src')
self.versions_json = os.path.join(self.srcdir, 'versions.json') self.versions_json = os.path.join(self.srcdir, 'versions.json')
@ -502,6 +503,8 @@ class Context(object):
def add_config(self, **args): def add_config(self, **args):
"""Add an individual build configuration.""" """Add an individual build configuration."""
cfg = Config(self, **args) cfg = Config(self, **args)
if self.exclude and cfg.name in self.exclude:
return
if cfg.name in self.configs: if cfg.name in self.configs:
print('error: duplicate config %s' % cfg.name) print('error: duplicate config %s' % cfg.name)
exit(1) exit(1)
@ -1884,6 +1887,8 @@ def get_parser():
help='Build GCC with all languages and libsanitizer') help='Build GCC with all languages and libsanitizer')
parser.add_argument('--shallow', action='store_true', parser.add_argument('--shallow', action='store_true',
help='Do not download Git history during checkout') help='Do not download Git history during checkout')
parser.add_argument('--exclude', dest='exclude',
help='Targets to be excluded', nargs='*')
parser.add_argument('topdir', parser.add_argument('topdir',
help='Toplevel working directory') help='Toplevel working directory')
parser.add_argument('action', parser.add_argument('action',
@ -1978,7 +1983,7 @@ def main(argv):
opts = parser.parse_args(argv) opts = parser.parse_args(argv)
topdir = os.path.abspath(opts.topdir) topdir = os.path.abspath(opts.topdir)
ctx = Context(topdir, opts.parallelism, opts.keep, opts.replace_sources, ctx = Context(topdir, opts.parallelism, opts.keep, opts.replace_sources,
opts.strip, opts.full_gcc, opts.action, opts.strip, opts.full_gcc, opts.action, opts.exclude,
shallow=opts.shallow) shallow=opts.shallow)
ctx.run_builds(opts.action, opts.configs) ctx.run_builds(opts.action, opts.configs)