diff options
author | Sam James <sam@gentoo.org> | 2024-11-18 05:27:55 +0000 |
---|---|---|
committer | Sam James <sam@gentoo.org> | 2024-11-18 05:34:48 +0000 |
commit | d0832514a96cdbcf546461cfeec91bdf1b1df16b (patch) | |
tree | 9f54c097808204e82bbfee74dbd11c6c78831d6b /app-arch | |
parent | x11-wm/marco: Refactor to unbreak gpy-list-pkg-impls (diff) | |
download | gentoo-d0832514a96cdbcf546461cfeec91bdf1b1df16b.tar.gz gentoo-d0832514a96cdbcf546461cfeec91bdf1b1df16b.tar.bz2 gentoo-d0832514a96cdbcf546461cfeec91bdf1b1df16b.zip |
app-arch/ncompress: fix C23 compat
Closes: https://bugs.gentoo.org/908207
Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'app-arch')
-rw-r--r-- | app-arch/ncompress/files/ncompress-5.0-c23.patch | 291 | ||||
-rw-r--r-- | app-arch/ncompress/ncompress-5.0-r2.ebuild | 40 |
2 files changed, 331 insertions, 0 deletions
diff --git a/app-arch/ncompress/files/ncompress-5.0-c23.patch b/app-arch/ncompress/files/ncompress-5.0-c23.patch new file mode 100644 index 000000000000..7e61ade43fc1 --- /dev/null +++ b/app-arch/ncompress/files/ncompress-5.0-c23.patch @@ -0,0 +1,291 @@ +https://github.com/vapier/ncompress/commit/af7d29d87ddf8b2002dad41152efa94e9c825b35 +https://github.com/vapier/ncompress/commit/aa359df10ec29a56c12f6e5c2bcec8d8ecfa2740 +https://github.com/vapier/ncompress/pull/40 + +From af7d29d87ddf8b2002dad41152efa94e9c825b35 Mon Sep 17 00:00:00 2001 +From: Mike Frysinger <vapier@gmail.com> +Date: Mon, 8 Feb 2021 00:28:08 -0500 +Subject: [PATCH] require standard C function prototype support + +We can drop the main prototype entirely as we don't need it. +--- + compress.c | 58 +++++++++++++++++++----------------------------------- + 2 files changed, 21 insertions(+), 38 deletions(-) + +diff --git a/compress.c b/compress.c +index 12c89b8..ff3b51b 100644 +--- a/compress.c ++++ b/compress.c +@@ -49,12 +49,6 @@ + }; + #endif + +-#ifdef __STDC__ +-# define ARGS(a) a +-#else +-# define ARGS(a) () +-#endif +- + #ifndef SIG_TYPE + # define SIG_TYPE void (*)() + #endif +@@ -365,17 +359,16 @@ unsigned short codetab[HSIZE]; + } ; + #endif + +-int main ARGS((int,char **)); +-void Usage ARGS((int)); +-void comprexx ARGS((const char *)); +-void compdir ARGS((char *)); +-void compress ARGS((int,int)); +-void decompress ARGS((int,int)); +-void read_error ARGS((void)); +-void write_error ARGS((void)); +-void abort_compress ARGS((void)); +-void prratio ARGS((FILE *,long,long)); +-void about ARGS((void)); ++void Usage (int); ++void comprexx (const char *); ++void compdir (char *); ++void compress (int, int); ++void decompress (int, int); ++void read_error (void); ++void write_error (void); ++void abort_compress (void); ++void prratio (FILE *, long, long); ++void about (void); + + /***************************************************************** + * TAG( main ) +@@ -418,9 +411,7 @@ void about ARGS((void)); + * procedure needs no input table, but tracks the way the table was built. + */ + int +-main(argc, argv) +- int argc; +- char *argv[]; ++main(int argc, char *argv[]) + { + char **filelist; + char **fileptr; +@@ -632,8 +623,7 @@ Usage: %s [-dfhvcVr] [-b maxbits] [--] [path ...]\n\ + } + + void +-comprexx(fileptr) +- const char *fileptr; ++comprexx(const char *fileptr) + { + int fdin = -1; + int fdout = -1; +@@ -982,8 +972,7 @@ comprexx(fileptr) + + #ifdef RECURSIVE + void +-compdir(dir) +- char *dir; ++compdir(char *dir) + { + struct dirent *dp; + DIR *dirp; +@@ -1059,9 +1048,7 @@ compdir(dir) + * questions about this implementation to ames!jaw. + */ + void +-compress(fdin, fdout) +- int fdin; +- int fdout; ++compress(int fdin, int fdout) + { + long hp; + int rpos; +@@ -1294,9 +1281,7 @@ endlop: if (fcode.e.ent >= FIRST && rpos < rsize) + */ + + void +-decompress(fdin, fdout) +- int fdin; +- int fdout; ++decompress(int fdin, int fdout) + { + char_type *stackp; + code_int code; +@@ -1519,7 +1504,7 @@ resetbuf: ; + } + + void +-read_error() ++read_error(void) + { + fprintf(stderr, "\nread error on"); + perror((ifname[0] != '\0') ? ifname : "stdin"); +@@ -1527,7 +1512,7 @@ read_error() + } + + void +-write_error() ++write_error(void) + { + fprintf(stderr, "\nwrite error on"); + perror(ofname ? ofname : "stdout"); +@@ -1535,7 +1520,7 @@ write_error() + } + + void +-abort_compress() ++abort_compress(void) + { + if (remove_ofname) + unlink(ofname); +@@ -1544,10 +1529,7 @@ abort_compress() + } + + void +-prratio(stream, num, den) +- FILE *stream; +- long int num; +- long int den; ++prratio(FILE *stream, long int num, long int den) + { + int q; /* Doesn't need to be long */ + +@@ -1571,7 +1553,7 @@ prratio(stream, num, den) + } + + void +-about() ++about(void) + { + printf("Compress version: %s\n", version_id); + printf("Compile options:\n "); + + +From aa359df10ec29a56c12f6e5c2bcec8d8ecfa2740 Mon Sep 17 00:00:00 2001 +From: Mike Frysinger <vapier@gmail.com> +Date: Mon, 8 Feb 2021 00:30:41 -0500 +Subject: [PATCH] mark all local functions as static + +This saves a small amount of space as the compiler can do better. +--- + compress.c | 20 ++++++++++---------- + 2 files changed, 11 insertions(+), 10 deletions(-) + +diff --git a/compress.c b/compress.c +index ff3b51b..86a8cda 100644 +--- a/compress.c ++++ b/compress.c +@@ -359,16 +359,16 @@ unsigned short codetab[HSIZE]; + } ; + #endif + +-void Usage (int); +-void comprexx (const char *); +-void compdir (char *); +-void compress (int, int); +-void decompress (int, int); +-void read_error (void); +-void write_error (void); +-void abort_compress (void); +-void prratio (FILE *, long, long); +-void about (void); ++static void Usage(int); ++static void comprexx(const char *); ++static void compdir(char *); ++static void compress(int, int); ++static void decompress(int, int); ++static void read_error(void); ++static void write_error(void); ++static void abort_compress(void); ++static void prratio(FILE *, long, long); ++static void about(void); + + /***************************************************************** + * TAG( main ) + +From 90810a7f11bf157b479c23c0fe6cee0bebec15c6 Mon Sep 17 00:00:00 2001 +From: Sergei Trofimovich <slyich@gmail.com> +Date: Sat, 16 Nov 2024 18:49:48 +0000 +Subject: [PATCH] compress.c: fix -std=c23 build failure (signal handler + protos) + +gcc-15 switched to -std=c23 by default: + + https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=55e3bd376b2214e200fa76d12b67ff259b06c212 + +As a result `ncompress` fails the build as: + + compress.c: In function 'main': + compress.c:382:40: error: + passing argument 2 of 'signal' from incompatible pointer type [-Wincompatible-pointer-types] + 382 | signal(SIGINT, (SIG_TYPE)abort_compress); + | ^~~~~~~~~~~~~~~~~~~~~~~~ + | | + | void (*)(void) + In file included from compress.c:30: + ...-glibc-2.40-36-dev/include/signal.h:88:57: note: + expected '__sighandler_t' {aka 'void (*)(int)'} but argument is of type 'void (*)(void)' + 88 | extern __sighandler_t signal (int __sig, __sighandler_t __handler) + | ~~~~~~~~~~~~~~~^~~~~~~~~ + +The change removes type casts around function prototypes and define +signal handler as `void(*)(int)`. +--- + compress.c | 19 ++++++++++++------- + 1 file changed, 12 insertions(+), 7 deletions(-) + +diff --git a/compress.c b/compress.c +index da91603..ea8081e 100644 +--- a/compress.c ++++ b/compress.c +@@ -49,10 +49,6 @@ + }; + #endif + +-#ifndef SIG_TYPE +-# define SIG_TYPE void (*)() +-#endif +- + #if defined(AMIGA) || defined(DOS) || defined(MINGW) || defined(WINDOWS) + # define chmod(pathname, mode) 0 + # define chown(pathname, owner, group) 0 +@@ -327,6 +323,7 @@ static void decompress(int, int); + static void read_error(void); + static void write_error(void); + static void abort_compress(void); ++static void abort_compress_handler(int); + static void prratio(FILE *, long, long); + static void about(void); + +@@ -379,14 +376,14 @@ main(int argc, char *argv[]) + + #ifdef SIGINT + if ((fgnd_flag = (signal(SIGINT, SIG_IGN)) != SIG_IGN)) +- signal(SIGINT, (SIG_TYPE)abort_compress); ++ signal(SIGINT, abort_compress_handler); + #endif + + #ifdef SIGTERM +- signal(SIGTERM, (SIG_TYPE)abort_compress); ++ signal(SIGTERM, abort_compress_handler); + #endif + #ifdef SIGHUP +- signal(SIGHUP, (SIG_TYPE)abort_compress); ++ signal(SIGHUP, abort_compress_handler); + #endif + + #ifdef COMPATIBLE +@@ -1489,6 +1486,14 @@ abort_compress(void) + exit(1); + } + ++ ++void ++abort_compress_handler(int signo) ++ { ++ (void)signo; ++ abort_compress(); ++ } ++ + void + prratio(FILE *stream, long int num, long int den) + { diff --git a/app-arch/ncompress/ncompress-5.0-r2.ebuild b/app-arch/ncompress/ncompress-5.0-r2.ebuild new file mode 100644 index 000000000000..3df3f1e865ab --- /dev/null +++ b/app-arch/ncompress/ncompress-5.0-r2.ebuild @@ -0,0 +1,40 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit toolchain-funcs + +DESCRIPTION="Classic compress & uncompress programs for .Z (LZW) files" +HOMEPAGE="https://vapier.github.io/ncompress/" +SRC_URI="https://github.com/vapier/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="public-domain" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos" + +PATCHES=( + "${FILESDIR}"/${PN}-5.0-c23.patch +) + +src_prepare() { + default + # First sed expression replaces hardlinking with + # symlinking. Second sed expression fixes the symlink target + # to use relative path to a file in the same directory as the + # symlink (so point to compress instead of + # $(DESTDIR)$(BINDIR)/compress). + sed -i \ + -e 's:\bln :ln -s :' \ + -e 's:\(\bln [^$]*\)\$(DESTDIR)\$(BINDIR)/:\1:' \ + Makefile.def || die +} + +src_configure() { + tc-export CC +} + +src_install() { + emake install_core DESTDIR="${ED}" PREFIX="/usr" + dodoc Acknowleds Changes LZW.INFO README.md +} |