Mark Wielaard [Tue, 1 Oct 2024 22:36:18 +0000 (00:36 +0200)]
gcc_nightly_full_scheduler: every four hours
The new fullest builder can take more than three hours. Doing a build
every four hours still gives us 6 fullest builds a day (assuming there
is at least one commit every 4 hours).
Mark Wielaard [Wed, 25 Sep 2024 20:59:10 +0000 (22:59 +0200)]
Add binutils_factory_ld_check and use it for i386, arm64 and s390x
Use a separate (non-failing) binutils_step_check_ld_warn step in
binutils_factory_ld_check so the i386, arm64 and s390x (try) builders
should normally succeed (apart from the known ld failures).
Mark Wielaard [Wed, 25 Sep 2024 20:29:56 +0000 (22:29 +0200)]
binutils_step_check_ld_warn: Add || true
A builder which has a "warning" step will stay in Warning state. A
builder that never succeeds just accumulates all ChangeSets (and
Responsible Users). When the state changes (to a true Failure) that
means all those ChangeSets (and Responsible Users) are marked and
notified.
Mark Wielaard [Sun, 22 Sep 2024 13:52:07 +0000 (15:52 +0200)]
Fix adding || true to make_gdb_check_full_step
commit 662687024e7bae64f53d63d498faf51349a8777e
"make_gdb_check_full_step: add || true to end of command line"
Added the " || true" with command = ...
This should have been command += of course.
Mark Wielaard [Sun, 22 Sep 2024 12:42:32 +0000 (14:42 +0200)]
make_gdb_check_full_step: add || true to end of command line
There are always some failing tests, so for now pretend the make check
does succeed. We do this by turning the command from an array into a
string to be interpreted by a shell.
Mark Wielaard [Sun, 8 Sep 2024 20:16:34 +0000 (22:16 +0200)]
Update valgrind (try) builders
Remove the opensuse x86_64 builders. They don't add much extra.
Add an ibm-power10 and a fedora-arm64 try builder.
Don't run the auxchecks. They are unreliable.
Add || true to make regtest becuase the regtests aren't zero fail.
Add valgrind_regtest_step and bunsen upload for dist_factory.
Add collapseRequests=True to all builders.
Mark Wielaard [Sun, 8 Sep 2024 17:31:19 +0000 (19:31 +0200)]
gcc_full_build_factory_gen: Add || true to make check -k step
With all languages enabled make check seems to always fail if one of
the (non-default) language/runtime testsuites show failurs. This puts
the build in a Warning state. We don't care about some tests failing,
so add || true to the end of the make check -k command.
Mark Wielaard [Sun, 8 Sep 2024 15:22:33 +0000 (17:22 +0200)]
Remove gdb_cleanup_gdbservers_step
This step was only necessary because the gdbserver could keep running
detached from gdb. https://sourceware.org/bugzilla/show_bug.cgi?id=29796
resolved by gdb commit a733b2c90: imply --once if connecting via stdio
Killing all gdbservers might accidentially kill other gdbservers
running in a separate testrun.
Mark Wielaard [Mon, 2 Sep 2024 09:34:46 +0000 (11:34 +0200)]
gcc_nightly_full_scheduler: Change back to every three hours
The scheduler triggered once an hour as a test. Things seem to work
fine, so switch back to once every three hours (a build with all
languages and extra checking takes < 2 hours on x3d1, x3d2 and < 3
hours on bb3).
Marc Poulhiès [Wed, 28 Aug 2024 08:02:38 +0000 (10:02 +0200)]
Install recent rustc in Debian stable
Debian stable container is used for building all GCC frontends, except
for rust (gccrs) because Debian's rustc is too old for the few
dependencies the frontend has.
Installing a more recent rustc allows the building of the
frontend (until it can self-host).
Include the sha256 checksums for both archives and check that we are
downloading the expected binaries.
Signed-off-by: Marc Poulhiès <dkm@kataplop.net> Signed-off-by: Mark Wielaard <mark@klomp.org>
Mark Wielaard [Sun, 1 Sep 2024 00:50:25 +0000 (02:50 +0200)]
Do a gcc-fullest-debian-amd64 every 3 hours
Also decrease the timeout a bit in gcc_full_build_factory_gen now that
we got faster builds on both riscv and x86_64. And don't
flunkOnFailure for the gcc full build make check.
Sam James [Thu, 15 Aug 2024 15:25:42 +0000 (16:25 +0100)]
Add extensive checking (asserts) for 'fullest' GCC build
For non-release builds, GCC defaults to --enable-checking=yes.
For release builds, it defaults to --enable-checking=release.
The builder added in 92fa2b67f3875b5dc4ddca2cec1bba377a82e6a2 took less
time to complete than we expected, so let's try --enable-checking=yes,extra,rtl
which in my experience finds issues others missed.
Mark Wielaard [Sat, 10 Aug 2024 19:35:14 +0000 (21:35 +0200)]
Simplify glibc builders use one scheduler and one factory
Run all tests on all builders. Drop release branch builds for
now. They often fail builds with modern toolchains. And results are
confusing. Should use different builders for different (release)
branches in the future.
Mark Wielaard [Sat, 10 Aug 2024 18:30:30 +0000 (20:30 +0200)]
Move arm64 gcc builder to fedora, add arm64 gcc-full builder on debian
The osuosl debian arm builder is bigger (has 16 cores) and should be
able to do a full gcc build. The osuosl fedora arm builder is a little
smaller (8 cores). Only allow one build on the fedora arm builder, but
allow each build to use all 8 cores in that case.
Mark Wielaard [Wed, 31 Jul 2024 00:34:30 +0000 (02:34 +0200)]
Add milkv-pioneer worker and riscv full gcc builder
Add a new worker "milkv-pioneer", a risc-v box with a SG2042,
64 core C920, RVV 0.7.1.
Make gcc_full_build_factory_gen take an array of extra configure
arguments. Adjust gentoo-sparc-big to pass the single string as array.
Add gcc-full-fedora-riscv worker using --disable-multilib
--enable-checking=release --with-matchpd-partitions=64
--with-insnemit-partitions=64. And add it to the gcc_scheduler.
It appears that not one build has been attempted by the buildbots
for git changes dribbling into dyninstfans.git. I speculate
this is because of the re* means of identifying the subject
branches, so splitting the scheduler into two to try.
Mark Wielaard [Mon, 15 Jul 2024 21:21:06 +0000 (23:21 +0200)]
Disable debian testing container builds
Like fedora rawhide, debian testing currently doesn't have a
buildbot-worker package that can be installed. Disable all debian
testing builders for now.
Mark Wielaard [Fri, 24 May 2024 14:24:26 +0000 (16:24 +0200)]
binutils: Always build and check libctf
Remove the special case binutils_factory_libctf just always build and
check libctf. Rename the binutils_factory_gas_binutils to
binutils_factory_minimal and include libctf and libsframe building and
checking.
Mark Wielaard [Tue, 7 May 2024 20:22:11 +0000 (22:22 +0200)]
Introduce vm_most_workers group and move some container builders to it
vm_most_workers is vm_workers minus the bbo1-1 and bbo1-2 workers,
which run somewhat low on diskspace. Move gcc-autoregen and
libabigail[-try]-opensuse[tw|leap]-x86_64 to vm_most_workers.
Mark Wielaard [Thu, 2 May 2024 22:36:44 +0000 (00:36 +0200)]
autoregen.py: Remove special cases for libgm2
gcc commit 67e66c973ce3 ("modula2: Regenerate libgm2 Makefile.ins using
correct include order") made it so libgm2 autotool files (including in
the directories under it) can now be simply be regenerated with
autoreconf -f.
autoregen.py: enable autoreconf for gcc, libdecnumber, libiberty, libobjc
Calling just 'autoreconf' works well for these subdirs despite the
absence of Makefile.am: there's no real need to provide -I xxxx flags
when calling aclocal, the generated files are the same.
It does make a difference for gcc and libobjc however: some warnings
are printed by autoreconf, because additional .m4 files are parsed in
a different order by plain 'aclocal' and 'aclocal -I xxx'.
We can accept that for the buildbot, for the sake of simplicity of
this helper, but that may confuse users.
autoregen.py: Use autoreconf in most GCC directories
Add most of GCC's subdirectories to AUTORECONF_DIRS, since 'autoreconf
-f' works for them.
A few subdirs still need to be regenerated "manually", because they do
not have Makefile.am which autoreconf uses to determine which aclocal
flags to use.
Most use our default aclocal -I../config, but a few need special
flags, which I copied from the corresponding Makefile.in:
* fixincludes: -I.. -I../config
* gcc, libiberty, libobjc: -I../config -I..
* libgm2: -I../config -I.. although Makefile.in says otherwise. Using
what Makefile.in defines results in generating aclocal.m4 with a
different contents than what it is in the repo. The repo is
presumably wrong, but use this until this is fixed.
Note that we do not regenerate
libvtv/testsuite/other-tests/Makefile.in, because
libvtv/testsuite/other-tests/ has no configure.ac.
Running this script over GCC's repository generates quite a few
warnings, which are the same as before this patch. Namely, these
subdirs seem to have incorrect autotools files (at least partially):
* libgfortran
* libgomp
* libsanitizer
This patch does not support regenerating gcc/m2/gm2-libs/config-host
and gcc/m2/gm2-libs/gm2-libs-host.h.in because I didn't manage to
regenerate them with the exact same content. FTR I tried:
autoconf -f config-host.in > config-host
autoheader config-host.in
as described in gcc/m2/Make-maintainer.in
Similarly, we skip libcpp because the files we regenerate have small
differences with the current versions.
Tested by removing all aclocal.m4 files, Makefile.in files derived
from Makefile.am, configure files derived from configure.ac and
checking they are correctly regenerated (that is, 'git status' does
not report deleted nor modified files).
Simon Marchi [Tue, 12 Mar 2024 17:53:37 +0000 (13:53 -0400)]
autoregen.py: use autoreconf in some directories
The builder currently mis-generates the config files for the gdb and
gnulib directories. It passes `-I ../config` to aclocal, causing the
include path order to be different to what it would be without that -I
argument, causing the generated aclocal.m4 to be different (same entries
but different order).
For the gdb, gdbserver, gdbsupport and gnulib directories, the config
files are usually re-generated without any -I argument. In fact, for
gnulib, it is baked in gnulib/update-gnulib.sh that aclocal should be
called without -I arguments:
aclocal &&
autoconf &&
autoheader &&
automake
Moreover, they can be re-generated using autoreconf, removing the need
to guess which speicific tools need to be invoked. autoreconf takes a
bit more time to run than the individual tools, but it's worth it for
the simplicity.
So, add a list of directories for which it is known that they can be
re-generated using a simple autoreconf without special flags. For these
directories, call `autoreconf -f`.
Simon Marchi [Tue, 12 Mar 2024 15:49:35 +0000 (11:49 -0400)]
autoregen.py: pass environment through subprocess.run's env parameter
Arsen pointed out that a better way to pass the environment to the
subprocess (one that is not vulnerable to space splitting, for instance)
is to use subprocess.run's env parameter.
- Define a new EXTRA_ENV dict with the environment variables we want to
add to the current process' environment, when running subprocesses
- Copy the current process' environment into ENV
- Augment ENV with EXTRA_ENV
- Use EXTRA_ENV when logging the environment variables
Simon Marchi [Tue, 12 Mar 2024 15:01:14 +0000 (11:01 -0400)]
autoregen.py: do not pass sys.stdout/sys.stderr to subprocess.run
Arsen pointed out that this is unnecessary. If we don't pass an
stdout/stderr, the subprocess will use the same file descriptors as the
parent, which is what we want.
Simon Marchi [Mon, 11 Mar 2024 19:01:19 +0000 (15:01 -0400)]
autoregen.py: let subprocesses print to stdout/stderr
Use `subprocess.run` with `stdout=sys.stdout` and `stderr=sys.stderr`,
such that subprocesses print to the job's stdout and stderr directly.
This is not expected to cause any change, as the current commands don't
output anything. But if they do, I think it's useful to have that
output in the buildbot's logs.