diff options
author | Sam James <sam@gentoo.org> | 2022-12-06 09:02:21 +0000 |
---|---|---|
committer | Sam James <sam@gentoo.org> | 2022-12-06 09:02:42 +0000 |
commit | 23e57ee0c2b556d37aa39cde1628eeab5ac44d20 (patch) | |
tree | 2a743b15b06088d1e224ac7584ab56a6be0a2b4f /app-text | |
parent | www-client/vivaldi-snapshot: Drop old 5.6.2865.3 (diff) | |
download | gentoo-23e57ee0c2b556d37aa39cde1628eeab5ac44d20.tar.gz gentoo-23e57ee0c2b556d37aa39cde1628eeab5ac44d20.tar.bz2 gentoo-23e57ee0c2b556d37aa39cde1628eeab5ac44d20.zip |
app-text/linuxdoc-tools: fix build w/ clang 16
Closes: https://bugs.gentoo.org/883203
Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'app-text')
-rw-r--r-- | app-text/linuxdoc-tools/Manifest | 1 | ||||
-rw-r--r-- | app-text/linuxdoc-tools/files/linuxdoc-tools-0.9.82-configure-clang16.patch | 246 | ||||
-rw-r--r-- | app-text/linuxdoc-tools/linuxdoc-tools-0.9.82.ebuild | 95 |
3 files changed, 342 insertions, 0 deletions
diff --git a/app-text/linuxdoc-tools/Manifest b/app-text/linuxdoc-tools/Manifest index e5c63c2ef18f..e5ce01ec717c 100644 --- a/app-text/linuxdoc-tools/Manifest +++ b/app-text/linuxdoc-tools/Manifest @@ -1 +1,2 @@ DIST linuxdoc-tools-0.9.73.tar.gz 613971 BLAKE2B e2e04aaa44d5e2cea5af266e38b476381f87a02b9704e03ae5943f7714634d5d214350abd5b193f2efe656a264403c679495af5f954870b30d32b8b799ad7206 SHA512 b26896316e259cf4ef170814d410b1e39e58f61db49b03b4b9c1f767f8459d84214e92d9dcc09ad739508fd9c3c5fe4a2264cbb3c693a11362e59fd221655252 +DIST linuxdoc-tools-0.9.82.tar.bz2 550046 BLAKE2B 3bf9b9680659a3a6873e31116975fca7372167a701e630d762d37fcacf7acb9f1df4031558c4db24769e598a17b206e1c09607e341fc90f91497c15ff0cb05a1 SHA512 82560d9dc4db231e0a2c1fa3732d062bfd6af2cd3c5ffa0960939b2888533882437ddeeb54219e31acc7eaa10fdeee84ba206d32516cc5ed4f3fba2eab1ec0e4 diff --git a/app-text/linuxdoc-tools/files/linuxdoc-tools-0.9.82-configure-clang16.patch b/app-text/linuxdoc-tools/files/linuxdoc-tools-0.9.82-configure-clang16.patch new file mode 100644 index 000000000000..941d7eac1dc6 --- /dev/null +++ b/app-text/linuxdoc-tools/files/linuxdoc-tools-0.9.82-configure-clang16.patch @@ -0,0 +1,246 @@ +Patch emailed to upstream. + +From 216e770ced47ad0017cd43033ef213c2634fe87a Mon Sep 17 00:00:00 2001 +From: Sam James <sam@gentoo.org> +Date: Tue, 6 Dec 2022 08:53:14 +0000 +Subject: [PATCH] sgmls-1.1: fix configure script with Clang 16 + +Clang 16 makes -Wimplicit-function-declaration and -Wimplicit-int errors by default. + +Unfortunately, this can lead to misconfiguration or miscompilation of software as configure +tests may then return the wrong result. In this case, it led to a build failure +(see https://bugs.gentoo.org/883203). + +We also fix -Wstrict-prototypes while here as it's easy to do and it prepares +us for C23. + +For more information, see LWN.net [0] or LLVM's Discourse [1], the Gentoo wiki [2], +or the (new) c-std-porting mailing list [3]. + +[0] https://lwn.net/Articles/913505/ +[1] https://discourse.llvm.org/t/configure-script-breakage-with-the-new-werror-implicit-function-declaration/65213 +[2] https://wiki.gentoo.org/wiki/Modern_C_porting +[3] hosted at lists.linux.dev. + +Bug: https://bugs.gentoo.org/883203 +Signed-off-by: Sam James <sam@gentoo.org> +--- a/sgmls-1.1/configure ++++ b/sgmls-1.1/configure +@@ -110,13 +110,14 @@ cat >doit.c <<\EOF + + #include <ctype.h> + #include <signal.h> ++#include <stdlib.h> + +-static int whoops() ++static void whoops(int signal) + { + _exit(1); + } + +-main() ++int main(void) + { + int c; + #ifdef isascii +@@ -213,9 +214,9 @@ else + fi + + cat >doit.c <<\EOF +-main(argc, argv) +-int argc; +-char **argv; ++#include <stdio.h> ++#include <stdlib.h> ++int main(int argc, char **argv) + { + if (argc == 0) + remove("foo"); +@@ -231,9 +232,9 @@ else + fi + + cat >doit.c <<\EOF +-main(argc, argv) +-int argc; +-char **argv; ++#include <unistd.h> ++#include <stdlib.h> ++int main(int argc, char **argv) + { + if (argc == 0) + getopt(argc, argv, "v"); +@@ -249,9 +250,9 @@ else + fi + + cat >doit.c <<\EOF +-main(argc, argv) +-int argc; +-char **argv; ++#include <stdlib.h> ++#include <unistd.h> ++int main(int argc, char **argv) + { + if (argc == 0) + access("foo", 4); +@@ -267,9 +268,9 @@ else + fi + + cat >doit.c <<\EOF +-main(argc, argv) +-int argc; +-char **argv; ++#include <stdlib.h> ++#include <unistd.h> ++int main(int argc, char **argv) + { + if (argc == 0) + vfork(); +@@ -285,9 +286,9 @@ else + fi + + cat >doit.c <<\EOF +-main(argc, argv) +-int argc; +-char **argv; ++#include <stdlib.h> ++#include <sys/wait.h> ++int main(int argc, char **argv) + { + + if (argc == 0) { +@@ -306,10 +307,9 @@ else + fi + + cat >doit.c <<\EOF ++#include <stdlib.h> + #include <string.h> +-main(argc, argv) +-int argc; +-char **argv; ++int main(int argc, char **argv) + { + if (argc == 0) + strerror(0); +@@ -326,9 +326,8 @@ fi + + cat >doit.c <<\EOF + #include <strings.h> +-main(argc, argv) +-int argc; +-char **argv; ++#include <stdlib.h> ++int main(int argc, char **argv) + { + if (argc == 0) + bcopy((char *)0, (char *)0, 0); +@@ -340,10 +339,9 @@ if $CC $CFLAGS -o doit doit.c $LIBS >/dev/null 2>&1 && ./doit 2>/dev/null + then + # Only use BSD_STRINGS if ANSI string functions don't work. + cat >doit.c <<\EOF ++#include <stdlib.h> + #include <string.h> +-main(argc, argv) +-int argc; +-char **argv; ++int main(int argc, char **argv) + { + if (argc == 0) + memcpy((char *)0, (char *)0, 0); +@@ -363,9 +361,8 @@ fi + + cat >doit.c <<\EOF + #include <signal.h> +-main(argc, argv) +-int argc; +-char **argv; ++#include <stdlib.h> ++int main(int argc, char **argv) + { + if (argc == 0) + raise(SIGINT); +@@ -382,9 +379,8 @@ fi + + cat >doit.c <<\EOF + #include <stdio.h> +-main(argc, argv) +-int argc; +-char **argv; ++#include <stdlib.h> ++int main(int argc, char **argv) + { + if (argc == 0) { + fpos_t pos; +@@ -404,12 +400,11 @@ fi + + cat >doit.c <<\EOF + #include <unistd.h> ++#include <stdlib.h> + #include <sys/types.h> + #include <sys/wait.h> + +-main(argc, argv) +-int argc; +-char **argv; ++int main(int argc, char **argv) + { + if (argc == 0) { + pid_t pid; +@@ -436,14 +431,15 @@ fi + + cat >doit.c <<\EOF + #include <stdio.h> ++#include <stdlib.h> + #include <signal.h> + +-static int whoops() ++static void whoops(int signal) + { + _exit(1); + } + +-main() ++int main(void) + { + char buf[30]; + #ifdef SIGSEGV +@@ -469,10 +465,9 @@ fi + + cat >doit.c <<\EOF + #include <nl_types.h> ++#include <stdlib.h> + +-main(argc, argv) +-int argc; +-char **argv; ++int main(int argc, char **argv) + { + if (argc == 0) { + nl_catd d = catopen("foo", 0); +@@ -492,12 +487,11 @@ fi + + cat >doit.c <<\EOF + #include <limits.h> ++#include <stdlib.h> + + char c = UCHAR_MAX; + +-main(argc, argv) +-int argc; +-char **argv; ++int main(int argc, char **argv) + { + #if CHAR_MIN < 0 + exit(!(c < 0)); +@@ -512,7 +506,8 @@ then + char_signed= + else + cat >doit.c <<\EOF +-main() ++#include <stdlib.h> ++int main(void) + { + int i; + +-- +2.38.1 + diff --git a/app-text/linuxdoc-tools/linuxdoc-tools-0.9.82.ebuild b/app-text/linuxdoc-tools/linuxdoc-tools-0.9.82.ebuild new file mode 100644 index 000000000000..b4403ab283ff --- /dev/null +++ b/app-text/linuxdoc-tools/linuxdoc-tools-0.9.82.ebuild @@ -0,0 +1,95 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +inherit autotools latex-package perl-functions sgml-catalog-r1 toolchain-funcs + +DESCRIPTION="A toolset for processing LinuxDoc DTD SGML files" +HOMEPAGE="https://gitlab.com/agmartin/linuxdoc-tools" +SRC_URI="https://gitlab.com/agmartin/linuxdoc-tools/-/archive/${PV}/${P}.tar.bz2" + +LICENSE="GPL-3+ MIT SGMLUG" +SLOT="0" +KEYWORDS="~amd64 ~ia64 ~ppc ~sparc ~x86" +IUSE="doc" + +RDEPEND=" + || ( app-text/openjade app-text/opensp ) + app-text/sgml-common + dev-lang/perl:= + sys-apps/groff +" +DEPEND="${RDEPEND}" +BDEPEND=" + app-alternatives/awk + sys-devel/flex + doc? ( + dev-texlive/texlive-fontsrecommended + virtual/latex-base + ) +" + +PATCHES=( + "${FILESDIR}"/${PN}-0.9.82-configure-clang16.patch +) + +src_prepare() { + default + + # Pregenerated configure scripts fail. + eautoreconf +} + +src_configure() { + perl_set_version + tc-export CC + local myeconfargs=( + --disable-docs + --with-texdir="${TEXMF}/tex/latex/${PN}" + --with-perllibdir="${VENDOR_ARCH}" + --with-installed-iso-entities + ) + use doc && myeconfargs+=(--enable-docs="txt pdf html") + + econf "${myeconfargs[@]}" +} + +src_compile() { + # Prevent access violations from bitmap font files generation. + use doc && export VARTEXFONTS="${T}/fonts" + + default +} + +src_install() { + # Makefile ignores docdir configuration option. + emake DESTDIR="${D}" docdir="${EPREFIX}/usr/share/doc/${PF}" install + dodoc ChangeLog README + + insinto /etc/sgml + newins - linuxdoc.cat <<-EOF + CATALOG "${EPREFIX}/usr/share/linuxdoc-tools/linuxdoc-tools.catalog" + EOF +} + +pkg_preinst() { + # work around sgml-catalog.eclass removing it + cp "${ED}"/etc/sgml/linuxdoc.cat "${T}" || die +} + +pkg_postinst() { + local backup=${T}/linuxdoc.cat + local real=${EROOT}/etc/sgml/linuxdoc.cat + if ! cmp -s "${backup}" "${real}"; then + cp "${backup}" "${real}" || die + fi + + latex-package_pkg_postinst + sgml-catalog-r1_pkg_postinst +} + +pkg_postrm() { + latex-package_pkg_postrm + sgml-catalog-r1_pkg_postrm +} |