From: Jan Rękorajski Date: Wed, 4 Dec 2013 11:16:46 +0000 (+0100) Subject: - updated to 5.0.8 X-Git-Tag: auto/th/autofs-5.0.8-1 X-Git-Url: https://git.pld-linux.org/?p=packages%2Fautofs.git;a=commitdiff_plain;h=15dae9824f87e47940af67204a8c462aab09a4aa - updated to 5.0.8 - added patches from ftp://ftp.kernel.org/pub/linux/daemons/autofs/v5/patches-5.0.9/ - enable LDAP support (heimdal issues fixed upstream) --- diff --git a/autofs-5.0.8-allow-with-systemd-to-take-a-path-arg.patch b/autofs-5.0.8-allow-with-systemd-to-take-a-path-arg.patch new file mode 100644 index 0000000..c08799c --- /dev/null +++ b/autofs-5.0.8-allow-with-systemd-to-take-a-path-arg.patch @@ -0,0 +1,62 @@ +autofs-5.0.8 - allow --with-systemd to take a path arg + +From: Joe MacDonald + +If building for a cross-compile environment with systemd it is convenient +to be able to specify a systemd path for the target that may not be the +same as that on the host. + +I encountered a problem while working with autofs in a cross-compile +environment where the host and target have either differing systemd paths +or where one may not have systemd support at all. The common solution +I've seen in other projects is to have a --with-systemddir=[path] option, +but I thought it'd be simpler to add an optional path argument to the +extant '--with-systemd' configure parameter and leave the default =y+probe +for path logic in place. + +Signed-off-by: Joe MacDonald +--- + CHANGELOG | 1 + + aclocal.m4 | 10 ++++++++-- + 2 files changed, 9 insertions(+), 2 deletions(-) + +diff --git a/CHANGELOG b/CHANGELOG +index a01393c..565153d 100644 +--- a/CHANGELOG ++++ b/CHANGELOG +@@ -3,6 +3,7 @@ + - fix undefined authtype_requires_creds err if ldap enabled but without sasl. + - fix master map type check. + - fix task manager not getting signaled. ++- allow --with-systemd to take a path arg. + + 17/10/2013 autofs-5.0.8 + ======================= +diff --git a/aclocal.m4 b/aclocal.m4 +index 3e6f223..105e3e9 100644 +--- a/aclocal.m4 ++++ b/aclocal.m4 +@@ -229,8 +229,10 @@ dnl Check the location of the systemd unit files directory + dnl -------------------------------------------------------------------------- + AC_DEFUN([AF_WITH_SYSTEMD], + [AC_ARG_WITH(systemd, +-[ --with-systemd install systemd unit file if systemd unit directory +- is found on system], ++[ --with-systemd@<:@=systemddir@:>@ install systemd unit file. If 'yes' ++ probe the system for unit directory. ++ If a path is specified, assume that ++ is a valid install path.], + [if test "$withval" = yes; then + if test -z "$systemddir"; then + AC_MSG_CHECKING([location of the systemd unit files directory]) +@@ -247,6 +249,10 @@ AC_DEFUN([AF_WITH_SYSTEMD], + else + AC_MSG_RESULT(not found) + fi ++else ++ if test "$withval" != no; then ++ systemddir=$withval ++ fi + fi]) + ]) + diff --git a/autofs-5.0.8-fix-WITH_LIBTIRPC-function-name.patch b/autofs-5.0.8-fix-WITH_LIBTIRPC-function-name.patch new file mode 100644 index 0000000..d62b028 --- /dev/null +++ b/autofs-5.0.8-fix-WITH_LIBTIRPC-function-name.patch @@ -0,0 +1,49 @@ +autofs-5.0.8 - fix WITH_LIBTIRPC function name + +From: Ian Kent + +autoconf function names AM_ are reserved so don't use them. +--- + CHANGELOG | 1 + + aclocal.m4 | 2 +- + configure.in | 2 +- + 3 files changed, 3 insertions(+), 2 deletions(-) + +diff --git a/CHANGELOG b/CHANGELOG +index 565153d..68db340 100644 +--- a/CHANGELOG ++++ b/CHANGELOG +@@ -4,6 +4,7 @@ + - fix master map type check. + - fix task manager not getting signaled. + - allow --with-systemd to take a path arg. ++- fix WITH_LIBTIRPC function name. + + 17/10/2013 autofs-5.0.8 + ======================= +diff --git a/aclocal.m4 b/aclocal.m4 +index 105e3e9..2115204 100644 +--- a/aclocal.m4 ++++ b/aclocal.m4 +@@ -441,7 +441,7 @@ CFLAGS="$af_check_libtirpc_save_cflags" + LDFLAGS="$af_check_libtirpc_save_ldflags" + ]) + +-AC_DEFUN([AM_WITH_LIBTIRPC], ++AC_DEFUN([AF_WITH_LIBTIRPC], + [AC_MSG_CHECKING([if libtirpc is requested and available]) + AC_ARG_WITH(libtirpc, + [ --with-libtirpc use libtirpc if available], +diff --git a/configure.in b/configure.in +index 5f29163..1eeb8dc 100644 +--- a/configure.in ++++ b/configure.in +@@ -124,7 +124,7 @@ AC_SUBST(flagdir) + # + # Use libtirpc + # +-AM_WITH_LIBTIRPC() ++AF_WITH_LIBTIRPC() + AC_SUBST(TIRPCLIB) + + # diff --git a/autofs-5.0.8-fix-allow-with-systemd-to-take-a-path-arg.patch b/autofs-5.0.8-fix-allow-with-systemd-to-take-a-path-arg.patch new file mode 100644 index 0000000..d49cb59 --- /dev/null +++ b/autofs-5.0.8-fix-allow-with-systemd-to-take-a-path-arg.patch @@ -0,0 +1,37 @@ +autofs-5.0.8 - fix allow with systemd to take a path arg + +From: Ian Kent + +And update configure .. +--- + configure | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/configure b/configure +index 2c2e312..4e1743d 100755 +--- a/configure ++++ b/configure +@@ -1372,8 +1372,10 @@ Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-path=PATH look in PATH for binaries needed by the automounter +- --with-systemd install systemd unit file if systemd unit directory +- is found on system ++ --with-systemd[=systemddir] install systemd unit file. If 'yes' ++ probe the system for unit directory. ++ If a path is specified, assume that ++ is a valid install path. + --with-confdir=DIR use DIR for autofs configuration files + --with-mapdir=PATH look in PATH for mount maps used by the automounter + --with-fifodir=PATH use PATH as the directory for fifos used by the automounter +@@ -2260,6 +2262,10 @@ $as_echo "$systemddir" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 + $as_echo "not found" >&6; } + fi ++else ++ if test "$withval" != no; then ++ systemddir=$withval ++ fi + fi + fi + diff --git a/autofs-5.0.8-fix-ipv6-libtirpc-getport.patch b/autofs-5.0.8-fix-ipv6-libtirpc-getport.patch new file mode 100644 index 0000000..eee6c5c --- /dev/null +++ b/autofs-5.0.8-fix-ipv6-libtirpc-getport.patch @@ -0,0 +1,345 @@ +autofs-5.0.8 - fix ipv6 libtirpc getport + +From: Ian Kent + +The method that was being used to obtain a service port number +when using libtirpc was wrong. +--- + CHANGELOG | 1 + lib/rpc_subs.c | 283 +++++++++++++++++++++++++++++++++++++++++++++++++++++--- + 2 files changed, 267 insertions(+), 17 deletions(-) + +diff --git a/CHANGELOG b/CHANGELOG +index 68db340..9c87373 100644 +--- a/CHANGELOG ++++ b/CHANGELOG +@@ -5,6 +5,7 @@ + - fix task manager not getting signaled. + - allow --with-systemd to take a path arg. + - fix WITH_LIBTIRPC function name. ++- fix ipv6 libtirpc getport. + + 17/10/2013 autofs-5.0.8 + ======================= +diff --git a/lib/rpc_subs.c b/lib/rpc_subs.c +index 46b3e8d..2365b6e 100644 +--- a/lib/rpc_subs.c ++++ b/lib/rpc_subs.c +@@ -234,6 +234,28 @@ static int rpc_do_create_client(struct sockaddr *addr, struct conn_info *info, i + + return 0; + } ++static int rpc_getport(struct conn_info *info, ++ struct pmap *parms, CLIENT *client) ++{ ++ enum clnt_stat status; ++ ++ /* ++ * Check to see if server is up otherwise a getport will take ++ * forever to timeout. ++ */ ++ status = clnt_call(client, PMAPPROC_NULL, ++ (xdrproc_t) xdr_void, 0, (xdrproc_t) xdr_void, 0, ++ info->timeout); ++ ++ if (status == RPC_SUCCESS) { ++ status = clnt_call(client, PMAPPROC_GETPORT, ++ (xdrproc_t) xdr_pmap, (caddr_t) parms, ++ (xdrproc_t) xdr_u_short, (caddr_t) port, ++ info->timeout); ++ } ++ ++ return status; ++} + #else + static int rpc_do_create_client(struct sockaddr *addr, struct conn_info *info, int *fd, CLIENT **client) + { +@@ -267,9 +289,6 @@ static int rpc_do_create_client(struct sockaddr *addr, struct conn_info *info, i + laddr = (struct sockaddr *) &in4_laddr; + in4_raddr->sin_port = htons(info->port); + slen = sizeof(struct sockaddr_in); +- /* Use rpcbind v2 for AF_INET */ +- if (info->program == rpcb_prog) +- info->version = PMAPVERS; + } else if (addr->sa_family == AF_INET6) { + struct sockaddr_in6 *in6_raddr = (struct sockaddr_in6 *) addr; + in6_laddr.sin6_family = AF_INET6; +@@ -324,6 +343,244 @@ static int rpc_do_create_client(struct sockaddr *addr, struct conn_info *info, i + + return 0; + } ++ ++/* ++ * Thankfully nfs-utils had already dealt with this. ++ * Thanks to Chuck Lever for his nfs-utils patch series, much of ++ * which is used here. ++ */ ++static pthread_mutex_t proto_mutex = PTHREAD_MUTEX_INITIALIZER; ++ ++static enum clnt_stat rpc_get_netid(const sa_family_t family, ++ const int protocol, char **netid) ++{ ++ char *nc_protofmly, *nc_proto, *nc_netid; ++ struct netconfig *nconf; ++ struct protoent *proto; ++ void *handle; ++ ++ switch (family) { ++ case AF_LOCAL: ++ case AF_INET: ++ nc_protofmly = NC_INET; ++ break; ++ case AF_INET6: ++ nc_protofmly = NC_INET6; ++ break; ++ default: ++ return RPC_UNKNOWNPROTO; ++ } ++ ++ pthread_mutex_lock(&proto_mutex); ++ proto = getprotobynumber(protocol); ++ if (!proto) { ++ pthread_mutex_unlock(&proto_mutex); ++ return RPC_UNKNOWNPROTO; ++ } ++ nc_proto = strdup(proto->p_name); ++ pthread_mutex_unlock(&proto_mutex); ++ if (!nc_proto) ++ return RPC_SYSTEMERROR; ++ ++ handle = setnetconfig(); ++ while ((nconf = getnetconfig(handle)) != NULL) { ++ if (nconf->nc_protofmly != NULL && ++ strcmp(nconf->nc_protofmly, nc_protofmly) != 0) ++ continue; ++ if (nconf->nc_proto != NULL && ++ strcmp(nconf->nc_proto, nc_proto) != 0) ++ continue; ++ ++ nc_netid = strdup(nconf->nc_netid); ++ if (!nc_netid) { ++ free(nc_proto); ++ return RPC_SYSTEMERROR; ++ } ++ ++ *netid = nc_netid; ++ } ++ endnetconfig(handle); ++ free(nc_proto); ++ ++ return RPC_SUCCESS; ++} ++ ++static char *rpc_sockaddr2universal(const struct sockaddr *addr) ++{ ++ const struct sockaddr_in6 *sin6 = (const struct sockaddr_in6 *) addr; ++ const struct sockaddr_un *sun = (const struct sockaddr_un *) addr; ++ const struct sockaddr_in *sin = (const struct sockaddr_in *) addr; ++ char buf[INET6_ADDRSTRLEN + 8 /* for port information */]; ++ uint16_t port; ++ size_t count; ++ char *result; ++ int len; ++ ++ switch (addr->sa_family) { ++ case AF_LOCAL: ++ return strndup(sun->sun_path, sizeof(sun->sun_path)); ++ case AF_INET: ++ if (inet_ntop(AF_INET, (const void *)&sin->sin_addr.s_addr, ++ buf, (socklen_t)sizeof(buf)) == NULL) ++ goto out_err; ++ port = ntohs(sin->sin_port); ++ break; ++ case AF_INET6: ++ if (inet_ntop(AF_INET6, (const void *)&sin6->sin6_addr, ++ buf, (socklen_t)sizeof(buf)) == NULL) ++ goto out_err; ++ port = ntohs(sin6->sin6_port); ++ break; ++ default: ++ goto out_err; ++ } ++ ++ count = sizeof(buf) - strlen(buf); ++ len = snprintf(buf + strlen(buf), count, ".%u.%u", ++ (unsigned)(port >> 8), (unsigned)(port & 0xff)); ++ /* before glibc 2.0.6, snprintf(3) could return -1 */ ++ if (len < 0 || (size_t)len > count) ++ goto out_err; ++ ++ result = strdup(buf); ++ return result; ++ ++out_err: ++ return NULL; ++} ++ ++static int rpc_universal2port(const char *uaddr) ++{ ++ char *addrstr; ++ char *p, *endptr; ++ unsigned long portlo, porthi; ++ int port = -1; ++ ++ addrstr = strdup(uaddr); ++ if (!addrstr) ++ return -1; ++ ++ p = strrchr(addrstr, '.'); ++ if (!p) ++ goto out; ++ ++ portlo = strtoul(p + 1, &endptr, 10); ++ if (*endptr != '\0' || portlo > 255) ++ goto out; ++ *p = '\0'; ++ ++ p = strrchr(addrstr, '.'); ++ if (!p) ++ goto out; ++ ++ porthi = strtoul(p + 1, &endptr, 10); ++ if (*endptr != '\0' || porthi > 255) ++ goto out; ++ *p = '\0'; ++ ++ port = (porthi << 8) | portlo; ++ ++out: ++ free(addrstr); ++ return port; ++} ++ ++static enum clnt_stat rpc_rpcb_getport(CLIENT *client, ++ struct rpcb *parms, ++ struct timeval timeout, ++ unsigned short *port) ++{ ++ rpcvers_t rpcb_version; ++ struct rpc_err rpcerr; ++ int s_port = 0; ++ ++ for (rpcb_version = RPCBVERS_4; ++ rpcb_version >= RPCBVERS_3; ++ rpcb_version--) { ++ enum clnt_stat status; ++ char *uaddr = NULL; ++ ++ CLNT_CONTROL(client, CLSET_VERS, (void *) &rpcb_version); ++ status = CLNT_CALL(client, (rpcproc_t) RPCBPROC_GETADDR, ++ (xdrproc_t) xdr_rpcb, (void *) parms, ++ (xdrproc_t) xdr_wrapstring, (void *) &uaddr, ++ timeout); ++ ++ switch (status) { ++ case RPC_SUCCESS: ++ if ((uaddr == NULL) || (uaddr[0] == '\0')) ++ return RPC_PROGNOTREGISTERED; ++ ++ s_port = rpc_universal2port(uaddr); ++ xdr_free((xdrproc_t) xdr_wrapstring, (char *) &uaddr); ++ if (s_port == -1) { ++ return RPC_N2AXLATEFAILURE; ++ } ++ *port = s_port; ++ return RPC_SUCCESS; ++ ++ case RPC_PROGVERSMISMATCH: ++ clnt_geterr(client, &rpcerr); ++ if (rpcerr.re_vers.low > RPCBVERS4) ++ return status; ++ continue; ++ case RPC_PROCUNAVAIL: ++ case RPC_PROGUNAVAIL: ++ continue; ++ default: ++ /* Most likely RPC_TIMEDOUT or RPC_CANTRECV */ ++ return status; ++ } ++ } ++ ++ if (s_port == 0) ++ return RPC_PROGNOTREGISTERED; ++ ++ return RPC_PROCUNAVAIL; ++} ++ ++static enum clnt_stat rpc_getport(struct conn_info *info, ++ struct pmap *parms, CLIENT *client, ++ unsigned short *port) ++{ ++ enum clnt_stat status; ++ struct sockaddr *paddr, addr; ++ struct rpcb rpcb_parms; ++ char *netid, *raddr; ++ ++ if (info->addr) ++ paddr = info->addr; ++ else { ++ if (!clnt_control(client, CLGET_SERVER_ADDR, (char *) &addr)) ++ return RPC_UNKNOWNADDR; ++ paddr = &addr; ++ } ++ ++ netid = NULL; ++ status = rpc_get_netid(paddr->sa_family, info->proto, &netid); ++ if (status != RPC_SUCCESS) ++ return status; ++ ++ raddr = rpc_sockaddr2universal(paddr); ++ if (!raddr) { ++ free(netid); ++ return RPC_UNKNOWNADDR; ++ } ++ ++ memset(&rpcb_parms, 0, sizeof(rpcb_parms)); ++ rpcb_parms.r_prog = parms->pm_prog; ++ rpcb_parms.r_vers = parms->pm_vers; ++ rpcb_parms.r_netid = netid; ++ rpcb_parms.r_addr = raddr; ++ rpcb_parms.r_owner = ""; ++ ++ status = rpc_rpcb_getport(client, &rpcb_parms, info->timeout, port); ++ ++ free(netid); ++ free(raddr); ++ ++ return status; ++} + #endif + + #if defined(HAVE_GETRPCBYNAME) || defined(HAVE_GETSERVBYNAME) +@@ -647,20 +904,7 @@ int rpc_portmap_getport(struct conn_info *info, + return ret; + } + +- /* +- * Check to see if server is up otherwise a getport will take +- * forever to timeout. +- */ +- status = clnt_call(client, PMAPPROC_NULL, +- (xdrproc_t) xdr_void, 0, (xdrproc_t) xdr_void, 0, +- pmap_info.timeout); +- +- if (status == RPC_SUCCESS) { +- status = clnt_call(client, PMAPPROC_GETPORT, +- (xdrproc_t) xdr_pmap, (caddr_t) parms, +- (xdrproc_t) xdr_u_short, (caddr_t) port, +- pmap_info.timeout); +- } ++ status = rpc_getport(&pmap_info, parms, client, port); + + if (!info->client) { + /* +@@ -867,6 +1111,11 @@ static int rpc_get_exports_proto(struct conn_info *info, exports *exp) + clnt_control(client, CLSET_RETRY_TIMEOUT, (char *) &info->timeout); + + client->cl_auth = authunix_create_default(); ++ if (client->cl_auth == NULL) { ++ error(LOGOPT_ANY, "auth create failed"); ++ clnt_destroy(client); ++ return 0; ++ } + + vers_entry = 0; + while (1) { diff --git a/autofs-5.0.8-fix-master-map-type-check.patch b/autofs-5.0.8-fix-master-map-type-check.patch new file mode 100644 index 0000000..5d96325 --- /dev/null +++ b/autofs-5.0.8-fix-master-map-type-check.patch @@ -0,0 +1,58 @@ +autofs-5.0.8 - fix master map type check + +From: Ian Kent + +Map type has format [,] but the master map type check +for old style map syntax doesn't allow for . +--- + CHANGELOG | 1 + + daemon/lookup.c | 24 ++++++++++++++++-------- + 2 files changed, 17 insertions(+), 8 deletions(-) + +diff --git a/CHANGELOG b/CHANGELOG +index a45ca6a..fb2f2d6 100644 +--- a/CHANGELOG ++++ b/CHANGELOG +@@ -1,6 +1,7 @@ + ??/??/20?? autofs-5.0.9 + ======================= + - fix undefined authtype_requires_creds err if ldap enabled but without sasl. ++- fix master map type check. + + 17/10/2013 autofs-5.0.8 + ======================= +diff --git a/daemon/lookup.c b/daemon/lookup.c +index e3d9536..7fea942 100644 +--- a/daemon/lookup.c ++++ b/daemon/lookup.c +@@ -171,14 +171,22 @@ int lookup_nss_read_master(struct master *master, time_t age) + char source[10]; + + memset(source, 0, 10); +- if (!strncmp(name, "file:", 5) || +- !strncmp(name, "yp:", 3) || +- !strncmp(name, "nis:", 4) || +- !strncmp(name, "nisplus:", 8) || +- !strncmp(name, "ldap:", 5) || +- !strncmp(name, "ldaps:", 6) || +- !strncmp(name, "sss:", 4) || +- !strncmp(name, "dir:", 4)) { ++ if ((!strncmp(name, "file", 4) && ++ (name[4] == ',' || name[4] == ':')) || ++ (!strncmp(name, "yp", 3) && ++ (name[3] == ',' || name[3] == ':')) || ++ (!strncmp(name, "nis", 3) && ++ (name[3] == ',' || name[3] == ':')) || ++ (!strncmp(name, "nisplus", 7) && ++ (name[7] == ',' || name[7] == ':')) || ++ (!strncmp(name, "ldap", 4) && ++ (name[4] == ',' || name[4] == ':')) || ++ (!strncmp(name, "ldaps", 5) && ++ (name[5] == ',' || name[5] == ':')) || ++ (!strncmp(name, "sss", 3) || ++ (name[3] == ',' || name[3] == ':')) || ++ (!strncmp(name, "dir", 3) && ++ (name[3] == ',' || name[3] == ':'))) { + strncpy(source, name, tmp - name); + + /* diff --git a/autofs-5.0.8-fix-task-manager-not-getting-signaled.patch b/autofs-5.0.8-fix-task-manager-not-getting-signaled.patch new file mode 100644 index 0000000..d189820 --- /dev/null +++ b/autofs-5.0.8-fix-task-manager-not-getting-signaled.patch @@ -0,0 +1,47 @@ +autofs-5.0.8 - fix task manager not getting signaled + +From: Ian Kent + +If a task is added and the task list isn't empty and in progress +tasks depend on the new task completion the task manager doesn't +get signaled. +--- + CHANGELOG | 1 + + daemon/state.c | 10 +++++----- + 2 files changed, 6 insertions(+), 5 deletions(-) + +diff --git a/CHANGELOG b/CHANGELOG +index fb2f2d6..a01393c 100644 +--- a/CHANGELOG ++++ b/CHANGELOG +@@ -2,6 +2,7 @@ + ======================= + - fix undefined authtype_requires_creds err if ldap enabled but without sasl. + - fix master map type check. ++- fix task manager not getting signaled. + + 17/10/2013 autofs-5.0.8 + ======================= +diff --git a/daemon/state.c b/daemon/state.c +index 8d81788..3174a9c 100644 +--- a/daemon/state.c ++++ b/daemon/state.c +@@ -818,13 +818,13 @@ done: + new = st_alloc_task(ap, state); + if (new) + list_add(&new->list, head); +- /* Added to empty state queue, kick state machine */ +- signaled = 1; +- status = pthread_cond_signal(&cond); +- if (status) +- fatal(status); + } + ++ signaled = 1; ++ status = pthread_cond_signal(&cond); ++ if (status) ++ fatal(status); ++ + return 1; + } + diff --git a/autofs-5.0.8-fix-undefined-authtype_requires_creds-err-if-ldap-en.patch b/autofs-5.0.8-fix-undefined-authtype_requires_creds-err-if-ldap-en.patch new file mode 100644 index 0000000..bf50ab9 --- /dev/null +++ b/autofs-5.0.8-fix-undefined-authtype_requires_creds-err-if-ldap-en.patch @@ -0,0 +1,52 @@ +autofs-5.0.8 - fix undefined authtype_requires_creds err if ldap enabled but without sasl + +From: Lan Yixun (dlan) + +This patch is moving "WITH_SASL" into authtype_requires_creds function +make it return 0 if sasl not enabled, which mean authtype_requires_creds is not enabled + +https://bugs.gentoo.org/show_bug.cgi?id=489128 +--- + CHANGELOG | 4 ++++ + modules/lookup_ldap.c | 4 ++-- + 2 files changed, 6 insertions(+), 2 deletions(-) + +diff --git a/CHANGELOG b/CHANGELOG +index 62dac81..a45ca6a 100644 +--- a/CHANGELOG ++++ b/CHANGELOG +@@ -1,3 +1,7 @@ ++??/??/20?? autofs-5.0.9 ++======================= ++- fix undefined authtype_requires_creds err if ldap enabled but without sasl. ++ + 17/10/2013 autofs-5.0.8 + ======================= + - fix nobind sun escaped map entries. +diff --git a/modules/lookup_ldap.c b/modules/lookup_ldap.c +index 2ab1e8c..04b1da7 100644 +--- a/modules/lookup_ldap.c ++++ b/modules/lookup_ldap.c +@@ -846,20 +846,20 @@ int get_property(unsigned logopt, xmlNodePtr node, const char *prop, char **valu + return 0; + } + +-#ifdef WITH_SASL + /* + * For plain text, login and digest-md5 authentication types, we need + * user and password credentials. + */ + int authtype_requires_creds(const char *authtype) + { ++#ifdef WITH_SASL + if (!strncmp(authtype, "PLAIN", strlen("PLAIN")) || + !strncmp(authtype, "DIGEST-MD5", strlen("DIGEST-MD5")) || + !strncmp(authtype, "LOGIN", strlen("LOGIN"))) + return 1; ++#endif + return 0; + } +-#endif + + /* + * Returns: diff --git a/autofs-makefile.patch b/autofs-makefile.patch index 64e05ff..a01d956 100644 --- a/autofs-makefile.patch +++ b/autofs-makefile.patch @@ -1,14 +1,12 @@ --- autofs-5.0.5/daemon/Makefile.orig 2009-09-03 12:00:12.000000000 +0200 +++ autofs-5.0.5/daemon/Makefile 2009-09-18 13:41:12.350991340 +0200 -@@ -22,12 +22,8 @@ +@@ -22,10 +22,8 @@ LDFLAGS += -rdynamic LIBS = -ldl -ifeq ($(LDAP), 1) -- ifeq ($(SASL), 1) - CFLAGS += $(XML_FLAGS) - LIBS += $(XML_LIBS) -- endif -endif +CFLAGS += $(XML_FLAGS) +LIBS += $(XML_LIBS) diff --git a/autofs.spec b/autofs.spec index 47c2b4b..51a5c12 100644 --- a/autofs.spec +++ b/autofs.spec @@ -2,7 +2,7 @@ # - change /net to something FHS-compliant ? # # Conditional build: -%bcond_with ldap # build LDAP extension module (need port to heimdal) +%bcond_without ldap # don't build LDAP extension module # Summary: autofs daemon Summary(de.UTF-8): autofs daemon @@ -12,13 +12,13 @@ Summary(pl.UTF-8): Demon autofs Summary(pt_BR.UTF-8): Servidor autofs Summary(tr.UTF-8): autofs sunucu süreci Name: autofs -Version: 5.0.5 +Version: 5.0.8 Release: 1 Epoch: 1 License: GPL v2+ Group: Daemons -Source0: ftp://ftp.kernel.org/pub/linux/daemons/autofs/v5/%{name}-%{version}.tar.bz2 -# Source0-md5: a1d262cb6ebef0c2dd0fe22232fb3d5a +Source0: ftp://ftp.kernel.org/pub/linux/daemons/autofs/v5/%{name}-%{version}.tar.xz +# Source0-md5: 4ed5271598fb1a76475364a4879c7578 Source1: %{name}.init Source2: %{name}-auto.master Source3: %{name}-auto.media @@ -26,6 +26,13 @@ Source4: %{name}-auto.net Source5: %{name}.sysconfig Patch0: %{name}-open_max.patch Patch1: %{name}-makefile.patch +Patch100: autofs-5.0.8-fix-undefined-authtype_requires_creds-err-if-ldap-en.patch +Patch101: autofs-5.0.8-fix-master-map-type-check.patch +Patch102: autofs-5.0.8-fix-task-manager-not-getting-signaled.patch +Patch103: autofs-5.0.8-allow-with-systemd-to-take-a-path-arg.patch +Patch104: autofs-5.0.8-fix-WITH_LIBTIRPC-function-name.patch +Patch105: autofs-5.0.8-fix-ipv6-libtirpc-getport.patch +Patch106: autofs-5.0.8-fix-allow-with-systemd-to-take-a-path-arg.patch BuildRequires: autoconf BuildRequires: automake BuildRequires: bind-devel @@ -34,13 +41,16 @@ BuildRequires: e2fsprogs BuildRequires: flex BuildRequires: heimdal-devel BuildRequires: hesiod-devel +BuildRequires: libtirpc-devel BuildRequires: libxml2-devel BuildRequires: mount %{?with_ldap:BuildRequires: openldap-devel >= 2.4.6} -BuildRequires: rpmbuild(macros) >= 1.268 +BuildRequires: rpmbuild(macros) >= 1.647 Requires(post,preun): /sbin/chkconfig +Requires(post,preun,postun): systemd-units >= 38 Requires: mktemp Requires: rc-scripts +Requires: systemd-units >= 0.38 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) %define _sysconfdir /etc/autofs @@ -103,6 +113,13 @@ trzymanych na serwerze LDAP. %setup -q %patch0 -p1 %patch1 -p1 +%patch100 -p1 +%patch101 -p1 +%patch102 -p1 +%patch103 -p1 +%patch104 -p1 +%patch105 -p1 +%patch106 -p1 %build %{__autoconf} @@ -112,7 +129,9 @@ export initdir=/etc/rc.d/init.d --with-openldap=%{?with_ldap:yes}%{!?with_ldap:no} \ --enable-force-shutdown=yes \ --with-confdir=%{_sysconfdir} \ - --with-mapdir=%{_sysconfdir} + --with-mapdir=%{_sysconfdir} \ + --with-libtirpc \ + --with-systemd=%{systemdunitdir} %{__make} -j1 \ initdir=/etc/rc.d/init.d \ @@ -149,12 +168,20 @@ if [ -f /var/lock/subsys/automount ]; then mv /var/lock/subsys/{automount,autofs} fi %service autofs restart "autofs daemon" +%systemd_post autofs.service %preun if [ "$1" = "0" ]; then %service autofs stop /sbin/chkconfig --del autofs fi +%systemd_preun autofs.service + +%postun +%systemd_reload + +%triggerpostun -- autofs < 5.0.8-1 +%systemd_trigger autofs.service %files %defattr(644,root,root,755) @@ -170,9 +197,11 @@ fi %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/auto.tmp %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/auto.var %attr(754,root,root) /etc/rc.d/init.d/autofs +%{systemdunitdir}/autofs.service %attr(755,root,root) %{_sbindir}/automount %dir /net %dir %{_libdir}/autofs +%attr(755,root,root) %{_libdir}/autofs/lookup_dir.so %attr(755,root,root) %{_libdir}/autofs/lookup_file.so %attr(755,root,root) %{_libdir}/autofs/lookup_files.so %attr(755,root,root) %{_libdir}/autofs/lookup_hesiod.so @@ -189,6 +218,7 @@ fi %attr(755,root,root) %{_libdir}/autofs/mount_changer.so %attr(755,root,root) %{_libdir}/autofs/mount_ext2.so %attr(755,root,root) %{_libdir}/autofs/mount_ext3.so +%attr(755,root,root) %{_libdir}/autofs/mount_ext4.so %attr(755,root,root) %{_libdir}/autofs/mount_generic.so %attr(755,root,root) %{_libdir}/autofs/mount_nfs.so %attr(755,root,root) %{_libdir}/autofs/mount_nfs4.so