From b005745a325e5f841fda701cc3e6df5cb2de32cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=BCnther=20Deschner?= Date: Fri, 19 Jan 2018 17:57:17 +0100 Subject: [PATCH] additional 4.8.0 build patch and build requries for tirpc and rpcsvc Guenther --- samba-4.8.0-build.patch | 643 ++++++++++++++++++++++++++++++++++++++++ samba.spec | 3 + 2 files changed, 646 insertions(+) create mode 100644 samba-4.8.0-build.patch diff --git a/samba-4.8.0-build.patch b/samba-4.8.0-build.patch new file mode 100644 index 0000000..6bd15f3 --- /dev/null +++ b/samba-4.8.0-build.patch @@ -0,0 +1,643 @@ +From d75de7b0f8062e004d304fe340894ad623285760 Mon Sep 17 00:00:00 2001 +From: Andreas Schneider +Date: Fri, 19 Jan 2018 09:32:49 +0100 +Subject: [PATCH 1/5] s3:waf: Move HAVE_NETGROUP to wscript + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=13238 + +Pair-Programmed-With: Guenther Deschner + +Signed-off-by: Andreas Schneider +Signed-off-by: Guenther Deschner +--- + source3/include/includes.h | 4 ---- + source3/wscript | 5 +++++ + 2 files changed, 5 insertions(+), 4 deletions(-) + +diff --git a/source3/include/includes.h b/source3/include/includes.h +index e82bfad4147..e2fb8e62e41 100644 +--- a/source3/include/includes.h ++++ b/source3/include/includes.h +@@ -91,10 +91,6 @@ + #include + #endif + +-#if defined(HAVE_YP_GET_DEFAULT_DOMAIN) && defined(HAVE_SETNETGRENT) && defined(HAVE_ENDNETGRENT) && defined(HAVE_GETNETGRENT) +-#define HAVE_NETGROUP 1 +-#endif +- + #if defined (HAVE_NETGROUP) + #if defined(HAVE_RPCSVC_YP_PROT_H) + /* +diff --git a/source3/wscript b/source3/wscript +index e81a212b448..02eda7e8802 100644 +--- a/source3/wscript ++++ b/source3/wscript +@@ -611,6 +611,11 @@ msg.msg_accrightslen = sizeof(fd); + headers='netdb.h netgroup.h', + cflags=netgrent_cflags) + ++ if conf.CONFIG_SET('HAVE_YP_GET_DEFAULT_DOMAIN') and \ ++ conf.CONFIG_SET('HAVE_SETNETGRENT') and \ ++ conf.CONFIG_SET('HAVE_ENDNETGRENT') and \ ++ conf.CONFIG_SET('HAVE_GETNETGRENT'): ++ conf.DEFINE('HAVE_NETGROUP', '1') + + # Look for CUPS + if Options.options.with_cups: +-- +2.15.1 + + +From cb6545a54103d16277988dfbf0479914366743d4 Mon Sep 17 00:00:00 2001 +From: Andreas Schneider +Date: Fri, 19 Jan 2018 09:33:21 +0100 +Subject: [PATCH 2/5] include: Create system/nis.h in libreplace + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=13238 + +Pair-Programmed-With: Guenther Deschner + +Signed-off-by: Andreas Schneider +Signed-off-by: Guenther Deschner +--- + lib/replace/system/nis.h | 83 ++++++++++++++++++++++++++++++++++++++++++++++ + lib/util/access.c | 10 ++++-- + source3/auth/user_util.c | 13 ++++++++ + source3/include/includes.h | 45 ------------------------- + source3/lib/util.c | 11 ++++++ + 5 files changed, 114 insertions(+), 48 deletions(-) + create mode 100644 lib/replace/system/nis.h + +diff --git a/lib/replace/system/nis.h b/lib/replace/system/nis.h +new file mode 100644 +index 00000000000..068595a1628 +--- /dev/null ++++ b/lib/replace/system/nis.h +@@ -0,0 +1,83 @@ ++/* ++ Unix SMB/CIFS implementation. ++ ++ nis system include wrappers ++ ++ Copyright (C) Andrew Tridgell 2004 ++ ++ ** NOTE! The following LGPL license applies to the replace ++ ** library. This does NOT imply that all of Samba is released ++ ** under the LGPL ++ ++ This library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 3 of the License, or (at your option) any later version. ++ ++ This library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with this library; if not, see . ++*/ ++ ++#ifndef _nis_passwd_h ++#define _nis_passwd_h ++ ++#if defined(HAVE_RPC_RPC_H) ++/* ++ * Check for AUTH_ERROR define conflict with rpc/rpc.h in prot.h. ++ */ ++#if defined(HAVE_SYS_SECURITY_H) && defined(HAVE_RPC_AUTH_ERROR_CONFLICT) ++#undef AUTH_ERROR ++#endif /* HAVE_SYS_SECURITY_H && HAVE_RPC_AUTH_ERROR_CONFLICT */ ++/* ++ * HP-UX 11.X has TCP_NODELAY and TCP_MAXSEG defined in which ++ * was included above. However includes which defines ++ * them again without checking if they already exsist. This generates ++ * two "Redefinition of macro" warnings for every single .c file that is ++ * compiled. ++ */ ++#if defined(HPUX) && defined(TCP_NODELAY) ++#undef TCP_NODELAY ++#endif /* HPUX && TCP_NODELAY */ ++ ++#if defined(HPUX) && defined(TCP_MAXSEG) ++#undef TCP_MAXSEG ++#endif /* HPUX && TCP_MAXSEG */ ++ ++#include ++#endif /* HAVE_RPC_RPC_H */ ++ ++ ++#if defined (HAVE_NETGROUP) ++ ++#if defined(HAVE_RPCSVC_YP_PROT_H) ++/* ++ * HP-UX 11.X has TCP_NODELAY and TCP_MAXSEG defined in which ++ * was included above. However includes which defines ++ * them again without checking if they already exsist. This generates ++ * two "Redefinition of macro" warnings for every single .c file that is ++ * compiled. ++ */ ++#if defined(HPUX) && defined(TCP_NODELAY) ++#undef TCP_NODELAY ++#endif /* HPUX && TCP_MAXSEG */ ++ ++#if defined(HPUX) && defined(TCP_MAXSEG) ++#undef TCP_MAXSEG ++#endif /* HPUX && TCP_MAXSEG */ ++ ++#include ++ ++#endif /* HAVE_RPCSVC_YP_PROT_H */ ++ ++#if defined(HAVE_RPCSVC_YPCLNT_H) ++#include ++#endif /* HAVE_RPCSVC_YPCLNT_H */ ++ ++#endif /* HAVE_NETGROUP */ ++ ++#endif /* _nis_passwd_h */ +diff --git a/lib/util/access.c b/lib/util/access.c +index 6d04a5f622c..7da0573a74d 100644 +--- a/lib/util/access.c ++++ b/lib/util/access.c +@@ -22,6 +22,10 @@ + #include "lib/util/access.h" + #include "lib/util/unix_match.h" + ++#if defined(HAVE_NETGROUP) ++#include "system/nis.h" ++#endif ++ + #define NAME_INDEX 0 + #define ADDR_INDEX 1 + +@@ -143,11 +147,11 @@ static bool string_match(const char *tok,const char *s) + + netgroup_ok = innetgr(tok + 1, hostname, (char *) 0, mydomain); + +- DEBUG(5,("looking for %s of domain %s in netgroup %s gave %s\n", ++ DBG_INFO("%s %s of domain %s in netgroup %s\n", ++ netgroup_ok ? "Found" : "Could not find", + hostname, + mydomain?mydomain:"(ANY)", +- tok+1, +- BOOLSTR(netgroup_ok))); ++ tok+1); + + SAFE_FREE(hostname); + +diff --git a/source3/auth/user_util.c b/source3/auth/user_util.c +index 1ddb7387307..63841a1fe51 100644 +--- a/source3/auth/user_util.c ++++ b/source3/auth/user_util.c +@@ -23,6 +23,19 @@ + #include "system/filesys.h" + #include "auth.h" + ++#ifdef HAVE_NETGROUP ++/* rpc/xdr.h uses TRUE and FALSE */ ++#ifdef TRUE ++#undef TRUE ++#endif ++ ++#ifdef FALSE ++#undef FALSE ++#endif ++ ++#include "system/nis.h" ++#endif ++ + /******************************************************************* + Map a username from a dos name to a unix name by looking in the username + map. Note that this modifies the name in place. +diff --git a/source3/include/includes.h b/source3/include/includes.h +index e2fb8e62e41..d822c3f9300 100644 +--- a/source3/include/includes.h ++++ b/source3/include/includes.h +@@ -68,51 +68,6 @@ + #include "system/time.h" + #include "system/wait.h" + +-#if defined(HAVE_RPC_RPC_H) +-/* +- * Check for AUTH_ERROR define conflict with rpc/rpc.h in prot.h. +- */ +-#if defined(HAVE_SYS_SECURITY_H) && defined(HAVE_RPC_AUTH_ERROR_CONFLICT) +-#undef AUTH_ERROR +-#endif +-/* +- * HP-UX 11.X has TCP_NODELAY and TCP_MAXSEG defined in which +- * was included above. However includes which defines +- * them again without checking if they already exsist. This generates +- * two "Redefinition of macro" warnings for every single .c file that is +- * compiled. +- */ +-#if defined(HPUX) && defined(TCP_NODELAY) +-#undef TCP_NODELAY +-#endif +-#if defined(HPUX) && defined(TCP_MAXSEG) +-#undef TCP_MAXSEG +-#endif +-#include +-#endif +- +-#if defined (HAVE_NETGROUP) +-#if defined(HAVE_RPCSVC_YP_PROT_H) +-/* +- * HP-UX 11.X has TCP_NODELAY and TCP_MAXSEG defined in which +- * was included above. However includes which defines +- * them again without checking if they already exsist. This generates +- * two "Redefinition of macro" warnings for every single .c file that is +- * compiled. +- */ +-#if defined(HPUX) && defined(TCP_NODELAY) +-#undef TCP_NODELAY +-#endif +-#if defined(HPUX) && defined(TCP_MAXSEG) +-#undef TCP_MAXSEG +-#endif +-#include +-#endif +-#if defined(HAVE_RPCSVC_YPCLNT_H) +-#include +-#endif +-#endif /* HAVE_NETGROUP */ +- + #ifndef HAVE_KRB5_H + #undef HAVE_KRB5 + #endif +diff --git a/source3/lib/util.c b/source3/lib/util.c +index fb508842678..ae9fe71c974 100644 +--- a/source3/lib/util.c ++++ b/source3/lib/util.c +@@ -45,6 +45,17 @@ + #define MAX_ALLOC_SIZE (1024*1024*256) + + #if (defined(HAVE_NETGROUP) && defined (WITH_AUTOMOUNT)) ++/* rpc/xdr.h uses TRUE and FALSE */ ++#ifdef TRUE ++#undef TRUE ++#endif ++ ++#ifdef FALSE ++#undef FALSE ++#endif ++ ++#include "system/nis.h" ++ + #ifdef WITH_NISPLUS_HOME + #ifdef BROKEN_NISPLUS_INCLUDE_FILES + /* +-- +2.15.1 + + +From df3be26e10bfbcd04541932bead663866fc14ab4 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?G=C3=BCnther=20Deschner?= +Date: Tue, 16 Jan 2018 17:48:10 +0100 +Subject: [PATCH 3/5] build: deal with recent glibc sunrpc header removal + +We need to rely on libtirpc or libntirpc to be around in that case. + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=13238 +BUG: https://bugzilla.samba.org/show_bug.cgi?id=10976 + +Guenther + +Pair-Programmed-With: Andreas Schneider + +Signed-off-by: Guenther Deschner +Signed-off-by: Andreas Schneider +--- + ctdb/wscript | 2 +- + lib/replace/wscript | 38 +++++++++++++++++++++++++++++++++----- + lib/util/wscript_build | 2 +- + source3/auth/wscript_build | 2 +- + source3/wscript | 8 ++++---- + 5 files changed, 40 insertions(+), 12 deletions(-) + +diff --git a/ctdb/wscript b/ctdb/wscript +index 8774b999ff2..715ecb175fa 100644 +--- a/ctdb/wscript ++++ b/ctdb/wscript +@@ -559,7 +559,7 @@ def build(bld): + bld.SAMBA_BINARY('smnotify', + source=bld.SUBDIR('utils/smnotify', + 'smnotify.c gen_smnotify.c gen_xdr.c'), +- deps='ctdb-smnotify-h ctdb-smnotify-c ctdb-smnotify-x popt', ++ deps='ctdb-smnotify-h ctdb-smnotify-c ctdb-smnotify-x popt tirpc', + includes='utils utils/smnotify', + install_path='${CTDB_HELPER_BINDIR}') + +diff --git a/lib/replace/wscript b/lib/replace/wscript +index 2f94d4937d3..57b0a45faee 100644 +--- a/lib/replace/wscript ++++ b/lib/replace/wscript +@@ -5,7 +5,7 @@ VERSION = '1.2.1' + + blddir = 'bin' + +-import sys, os ++import Logs, sys, os + + # find the buildtools directory + srcdir = '.' +@@ -65,14 +65,42 @@ def configure(conf): + headers='sys/inotify.h') + + conf.CHECK_HEADERS('security/pam_appl.h zlib.h asm/unistd.h') +- conf.CHECK_HEADERS('aio.h sys/unistd.h rpc/rpc.h rpc/nettype.h alloca.h float.h') ++ conf.CHECK_HEADERS('aio.h sys/unistd.h alloca.h float.h') ++ ++ conf.SET_TARGET_TYPE('tirpc', 'EMPTY') ++ conf.CHECK_HEADERS('rpc/rpc.h rpc/nettype.h') ++ if not conf.CONFIG_SET('HAVE_RPC_RPC_H'): ++ if conf.CHECK_CFG(package='libtirpc', args='--cflags', ++ msg='Checking for libtirpc headers', ++ uselib_store='TIRPC'): ++ conf.CHECK_HEADERS('rpc/rpc.h rpc/nettype.h', lib='tirpc', together=True) ++ conf.SET_TARGET_TYPE('tirpc', 'SYSLIB') ++ if not conf.CONFIG_SET('HAVE_RPC_RPC_H'): ++ if conf.CHECK_CFG(package='libntirpc', args='--cflags', ++ msg='Checking for libntirpc headers', ++ uselib_store='TIRPC'): ++ conf.CHECK_HEADERS('rpc/rpc.h rpc/nettype.h', lib='tirpc', together=True) ++ conf.SET_TARGET_TYPE('tirpc', 'SYSLIB') ++ if not conf.CONFIG_SET('HAVE_RPC_RPC_H'): ++ Logs.error('ERROR: No rpc/rpc.h header found, tirpc or libntirpc missing?') ++ sys.exit(1) ++ ++ conf.SET_TARGET_TYPE('nsl', 'EMPTY') ++ conf.CHECK_HEADERS('rpc/rpc.h rpcsvc/yp_prot.h', lib='tirpc') ++ if not conf.CONFIG_SET('HAVE_RPCSVC_YP_PROT_H'): ++ if conf.CHECK_CFG(package='libnsl', args='--cflags --libs', ++ msg='Checking for libnsl', ++ uselib_store='NSL'): ++ conf.SET_TARGET_TYPE('nsl', 'SYSLIB') ++ conf.CHECK_HEADERS('rpc/rpc.h rpcsvc/yp_prot.h', lib='tirpc nsl') ++ else: ++ conf.SET_TARGET_TYPE('nsl', 'SYSLIB') ++ conf.CHECK_HEADERS('rpcsvc/nis.h rpcsvc/ypclnt.h', lib='tirpc nsl') + +- conf.CHECK_HEADERS('rpcsvc/nis.h rpcsvc/ypclnt.h sys/sysctl.h') ++ conf.CHECK_HEADERS('sys/sysctl.h') + conf.CHECK_HEADERS('sys/fileio.h sys/filesys.h sys/dustat.h sys/sysmacros.h') + conf.CHECK_HEADERS('xfs/libxfs.h netgroup.h') + +- conf.CHECK_CODE('', headers='rpc/rpc.h rpcsvc/yp_prot.h', define='HAVE_RPCSVC_YP_PROT_H') +- + conf.CHECK_HEADERS('valgrind.h valgrind/valgrind.h valgrind/memcheck.h') + conf.CHECK_HEADERS('nss_common.h nsswitch.h ns_api.h') + conf.CHECK_HEADERS('sys/extattr.h sys/ea.h sys/proplist.h sys/cdefs.h') +diff --git a/lib/util/wscript_build b/lib/util/wscript_build +index 0b16b6f8216..30face34381 100644 +--- a/lib/util/wscript_build ++++ b/lib/util/wscript_build +@@ -204,7 +204,7 @@ else: + + bld.SAMBA_SUBSYSTEM('access', + source='access.c', +- deps='interfaces samba-util', ++ deps='interfaces samba-util tirpc nsl', + local_include=False) + + bld.SAMBA_SUBSYSTEM('util_str_escape', +diff --git a/source3/auth/wscript_build b/source3/auth/wscript_build +index 83b5ad18f03..8fd7dcded86 100644 +--- a/source3/auth/wscript_build ++++ b/source3/auth/wscript_build +@@ -6,7 +6,7 @@ bld.SAMBA3_SUBSYSTEM('TOKEN_UTIL', + + bld.SAMBA3_SUBSYSTEM('USER_UTIL', + source='user_util.c', +- deps='TOKEN_UTIL') ++ deps='TOKEN_UTIL tirpc nsl') + + bld.SAMBA3_SUBSYSTEM('AUTH_COMMON', + source='''auth_util.c +diff --git a/source3/wscript b/source3/wscript +index 02eda7e8802..a1898bdbe95 100644 +--- a/source3/wscript ++++ b/source3/wscript +@@ -119,7 +119,6 @@ def configure(conf): + conf.CHECK_FUNCS('memalign posix_memalign hstrerror') + conf.CHECK_FUNCS('shmget') + conf.CHECK_FUNCS_IN('shm_open', 'rt', checklibc=True) +- #FIXME: for some reason this one still fails + conf.CHECK_FUNCS_IN('yp_get_default_domain', 'nsl') + conf.CHECK_FUNCS_IN('dn_expand _dn_expand __dn_expand', 'resolv') + conf.CHECK_FUNCS_IN('dn_expand', 'inet') +@@ -1446,7 +1445,7 @@ main() { + #darwin style quota bytecount + conf.CHECK_STRUCTURE_MEMBER('struct dqblk', 'dqb_curbytes', define='HAVE_STRUCT_DQBLK_DQB_CURBYTES', + headers='sys/quota.h') +- if conf.CHECK_HEADERS('rpcsvc/rquota.h'): ++ if conf.CHECK_HEADERS('rpcsvc/rquota.h', lib='tirpc'): + conf.DEFINE('HAVE_NFS_QUOTAS', '1') + conf.CHECK_STRUCTURE_MEMBER('struct getquota_rslt', 'getquota_rslt_u', + define='HAVE_GETQUOTA_RSLT_GETQUOTA_RSLT_U', +@@ -1484,7 +1483,8 @@ main() { + define='HAVE_NFS_QUOTAS', + msg='for NFS QUOTAS', + execute=True, +- local_include=False) ++ local_include=False, ++ lib='tirpc') + + if conf.CONFIG_SET('HAVE_QUOTACTL_LINUX') or \ + conf.CONFIG_SET('HAVE_QUOTACTL_4A') or \ +@@ -1650,7 +1650,7 @@ main() { + Logs.info("building with Spotlight support") + default_static_modules.extend(TO_LIST('rpc_mdssvc_module')) + +- conf.CHECK_HEADERS('rpc/xdr.h') ++ conf.CHECK_HEADERS('rpc/xdr.h', lib='tirpc') + + forced_static_modules.extend(TO_LIST('auth_builtin auth_sam auth_winbind')) + default_static_modules.extend(TO_LIST('''pdb_smbpasswd pdb_tdbsam +-- +2.15.1 + + +From 6b4c79954c0b98d761f53ee6f63dab51f1aba601 Mon Sep 17 00:00:00 2001 +From: Andreas Schneider +Date: Fri, 19 Jan 2018 15:34:32 +0100 +Subject: [PATCH 4/5] wafsamba: Allow passing 'lib' to CHECK_STRUCTURE_MEMBER + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=13238 + +We need to be able to point it to the right header location, so we need +to be able to pass the 'lib' that it gets set. + +Signed-off-by: Andreas Schneider +--- + buildtools/wafsamba/samba_autoconf.py | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/buildtools/wafsamba/samba_autoconf.py b/buildtools/wafsamba/samba_autoconf.py +index 7940a7d4fe8..cc08e0d5c3d 100644 +--- a/buildtools/wafsamba/samba_autoconf.py ++++ b/buildtools/wafsamba/samba_autoconf.py +@@ -454,7 +454,8 @@ def CHECK_CODE(conf, code, define, + + @conf + def CHECK_STRUCTURE_MEMBER(conf, structname, member, +- always=False, define=None, headers=None): ++ always=False, define=None, headers=None, ++ lib=None): + '''check for a structure member''' + if define is None: + define = 'HAVE_%s' % member.upper() +@@ -463,6 +464,7 @@ def CHECK_STRUCTURE_MEMBER(conf, structname, member, + define, + execute=False, + link=False, ++ lib=lib, + always=always, + headers=headers, + local_include=False, +-- +2.15.1 + + +From 11fe6c8253dd7ceb0734358bad6d6ca7f550d7d1 Mon Sep 17 00:00:00 2001 +From: Andreas Schneider +Date: Fri, 19 Jan 2018 14:30:20 +0100 +Subject: [PATCH 5/5] waf: Fix NFS quota support with libtirpc + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=13238 + +Signed-off-by: Andreas Schneider +--- + lib/replace/wscript | 2 +- + source3/lib/sysquotas_nfs.c | 11 ++++++++++- + source3/modules/nfs4acl_xattr_xdr.c | 9 +++++++++ + source3/wscript | 26 ++++++++++++++------------ + source3/wscript_build | 2 +- + 5 files changed, 35 insertions(+), 15 deletions(-) + +diff --git a/lib/replace/wscript b/lib/replace/wscript +index 57b0a45faee..2c638b77212 100644 +--- a/lib/replace/wscript ++++ b/lib/replace/wscript +@@ -70,7 +70,7 @@ def configure(conf): + conf.SET_TARGET_TYPE('tirpc', 'EMPTY') + conf.CHECK_HEADERS('rpc/rpc.h rpc/nettype.h') + if not conf.CONFIG_SET('HAVE_RPC_RPC_H'): +- if conf.CHECK_CFG(package='libtirpc', args='--cflags', ++ if conf.CHECK_CFG(package='libtirpc', args='--cflags --libs', + msg='Checking for libtirpc headers', + uselib_store='TIRPC'): + conf.CHECK_HEADERS('rpc/rpc.h rpc/nettype.h', lib='tirpc', together=True) +diff --git a/source3/lib/sysquotas_nfs.c b/source3/lib/sysquotas_nfs.c +index fe46d3fa36a..dd2b12d0ffd 100644 +--- a/source3/lib/sysquotas_nfs.c ++++ b/source3/lib/sysquotas_nfs.c +@@ -36,13 +36,22 @@ + * This is based on the FreeBSD / SUNOS5 section of quotas.c + */ + ++/* uses TRUE and FALSE */ ++#ifdef TRUE ++#undef TRUE ++#endif ++ ++#ifdef FALSE ++#undef FALSE ++#endif ++ + #include + #include ++#include + #include + #ifdef HAVE_RPC_NETTYPE_H + #include + #endif +-#include + + #ifndef RQ_PATHLEN + #define RQ_PATHLEN 1024 +diff --git a/source3/modules/nfs4acl_xattr_xdr.c b/source3/modules/nfs4acl_xattr_xdr.c +index 524e69c0e1f..399c104faa4 100644 +--- a/source3/modules/nfs4acl_xattr_xdr.c ++++ b/source3/modules/nfs4acl_xattr_xdr.c +@@ -27,6 +27,15 @@ + #define DBGC_CLASS DBGC_VFS + + #ifdef HAVE_RPC_XDR_H ++/* uses TRUE and FALSE */ ++#ifdef TRUE ++#undef TRUE ++#endif ++ ++#ifdef FALSE ++#undef FALSE ++#endif ++ + #include + #include "nfs41acl.h" + #include "nfs4acl_xattr_xdr.h" +diff --git a/source3/wscript b/source3/wscript +index a1898bdbe95..64a5fa66b6c 100644 +--- a/source3/wscript ++++ b/source3/wscript +@@ -1446,10 +1446,22 @@ main() { + conf.CHECK_STRUCTURE_MEMBER('struct dqblk', 'dqb_curbytes', define='HAVE_STRUCT_DQBLK_DQB_CURBYTES', + headers='sys/quota.h') + if conf.CHECK_HEADERS('rpcsvc/rquota.h', lib='tirpc'): +- conf.DEFINE('HAVE_NFS_QUOTAS', '1') ++ # Optional structure member + conf.CHECK_STRUCTURE_MEMBER('struct getquota_rslt', 'getquota_rslt_u', + define='HAVE_GETQUOTA_RSLT_GETQUOTA_RSLT_U', +- headers='rpcsvc/rquota.h') ++ headers='rpcsvc/rquota.h', ++ lib='tirpc') ++ ++ # Required fucntion for NFS quote support ++ conf.CHECK_CODE(''' ++ clnt_create("", RQUOTAPROG, RQUOTAVERS, "udp"); ++ ''', ++ headers="rpc/rpc.h rpc/types.h rpcsvc/rquota.h rpc/nettype.h rpc/xdr.h", ++ define='HAVE_NFS_QUOTAS', ++ msg='checking for clnt_create()', ++ execute=True, ++ local_include=False, ++ lib='tirpc') + + if (host_os.rfind('linux') > -1): + conf.DEFINE('HAVE_QUOTACTL_LINUX', '1') +@@ -1476,16 +1488,6 @@ main() { + execute=True, + addmain=False) + +- conf.CHECK_CODE(''' +- clnt_create("", RQUOTAPROG, RQUOTAVERS, "udp"); +-''', +- headers="rpc/rpc.h rpc/types.h rpcsvc/rquota.h rpc/nettype.h rpc/xdr.h", +- define='HAVE_NFS_QUOTAS', +- msg='for NFS QUOTAS', +- execute=True, +- local_include=False, +- lib='tirpc') +- + if conf.CONFIG_SET('HAVE_QUOTACTL_LINUX') or \ + conf.CONFIG_SET('HAVE_QUOTACTL_4A') or \ + conf.CONFIG_SET('HAVE_QUOTACTL_4B') or \ +diff --git a/source3/wscript_build b/source3/wscript_build +index d4bc3cb1700..76c5d6e203b 100644 +--- a/source3/wscript_build ++++ b/source3/wscript_build +@@ -594,7 +594,7 @@ bld.SAMBA3_SUBSYSTEM('sysquotas', + lib/sysquotas_nfs.c + ''', + allow_warnings=True, +- deps='samba3-util samba-util') ++ deps='samba3-util samba-util tirpc') + + NOTIFY_SOURCES='' + NOTIFY_DEPS='' +-- +2.15.1 + diff --git a/samba.spec b/samba.spec index 044cc82..0c99b47 100644 --- a/samba.spec +++ b/samba.spec @@ -119,6 +119,7 @@ Source201: README.downgrade Patch1: samba-4.7.0-support-krb5-1.16.patch Patch2: samba-4.8.0-python.patch Patch3: samba-4.8.0-ceph.patch +Patch4: samba-4.8.0-build.patch Requires(pre): /usr/sbin/groupadd Requires(post): systemd @@ -169,6 +170,7 @@ BuildRequires: libarchive-devel BuildRequires: libattr-devel BuildRequires: libcap-devel BuildRequires: libcmocka-devel +BuildRequires: libtirpc-devel BuildRequires: libuuid-devel BuildRequires: libxslt BuildRequires: ncurses-devel @@ -193,6 +195,7 @@ BuildRequires: python3-subunit BuildRequires: quota-devel BuildRequires: readline-devel BuildRequires: rpcgen +BuildRequires: rpcsvc-proto BuildRequires: sed BuildRequires: xfsprogs-devel BuildRequires: xz