From 11cb110e2fb3f814aa4efde0d7924535c8510315 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Wed, 5 Mar 2014 15:06:02 +1300 Subject: [PATCH] build: Do not rely on sys.platform for ACL tests, combine UnixWare and Solaris ACL tests This avoids issues with whatever sys.platform may return, fixes the order of arguments to the CHECK_FUNCS_IN call, and only runs after Linux-style POSIX ACL detection fails. Andrew Bartlett Change-Id: I930dff1e03c1cd1ceb8f3a35823ceb805694b66a Signed-off-by: Andrew Bartlett Reviewed-by: David Disseldorp Tested-by: Thomas Schulz --- source3/lib/sysacls.c | 4 ++-- source3/wscript | 24 ++++++++++-------------- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/source3/lib/sysacls.c b/source3/lib/sysacls.c index 6e1ac21a1ea..2ec3d68a85b 100644 --- a/source3/lib/sysacls.c +++ b/source3/lib/sysacls.c @@ -30,7 +30,7 @@ #include "modules/vfs_tru64acl.h" #endif -#if defined(HAVE_SOLARIS_ACLS) || defined(HAVE_UNIXWARE_ACLS) +#if defined(HAVE_SOLARIS_UNIXWARE_ACLS) #include "modules/vfs_solarisacl.h" #endif @@ -457,7 +457,7 @@ int sys_acl_delete_def_file(vfs_handle_struct *handle, return tru64acl_sys_acl_delete_def_file(handle, path); } -#elif defined(HAVE_SOLARIS_ACLS) || defined(HAVE_UNIXWARE_ACLS) +#elif defined(HAVE_SOLARIS_UNIXWARE_ACLS) SMB_ACL_T sys_acl_get_file(vfs_handle_struct *handle, const char *path_p, SMB_ACL_TYPE_T type, diff --git a/source3/wscript b/source3/wscript index 45eb33ba01b..d0bfca7965e 100644 --- a/source3/wscript +++ b/source3/wscript @@ -418,15 +418,7 @@ utimensat vsyslog _write __write __xstat conf.DEFINE('STAT_ST_BLOCKSIZE', '512') if Options.options.with_acl_support: - if (host_os.rfind('sysv5') > -1) and conf.CHECK_FUNCS_IN('sec', 'facl', checklibc=True): - Logs.info('Using UnixWare ACLs') - conf.DEFINE('HAVE_UNIXWARE_ACLS',1) - default_static_modules.extend(TO_LIST('vfs_solarisacl')) - elif (host_os.rfind('solaris') > -1) and conf.CHECK_FUNCS_IN('sec', 'facl'): - Logs.info('Using solaris ACLs') - conf.DEFINE('HAVE_SOLARIS_ACLS',1) - default_static_modules.extend(TO_LIST('vfs_solarisacl')) - elif (host_os.rfind('hpux') > -1): + if (host_os.rfind('hpux') > -1): Logs.info('Using HPUX ACLs') conf.DEFINE('HAVE_HPUX_ACLS',1) conf.DEFINE('POSIX_ACL_NEEDS_MASK',1) @@ -435,10 +427,6 @@ utimensat vsyslog _write __write __xstat Logs.info('Using AIX ACLs') conf.DEFINE('HAVE_AIX_ACLS',1) default_static_modules.extend(TO_LIST('vfs_aixacl vfs_aixacl2')) - elif (host_os.rfind('osf') > -1) and conf.CHECK_FUNCS_IN('pacl', 'acl_get_fd'): - Logs.info('Using Tru64 ACLs') - conf.DEFINE('HAVE_TRU64_ACLS',1) - default_static_modules.extend(TO_LIST('vfs_tru64acl')) elif (host_os.rfind('darwin') > -1): Logs.warn('ACLs on Darwin currently not supported') conf.fatal("ACL support not available on Darwin/MacOS. " @@ -447,7 +435,7 @@ utimensat vsyslog _write __write __xstat "ACL support is required to change permissions " "from Windows clients.") else: - conf.CHECK_FUNCS_IN('acl_get_file', 'acl') + conf.CHECK_FUNCS_IN(['acl_get_file'], 'acl') if conf.CHECK_CODE(''' acl_t acl; int entry_id; @@ -466,6 +454,14 @@ return acl_get_perm_np(permset_d, perm); headers='sys/types.h sys/acl.h', link=True, msg="Checking whether acl_get_perm_np() is available") default_static_modules.extend(TO_LIST('vfs_posixacl')) + elif conf.CHECK_FUNCS_IN(['facl'], 'sec'): + Logs.info('Using solaris or UnixWare ACLs') + conf.DEFINE('HAVE_SOLARIS_UNIXWARE_ACLS',1) + default_static_modules.extend(TO_LIST('vfs_solarisacl')) + elif conf.CHECK_FUNCS_IN('pacl', 'acl_get_fd'): + Logs.info('Using Tru64 ACLs') + conf.DEFINE('HAVE_TRU64_ACLS',1) + default_static_modules.extend(TO_LIST('vfs_tru64acl')) else: conf.fatal("ACL support not found. Try installing libacl1-dev " "or libacl-devel. " -- 2.11.4.GIT