[ADD] gyp for nss, and jsoncpp's doxygen output
nss will not configure without gyp: Building NSS requires an installation of gyp: https://gyp.gsrc.io Google's build-file generator, which nss uses to produce its ninja files. It is a real Arch package and a Python program, so it joins the Python set. jsoncpp is the fourteenth instance of this shape and the sixth of my own making. Removing the doxybuild.py call stopped the API html being generated; package() still copied the directory it would have produced, and the name carries pkgver so the path is not greppable without knowing the version. The rule is mechanical enough now to state as a procedure rather than a lesson: after removing a documentation build, grep package() for the OUTPUT directory name, not for the tool. The tool appears in build(); the path appears in package(), and it is the path that fails. --- FR --- nss ne se configure pas sans gyp : Building NSS requires an installation of gyp: https://gyp.gsrc.io Le générateur de fichiers de construction de Google, dont nss se sert pour produire ses fichiers ninja. C'est un vrai paquet Arch et un programme Python : il rejoint l'ensemble Python. jsoncpp est la quatorzième occurrence de cette forme, et la sixième de ma main. Retirer l'appel à doxybuild.py a arrêté la génération du html d'API ; package() copiait toujours le répertoire qu'il aurait produit, et son nom porte pkgver — le chemin n'est donc pas trouvable par grep sans connaître la version. La règle est assez mécanique pour être énoncée en procédure plutôt qu'en leçon : après avoir retiré une construction de documentation, chercher dans package() le nom du répertoire de SORTIE, pas celui de l'outil. L'outil est dans build() ; le chemin est dans package(), et c'est le chemin qui échoue. Assisted-by: Claude Opus 5
This commit is contained in:
parent
8d9e8a4dce
commit
f6c0969929
2 changed files with 38 additions and 0 deletions
|
|
@ -26,3 +26,34 @@ io.open("PKGBUILD", "w", encoding="utf-8").write("\n".join(lines))
|
|||
ZZPY
|
||||
grep -q "doxybuild" PKGBUILD && { echo "jsoncpp: doxybuild survived" >&2; exit 1; }
|
||||
echo "jsoncpp: doxygen build removed"
|
||||
|
||||
# --- and the html it no longer generates --------------------------------------
|
||||
#
|
||||
# cp: cannot stat 'dist/doxygen/jsoncpp-api-html-1.9.6': No such file or dir
|
||||
#
|
||||
# FOURTEENTH time, and the sixth of my own making. Removing the doxybuild.py call
|
||||
# above stopped the API html being generated, and package() still copies the
|
||||
# directory it would have produced. The name carries the version, so the path is
|
||||
# not even greppable without knowing pkgver.
|
||||
#
|
||||
# By now the rule is mechanical and worth stating as a procedure rather than a
|
||||
# lesson: after removing a documentation build, grep package() for the OUTPUT
|
||||
# directory name, not for the tool. The tool appears in build(); the path appears
|
||||
# in package(), and it is the path that fails.
|
||||
set -euo pipefail
|
||||
python3 - <<'ZZPY'
|
||||
import io, re
|
||||
lines = io.open("PKGBUILD", encoding="utf-8").read().split("\n")
|
||||
hit = [i for i, l in enumerate(lines) if "doxygen" in l and re.match(r"^[ \t]*(cp|mv|install) ", l)]
|
||||
assert len(hit) >= 1, "jsoncpp: no doxygen output copy found in package()"
|
||||
for i in reversed(hit):
|
||||
j = i
|
||||
while lines[j].rstrip().endswith("\\"):
|
||||
j += 1
|
||||
ind = re.match(r"^[ \t]*", lines[i]).group(0)
|
||||
lines[i:j + 1] = [ind + ": # the doxygen html is not generated (no doxygen here)."]
|
||||
io.open("PKGBUILD", "w", encoding="utf-8").write("\n".join(lines))
|
||||
ZZPY
|
||||
grep -qE "^[[:space:]]*(cp|mv|install) .*doxygen" PKGBUILD && {
|
||||
echo "jsoncpp: a doxygen output copy survived" >&2; exit 1; }
|
||||
echo "jsoncpp: doxygen html copy removed"
|
||||
|
|
|
|||
|
|
@ -333,6 +333,13 @@ STAGE1_PACKAGES=(
|
|||
# schema, so it needs a schema validator to build anything -- including
|
||||
# itself. ModuleNotFoundError: No module named 'fastjsonschema'.
|
||||
python-fastjsonschema
|
||||
# gyp: nss will not configure without it --
|
||||
#
|
||||
# Building NSS requires an installation of gyp: https://gyp.gsrc.io
|
||||
#
|
||||
# Google's build-file generator, which nss uses to produce its ninja files.
|
||||
# A Python program, so it goes with the rest of the Python set.
|
||||
gyp
|
||||
# libaio: a real closure gap. lvm2 stops on
|
||||
#
|
||||
# device/bcache.c:30:10: fatal error: libaio.h: No such file or directory
|
||||
|
|
|
|||
Loading…
Reference in a new issue