From fb50f943c32037cec97df4e4c678e7d0e8d1e126 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kl=C3=B6tzke?= Date: Tue, 20 Jan 2026 21:04:31 +0100 Subject: [PATCH 1/5] config: require Bob 1.2 We need at least the new FIFO job server protocol support for Ninja... --- README.md | 2 +- config.yaml | 2 +- doc/usage.rst | 2 +- tests/cross-platform/config.yaml | 2 +- tests/licenses/config.yaml | 2 +- tests/linux/config.yaml | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 6aa52806..e16a3213 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ which use the `basement` layer. They act as smoke tests for this project. First you need to add the `basement` layer to your project. To do so, add a `layers` entry to `config.yaml`: - bobMinimumVersion: "1.0" + bobMinimumVersion: "1.2" layers: - name: basement scm: git diff --git a/config.yaml b/config.yaml index ca8734ee..65b0f37e 100644 --- a/config.yaml +++ b/config.yaml @@ -1,4 +1,4 @@ -bobMinimumVersion: "1.1.0rc1" +bobMinimumVersion: "1.2" plugins: - multiarch diff --git a/doc/usage.rst b/doc/usage.rst index 7e49ca52..11f1af95 100644 --- a/doc/usage.rst +++ b/doc/usage.rst @@ -8,7 +8,7 @@ First, you need to add the basement layer to your project. To do so, add a :external:ref:`configuration-config-layers` entry to your :external:ref:`config.yaml `:: - bobMinimumVersion: "1.0" + bobMinimumVersion: "1.2" layers: - name: basement scm: git diff --git a/tests/cross-platform/config.yaml b/tests/cross-platform/config.yaml index 2a60e634..1bfb5561 100644 --- a/tests/cross-platform/config.yaml +++ b/tests/cross-platform/config.yaml @@ -1,3 +1,3 @@ -bobMinimumVersion: "1.1.0rc1" +bobMinimumVersion: "1.2" layers: - self diff --git a/tests/licenses/config.yaml b/tests/licenses/config.yaml index 6e9db733..1bfb5561 100644 --- a/tests/licenses/config.yaml +++ b/tests/licenses/config.yaml @@ -1,3 +1,3 @@ -bobMinimumVersion: "1.1.0" +bobMinimumVersion: "1.2" layers: - self diff --git a/tests/linux/config.yaml b/tests/linux/config.yaml index 4efad058..e15d01a4 100644 --- a/tests/linux/config.yaml +++ b/tests/linux/config.yaml @@ -1,4 +1,4 @@ -bobMinimumVersion: "1.1.0rc1" +bobMinimumVersion: "1.2" layers: - self From 50be014f88be042db8bf623e8e2b7822081c7f47 Mon Sep 17 00:00:00 2001 From: Ralf Hubert Date: Fri, 14 Nov 2025 11:04:05 +0100 Subject: [PATCH 2/5] devel: ninja: bump to 1.13.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The jobserver support finally landed in ninja-master. Unfortunately, they only support the FIFO (named pipe) job server protocol. Update the respective class accordingly so that Bob provides the right job server type. Co-authored-by: Jan Klötzke --- classes/ninja.yaml | 3 +- recipes/devel/ninja.yaml | 10 ++--- ...ote-with-shlex.quote-in-configure.py.patch | 39 ------------------- 3 files changed, 5 insertions(+), 47 deletions(-) delete mode 100644 recipes/devel/ninja/0001-Replace-pipes.quote-with-shlex.quote-in-configure.py.patch diff --git a/classes/ninja.yaml b/classes/ninja.yaml index 7e0ea877..b014b753 100644 --- a/classes/ninja.yaml +++ b/classes/ninja.yaml @@ -1,4 +1,5 @@ -jobServer: True +# Ninja can only work with named pipes! +jobServer: "fifo" buildToolsWeak: [ninja] buildVarsWeak: [MAKE_JOBS] buildSetup: | diff --git a/recipes/devel/ninja.yaml b/recipes/devel/ninja.yaml index 37ecc291..4e3c5f3c 100644 --- a/recipes/devel/ninja.yaml +++ b/recipes/devel/ninja.yaml @@ -1,19 +1,15 @@ inherit: [cpackage, install, patch] metaEnvironment: - PKG_VERSION: "1.11.1.g95dee.kitware.jobserver-1" + PKG_VERSION: "1.13.1" PKG_LICENSE: "Apache-2.0" checkoutSCM: scm: url - url: ${GITHUB_MIRROR}/Kitware/ninja/archive/v${PKG_VERSION}.tar.gz - digestSHA256: 7ba84551f5b315b4270dc7c51adef5dff83a2154a3665a6c9744245c122dd0db + url: ${GITHUB_MIRROR}/ninja-build/ninja/archive/v1.13.1.tar.gz + digestSHA256: f0055ad0369bf2e372955ba55128d000cfcc21777057806015b45e4accbebf23 stripComponents: 1 -checkoutDeterministic: True -checkoutScript: | - patchApplySeries $<@ninja/*.patch@> - buildVars: [AR, CC, CXX, CFLAGS, CXXFLAGS, LDFLAGS] buildToolsWeak: [python3] multiPackage: diff --git a/recipes/devel/ninja/0001-Replace-pipes.quote-with-shlex.quote-in-configure.py.patch b/recipes/devel/ninja/0001-Replace-pipes.quote-with-shlex.quote-in-configure.py.patch deleted file mode 100644 index 20836224..00000000 --- a/recipes/devel/ninja/0001-Replace-pipes.quote-with-shlex.quote-in-configure.py.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 9cf13cd1ecb7ae649394f4133d121a01e191560b Mon Sep 17 00:00:00 2001 -From: Byoungchan Lee -Date: Mon, 9 Oct 2023 20:13:20 +0900 -Subject: [PATCH] Replace pipes.quote with shlex.quote in configure.py - -Python 3.12 deprecated the pipes module and it will be removed -in Python 3.13. In configure.py, I have replaced the usage of pipes.quote -with shlex.quote, which is the exactly same function as pipes.quote. - -For more details, refer to PEP 0594: https://peps.python.org/pep-0594 ---- - configure.py | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/configure.py b/configure.py -index 588250a..c6973cd 100755 ---- a/configure.py -+++ b/configure.py -@@ -21,7 +21,7 @@ or use a meta-build system that supports Ninja output.""" - - from optparse import OptionParser - import os --import pipes -+import shlex - import string - import subprocess - import sys -@@ -262,7 +262,7 @@ n.variable('configure_args', ' '.join(configure_args)) - env_keys = set(['CXX', 'AR', 'CFLAGS', 'CXXFLAGS', 'LDFLAGS']) - configure_env = dict((k, os.environ[k]) for k in os.environ if k in env_keys) - if configure_env: -- config_str = ' '.join([k + '=' + pipes.quote(configure_env[k]) -+ config_str = ' '.join([k + '=' + shlex.quote(configure_env[k]) - for k in configure_env]) - n.variable('configure_env', config_str + '$ ') - n.newline() --- -2.48.1 - From b9f70bb55628ad01dbb517c3fc605cfb72f9d46c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kl=C3=B6tzke?= Date: Tue, 20 Jan 2026 21:13:08 +0100 Subject: [PATCH 3/5] devel::make: bump to 4.4.1 --- recipes/devel/make.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recipes/devel/make.yaml b/recipes/devel/make.yaml index 7315c9d4..adf54fd3 100644 --- a/recipes/devel/make.yaml +++ b/recipes/devel/make.yaml @@ -1,13 +1,13 @@ inherit: [cpackage, libtool, install, "basement::update-config"] metaEnvironment: - PKG_VERSION: "4.3" + PKG_VERSION: "4.4.1" PKG_LICENSE: "GPL-3.0-only" checkoutSCM: scm: url url: ${GNU_MIRROR}/make/make-${PKG_VERSION}.tar.gz - digestSHA256: "e05fdde47c5f7ca45cb697e973894ff4f5d79e13b750ed57d7b66d8defc78e19" + digestSHA256: "dd16fb1d67bfab79a72f5e8390735c49e3e8e70b4945a15ab1f81ddb78658fb3" stripComponents: 1 # We do not build make with make. Instead call the manual build script that is From 3b4e491b82a6f2291b9fb9342129640c1d72d3ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kl=C3=B6tzke?= Date: Tue, 20 Jan 2026 21:15:20 +0100 Subject: [PATCH 4/5] make: be more liberal with the job server protocol Now that we use make 4.4, we can utilize the FIFO and the anonymous pipe protocol. Allegedly, the FIFO protocol is more robust so it looks worthwhile. --- classes/make.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/make.yaml b/classes/make.yaml index 010e5b43..a6802c5f 100644 --- a/classes/make.yaml +++ b/classes/make.yaml @@ -1,4 +1,4 @@ -jobServer: True +jobServer: "fifo-or-pipe" buildToolsWeak: [make] buildVarsWeak: [MAKE_JOBS] buildSetup: | From 300999cf378331348ab0d623c5831fd549b643f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kl=C3=B6tzke?= Date: Tue, 20 Jan 2026 21:32:11 +0100 Subject: [PATCH 5/5] strip: do not force job server The strip class is usually mixed together with many other classes. Almost always this includes the "make" and "ninja" classes that set a particular job server mode. As there is no established ordering between the classes and to keep surprises to a minimum, remove the "jobServer" key from the strip class. --- classes/strip.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/classes/strip.yaml b/classes/strip.yaml index 524ae15a..d24500d4 100644 --- a/classes/strip.yaml +++ b/classes/strip.yaml @@ -1,4 +1,3 @@ -jobServer: True packageToolsWeak: - name: pxargs if: !expr |