From 1acc9ba2db950f9ba0df75b2c7ea4b54db91f40e Mon Sep 17 00:00:00 2001 From: hazen2215 Date: Mon, 19 Dec 2022 00:10:28 +0900 Subject: [PATCH] pdsh: fix build on musl --- srcpkgs/pdsh/patches/without-rresvport.patch | 95 ++++++++++++++++++++ srcpkgs/pdsh/template | 3 +- 2 files changed, 96 insertions(+), 2 deletions(-) create mode 100644 srcpkgs/pdsh/patches/without-rresvport.patch diff --git a/srcpkgs/pdsh/patches/without-rresvport.patch b/srcpkgs/pdsh/patches/without-rresvport.patch new file mode 100644 index 000000000000..0a5e0d91d796 --- /dev/null +++ b/srcpkgs/pdsh/patches/without-rresvport.patch @@ -0,0 +1,95 @@ +From 48c728dfefa3b9aff01f598ff9d3f909001b8e81 Mon Sep 17 00:00:00 2001 +From: Mark Grondona +Date: Thu, 10 Mar 2016 16:01:18 -0800 +Subject: [PATCH] privsep: do nothing if !HAVE_RRESVPORT + +If we don't have rresvport() do not enable privsep during +privsep_init() (it probably isn't used anyway). Also be sure +to undefine usage of rresvport and rresvport_af since these +symbols won't be found at compile or runtime. + +Fixes #74 +--- + src/pdsh/privsep.c | 23 ++++++++++++++++++++++- + 1 file changed, 22 insertions(+), 1 deletion(-) + +diff --git a/src/pdsh/privsep.c b/src/pdsh/privsep.c +index 7e4134f2..2297b175 100644 +--- a/src/pdsh/privsep.c ++++ b/src/pdsh/privsep.c +@@ -123,6 +123,10 @@ static int send_rresvport (int pipefd, int fd, int lport) + + cmsg = (struct cmsghdr *) &buf; + #endif ++#if !HAVE_RRESVPORT ++ errno = ENOSYS; ++ return (-1); ++#endif + + memset (&msg, 0, sizeof (msg)); + +@@ -162,6 +166,7 @@ static int send_rresvport (int pipefd, int fd, int lport) + return (0); + } + ++#if HAVE_RRESVPORT + static int recv_rresvport (int pipefd, int *lptr) + { + int fd = -1; +@@ -203,19 +208,23 @@ static int recv_rresvport (int pipefd, int *lptr) + + return (fd); + } ++#endif /* HAVE_RRESVPORT */ + + + static int p_rresvport_af (int *port, int family) + { + #if HAVE_RRESVPORT_AF + return rresvport_af (port, family); +-#else ++#elif HAVE_RRESVPORT + /* Family must be AF_INET + */ + if (family != AF_INET) + err ("%p: rresvport called with family != AF_INET!\n"); + /* ignore family != AF_INET */ + return rresvport (port); ++#else ++ errno = ENOSYS; ++ return (-1); + #endif + } + +@@ -274,6 +283,9 @@ static int create_privileged_child (void) + + int privsep_init (void) + { ++#if !HAVE_RRESVPORT ++ return (0); ++#endif + if (geteuid() == getuid()) + return 0; + +@@ -285,6 +297,9 @@ int privsep_init (void) + + int privsep_fini (void) + { ++#if !HAVE_RRESVPORT ++ return (0); ++#endif + int status; + if (client_fd < 0 || cpid < 0) + return (0); +@@ -334,5 +349,11 @@ int privsep_rresvport_af (int *lport, int family) + + int privsep_rresvport (int *lport) + { ++#if HAVE_RRESVPORT + return privsep_rresvport_af (lport, AF_INET); ++#else ++ errno = ENOSYS; ++ return -1; ++#endif /* HAVE_RRESVPORT */ ++ + } diff --git a/srcpkgs/pdsh/template b/srcpkgs/pdsh/template index 422b6489065d..a775a6bc5cee 100644 --- a/srcpkgs/pdsh/template +++ b/srcpkgs/pdsh/template @@ -1,8 +1,7 @@ # Template file for 'pdsh' pkgname=pdsh version=2.34 -revision=1 -archs="~*-musl" +revision=2 build_style=gnu-configure configure_args=" --disable-static-modules