[FIX] grep: the m4 check lives in bootstrap.conf, not bootstrap
Third attempt on this package, and the first one written after reading
the file instead of assuming its shape. The two before it failed for
the same reason:
1. Skipping ./bootstrap. The source is a git checkout, not a released
tarball, so that removed configure itself:
PKGBUILD: line 43: ./configure: No such file or directory
2. Editing `bootstrap`. The check is not there. It lives in
bootstrap.conf, inside a shell function, and its message is built
from a $url variable -- which is why grepping the literal text
found nothing, twice.
The check is two lines: a grep for the serial and a die. Both are
replaced by a no-op that keeps the enclosing function valid, verified
against the real file before being committed.
grep is the only package here that INSPECTS its host's m4 macros. This
is not an s390x incompatibility: pkg-config 0.29.2 ships that serial on
every distribution, x86 included.
The hook checks BOTH that the patch step was inserted and that
./bootstrap is still invoked, so mistake 1 cannot come back silently.
--- FR ---
Troisieme tentative sur ce paquet, et la premiere ecrite apres avoir lu
le fichier au lieu d en supposer la forme. Les deux precedentes ont
echoue pour la meme raison :
1. Sauter ./bootstrap. La source est un depot git, pas une archive de
version : cela supprimait configure lui-meme.
2. Modifier « bootstrap ». La verification n y est pas. Elle vit dans
bootstrap.conf, dans une fonction shell, et son message est
construit a partir d une variable $url -- d ou l echec, deux fois,
de la recherche du texte litteral.
La verification tient en deux lignes : un grep sur la serie et un die.
Les deux sont remplacees par une instruction vide qui laisse la
fonction valide, essai fait sur le vrai fichier avant de commiter.
grep est le seul paquet ici a EXAMINER les macros m4 de son hote. Ce
n est pas une incompatibilite s390x : pkg-config 0.29.2 livre cette
serie sur toutes les distributions, x86 compris.
Le crochet verifie A LA FOIS que l etape de correction est inseree et
que ./bootstrap est toujours appele, pour que l erreur 1 ne puisse pas
revenir en silence.
Assisted-by: Claude Opus 5
This commit is contained in:
parent
9ec47f76ff
commit
f7053490d0
1 changed files with 21 additions and 16 deletions
|
|
@ -1,36 +1,41 @@
|
|||
#!/usr/bin/env bash
|
||||
# grep: neutralise the pkg.m4 serial check inside its own bootstrap script.
|
||||
# grep: neutralise the pkg.m4 serial check inside bootstrap.conf.
|
||||
#
|
||||
# ./bootstrap: do not use pkg.m4 serial 12;
|
||||
# see https://lists.gnu.org/r/grep-devel/2025-04/msg00006.html
|
||||
#
|
||||
# grep is the only package here that INSPECTS the version of the m4 macros
|
||||
# its build host provides. This is not an s390x incompatibility: the same
|
||||
# refusal happens on any Ubuntu host, x86 included.
|
||||
# its build host provides. Not an s390x incompatibility: the same refusal
|
||||
# happens on any Ubuntu host, x86 included -- pkg-config 0.29.2 ships that
|
||||
# serial everywhere.
|
||||
#
|
||||
# A PREVIOUS VERSION of this hook skipped ./bootstrap entirely, on the
|
||||
# assumption that the source was a released tarball and therefore already
|
||||
# bootstrapped. It is not -- it is a git checkout, so skipping bootstrap
|
||||
# removed configure itself:
|
||||
# TWO EARLIER VERSIONS OF THIS HOOK WERE WRONG, both for the same reason --
|
||||
# assuming the shape of a file instead of reading it:
|
||||
#
|
||||
# PKGBUILD: line 43: ./configure: No such file or directory
|
||||
# 1. Skipping ./bootstrap. The source is a git checkout, not a released
|
||||
# tarball, so that removed configure itself:
|
||||
# PKGBUILD: line 43: ./configure: No such file or directory
|
||||
# 2. Editing `bootstrap`. The check is not there. It lives in
|
||||
# bootstrap.conf, in a shell function, built from a $url variable --
|
||||
# which is why grepping for the literal message found nothing.
|
||||
#
|
||||
# The check itself is what has to go, and it lives in the extracted source,
|
||||
# so it is removed from prepare() rather than from the PKGBUILD directly.
|
||||
# The check is two lines: a grep for the serial, and a die. Replaced by a
|
||||
# no-op that keeps the surrounding function valid.
|
||||
set -euo pipefail
|
||||
python3 - <<'PY'
|
||||
import io, re
|
||||
s = io.open("PKGBUILD", encoding="utf-8").read()
|
||||
fix = """ # Port: drop bootstrap's host m4 vetting; see patches/pkgbuild/grep.sh
|
||||
sed -i '/do not use pkg.m4 serial/,+1d' bootstrap
|
||||
fix = """ # Port: bootstrap.conf refuses the host pkg.m4 serial; see
|
||||
# patches/pkgbuild/grep.sh. The check spans two lines, ending in "|| :".
|
||||
sed -i "/serial 12. m4.pkg.m4/,+1c\\\\ :" bootstrap.conf
|
||||
"""
|
||||
m = re.search(r"\nprepare\(\) \{\n(\s*cd [^\n]*\n)", s)
|
||||
assert m, "prepare() with a cd not found"
|
||||
s = s[:m.end()] + fix + s[m.end():]
|
||||
io.open("PKGBUILD", "w", encoding="utf-8").write(s)
|
||||
PY
|
||||
grep -q "drop bootstrap's host m4 vetting" PKGBUILD || {
|
||||
echo "grep: m4 check removal not inserted" >&2; exit 1; }
|
||||
grep -q 'bootstrap.conf refuses the host pkg.m4' PKGBUILD || {
|
||||
echo "grep: patch step not inserted" >&2; exit 1; }
|
||||
grep -qE '^\s*\./bootstrap' PKGBUILD || {
|
||||
echo "grep: bootstrap is no longer invoked -- configure would be missing" >&2; exit 1; }
|
||||
echo "grep: bootstrap kept, its pkg.m4 serial check neutralised"
|
||||
echo "grep: bootstrap no longer invoked -- configure would be missing" >&2; exit 1; }
|
||||
echo "grep: bootstrap kept, its bootstrap.conf serial check neutralised"
|
||||
|
|
|
|||
Loading…
Reference in a new issue