[PATCH] build-many-glibcs.py: Add --exclude option
H.J. Lu
hjl.tools@gmail.com
Tue Dec 24 21:06:04 GMT 2024
On Wed, Dec 25, 2024 at 4:28 AM Sam James <sam@gentoo.org> wrote:
>
> "H.J. Lu" <hjl.tools@gmail.com> writes:
>
> > 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.
>
> Thanks, I wanted this last week. It looks good to me, but I don't know
> if Joseph is the (informal(?)) maintainer of it or not.
>
> >
> > Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
> > ---
> > scripts/build-many-glibcs.py | 27 ++++++++++++++++-----------
> > 1 file changed, 16 insertions(+), 11 deletions(-)
> >
> > diff --git a/scripts/build-many-glibcs.py b/scripts/build-many-glibcs.py
> > index c53aa8964c..453dc696e0 100755
> > --- a/scripts/build-many-glibcs.py
> > +++ b/scripts/build-many-glibcs.py
> > @@ -545,7 +545,7 @@ class Context(object):
> > """Return the directory in which to install glibc."""
> > return os.path.join(self.installdir, 'glibcs', config)
> >
> > - def run_builds(self, action, configs):
> > + def run_builds(self, action, configs, exclude):
> > """Run the requested builds."""
> > if action == 'checkout':
> > self.checkout(configs)
> > @@ -587,16 +587,16 @@ class Context(object):
> > 'gnumach', 'hurd')
> > old_components = ('gmp', 'mpfr', 'mpc')
> > old_versions = self.build_state['host-libraries']['build-versions']
> > - self.build_compilers(configs)
> > + self.build_compilers(configs, exclude)
> > else:
> > build_components = ('glibc',)
> > old_components = ('gmp', 'mpfr', 'mpc', 'binutils', 'gcc', 'linux',
> > 'mig', 'gnumach', 'hurd')
> > old_versions = self.build_state['compilers']['build-versions']
> > if action == 'update-syscalls':
> > - self.update_syscalls(configs)
> > + self.update_syscalls(configs, exclude)
> > else:
> > - self.build_glibcs(configs)
> > + self.build_glibcs(configs, exclude)
> > self.write_files()
> > self.do_build()
> > if configs:
> > @@ -767,7 +767,7 @@ class Context(object):
> > cmdlist.cleanup_dir()
> > cmdlist.pop_subdesc()
> >
> > - def build_compilers(self, configs):
> > + def build_compilers(self, configs, exclude):
> > """Build the compilers."""
> > if not configs:
> > self.remove_dirs(os.path.join(self.builddir, 'compilers'))
> > @@ -775,9 +775,10 @@ class Context(object):
> > self.remove_dirs(os.path.join(self.logsdir, 'compilers'))
> > configs = sorted(self.configs.keys())
> > for c in configs:
> > - self.configs[c].build()
> > + if not exclude or c not in exclude:
>
> We could filter configs instead, but I don't think you need to do that
> here.
Fixed in v2.
> > + self.configs[c].build()
> >
> > - def build_glibcs(self, configs):
> > + def build_glibcs(self, configs, exclude):
> > """Build the glibcs."""
> > if not configs:
> > self.remove_dirs(os.path.join(self.builddir, 'glibcs'))
> > @@ -785,16 +786,18 @@ class Context(object):
> > self.remove_dirs(os.path.join(self.logsdir, 'glibcs'))
> > configs = sorted(self.glibc_configs.keys())
> > for c in configs:
> > - self.glibc_configs[c].build()
> > + if not exclude or c not in exclude:
> > + self.glibc_configs[c].build()
> >
> > - def update_syscalls(self, configs):
> > + def update_syscalls(self, configs, exclude):
> > """Update the glibc syscall lists."""
> > if not configs:
> > self.remove_dirs(os.path.join(self.builddir, 'update-syscalls'))
> > self.remove_dirs(os.path.join(self.logsdir, 'update-syscalls'))
> > configs = sorted(self.glibc_configs.keys())
> > for c in configs:
> > - self.glibc_configs[c].update_syscalls()
> > + if not exclude or c not in exclude:
> > + self.glibc_configs[c].update_syscalls()
> >
> > def load_versions_json(self):
> > """Load information about source directory versions."""
> > @@ -1884,6 +1887,8 @@ def get_parser():
> > help='Build GCC with all languages and libsanitizer')
> > parser.add_argument('--shallow', action='store_true',
> > help='Do not download Git history during checkout')
> > + parser.add_argument('--exclude', dest='exclude',
> > + help='Targets to be excluded', nargs='*')
> > parser.add_argument('topdir',
> > help='Toplevel working directory')
> > parser.add_argument('action',
> > @@ -1980,7 +1985,7 @@ def main(argv):
> > ctx = Context(topdir, opts.parallelism, opts.keep, opts.replace_sources,
> > opts.strip, opts.full_gcc, opts.action,
> > shallow=opts.shallow)
> > - ctx.run_builds(opts.action, opts.configs)
> > + ctx.run_builds(opts.action, opts.configs, opts.exclude)
> >
> >
> > if __name__ == '__main__':
>
--
H.J.
More information about the Libc-alpha
mailing list