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>
