new file mode 100644
@@ -0,0 +1,44 @@
+From 27f417f4812e688a59fc5186b7768cec004cd6e5 Mon Sep 17 00:00:00 2001
+From: Peter Kjellerstedt <peter.kjellerstedt@gmail.com>
+Date: Wed, 8 Apr 2026 05:58:49 +0200
+Subject: [PATCH] Support building with --disable-maintainer-mode and source !=
+ build dir (#3518)
+
+If --disable-maintainer-mode is enabled, then the rules for generating
+parser.[ch] and lexer.[ch] did nothing. This worked fine if the source
+and build directories are the same as the pre-generated parser.c and
+lexer.c files would suffice. However, if the build directory is not the
+same as the source directory, then the rest of the Make rules expect
+parser.[ch] and lexer.[ch] to have been created in the build directory
+if their source files (parser.y and lexer.l) are newer than the target
+files, which can happen in case the source is fetched using Git.
+
+Avoid the problem by copying the files to the build directory if needed.
+
+Co-authored-by: Peter Kjellerstedt <pkj@axis.com>
+Upstream-Status: Backport [https://github.com/jqlang/jq/commit/27f417f4812e688a59fc5186b7768cec004cd6e5]
+---
+ Makefile.am | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 96d6038..acb9443 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -41,9 +41,14 @@ src/lexer.h: src/lexer.c
+ else
+ BUILT_SOURCES = src/builtin.inc src/config_opts.inc src/version.h
+ .y.c:
+- $(AM_V_YACC) echo "NOT building parser.c!"
++ $(AM_V_YACC) [ "$(<D)" = "$(@D)" ] || cp $(<D)/$(@F) $@
++ $(AM_V_YACC) [ "$(<D)" = "$(@D)" ] || cp $(<D)/$(*F).h $*.h
++ $(AM_V_YACC) touch $@ $*.h
++
+ .l.c:
+- $(AM_V_LEX) echo "NOT building lexer.c!"
++ $(AM_V_LEX) [ "$(<D)" = "$(@D)" ] || cp $(<D)/$(@F) $@
++ $(AM_V_LEX) [ "$(<D)" = "$(@D)" ] || cp $(<D)/$(*F).h $*.h
++ $(AM_V_LEX) touch $@ $*.h
+ endif
+
+ # Tell YACC (Bison) autoconf macros that you want a header file created.
@@ -8,15 +8,17 @@ SECTION = "utils"
LICENSE = "MIT & BSD-2-Clause"
LIC_FILES_CHKSUM = "file://COPYING;md5=cf7fcb0a1def4a7ad62c028f7d0dca47"
-GITHUB_BASE_URI = "https://github.com/jqlang/${BPN}/releases/"
-SRC_URI = "${GITHUB_BASE_URI}/download/${BPN}-${PV}/${BPN}-${PV}.tar.gz \
+SRCREV = "4467af7068b1bcd7f882defff6e7ea674c5357f4"
+
+SRC_URI = " \
+ git://github.com/jqlang/jq.git;protocol=https;branch=master;tag=jq-${PV} \
file://run-ptest \
- "
-SRC_URI[sha256sum] = "2be64e7129cecb11d5906290eba10af694fb9e3e7f9fc208a311dc33ca837eb0"
+ file://0001-Support-building-with-disable-maintainer-mode-and-so.patch \
+"
-inherit autotools github-releases ptest
+inherit autotools ptest
-UPSTREAM_CHECK_REGEX = "releases/tag/${BPN}-(?P<pver>\d+(\.\d+)+)"
+UPSTREAM_CHECK_GITTAGREGEX = "${BPN}-(?P<pver>\d+(\.\d+)+)"
PACKAGECONFIG ?= "oniguruma"
There is a bug (see https://github.com/jqlang/jq/issues/434), which results in an empty version being used if autoreconf is run on the jq sources when using a release tar ball. The incorrect assumption is that autoreconf is only used when fetching the code using Git. The empty version results in an incorrect libjq.pc file being created where the version is not set, which results in, e.g., `pkgconf --libs 'libjq > 1.6'` failing even if version 1.8.1 of jq is actually installed. Switch to fetching the code using Git to workaround the bug. Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> --- PATCHv2: The patch has been integrated upstream so this updates the Upstream-Status accordingly. ...-with-disable-maintainer-mode-and-so.patch | 44 +++++++++++++++++++ meta-oe/recipes-devtools/jq/jq_1.8.1.bb | 14 +++--- 2 files changed, 52 insertions(+), 6 deletions(-) create mode 100644 meta-oe/recipes-devtools/jq/jq/0001-Support-building-with-disable-maintainer-mode-and-so.patch