48 lines
2.3 KiB
Bash
48 lines
2.3 KiB
Bash
|
|
#!/usr/bin/env bash
|
||
|
|
# groff: one decorative figure, and no netpbm to draw it.
|
||
|
|
#
|
||
|
|
# program 'xpmtoppm' is missing; can't generate doc/gnu.eps
|
||
|
|
# make[2]: *** [Makefile:19801: doc/gnu.eps] Error 1
|
||
|
|
#
|
||
|
|
# xpmtoppm belongs to netpbm. What it produces is the GNU logo, as EPS, for
|
||
|
|
# groff's own manual -- and getting it would mean packaging netpbm and the image
|
||
|
|
# libraries under it (libjpeg-turbo, libpng, libtiff, jbigkit), none of which
|
||
|
|
# anything else in this bootstrap wants.
|
||
|
|
#
|
||
|
|
# NO CONFIGURE SWITCH EXISTS: groff's configure has neither --without-doc nor
|
||
|
|
# --disable-doc, so there was nothing to turn off. Adding an invented flag would
|
||
|
|
# have been worse than useless -- autoconf merely warns about options it does not
|
||
|
|
# know, the build would have failed identically, and the hook's own check would
|
||
|
|
# have passed.
|
||
|
|
#
|
||
|
|
# The Makefile is generated, so it is edited after configure and before make. The
|
||
|
|
# variable is emptied rather than the rule patched, because the INSTALL side is
|
||
|
|
# already tolerant:
|
||
|
|
#
|
||
|
|
# if test -f "$$d/gnu.eps"; then ... fi
|
||
|
|
#
|
||
|
|
# so with nothing built, nothing is installed and nothing complains. One line,
|
||
|
|
# and the only one whose absence the rest of the Makefile already handles.
|
||
|
|
set -euo pipefail
|
||
|
|
python3 - <<'ZZPY'
|
||
|
|
import io, re
|
||
|
|
lines = io.open("PKGBUILD", encoding="utf-8").read().split("\n")
|
||
|
|
mk = [i for i, l in enumerate(lines) if re.match(r"^[ \t]*make[ \t]*$", l)]
|
||
|
|
assert len(mk) >= 1, "groff: no bare `make` line found in build()"
|
||
|
|
i = mk[0]
|
||
|
|
ind = re.match(r"^[ \t]*", lines[i]).group(0)
|
||
|
|
lines[i:i] = [
|
||
|
|
ind + "# doc/gnu.eps needs xpmtoppm from netpbm, which this port does not",
|
||
|
|
ind + "# package. The install side already skips the file when it is absent.",
|
||
|
|
ind + 'sed -i "s|^DOC_GNU_EPS = doc/gnu.eps$|DOC_GNU_EPS =|" Makefile',
|
||
|
|
ind + 'grep -q "^DOC_GNU_EPS =$" Makefile',
|
||
|
|
]
|
||
|
|
io.open("PKGBUILD", "w", encoding="utf-8").write("\n".join(lines))
|
||
|
|
ZZPY
|
||
|
|
grep -q "DOC_GNU_EPS" PKGBUILD || { echo "groff: the figure was not dropped" >&2; exit 1; }
|
||
|
|
# The grep inside build() is the real check: it runs against the generated
|
||
|
|
# Makefile and fails the build if the variable was not what this hook expects.
|
||
|
|
grep -q 'grep -q "\^DOC_GNU_EPS =\$" Makefile' PKGBUILD || {
|
||
|
|
echo "groff: the in-build verification is missing" >&2; exit 1; }
|
||
|
|
echo "groff: GNU logo figure dropped (no netpbm)"
|