mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2025-07-22 10:45:15 +03:00
The previous patches have been dropped due to being already implemented/merged in the new version. A number of patches fixing musl compilation issues are included. They're merged upstream but not yet in a release.
393 lines
11 KiB
Diff
393 lines
11 KiB
Diff
From f5f4eae173cfa61b3665e327d828f203fa6d72f3 Mon Sep 17 00:00:00 2001
|
|
From: Sam James <sam@gentoo.org>
|
|
Date: Fri, 24 Dec 2021 22:02:20 +0800
|
|
Subject: [PATCH 2/2] autofs-5.1.8 - fix bashism in configure
|
|
|
|
configure scripts need to work with a POSIX-compliant shell,
|
|
so let's not use a bashism here.
|
|
|
|
```
|
|
checking for res_query in -lresolv... yes
|
|
checking for libhesiod... no
|
|
./configure: 4880: test: 0: unexpected operator
|
|
checking how to run the C preprocessor... gcc -E
|
|
```
|
|
|
|
Tested-by: Yixun Lan <dlan@gentoo.org>
|
|
Signed-off-by: Sam James <sam@gentoo.org>
|
|
|
|
autofs-5.1.8 - fix missing include in hash.h
|
|
|
|
Fixes a build failure with the musl libc:
|
|
```
|
|
../include/hash.h:74:8: error: unknown type name '__always_inline'
|
|
74 | static __always_inline uint32_t hash_64(uint64_t val, unsigned int bits)
|
|
| ^~~~~~~~~~~~~~~
|
|
```
|
|
|
|
We need to include stddef.h from linux-headers to ensure _always_inline
|
|
is always defined.
|
|
|
|
Bug: https://bugs.gentoo.org/828918
|
|
Tested-by: Yixun Lan <dlan@gentoo.org>
|
|
Signed-off-by: Sam James <sam@gentoo.org>
|
|
|
|
autofs-5.1.8 - define fallback dummy NSS config path
|
|
|
|
On musl, _PATH_NSSWITCH_CONF won't be defined (it doesn't support NSS),
|
|
so let's give it a dummy path when it's not defined by glibc.
|
|
|
|
Fixes build failures like:
|
|
```
|
|
../include/nsswitch.h:27:23: error: '_PATH_NSSWITCH_CONF' undeclared (first use in this function)
|
|
27 | #define NSSWITCH_FILE _PATH_NSSWITCH_CONF
|
|
| ^~~~~~~~~~~~~~~~~~~
|
|
```
|
|
|
|
Tested-by: Yixun Lan <dlan@gentoo.org>
|
|
Signed-off-by: Sam James <sam@gentoo.org>
|
|
|
|
autofs-5.1.8 - avoid internal stat.h definitions
|
|
|
|
Tested-by: Yixun Lan <dlan@gentoo.org>
|
|
Signed-off-by: Sam James <sam@gentoo.org>
|
|
|
|
autofs-5.1.8 - add missing include to hash.h for _WORDSIZE
|
|
|
|
Fixes build failure on musl like:
|
|
```
|
|
../include/hash.h:22:2: error: #error Wordsize not 32 or 64
|
|
22 | #error Wordsize not 32 or 64
|
|
| ^~~~~
|
|
```
|
|
|
|
Tested-by: Yixun Lan <dlan@gentoo.org>
|
|
Signed-off-by: Sam James <sam@gentoo.org>
|
|
|
|
autofs-5.1.8 - add missing include to log.h for pid_t
|
|
|
|
Fixes build failures on musl like:
|
|
```
|
|
../include/log.h:49:8: error: unknown type name 'pid_t'
|
|
49 | extern pid_t log_pidinfo(struct autofs_point *ap, pid_t pid, char *label);
|
|
| ^~~~~
|
|
../include/log.h:49:51: error: unknown type name 'pid_t'; did you mean 'gid_t'?
|
|
49 | extern pid_t log_pidinfo(struct autofs_point *ap, pid_t pid, char *label);
|
|
| ^~~~~
|
|
| gid_t
|
|
```
|
|
|
|
Tested-by: Yixun Lan <dlan@gentoo.org>
|
|
Signed-off-by: Sam James <sam@gentoo.org>
|
|
|
|
autofs-5.1.8 - define _SWORD_TYPE for musl
|
|
|
|
Copy the definition from glibc. Fixes build failures like:
|
|
```
|
|
automount.c:280:35: error: '__SWORD_TYPE' undeclared (first use in this function)
|
|
280 | if (fs.f_type != (__SWORD_TYPE) AUTOFS_SUPER_MAGIC) {
|
|
| ^~~~~~~~~~~~
|
|
automount.c:280:35: note: each undeclared identifier is reported only once for each function it appears in
|
|
automount.c:280:48: error: expected ')' before numeric constant
|
|
280 | if (fs.f_type != (__SWORD_TYPE) AUTOFS_SUPER_MAGIC) {
|
|
| ~ ^
|
|
| )
|
|
```
|
|
|
|
Tested-by: Yixun Lan <dlan@gentoo.org>
|
|
Signed-off-by: Sam James <sam@gentoo.org>
|
|
|
|
autofs-5.1.8 - add autofs_strerror_r() helper for musl
|
|
|
|
If using musl libc the XSI-compliant variant strerror_r() which returns
|
|
an integer instead of a pointer so add a helper function to handle this
|
|
case.
|
|
|
|
Signed-off-by: Fabian Groffen <grobian@gentoo.org>
|
|
Signed-off-by: Ian Kent <raven@themaw.net>
|
|
|
|
autofs-5.1.8 - handle innetgr() not present in musl
|
|
|
|
The function innetgr(3) may not be present in musl libc, add a check
|
|
for this.
|
|
|
|
Originally contributed by Fabian, modified by me.
|
|
|
|
Signed-off-by: Fabian Groffen <grobian@gentoo.org>
|
|
Signed-off-by: Ian Kent <raven@themaw.net>
|
|
---
|
|
configure | 9 +++++----
|
|
configure.in | 8 ++++----
|
|
daemon/automount.c | 10 ++++++++++
|
|
daemon/lookup.c | 6 +++---
|
|
include/automount.h | 5 +++++
|
|
include/config.h.in | 3 +++
|
|
include/hash.h | 6 ++++++
|
|
include/log.h | 2 ++
|
|
include/nsswitch.h | 4 ++++
|
|
lib/log.c | 10 ++++++++++
|
|
modules/lookup_multi.c | 4 ++--
|
|
modules/parse_amd.c | 7 +++++++
|
|
12 files changed, 61 insertions(+), 13 deletions(-)
|
|
|
|
diff --git a/configure b/configure
|
|
index 394a8d5..33446b0 100755
|
|
--- a/configure
|
|
+++ b/configure
|
|
@@ -4227,12 +4227,13 @@ fi
|
|
|
|
|
|
|
|
-for ac_func in pipe2
|
|
+for ac_func in pipe2 innetgr
|
|
do :
|
|
- ac_fn_c_check_func "$LINENO" "pipe2" "ac_cv_func_pipe2"
|
|
-if test "x$ac_cv_func_pipe2" = xyes; then :
|
|
+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
|
|
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
|
|
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
|
|
cat >>confdefs.h <<_ACEOF
|
|
-#define HAVE_PIPE2 1
|
|
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
|
|
_ACEOF
|
|
|
|
fi
|
|
diff --git a/configure.in b/configure.in
|
|
index 750ffb4..68cbd44 100644
|
|
--- a/configure.in
|
|
+++ b/configure.in
|
|
@@ -169,7 +169,7 @@ AF_CHECK_SSS_LIB(SSS_AUTOFS, libsss_autofs.so)
|
|
AC_SUBST(HAVE_SSS_AUTOFS)
|
|
AC_SUBST(sssldir)
|
|
|
|
-AC_CHECK_FUNCS(pipe2)
|
|
+AC_CHECK_FUNCS(pipe2 innetgr)
|
|
|
|
#
|
|
# Newer mounts have the -s (sloppy) option to ignore unknown options,
|
|
@@ -262,7 +262,7 @@ if test -z "$HAVE_HESIOD" -o "$HAVE_HESIOD" != "0"
|
|
then
|
|
HAVE_HESIOD=0
|
|
AF_CHECK_LIBHESIOD()
|
|
- if test "$HAVE_HESIOD" == "1"; then
|
|
+ if test "$HAVE_HESIOD" = "1"; then
|
|
AC_DEFINE(WITH_HESIOD,1,
|
|
[Define if using Hesiod as a source of automount maps])
|
|
fi
|
|
@@ -337,11 +337,11 @@ AC_ARG_WITH(sasl,
|
|
SASL_FLAGS="-I${withval}/include"
|
|
fi
|
|
)
|
|
-if test -z "$HAVE_SASL" -o "$HAVE_SASL" != "0" -a "$HAVE_LIBXML" == "1"
|
|
+if test -z "$HAVE_SASL" -o "$HAVE_SASL" != "0" -a "$HAVE_LIBXML" = "1"
|
|
then
|
|
HAVE_SASL=0
|
|
AC_CHECK_LIB(sasl2, sasl_client_start, HAVE_SASL=1 LIBSASL="$LIBSASL -lsasl2", , -lsasl2 $LIBS)
|
|
- if test "$HAVE_SASL" == "1"; then
|
|
+ if test "$HAVE_SASL" = "1"; then
|
|
AC_DEFINE(WITH_SASL,1,
|
|
[Define if using SASL authentication with the LDAP module])
|
|
fi
|
|
diff --git a/daemon/automount.c b/daemon/automount.c
|
|
index cc28689..5dffce0 100644
|
|
--- a/daemon/automount.c
|
|
+++ b/daemon/automount.c
|
|
@@ -48,6 +48,16 @@
|
|
#endif
|
|
#endif
|
|
|
|
+#ifndef __SWORD_TYPE
|
|
+#if __WORDSIZE == 32
|
|
+# define __SWORD_TYPE int
|
|
+#elif __WORDSIZE == 64
|
|
+# define __SWORD_TYPE long int
|
|
+#else
|
|
+#error
|
|
+#endif
|
|
+#endif
|
|
+
|
|
const char *program; /* Initialized with argv[0] */
|
|
const char *version = VERSION_STRING; /* Program version */
|
|
const char *libdir = AUTOFS_LIB_DIR; /* Location of library modules */
|
|
diff --git a/daemon/lookup.c b/daemon/lookup.c
|
|
index 0b281f8..4a286d6 100644
|
|
--- a/daemon/lookup.c
|
|
+++ b/daemon/lookup.c
|
|
@@ -397,7 +397,7 @@ static int read_file_source_instance(struct autofs_point *ap, struct map_source
|
|
return NSS_STATUS_NOTFOUND;
|
|
}
|
|
|
|
- if (st.st_mode & __S_IEXEC)
|
|
+ if (st.st_mode & S_IEXEC)
|
|
type = src_prog;
|
|
else
|
|
type = src_file;
|
|
@@ -930,7 +930,7 @@ static int lookup_name_file_source_instance(struct autofs_point *ap, struct map_
|
|
return NSS_STATUS_NOTFOUND;
|
|
}
|
|
|
|
- if (st.st_mode & __S_IEXEC)
|
|
+ if (st.st_mode & S_IEXEC)
|
|
type = src_prog;
|
|
else
|
|
type = src_file;
|
|
@@ -1077,7 +1077,7 @@ static struct map_source *lookup_get_map_source(struct master_mapent *entry)
|
|
if (!S_ISREG(st.st_mode))
|
|
return NULL;
|
|
|
|
- if (st.st_mode & __S_IEXEC)
|
|
+ if (st.st_mode & S_IEXEC)
|
|
type = "program";
|
|
else
|
|
type = "file";
|
|
diff --git a/include/automount.h b/include/automount.h
|
|
index 947ed16..d2d05d8 100644
|
|
--- a/include/automount.h
|
|
+++ b/include/automount.h
|
|
@@ -43,6 +43,11 @@
|
|
|
|
#define ENABLE_CORES 1
|
|
|
|
+#ifndef __GLIBC__
|
|
+# define strerror_r(N,B,S) autofs_strerror_r(N,B,S)
|
|
+char *autofs_strerror_r(int errnum, char *buf, size_t buflen); /* GNU */
|
|
+#endif
|
|
+
|
|
/* We MUST have the paths to mount(8) and umount(8) */
|
|
#ifndef HAVE_MOUNT
|
|
#error Failed to locate mount(8)!
|
|
diff --git a/include/config.h.in b/include/config.h.in
|
|
index 4e36b39..4f8daa8 100644
|
|
--- a/include/config.h.in
|
|
+++ b/include/config.h.in
|
|
@@ -30,6 +30,9 @@
|
|
/* Define to 1 if you have the `getservbyname' function. */
|
|
#undef HAVE_GETSERVBYNAME
|
|
|
|
+/* Define to 1 if you have the `innetgr' function. */
|
|
+#undef HAVE_INNETGR
|
|
+
|
|
/* Define to 1 if you have the <inttypes.h> header file. */
|
|
#undef HAVE_INTTYPES_H
|
|
|
|
diff --git a/include/hash.h b/include/hash.h
|
|
index 2447f29..0f1d7b5 100644
|
|
--- a/include/hash.h
|
|
+++ b/include/hash.h
|
|
@@ -3,6 +3,12 @@
|
|
/* Fast hashing routine for ints, longs and pointers.
|
|
(C) 2002 Nadia Yvette Chambers, IBM */
|
|
|
|
+#ifdef __GLIBC__
|
|
+#include <bits/wordsize.h>
|
|
+#else
|
|
+#include <bits/reg.h>
|
|
+#endif
|
|
+#include <linux/stddef.h>
|
|
#include <sys/types.h>
|
|
#include <stdint.h>
|
|
|
|
diff --git a/include/log.h b/include/log.h
|
|
index 69eed96..a7b09f9 100644
|
|
--- a/include/log.h
|
|
+++ b/include/log.h
|
|
@@ -17,6 +17,8 @@
|
|
#ifndef LOG_H
|
|
#define LOG_H
|
|
|
|
+#include <unistd.h>
|
|
+
|
|
/* Define logging functions */
|
|
|
|
#define LOGOPT_NONE 0x0000
|
|
diff --git a/include/nsswitch.h b/include/nsswitch.h
|
|
index d3e4027..8376113 100644
|
|
--- a/include/nsswitch.h
|
|
+++ b/include/nsswitch.h
|
|
@@ -24,6 +24,10 @@
|
|
#include <netdb.h>
|
|
#include "list.h"
|
|
|
|
+#ifndef _PATH_NSSWITCH_CONF
|
|
+#define _PATH_NSSWITCH_CONF "/dev/null"
|
|
+#endif
|
|
+
|
|
#define NSSWITCH_FILE _PATH_NSSWITCH_CONF
|
|
|
|
enum nsswitch_status {
|
|
diff --git a/lib/log.c b/lib/log.c
|
|
index 0cb47d7..aa4a180 100644
|
|
--- a/lib/log.c
|
|
+++ b/lib/log.c
|
|
@@ -364,3 +364,13 @@ pid_t log_pidinfo(struct autofs_point *ap, pid_t pid, char *label) {
|
|
|
|
return ppid;
|
|
}
|
|
+
|
|
+#ifndef __GLIBC__
|
|
+# undef strerror_r
|
|
+char *autofs_strerror_r(int errnum, char *buf, size_t buflen) {
|
|
+ int s = strerror_r(errnum, buf, buflen);
|
|
+ if (s)
|
|
+ return NULL;
|
|
+ return buf;
|
|
+}
|
|
+#endif
|
|
diff --git a/modules/lookup_multi.c b/modules/lookup_multi.c
|
|
index fadd2ea..cf109de 100644
|
|
--- a/modules/lookup_multi.c
|
|
+++ b/modules/lookup_multi.c
|
|
@@ -247,7 +247,7 @@ static struct lookup_mod *nss_open_lookup(const char *format, int argc, const ch
|
|
continue;
|
|
}
|
|
|
|
- if (st.st_mode & __S_IEXEC)
|
|
+ if (st.st_mode & S_IEXEC)
|
|
type = src_prog;
|
|
else
|
|
type = src_file;
|
|
@@ -452,7 +452,7 @@ int lookup_reinit(const char *my_mapfmt,
|
|
continue;
|
|
}
|
|
|
|
- if (st.st_mode & __S_IEXEC)
|
|
+ if (st.st_mode & S_IEXEC)
|
|
type = src_prog;
|
|
else
|
|
type = src_file;
|
|
diff --git a/modules/parse_amd.c b/modules/parse_amd.c
|
|
index 163174c..5090060 100644
|
|
--- a/modules/parse_amd.c
|
|
+++ b/modules/parse_amd.c
|
|
@@ -425,6 +425,7 @@ static int sel_in_network(struct autofs_point *ap,
|
|
return ret;
|
|
}
|
|
|
|
+#ifdef HAVE_INNETGR
|
|
static int sel_netgrp(struct autofs_point *ap,
|
|
struct selector *s, struct substvar *sv)
|
|
{
|
|
@@ -489,6 +490,7 @@ out:
|
|
|
|
return ret;
|
|
}
|
|
+#endif
|
|
|
|
static int eval_selector(struct autofs_point *ap,
|
|
struct amd_entry *this, struct substvar *sv)
|
|
@@ -628,7 +630,12 @@ static int eval_selector(struct autofs_point *ap,
|
|
switch (s->sel->selector) {
|
|
case SEL_NETGRP:
|
|
case SEL_NETGRPD:
|
|
+#ifndef HAVE_INNETGR
|
|
+ error(logopt, MODPREFIX
|
|
+ "netgroups not available, function innetgr(3) not available");
|
|
+#else
|
|
ret = sel_netgrp(ap, s, sv);
|
|
+#endif
|
|
break;
|
|
|
|
default:
|
|
--
|
|
2.36.1
|
|
|