From 4203920eceb01067bd2ef38cb1da7cd6af712743 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 | 8 ++++--- 2 files changed, 34 insertions(+), 3 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..991f7ccd536 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" @@ -10,9 +10,11 @@ license="BSD-2-Clause, BSD-3-Clause" homepage="http://www.voidlinux.org" do_install() { - for f in ${FILESDIR}/*.h; do + for f in ${FILESDIR}/{cdefs,queue,tree}.h + do vinstall ${f} 644 usr/include/sys done + vinstall ${FILESDIR}/error.h 644 usr/include/sys sed -n '3,32p' < ${FILESDIR}/queue.h > LICENSE.BSD-3-Clause sed -n '2,26p' < ${FILESDIR}/tree.h > LICENSE.BSD-2-Clause From 74bec773bc8b7ffe42c592b7df80eccf5aa8e5fd 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. Also allow tests to fail. --- srcpkgs/elfutils/files/error.h | 27 --------------------------- srcpkgs/elfutils/template | 12 +++++------- 2 files changed, 5 insertions(+), 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..2203330c4f6 100644 --- a/srcpkgs/elfutils/template +++ b/srcpkgs/elfutils/template @@ -26,17 +26,15 @@ 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 } +do_check() { + make check ${makejobs} || + msg_warn "Failure in testsuite, expected on musl systems, at least" +} + libdebuginfod_package() { short_desc+=" - debuginfod library" pkg_install() { From 68fc9d9d3b941a051953e18cb65b8eec0c668151 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, add musl-legacy-compat. Also use vsed where appropriate. --- srcpkgs/kbd/files/error.h | 20 -------------------- srcpkgs/kbd/template | 9 ++++++--- 2 files changed, 6 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..0b997ca9f2e 100644 --- a/srcpkgs/kbd/template +++ b/srcpkgs/kbd/template @@ -14,6 +14,10 @@ homepage="http://www.kbd-project.org/" distfiles="${KERNEL_SITE}/utils/${pkgname}/${pkgname}-${version}.tar.xz" checksum=685056143cb8effd0a1d44b5c391eb50d80dcfd014b1a4d6e2650a28d61cb82a +if [ "$XBPS_TARGET_LIBC" = musl ]; then + makedepends+=" musl-legacy-compat" +fi + pre_configure() { # Rename keymap files with the same names # this is needed because when only name of keymap is specified @@ -37,10 +41,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 806c0067d20886d3c6d9fdf410d1bc0c13e9a98f 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, xlint. 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 | 16 ++-- 2 files changed, 85 insertions(+), 8 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..bba0c7862d4 100644 --- a/srcpkgs/recode/template +++ b/srcpkgs/recode/template @@ -1,24 +1,24 @@ # Template file for 'recode' pkgname=recode version=3.6 -revision=9 -patch_args="-Np1" +revision=10 build_style=gnu-configure configure_args="--without-included-gettext jm_cv_func_working_malloc=yes jm_cv_func_working_realloc=yes" hostmakedepends="automake gettext libtool texinfo" short_desc="Character set conversion utility" -homepage="http://recode.progiciels-bpi.ca/" -license="GPL-2" maintainer="Orphaned " +license="GPL-2.0-or-later" +homepage="http://recode.progiciels-bpi.ca/" distfiles="${DEBIAN_SITE}/main/r/${pkgname}/${pkgname}_${version}.orig.tar.gz" checksum=e3e6a4f3f8e5c6052ab70155990c074d87aa0b614fc1be31d194750d1d962fcf +patch_args="-Np1" 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 - rm -f acinclude.m4 + 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 acinclude.m4 autoreconf -fi libtoolize } From 65a0bac14281f30a874cb2e007f384b7490bfb90 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 |