From 3d4634c41a6b328e486f6dcdc510f9b9d901f533 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Rolim?= Date: Wed, 16 Dec 2020 17:56:20 -0300 Subject: [PATCH 1/5] musl-legacy-compat: add error.h header. --- srcpkgs/musl-legacy-compat/files/error.h | 29 ++++++++++++++++++++++++ srcpkgs/musl-legacy-compat/template | 4 ++-- 2 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 srcpkgs/musl-legacy-compat/files/error.h diff --git a/srcpkgs/musl-legacy-compat/files/error.h b/srcpkgs/musl-legacy-compat/files/error.h new file mode 100644 index 00000000000..4505784182a --- /dev/null +++ b/srcpkgs/musl-legacy-compat/files/error.h @@ -0,0 +1,29 @@ +#ifndef _ERROR_H_ +#define _ERROR_H_ + +#include +#include +#include +#include +#include + +#warning usage of non-standard #include is deprecated + +static unsigned int error_message_count = 0; + +static inline void error(int status, int errnum, const char* format, ...) +{ + va_list ap; + fprintf(stderr, "%s: ", program_invocation_name); + va_start(ap, format); + vfprintf(stderr, format, ap); + va_end(ap); + if (errnum) + fprintf(stderr, ": %s", strerror(errnum)); + fprintf(stderr, "\n"); + error_message_count++; + if (status) + exit(status); +} + +#endif /* _ERROR_H_ */ diff --git a/srcpkgs/musl-legacy-compat/template b/srcpkgs/musl-legacy-compat/template index 3c926e315cd..2d01391db4b 100644 --- a/srcpkgs/musl-legacy-compat/template +++ b/srcpkgs/musl-legacy-compat/template @@ -1,7 +1,7 @@ # Template file for 'musl-legacy-compat' pkgname=musl-legacy-compat -version=0.3 -revision=4 +version=0.4 +revision=1 archs="*-musl" bootstrap=yes short_desc="Legacy compatibility headers for the musl libc" From e1513f17ecbee596b2262d4fcf46519972966898 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Rolim?= Date: Wed, 16 Dec 2020 17:57:00 -0300 Subject: [PATCH 2/5] elfutils: remove error.h copy. --- srcpkgs/elfutils/files/error.h | 27 --------------------------- srcpkgs/elfutils/template | 7 ------- 2 files changed, 34 deletions(-) delete mode 100644 srcpkgs/elfutils/files/error.h diff --git a/srcpkgs/elfutils/files/error.h b/srcpkgs/elfutils/files/error.h deleted file mode 100644 index ef06827a0ba..00000000000 --- a/srcpkgs/elfutils/files/error.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef _ERROR_H_ -#define _ERROR_H_ - -#include -#include -#include -#include -#include - -static unsigned int error_message_count = 0; - -static inline void error(int status, int errnum, const char* format, ...) -{ - va_list ap; - fprintf(stderr, "%s: ", program_invocation_name); - va_start(ap, format); - vfprintf(stderr, format, ap); - va_end(ap); - if (errnum) - fprintf(stderr, ": %s", strerror(errnum)); - fprintf(stderr, "\n"); - error_message_count++; - if (status) - exit(status); -} - -#endif /* _ERROR_H_ */ diff --git a/srcpkgs/elfutils/template b/srcpkgs/elfutils/template index 3dfea2970a5..151c0e3644a 100644 --- a/srcpkgs/elfutils/template +++ b/srcpkgs/elfutils/template @@ -26,13 +26,6 @@ if [ "$XBPS_TARGET_LIBC" = musl ]; then CFLAGS+=" -DFNM_EXTMATCH=0" fi -post_extract() { - if [ "$XBPS_TARGET_LIBC" = musl ]; then - cp ${FILESDIR}/error.h lib - cp ${FILESDIR}/error.h src - fi -} - pre_configure() { autoreconf -if } From 0f4ce873efefd373e145282d40c24626e391a12f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Rolim?= Date: Wed, 16 Dec 2020 17:58:01 -0300 Subject: [PATCH 3/5] kbd: remove error.h copy. Also use vsed where appropriate. --- srcpkgs/kbd/files/error.h | 20 -------------------- srcpkgs/kbd/template | 5 ++--- 2 files changed, 2 insertions(+), 23 deletions(-) delete mode 100644 srcpkgs/kbd/files/error.h diff --git a/srcpkgs/kbd/files/error.h b/srcpkgs/kbd/files/error.h deleted file mode 100644 index 5eb8ed5115f..00000000000 --- a/srcpkgs/kbd/files/error.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef ERROR_H -#define ERROR_H - -#include -#include -#include - -static inline void error(int status, int errnum, const char *fmt, ...) -{ - va_list ap; - void (*errfunc[2])(int, const char *, va_list) = { &verr, &verrx }; - void (*warnfunc[2])(const char *, va_list) = { &vwarn, &vwarnx }; - fflush(stdout); - va_start(ap, fmt); - if (status != 0) - errfunc[errnum==0](status, fmt, ap); /* does not return */ - warnfunc[errnum==0](fmt, ap); - va_end(ap); -} -#endif diff --git a/srcpkgs/kbd/template b/srcpkgs/kbd/template index 47604e8ad55..1d7269e5485 100644 --- a/srcpkgs/kbd/template +++ b/srcpkgs/kbd/template @@ -37,10 +37,9 @@ pre_configure() { cp azerty/fr-latin9.map azerty/fr-latin0.map # legacy alias cd $wrksrc - sed -e '/^PKG_CHECK_MODULES.*/d' -i configure.ac - sed -e 's,tests ,,g' -i Makefile.am + vsed -e '/^PKG_CHECK_MODULES.*/d' -i configure.ac + vsed -e 's,tests ,,g' -i Makefile.am - cp $FILESDIR/error.h . autoreconf -fi } post_install() { From 0c20c980d06e5c3a7d45b25ee04de4b763c2c71c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Rolim?= Date: Wed, 16 Dec 2020 18:43:06 -0300 Subject: [PATCH 4/5] recode: fix librecode.so build. librecode.so required an external `error` symbol, even on musl systems, which don't provide one. This was worked around when building fortune-mod by adding an error.o file into the build, but that wasn't the correct fix. This patch makes it so librecode also uses the librecode.a compat library. --- srcpkgs/recode/patches/link-librecode.a.patch | 77 +++++++++++++++++++ srcpkgs/recode/template | 8 +- 2 files changed, 81 insertions(+), 4 deletions(-) create mode 100644 srcpkgs/recode/patches/link-librecode.a.patch diff --git a/srcpkgs/recode/patches/link-librecode.a.patch b/srcpkgs/recode/patches/link-librecode.a.patch new file mode 100644 index 00000000000..46fae884592 --- /dev/null +++ b/srcpkgs/recode/patches/link-librecode.a.patch @@ -0,0 +1,77 @@ +diff --git a/lib/Makefile.am b/lib/Makefile.am +index 237fe72..684ee68 100644 +--- a/lib/Makefile.am ++++ b/lib/Makefile.am +@@ -22,6 +22,7 @@ AUTOMAKE_OPTIONS = gnits + noinst_LIBRARIES = libreco.a + noinst_HEADERS = error.h getopt.h gettext.h pathmax.h xstring.h + libreco_a_SOURCES = error.c getopt.c getopt1.c xstrdup.c ++libreco_a_CFLAGS = -fPIC + + EXTRA_DIST = alloca.c gettext.c malloc.c realloc.c strtol.c strtoul.c + +diff --git a/lib/error.c b/lib/error.c +index 53b650c..fbb79c0 100644 +--- a/lib/error.c ++++ b/lib/error.c +@@ -65,46 +65,13 @@ void (*error_print_progname) ( + /* This variable is incremented each time `error' is called. */ + unsigned int error_message_count; + +-#ifdef _LIBC ++#if 1 + /* In the GNU C library, there is a predefined variable for this. */ + + # define program_name program_invocation_name + # include + +-/* In GNU libc we want do not want to use the common name `error' directly. +- Instead make it a weak alias. */ +-# define error __error +-# define error_at_line __error_at_line +- +-#else /* not _LIBC */ +- +-/* The calling program should define program_name and set it to the +- name of the executing program. */ +-extern char *program_name; +- +-# ifdef HAVE_STRERROR_R +-# define __strerror_r strerror_r +-# else +-# if HAVE_STRERROR +-# ifndef strerror /* On some systems, strerror is a macro */ +-char *strerror (); +-# endif +-# else +-static char * +-private_strerror (errnum) +- int errnum; +-{ +- extern char *sys_errlist[]; +- extern int sys_nerr; +- +- if (errnum > 0 && errnum <= sys_nerr) +- return _(sys_errlist[errnum]); +- return _("Unknown system error"); +-} +-# define strerror private_strerror +-# endif /* HAVE_STRERROR */ +-# endif /* HAVE_STRERROR_R */ +-#endif /* not _LIBC */ ++#endif + + /* Print the program name and error message MESSAGE, which is a printf-style + format string with optional args. +diff --git a/src/Makefile.am b/src/Makefile.am +index c918aa7..dff6c71 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -48,6 +48,7 @@ recode_LDADD = librecode.la ../lib/libreco.a + librecode_la_SOURCES = argmatch.c charname.c combine.c fr-charname.c \ + hash.c iconv.c libiconv.c localcharset.c merged.c names.c outer.c quotearg.c \ + recode.c request.c strip-pool.c task.c xmalloc.c $(C_STEPS) ++librecode_la_LIBADD = ../lib/libreco.a + librecode_la_LDFLAGS = -version-info 0:0:0 + + INCLUDES = -I.. -I$(srcdir) -I$(top_srcdir)/lib -I$(top_srcdir)/libiconv diff --git a/srcpkgs/recode/template b/srcpkgs/recode/template index c57c8e4b937..2d2bbc563c3 100644 --- a/srcpkgs/recode/template +++ b/srcpkgs/recode/template @@ -1,7 +1,7 @@ # Template file for 'recode' pkgname=recode version=3.6 -revision=9 +revision=10 patch_args="-Np1" build_style=gnu-configure configure_args="--without-included-gettext jm_cv_func_working_malloc=yes @@ -15,9 +15,9 @@ distfiles="${DEBIAN_SITE}/main/r/${pkgname}/${pkgname}_${version}.orig.tar.gz" checksum=e3e6a4f3f8e5c6052ab70155990c074d87aa0b614fc1be31d194750d1d962fcf pre_configure() { - sed -e 's,AM_CONFIG_HEADER,AC_CONFIG_HEADERS,g' -i configure.in - sed -i -e "/^AM_C_PROTOTYPES.*/d" configure.in - sed -i -e "s/ansi2knr//" src/Makefile.am + vsed -e 's,AM_CONFIG_HEADER,AC_CONFIG_HEADERS,g' -i configure.in + vsed -i -e "/^AM_C_PROTOTYPES.*/d" configure.in + vsed -i -e "s/ansi2knr//" src/Makefile.am rm -f acinclude.m4 autoreconf -fi libtoolize From ae8941cb74c8d01e29d6fc8d1ef65e4f121dba0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Rolim?= Date: Wed, 16 Dec 2020 17:59:10 -0300 Subject: [PATCH 5/5] fortune-mod: remove error.{h,c} copy. Revbump to pick up the fix from librecode. Also use vsed where appropriate. --- srcpkgs/fortune-mod/files/error.c | 19 ------------------- srcpkgs/fortune-mod/files/error.h | 4 ---- srcpkgs/fortune-mod/template | 12 +++++------- 3 files changed, 5 insertions(+), 30 deletions(-) delete mode 100644 srcpkgs/fortune-mod/files/error.c delete mode 100644 srcpkgs/fortune-mod/files/error.h diff --git a/srcpkgs/fortune-mod/files/error.c b/srcpkgs/fortune-mod/files/error.c deleted file mode 100644 index 7b12fe45adf..00000000000 --- a/srcpkgs/fortune-mod/files/error.c +++ /dev/null @@ -1,19 +0,0 @@ -#include -#include -#define _GNU_SOURCE -#include - -void error(int status, int errnum, const char* format, ...) -{ - va_list ap; - - fflush(stdout); - fprintf(stderr, "%s: ", program_invocation_name); - va_start(ap, format); - vfprintf(stderr, format, ap); - va_end(ap); - if (errnum) - fprintf(stderr, ":%d", errnum); - if (status) - exit(status); -} diff --git a/srcpkgs/fortune-mod/files/error.h b/srcpkgs/fortune-mod/files/error.h deleted file mode 100644 index 81a410f8cfc..00000000000 --- a/srcpkgs/fortune-mod/files/error.h +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef _ERROR_H_ -#define _ERROR_H_ -void error(int status, int errnum, const char* format, ...); -#endif /* _ERROR_H_ */ diff --git a/srcpkgs/fortune-mod/template b/srcpkgs/fortune-mod/template index 0eb27936c07..27824c3617e 100644 --- a/srcpkgs/fortune-mod/template +++ b/srcpkgs/fortune-mod/template @@ -1,7 +1,7 @@ # Template file for 'fortune-mod' pkgname=fortune-mod version=1.99.1 -revision=5 +revision=6 hostmakedepends="recode" makedepends="recode-devel" short_desc="Implementation of the BSDGames 'fortune' program" @@ -18,14 +18,12 @@ if [ "$CROSS_BUILD" ]; then fi do_build() { - sed -i "s|^CFLAGS=.*|CFLAGS=${CFLAGS} -fsigned-char \$(DEFINES)|" Makefile - sed -i "s|^LDFLAGS=.*|LDFLAGS=${LDFLAGS}|" Makefile - sed -i "s;u_int;uint;" util/strfile.h + vsed -i "s|^CFLAGS=.*|CFLAGS=${CFLAGS} -fsigned-char \$(DEFINES)|" Makefile + vsed -i "s|^LDFLAGS=.*|LDFLAGS=${LDFLAGS}|" Makefile + vsed -i "s;u_int;uint;" util/strfile.h case "$XBPS_TARGET_MACHINE" in *-musl) - cp ${FILESDIR}/error.{c,h} ${wrksrc}/fortune - sed -e "s;-DBSD_REGEX;-DPOSIX_REGEX;" -i Makefile - sed -e "s;fortune\.o;fortune.o error.o;" -i fortune/Makefile + vsed -e "s;-DBSD_REGEX;-DPOSIX_REGEX;" -i Makefile esac make CC=$CC COOKIEDIR=/usr/share/fortunes $_strfile sed -n '/[*][[:space:]]*The Regents/,/SUCH DAMAGE/p' fortune/fortune.c |