From ee4d327de8bd438f561b421c45adc7abd797c21f Mon Sep 17 00:00:00 2001 From: Michael Adler Date: Mon, 18 Aug 2025 13:36:34 +0200 Subject: [PATCH] trickle: fix build --- pkgs/by-name/tr/trickle/atomicio.patch | 30 +++++++++++++++ pkgs/by-name/tr/trickle/package.nix | 37 ++++++++++++++----- .../tr/trickle/remove-libtrickle.patch | 17 +++++++++ pkgs/by-name/tr/trickle/trickle-gcc14.patch | 25 +++++++++++++ 4 files changed, 100 insertions(+), 9 deletions(-) create mode 100644 pkgs/by-name/tr/trickle/atomicio.patch create mode 100644 pkgs/by-name/tr/trickle/remove-libtrickle.patch create mode 100644 pkgs/by-name/tr/trickle/trickle-gcc14.patch diff --git a/pkgs/by-name/tr/trickle/atomicio.patch b/pkgs/by-name/tr/trickle/atomicio.patch new file mode 100644 index 000000000000..ea173e0155df --- /dev/null +++ b/pkgs/by-name/tr/trickle/atomicio.patch @@ -0,0 +1,30 @@ +diff --git i/atomicio.c w/atomicio.c +index 3930a07..81a14a4 100644 +--- i/atomicio.c ++++ w/atomicio.c +@@ -37,11 +37,7 @@ + * ensure all of data on socket comes through. f==read || f==write + */ + ssize_t +-atomicio(f, fd, _s, n) +- ssize_t (*f) (); +- int fd; +- void *_s; +- size_t n; ++atomicio(ssize_t (*f)(int, const void *, size_t), int fd, const void *_s, size_t n) + { + char *s = _s; + ssize_t res, pos = 0; +diff --git i/util.h w/util.h +index b00059c..f24d0c3 100644 +--- i/util.h ++++ w/util.h +@@ -41,7 +41,7 @@ + #define MAX(a, b) ((a) > (b) ? (a) : (b)) + #define MIN(a, b) ((a) < (b) ? (a) : (b)) + +-ssize_t atomicio(ssize_t (*)(), int, void *, size_t); ++ssize_t atomicio(ssize_t (*f)(int, const void *, size_t), int fd, const void *s, size_t n); + char *get_progname(char *); + + diff --git a/pkgs/by-name/tr/trickle/package.nix b/pkgs/by-name/tr/trickle/package.nix index 2ade49893aca..822c250c1ad7 100644 --- a/pkgs/by-name/tr/trickle/package.nix +++ b/pkgs/by-name/tr/trickle/package.nix @@ -1,38 +1,57 @@ { lib, stdenv, - fetchurl, + fetchFromGitHub, + autoreconfHook, libevent, libtirpc, }: -stdenv.mkDerivation rec { +stdenv.mkDerivation { pname = "trickle"; - version = "1.07"; + version = "1.07-unstable-2019-10-03"; - src = fetchurl { - url = "https://monkey.org/~marius/trickle/trickle-${version}.tar.gz"; - sha256 = "0s1qq3k5mpcs9i7ng0l9fvr1f75abpbzfi1jaf3zpzbs1dz50dlx"; + src = fetchFromGitHub { + owner = "mariusae"; + repo = "trickle"; + rev = "09a1d955c6554eb7e625c99bf96b2d99ec7db3dc"; + sha256 = "sha256-cqkNPeTo+noqMCXsxh6s4vKoYwsWusafm/QYX8RvCek="; }; + patches = [ + ./trickle-gcc14.patch + ./atomicio.patch + ./remove-libtrickle.patch + ]; + + nativeBuildInputs = [ + autoreconfHook + ]; + buildInputs = [ libevent libtirpc ]; - preConfigure = '' - sed -i 's|libevent.a|libevent.so|' configure + preAutoreconf = '' + sed -i -e 's|\s*LIBCGUESS=.*|LIBCGUESS=${stdenv.cc.libc}/lib/libc.so.*|' configure.in + grep LIBCGUESS configure.in + sed -i 's|libevent.a|libevent.so|' configure.in ''; preBuild = '' sed -i '/#define in_addr_t/ s:^://:' config.h + sed -i 's|^_select(int|select(int|' trickle-overload.c ''; NIX_LDFLAGS = [ "-levent" "-ltirpc" ]; - env.NIX_CFLAGS_COMPILE = toString [ "-I${libtirpc.dev}/include/tirpc" ]; + env.NIX_CFLAGS_COMPILE = toString [ + "-I${libtirpc.dev}/include/tirpc" + "-Wno-error=incompatible-pointer-types" + ]; configureFlags = [ "--with-libevent" ]; diff --git a/pkgs/by-name/tr/trickle/remove-libtrickle.patch b/pkgs/by-name/tr/trickle/remove-libtrickle.patch new file mode 100644 index 000000000000..060b3d3fe181 --- /dev/null +++ b/pkgs/by-name/tr/trickle/remove-libtrickle.patch @@ -0,0 +1,17 @@ +diff --git i/Makefile.am w/Makefile.am +index 9c2bbf3..0b0023e 100644 +--- i/Makefile.am ++++ w/Makefile.am +@@ -30,12 +30,6 @@ tricklectl_LDADD = @ERRO@ $(LIBOBJS) + + AM_CFLAGS = -Wall -Icompat @EVENTINC@ + +-overloaddir = $(libdir) +-overload_DATA = libtrickle.so +- +-libtrickle.so: trickle-overload.c atomicio.c +-$(overload_DATA): +- + CLEANFILES = *.so + + EXTRA_DIST = LICENSE README strlcat.c strlcpy.c err.c Makefile.am.inc \ diff --git a/pkgs/by-name/tr/trickle/trickle-gcc14.patch b/pkgs/by-name/tr/trickle/trickle-gcc14.patch new file mode 100644 index 000000000000..b6729dace2ff --- /dev/null +++ b/pkgs/by-name/tr/trickle/trickle-gcc14.patch @@ -0,0 +1,25 @@ +diff --git a/configure.in b/configure.in +index 6ebf3b2..5c85682 100644 +--- a/configure.in ++++ b/configure.in +@@ -198,6 +198,7 @@ if test "$HAVEMETHOD" = "no"; then + AC_TRY_RUN( + #include + #include ++ #include + + int + main(int argc, char **argv) +diff --git a/xdr.c b/xdr.c +index ed8bf5b..a20bbd9 100644 +--- a/xdr.c ++++ b/xdr.c +@@ -103,7 +103,7 @@ xdr_msg(XDR *xdrs, struct msg *msg) + { + X(xdr_short(xdrs, &msg->status)); + X(xdr_union(xdrs, (int *)&msg->type, (char *)&msg->data, +- xdr_msg_discrim, _xdr_void)); ++ xdr_msg_discrim, (xdrproc_t)_xdr_void)); + + return (TRUE); + }