Skip to content

[text-kit] app-text/rman-3.2-r1 fails with new GCC 14.x #693

@coffnix

Description

@coffnix
>>> Emerging (20 of 552) app-text/rman-3.2-r1::text-kit
 * rman-3.2.tar.gz BLAKE2B SHA512 size ;-) ...                                                                                                       [ ok ]
>>> Unpacking source...
>>> Unpacking rman-3.2.tar.gz to /var/tmp/portage/app-text/rman-3.2-r1/work
>>> Source unpacked in /var/tmp/portage/app-text/rman-3.2-r1/work
>>> Preparing source in /var/tmp/portage/app-text/rman-3.2-r1/work/rman-3.2 ...
 * Applying rman-3.2-gentoo.diff ...                                                                                                                 [ ok ]
 * Applying rman-3.2-ldflags.patch ...                                                                                                               [ ok ]
 * Applying rman-3.2-format-security.patch ...                                                                                                       [ ok ]
>>> Source prepared.
>>> Configuring source in /var/tmp/portage/app-text/rman-3.2-r1/work/rman-3.2 ...
>>> Source configured.
>>> Compiling source in /var/tmp/portage/app-text/rman-3.2-r1/work/rman-3.2 ...
make -j12 -l12 CC=x86_64-pc-linux-gnu-gcc 'CFLAGS=-O2 -pipe -march=znver3 -mtune=znver3'
x86_64-pc-linux-gnu-gcc -Wl,-O1 -Wl,--sort-common -Wl,--as-needed -DNDEBUG -DVOLLIST='"1:2:3:4:5:6:7:8:9:o:l:n:p"' -DMANTITLEPRINTF='"%s(%s) manual page"' -DMANREFPRINTF='"%s.%s"' -DPOLYGLOTMANVERSION=\"3.2\" -O2 -pipe -march=znver3 -mtune=znver3 -o rman rman.c
rman.c: In function ‘casify’:
rman.c:364:99: error: passing argument 5 of ‘bsearch’ from incompatible pointer type [-Wincompatible-pointer-types]
  364 |                         exp = (char **)bsearch(&p, lcexceptions, lcexceptionslen, sizeof(char *), lcexceptionscmp);
      |                                                                                                   ^~~~~~~~~~~~~~~
      |                                                                                                   |
      |                                                                                                   int (*)(const char **, const char **)
In file included from /usr/include/stdlib.h:965,
                 from rman.c:24:
/usr/include/bits/stdlib-bsearch.h:21:24: note: expected ‘int (*)(const void *, const void *)’ but argument is of type ‘int (*)(const char **, const char **)’
   21 |          __compar_fn_t __compar)
      |          ~~~~~~~~~~~~~~^~~~~~~~
rman.c: In function ‘source_command’:
rman.c:4174:44: warning: passing argument 1 of ‘source_out’ discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
 4174 |          if (fcharout) { source_out(tcltkOP[i]); source_out(": "); }
      |                                     ~~~~~~~^~~
rman.c:3558:24: note: expected ‘char *’ but argument is of type ‘const char *’
 3558 | char *source_out(char *p) {
      |                  ~~~~~~^
rman.c: In function ‘main’:
rman.c:4669:61: error: passing argument 4 of ‘qsort’ from incompatible pointer type [-Wincompatible-pointer-types]
 4669 |         qsort(lcexceptions, lcexceptionslen, sizeof(char*), lcexceptionscmp);
      |                                                             ^~~~~~~~~~~~~~~
      |                                                             |
      |                                                             int (*)(const char **, const char **)
/usr/include/stdlib.h:971:34: note: expected ‘__compar_fn_t’ {aka ‘int (*)(const void *, const void *)’} but argument is of type ‘int (*)(const char **, const char **)’
  971 |                    __compar_fn_t __compar) __nonnull ((1, 4));
      |                    ~~~~~~~~~~~~~~^~~~~~~~
make: *** [Makefile:100: rman] Error 1
 * ERROR: app-text/rman-3.2-r1::text-kit failed (compile phase):
 *   emake failed
 *
 * If you need support, post the output of `emerge --info '=app-text/rman-3.2-r1::text-kit'`,
 * the complete build log and the output of `emerge -pqv '=app-text/rman-3.2-r1::text-kit'`.
 * The complete build log is located at '/var/tmp/portage/app-text/rman-3.2-r1/temp/build.log'.
 * The ebuild environment file is located at '/var/tmp/portage/app-text/rman-3.2-r1/temp/environment'.
 * Working directory: '/var/tmp/portage/app-text/rman-3.2-r1/work/rman-3.2'
 * S: '/var/tmp/portage/app-text/rman-3.2-r1/work/rman-3.2'

>>> Failed to emerge app-text/rman-3.2-r1, Log file:

Tested new patch from gentoo solved this issue:

rman-3.2-incompatible-pointer-types.patch
From 1120713781a5da03a56d3f8d59904c0fd20f6dd6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Leonardo=20Hern=C3=A1ndez=20Hern=C3=A1ndez?=
 <leohdz172@proton.me>
Date: Mon, 11 Dec 2023 17:05:26 -0600
Subject: [PATCH] fix build with -Werror=incompatible-pointer-types
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Leonardo Hernández Hernández <leohdz172@proton.me>
--- a/rman.c
+++ b/rman.c
@@ -268,7 +268,7 @@ stricmp(const char *s1, const char *s2) {
 	else return 1;
 }

-int lcexceptionscmp(const char **a, const char **b) { return stricmp(*a, *b); }
+int lcexceptionscmp(const void *a, const void *b) { return stricmp((const char *)a, (const char *)b); }

 int
 strincmp(const char *s1, const char *s2, size_t n) {
--
2.43.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions