archlinux-s390x/patches/pkgbuild/curl.sh
Mathieu Benoit 00c3909df5 [ADD] TODO.md: track every divergence from upstream Arch
A port that does not track what it gave up drifts silently, and the gap
is found years later by whoever needs the missing feature. Every
deliberate difference is now written down, with the hook that
implements it and what it would take to close it.

The document separates two kinds, because the difference matters.
DEFERRED entries were dropped to get the bootstrap moving -- nothing
about s390x prevents them, they cost build time or a host dependency,
and they should come back. ARCHITECTURAL entries drop something that is
x86-specific by nature; there is nothing to restore, and they are
listed so nobody spends an afternoon rediscovering why.

A third section covers what is neither: environment facts, like
dev.gnupg.org being unreachable from this host, which close themselves
elsewhere.

curl joins the deferred list. Arch builds HTTP/3 through nghttp3 and
ngtcp2; Ubuntu packages neither, and building both to reach HTTP/3 is a
detour when pacman and ERPLibre talk to plain HTTPS mirrors. The
dependency declarations and the soname map go with the configure flags:
left in place, the package would claim to need libraries it no longer
links.

--- FR ---

Un portage qui ne trace pas ce qu il a abandonne derive en silence, et
l ecart se decouvre des annees plus tard par celui a qui la
fonctionnalite manque. Chaque difference deliberee est desormais
consignee, avec le crochet qui la met en oeuvre et ce qu il faudrait
pour la refermer.

Le document separe deux natures, parce que la distinction compte. Les
entrees DIFFEREES ont ete abandonnees pour faire avancer l amorcage --
rien dans s390x ne s y oppose, elles coutent du temps de compilation ou
une dependance d hote, et elles doivent revenir. Les entrees
ARCHITECTURALES retirent ce qui est par nature propre a x86 ; il n y a
rien a restaurer, et elles figurent la pour que personne ne passe un
apres-midi a redecouvrir pourquoi.

Une troisieme section couvre ce qui n est ni l un ni l autre : des
faits d environnement, comme dev.gnupg.org injoignable depuis cet hote,
qui se refermeront ailleurs.

curl rejoint la liste des differes. Arch batit HTTP/3 par nghttp3 et
ngtcp2 ; Ubuntu n empaquete ni l un ni l autre, et les batir tous deux
pour atteindre HTTP/3 est un detour quand pacman et ERPLibre parlent a
des miroirs HTTPS ordinaires. Les declarations de dependance et la
table de sonames partent avec les options de configuration : laissees
en place, le paquet pretendrait dependre de bibliotheques qu il ne lie
plus.

Assisted-by: Claude Opus 5
2026-08-16 05:47:47 -04:00

29 lines
1.2 KiB
Bash
Executable file

#!/usr/bin/env bash
# curl: disable HTTP/3.
#
# configure: error: nghttp3 enabled without a QUIC library; enable ngtcp2
#
# Arch builds curl with HTTP/3 through nghttp3 + ngtcp2. Ubuntu packages
# neither, so the build host cannot satisfy them, and building both from
# source to reach HTTP/3 is a detour: nothing in the bootstrap needs it.
# pacman talks to plain HTTPS mirrors, and so does ERPLibre.
#
# DEFERRED, not rejected -- see TODO.md. Re-enable by building ngtcp2 and
# nghttp3 as Arch packages first, then dropping this hook.
set -euo pipefail
# The configure flags.
sed -i 's/--with-nghttp3/--without-nghttp3/; s/--with-ngtcp2/--without-ngtcp2/' PKGBUILD
# The dependency declarations and the soname map. Left in place, the package
# would claim to need libraries it no longer links, and makepkg resolves
# those sonames against the built binary.
sed -i "/'libnghttp3'/d; /'libngtcp2'/d" PKGBUILD
if grep -qE '\-\-with-(nghttp3|ngtcp2)' PKGBUILD; then
echo "curl: an HTTP/3 library is still requested" >&2; exit 1
fi
if grep -qE "'(libnghttp3|libngtcp2)'" PKGBUILD; then
echo "curl: an HTTP/3 dependency is still declared" >&2; exit 1
fi
echo "curl: HTTP/3 disabled (no ngtcp2 on the build host)"