commit:     2d87c2cd5c6ee5c5a7be5b6e42725b4347f5fa3e
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Fri Nov 28 01:59:28 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Fri Nov 28 02:11:43 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2d87c2cd

dev-build/guildmaster: new package, add 0_pre20251122, add 9999

A jobserver developed in parallel with dev-build/steve by amonakov.

Bug: https://bugs.gentoo.org/692576
Signed-off-by: Sam James <sam <AT> gentoo.org>

 dev-build/guildmaster/Manifest                     |  1 +
 .../files/0001-meson-add-build-system.patch        | 53 +++++++++++++++
 .../0002-Add-OpenRC-systemd-service-files.patch    | 79 ++++++++++++++++++++++
 dev-build/guildmaster/files/sandbox.conf           |  1 +
 .../guildmaster/guildmaster-0_pre20251122.ebuild   | 62 +++++++++++++++++
 dev-build/guildmaster/guildmaster-9999.ebuild      | 62 +++++++++++++++++
 dev-build/guildmaster/metadata.xml                 | 11 +++
 7 files changed, 269 insertions(+)

diff --git a/dev-build/guildmaster/Manifest b/dev-build/guildmaster/Manifest
new file mode 100644
index 000000000000..748704dd1ed1
--- /dev/null
+++ b/dev-build/guildmaster/Manifest
@@ -0,0 +1 @@
+DIST guildmaster-1237d0d0158c3a6a1ffce2f5d98a9bdda5c23f2a.cb.tar.gz 3922 
BLAKE2B 
fbe22b7c91de9eb1ee1e2bff3d7a1cf400909f897c0bb6814aa25d7968e3ed6ce6651eb7bb7e43f8ce35e6483049272d306dd8ecbcf8717cf2495dab4cd65a0e
 SHA512 
3ab8e31d65d34eb20c1495b861bb4c74bb52df900cb839db6fe1156b306f46f2d1118d39413b07ac3e385539491f48227dccd737ffc0474bc1154d9314606438

diff --git a/dev-build/guildmaster/files/0001-meson-add-build-system.patch 
b/dev-build/guildmaster/files/0001-meson-add-build-system.patch
new file mode 100644
index 000000000000..6f3667a4acab
--- /dev/null
+++ b/dev-build/guildmaster/files/0001-meson-add-build-system.patch
@@ -0,0 +1,53 @@
+From a40447a74c41917643b7a5a28300c50f35b13388 Mon Sep 17 00:00:00 2001
+Message-ID: 
<a40447a74c41917643b7a5a28300c50f35b13388.1764295572.git....@gentoo.org>
+From: Sam James <[email protected]>
+Date: Thu, 27 Nov 2025 23:50:10 +0000
+Subject: [PATCH 1/2] meson: add build system
+
+For ease of packaging.
+---
+ meson.build | 32 ++++++++++++++++++++++++++++++++
+ 1 file changed, 32 insertions(+)
+ create mode 100644 meson.build
+
+diff --git a/meson.build b/meson.build
+new file mode 100644
+index 0000000..83d2123
+--- /dev/null
++++ b/meson.build
+@@ -0,0 +1,32 @@
++project(
++    'guildmaster',
++    'c',
++    license: 'ISC',
++    meson_version: '>= 1.3.0',
++    version: '0.1',
++    default_options: ['warning_level=3'],
++)
++
++fuse_dep = dependency('fuse3')
++udev_dep = dependency('udev', required: false)
++
++dependencies = [fuse_dep]
++
++gm_run_exe = executable(
++    'gm-run',
++    ['gm-run.c'],
++    dependencies: dependencies,
++    install: true,
++)
++
++gm_exe = executable(
++    'gm',
++    ['gm.c'],
++    dependencies: dependencies,
++    install: true,
++)
++
++install_data(
++    ['cuse-guild.rules'],
++    install_dir: join_paths(udev_dep.get_variable('udevdir'), 'rules.d'),
++)
+-- 
+2.52.0
+

diff --git 
a/dev-build/guildmaster/files/0002-Add-OpenRC-systemd-service-files.patch 
b/dev-build/guildmaster/files/0002-Add-OpenRC-systemd-service-files.patch
new file mode 100644
index 000000000000..8cefab3c64b0
--- /dev/null
+++ b/dev-build/guildmaster/files/0002-Add-OpenRC-systemd-service-files.patch
@@ -0,0 +1,79 @@
+From dcb0802716e5afc574a8a05e9030d1fa66b161d6 Mon Sep 17 00:00:00 2001
+Message-ID: 
<dcb0802716e5afc574a8a05e9030d1fa66b161d6.1764295572.git....@gentoo.org>
+In-Reply-To: 
<a40447a74c41917643b7a5a28300c50f35b13388.1764295572.git....@gentoo.org>
+References: 
<a40447a74c41917643b7a5a28300c50f35b13388.1764295572.git....@gentoo.org>
+From: Sam James <[email protected]>
+Date: Fri, 28 Nov 2025 02:05:02 +0000
+Subject: [PATCH 2/2] Add OpenRC, systemd service files
+
+I've only opted to install the systemd service file as while Gentoo policy
+is to install such files (like for OpenRC) unconditionally, I'm not sure
+other distributions expect the same, or what.
+---
+ guildmaster.confd   | 1 +
+ guildmaster.initd   | 5 +++++
+ guildmaster.service | 7 +++++++
+ meson.build         | 6 ++++++
+ 4 files changed, 19 insertions(+)
+ create mode 100644 guildmaster.confd
+ create mode 100644 guildmaster.initd
+ create mode 100644 guildmaster.service
+
+diff --git a/guildmaster.confd b/guildmaster.confd
+new file mode 100644
+index 0000000..3192f17
+--- /dev/null
++++ b/guildmaster.confd
+@@ -0,0 +1 @@
++#GUILDMASTER_OPTS=""
+diff --git a/guildmaster.initd b/guildmaster.initd
+new file mode 100644
+index 0000000..b2bf171
+--- /dev/null
++++ b/guildmaster.initd
+@@ -0,0 +1,5 @@
++#!/sbin/openrc-run
++command="/usr/bin/gm"
++command_args="${GUILDMASTER_OPTS}"
++command_background=true
++pidfile="/run/${RC_SVCNAME}.pid"
+diff --git a/guildmaster.service b/guildmaster.service
+new file mode 100644
+index 0000000..d76a6bb
+--- /dev/null
++++ b/guildmaster.service
+@@ -0,0 +1,7 @@
++[Service]
++Type=exec
++ExecStart=/usr/bin/gm
++
++[Install]
++WantedBy=multi-user.target
++
+diff --git a/meson.build b/meson.build
+index 83d2123..c206839 100644
+--- a/meson.build
++++ b/meson.build
+@@ -9,6 +9,7 @@ project(
+ 
+ fuse_dep = dependency('fuse3')
+ udev_dep = dependency('udev', required: false)
++systemd_dep = dependency('systemd', required: false)
+ 
+ dependencies = [fuse_dep]
+ 
+@@ -26,6 +27,11 @@ gm_exe = executable(
+     install: true,
+ )
+ 
++install_data(
++    ['guildmaster.service'],
++    install_dir: join_paths(systemd_dep.get_variable('systemdsystemunitdir')),
++)
++
+ install_data(
+     ['cuse-guild.rules'],
+     install_dir: join_paths(udev_dep.get_variable('udevdir'), 'rules.d'),
+-- 
+2.52.0
+

diff --git a/dev-build/guildmaster/files/sandbox.conf 
b/dev-build/guildmaster/files/sandbox.conf
new file mode 100644
index 000000000000..d95453bbcb25
--- /dev/null
+++ b/dev-build/guildmaster/files/sandbox.conf
@@ -0,0 +1 @@
+SANDBOX_WRITE="/dev/guild"

diff --git a/dev-build/guildmaster/guildmaster-0_pre20251122.ebuild 
b/dev-build/guildmaster/guildmaster-0_pre20251122.ebuild
new file mode 100644
index 000000000000..648469c85480
--- /dev/null
+++ b/dev-build/guildmaster/guildmaster-0_pre20251122.ebuild
@@ -0,0 +1,62 @@
+# Copyright 2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit meson udev
+
+DESCRIPTION="FIFO-like jobserver node via CUSE"
+HOMEPAGE="https://codeberg.org/amonakov/guildmaster";
+
+if [[ ${PV} == 9999 ]] ; then
+       EGIT_REPO_URI="https://codeberg.org/amonakov/guildmaster.git";
+       inherit git-r3
+else
+       GUILDMASTER_COMMIT="1237d0d0158c3a6a1ffce2f5d98a9bdda5c23f2a"
+       
SRC_URI="https://codeberg.org/amonakov/guildmaster/archive/${GUILDMASTER_COMMIT}.tar.gz
 -> ${PN}-${GUILDMASTER_COMMIT}.cb.tar.gz"
+       S="${WORKDIR}"/${PN}
+
+       KEYWORDS="~amd64"
+fi
+
+LICENSE="ISC"
+SLOT="0"
+
+DEPEND="sys-fs/fuse:3="
+RDEPEND="
+       ${DEPEND}
+       !media-gfx/graphicsmagick
+"
+
+PATCHES=(
+       "${FILESDIR}"/0001-meson-add-build-system.patch
+       "${FILESDIR}"/0002-Add-OpenRC-systemd-service-files.patch
+)
+
+src_install() {
+       meson_src_install
+
+       doinitd guildmaster.initd
+       doconfd guildmaster.confd
+
+       insinto /etc/sandbox.d
+       newins "${FILESDIR}"/sandbox.conf 90guildmaster
+}
+
+pkg_postinst() {
+       udev_reload
+
+       if ! grep -q -s -R -- '--jobserver-auth=fifo:/dev/guild' 
"${EROOT}"/etc/portage/make.conf ; then
+               elog "In order to use a system-wide guildmaster instance, 
enable the service:"
+               elog
+               elog "  systemctl enable --now guildmaster"
+               elog
+               elog "Then add to your make.conf:"
+               elog
+               elog '  MAKEFLAGS="--jobserver-auth=fifo:/dev/guild"'
+               elog '  NINJAOPTS=""'
+               elog
+               elog "You can use -l in NINJAOPTS but *do not* use -j, as it 
disables"
+               elog "jobserver support."
+       fi
+}

diff --git a/dev-build/guildmaster/guildmaster-9999.ebuild 
b/dev-build/guildmaster/guildmaster-9999.ebuild
new file mode 100644
index 000000000000..648469c85480
--- /dev/null
+++ b/dev-build/guildmaster/guildmaster-9999.ebuild
@@ -0,0 +1,62 @@
+# Copyright 2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit meson udev
+
+DESCRIPTION="FIFO-like jobserver node via CUSE"
+HOMEPAGE="https://codeberg.org/amonakov/guildmaster";
+
+if [[ ${PV} == 9999 ]] ; then
+       EGIT_REPO_URI="https://codeberg.org/amonakov/guildmaster.git";
+       inherit git-r3
+else
+       GUILDMASTER_COMMIT="1237d0d0158c3a6a1ffce2f5d98a9bdda5c23f2a"
+       
SRC_URI="https://codeberg.org/amonakov/guildmaster/archive/${GUILDMASTER_COMMIT}.tar.gz
 -> ${PN}-${GUILDMASTER_COMMIT}.cb.tar.gz"
+       S="${WORKDIR}"/${PN}
+
+       KEYWORDS="~amd64"
+fi
+
+LICENSE="ISC"
+SLOT="0"
+
+DEPEND="sys-fs/fuse:3="
+RDEPEND="
+       ${DEPEND}
+       !media-gfx/graphicsmagick
+"
+
+PATCHES=(
+       "${FILESDIR}"/0001-meson-add-build-system.patch
+       "${FILESDIR}"/0002-Add-OpenRC-systemd-service-files.patch
+)
+
+src_install() {
+       meson_src_install
+
+       doinitd guildmaster.initd
+       doconfd guildmaster.confd
+
+       insinto /etc/sandbox.d
+       newins "${FILESDIR}"/sandbox.conf 90guildmaster
+}
+
+pkg_postinst() {
+       udev_reload
+
+       if ! grep -q -s -R -- '--jobserver-auth=fifo:/dev/guild' 
"${EROOT}"/etc/portage/make.conf ; then
+               elog "In order to use a system-wide guildmaster instance, 
enable the service:"
+               elog
+               elog "  systemctl enable --now guildmaster"
+               elog
+               elog "Then add to your make.conf:"
+               elog
+               elog '  MAKEFLAGS="--jobserver-auth=fifo:/dev/guild"'
+               elog '  NINJAOPTS=""'
+               elog
+               elog "You can use -l in NINJAOPTS but *do not* use -j, as it 
disables"
+               elog "jobserver support."
+       fi
+}

diff --git a/dev-build/guildmaster/metadata.xml 
b/dev-build/guildmaster/metadata.xml
new file mode 100644
index 000000000000..d2f7fed06523
--- /dev/null
+++ b/dev-build/guildmaster/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd";>
+<pkgmetadata>
+       <maintainer type="person">
+               <email>[email protected]</email>
+               <name>Sam James</name>
+       </maintainer>
+       <upstream>
+               <remote-id type="codeberg">amonakov/guildmaster</remote-id>
+       </upstream>
+</pkgmetadata>

Reply via email to