mirror of
				https://gitlab.alpinelinux.org/alpine/aports.git
				synced 2025-10-31 16:31:40 +01: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.
		
			
				
	
	
		
			394 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			394 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
 | |
| 
 |