summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam James <sam@gentoo.org>2022-12-06 09:02:21 +0000
committerSam James <sam@gentoo.org>2022-12-06 09:02:42 +0000
commit23e57ee0c2b556d37aa39cde1628eeab5ac44d20 (patch)
tree2a743b15b06088d1e224ac7584ab56a6be0a2b4f /app-text/linuxdoc-tools
parentwww-client/vivaldi-snapshot: Drop old 5.6.2865.3 (diff)
downloadgentoo-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/linuxdoc-tools')
-rw-r--r--app-text/linuxdoc-tools/Manifest1
-rw-r--r--app-text/linuxdoc-tools/files/linuxdoc-tools-0.9.82-configure-clang16.patch246
-rw-r--r--app-text/linuxdoc-tools/linuxdoc-tools-0.9.82.ebuild95
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
+}