jq: Use Git to fetch the code

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>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
This commit is contained in:
Peter Kjellerstedt 2026-04-07 22:49:10 +02:00 committed by Khem Raj
parent 278d98bf00
commit d0e2d761ea
No known key found for this signature in database
GPG Key ID: BB053355919D3314
2 changed files with 51 additions and 6 deletions

View File

@ -0,0 +1,43 @@
From 91ea97fb0993d755ac971497da59985950b23843 Mon Sep 17 00:00:00 2001
From: Peter Kjellerstedt <pkj@axis.com>
Date: Tue, 7 Apr 2026 21:59:27 +0200
Subject: [PATCH] Support building with --disable-maintainer-mode and source !=
build dir
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.
Upstream-Status: Submitted [https://github.com/jqlang/jq/pull/3518/changes/282619d60d42c193ddce1095b34469e14dbe87b6]
---
Makefile.am | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/Makefile.am b/Makefile.am
index 1df4143..511012f 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.

View File

@ -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"