Re: Adding binutils to the GNU Toolchain buildbot on sourceware

Mark Wielaard <[email protected]>
Newsgroups gmane.comp.gnu.binutils,gmane.comp.gdb.devel
Message-ID <[email protected]>
Hi Luis,

On Tue, Apr 26, 2022 at 08:01:33AM +0100, Luis Machado wrote:
> > If so lets just pick one or more of the workers which seem like stable
> > distros/arches that should always build gdb:
> > https://builder.sourceware.org/buildbot/#/workers
> > (don't pick sourceware, which is special, debian-arm64, debian-armhf,
> > debian-i386 or fedora-ppc64 which are too slow)
> > 
> > Provide a file list (directories) of files in the binutils-gdb.git
> > repo that should trigger a build.
> > 
> > A configure and make line that does a quick build for just
> > gdb/gdbserver which should always build.
> 
> I think the following will do:
> 
> ./configure --enable-targets=all; make all-gdb all-gdbserver
> 
> or
> 
> ./configure --enable-targets=all --disable-sim; make all-gdb all-gdbserver
> 
> gdbserver, unlike gdb, will only build natively, hence why it would benefit
> from being built everywhere.

I added a gdb-centos-x86_64 builder. That is a fairly old distro (it
is centos7) but the worker isn't used for that many other builds and
it can do a quick compile in under 5 minutes. Once it works out I'll
add some other distro/arches.

Please review the gdb important files list. I might have missed some
directoy.

Thanks,

Mark
0001-Add-gdb-centos-x86_64-builder.patch (text/x-diff, 4.4 KB)
From fa23744e04367b2d6f2081fd90bc58ad6d7ff6a6 Mon Sep 17 00:00:00 2001
From: Mark Wielaard <[email protected]>
Date: Wed, 27 Apr 2022 00:29:38 +0200
Subject: [PATCH] Add gdb-centos-x86_64 builder

---
 builder/master.cfg | 68 ++++++++++++++++++++++++++++++++++++++++++++++
 htdocs/index.html  |  5 ++++
 2 files changed, 73 insertions(+)

diff --git a/builder/master.cfg b/builder/master.cfg
index 45066b8..340904f 100644
--- a/builder/master.cfg
+++ b/builder/master.cfg
@@ -377,7 +377,30 @@ binutils_scheduler = schedulers.SingleBranchScheduler(
         builderNames=["binutils-debian-amd64", "binutils-fedrawhide-x86_64"])
 c['schedulers'].append(binutils_scheduler)
 
+# Only trigger scheduler for changes to gdb (or deps)
+gdb_files = ["bfd/",
+             "gdb/", "gdbserver/", "gdbsupport/",
+             "gnulib/", "sim/",
+             "include/", "libiberty/", "opcodes/",
+             "configure", "Makefile.in"]
+
+def gdbImportant(change):
+  for file in change.files:
+    for pattern in gdb_files:
+      match = re.match(pattern, file)
+      if match:
+        return True
+  return False
+
+gdb_scheduler = schedulers.SingleBranchScheduler(
+        name="gdb",
+        change_filter=util.ChangeFilter(project="binutils-gdb",
+                                        branch="master"),
+        fileIsImportant=gdbImportant,
+        builderNames=["gdb-centos-x86_64"])
+c['schedulers'].append(gdb_scheduler)
 
+# A scheduler for everything binutils-gdb without filters
 binutils_gdb_scheduler = schedulers.SingleBranchScheduler(
         name="binutils-gdb",
         change_filter=util.ChangeFilter(project="binutils-gdb",
@@ -1130,6 +1153,41 @@ binutils_fedrawhide_x86_64_builder = util.BuilderConfig(
         factory=binutils_factory)
 c['builders'].append(binutils_fedrawhide_x86_64_builder)
 
+# gdb build steps, factory and builders
+
+gdb_factory = util.BuildFactory()
+gdb_factory.addStep(steps.Git(
+        workdir='binutils-gdb',
+        repourl=binutils_gdb_repourl,
+        mode='full', method='fresh',
+        name="git checkout",
+        haltOnFailure=True))
+gdb_factory.addStep(steps.ShellCommand(
+        command=["rm", "-rf",
+                 util.Interpolate ("%(prop:builddir)s/gdb-build")],
+        name="rm -rf gdb-build",
+        haltOnFailure=True))
+gdb_factory.addStep(steps.Configure(
+        workdir='gdb-build',
+        command=['../binutils-gdb/configure',
+                 '--enable-target=all'],
+        name='configure',
+        haltOnFailure=True))
+gdb_factory.addStep(steps.Compile(
+        workdir='gdb-build',
+        command=['make',
+                 util.Interpolate('-j%(prop:ncpus)s'),
+                 'all-gdb', 'all-gdbserver'],
+        name='make',
+        haltOnFailure=True))
+
+gdb_centos_x86_64_builder = util.BuilderConfig(
+	name="gdb-centos-x86_64",
+        workernames=["centos-x86_64"],
+        tags=["gdb", "centos", "x86_64"],
+        factory=gdb_factory)
+c['builders'].append(gdb_centos_x86_64_builder)
+
 
 # binutils-gdb build steps, factory and builders
 # just a native build
@@ -1468,6 +1526,16 @@ mn_binutils = reporters.MailNotifier(
         generators=[generator_binutils])
 c['services'].append(mn_binutils)
 
+# Report for the whole gdb tagged builder set
+generator_gdb = reporters.BuildSetStatusGenerator(
+        mode=('change',), tags=['gdb'])
+mn_gdb = reporters.MailNotifier(
+        fromaddr="[email protected]",
+        sendToInterestedUsers=True,
+        extraRecipients=['[email protected]'],
+        generators=[generator_gdb])
+c['services'].append(mn_gdb)
+
 # Report for the whole libabigail tagged builder set
 generator_libabigail = reporters.BuildSetStatusGenerator(
         mode=('change',), tags=['libabigail'])
diff --git a/htdocs/index.html b/htdocs/index.html
index 9d12fb9..b08a17b 100644
--- a/htdocs/index.html
+++ b/htdocs/index.html
@@ -144,6 +144,11 @@
 	  <td><a href="/buildbot/#builders/gccrust-fedora-ppc64le">fedora-ppc64le<br>
 	      <img src="/buildbot/badges/gccrust-fedora-ppc64le.svg"></a></td>
 	</tr>
+	<tr>
+	  <td><a href="/buildbot/#/builders?tags=gdb">gdb</a></td>
+	  <td><a href="/buildbot/#builders/gdb-centos-x86_64">centos-x86_64<br>
+              <img src="/buildbot/badges/gdb-centos-x86_64.svg"></a></td>
+	</tr>
 	<tr>
 	  <td><a href="/buildbot/#/builders?tags=libabigail">libabigail</a></td>
 	  <td><a href="/buildbot/#builders/libabigail-centos-x86_64">centos-x86_64<br>
-- 
2.30.2
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.