Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 12 Jan 2014 18:53:01 GMT
From:      Douglas Carmichael <dcarmich@dcarmichael.net>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   ports/185721: I have updated net/samba4 to version 4.1.4
Message-ID:  <201401121853.s0CIr1XZ021588@oldred.freebsd.org>
Resent-Message-ID: <201401121900.s0CJ01H6053515@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         185721
>Category:       ports
>Synopsis:       I have updated net/samba4 to version 4.1.4
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Sun Jan 12 19:00:01 UTC 2014
>Closed-Date:
>Last-Modified:
>Originator:     Douglas Carmichael
>Release:        9.2-RELEASE
>Organization:
n/a
>Environment:
n/a
>Description:
I have updated net/samba4 to version 4.1.4.

A patch is attached.

(Note: Samba 4.1.4 does not link properly with another Samba 4.1.x version installed, so I had to deinstall Samba 4.1.3 to make 4.1.4 install properly.)

>How-To-Repeat:
n/a
>Fix:
n/a

Patch attached with submission follows:

diff -ruN samba4.orig/Makefile samba4/Makefile
--- samba4.orig/Makefile	2013-12-17 01:39:55.000000000 -0600
+++ samba4/Makefile	2014-01-12 11:29:55.000000000 -0600
@@ -18,7 +18,7 @@
 
 SAMBA4_BASENAME=	samba
 SAMBA4_PORTNAME=	${SAMBA4_BASENAME}4
-SAMBA4_VERSION=		4.0.13
+SAMBA4_VERSION=		4.1.4
 SAMBA4_DISTNAME=	${SAMBA4_BASENAME}-${SAMBA4_VERSION:S|.p|pre|:S|.r|rc|:S|.t|tp|:S|.a|alpha|}
 
 WRKSRC?=		${WRKDIR}/${DISTNAME}
@@ -116,7 +116,7 @@
 # Options
 OPTIONS_DEFINE=		ACL_SUPPORT ADS AIO_SUPPORT CUPS DEBUG \
 			DNSUPDATE FAM_SUPPORT LDAP PAM_SMBPASS \
-			PTHREADPOOL QUOTAS SWAT SYSLOG UTMP WINBIND
+			PTHREADPOOL QUOTAS SYSLOG UTMP WINBIND
 
 OPTIONS_DEFAULT:=	${OPTIONS_DEFINE}
 
@@ -130,7 +130,6 @@
 PAM_SMBPASS_DESC=	PAM authentication via passdb backends
 PTHREADPOOL_DESC=	Pthread pool
 QUOTAS_DESC=		Disk quota support
-SWAT_DESC=		SWAT WebGUI
 UTMP_DESC=		UTMP accounting support
 WINBIND_DESC=		WinBIND support
 ##############################################################################
@@ -147,7 +146,7 @@
 OPTIONS_DEFAULT+=	NSUPDATE
 
 OPTIONS_RADIO=		ZEROCONF
-OPTIONS_RADIO_ZEROCONF=	AVAHI MDNSRESPONDER
+OPTIONS_RADIO_ZEROCONF=	AVAHI
 OPTIONS_DEFAULT+=	AVAHI
 
 .include <bsd.port.options.mk>
@@ -265,13 +264,6 @@
 CONFIGURE_ARGS+=	--disable-avahi
 .endif
 
-.if ${PORT_OPTIONS:MMDNSRESPONDER}
-LIB_DEPENDS+=		libdns_sd.so:${PORTSDIR}/net/mDNSResponder
-CONFIGURE_ARGS+=	--enable-dnssd
-.else
-CONFIGURE_ARGS+=	--disable-dnssd
-.endif
-
 .if ${PORT_OPTIONS:MCUPS}
 LIB_DEPENDS+=		libcups.so:${PORTSDIR}/print/cups-client
 CONFIGURE_ARGS+=	--enable-cups --enable-iprint
@@ -327,14 +319,6 @@
 CONFIGURE_ARGS+=	--without-syslog
 .endif
 
-.if ${PORT_OPTIONS:MSWAT}
-CONFIGURE_ARGS+=	--with-swat
-PLIST_SUB+=		SWAT=""
-.else
-CONFIGURE_ARGS+=	--without-swat
-PLIST_SUB+=		SWAT="@comment "
-.endif
-
 .if ${PORT_OPTIONS:MUTMP}
 CONFIGURE_ARGS+=	--with-utmp
 .else
@@ -344,9 +328,11 @@
 .if ${PORT_OPTIONS:MWINBIND}
 CONFIGURE_ARGS+=	--with-winbind
 PLIST_SUB+=		WINBIND=""
+SUB_LIST+=             WINBIND=""
 .else
 CONFIGURE_ARGS+=	--without-winbind
 PLIST_SUB+=		WINBIND="@comment "
+SUB_LIST+=             WINBIND="@comment "
 .endif
 
 .if defined(SAMBA4_WANT_ADS)
@@ -467,8 +453,7 @@
 			@${REINPLACE_CMD} -e 's|%%GDB_CMD%%|${GDB_CMD}|g' \
 				${PATCH_WRKSRC}/buildtools/scripts/abi_gen.sh
 			@${REINPLACE_CMD} -e 's|%%SAMBA4_CONFIG%%|${SAMBA4_CONFIG}|g' \
-				${PATCH_WRKSRC}/dynconfig/wscript \
-				${PATCH_WRKSRC}/dynconfig/config.m4
+				${PATCH_WRKSRC}/dynconfig/wscript
 # Make sure that the right version of Python is used by the tools
 # https://bugzilla.samba.org/show_bug.cgi?id=7305
 			@for f in ${PATCH_WRKSRC}/source4/scripting/bin/* ${WRKSRC}/${WAF_TOOL}; do \
diff -ruN samba4.orig/distinfo samba4/distinfo
--- samba4.orig/distinfo	2013-12-17 01:39:55.000000000 -0600
+++ samba4/distinfo	2014-01-12 11:29:58.000000000 -0600
@@ -1,2 +1,2 @@
-SHA256 (samba-4.0.13.tar.gz) = cb970bb016fd6403a31a2002b8db57f9201c6333feaafcc6b689eb5bd24174ac
-SIZE (samba-4.0.13.tar.gz) = 22105105
+SHA256 (samba-4.1.4.tar.gz) = 1733e1aaa37b4fcb0fc781b07fc6f20831023ce971d8bcd97940c3fbe35766a7
+SIZE (samba-4.1.4.tar.gz) = 23169480
diff -ruN samba4.orig/files/patch-dynconfig__config.m4 samba4/files/patch-dynconfig__config.m4
--- samba4.orig/files/patch-dynconfig__config.m4	2013-12-17 01:39:55.000000000 -0600
+++ samba4/files/patch-dynconfig__config.m4	1969-12-31 18:00:00.000000000 -0600
@@ -1,34 +0,0 @@
---- ./dynconfig/config.m4.orig	2012-10-02 08:38:44.000000000 +0000
-+++ ./dynconfig/config.m4	2013-01-27 07:13:46.156404375 +0000
-@@ -60,6 +60,22 @@
- 	PRIVILEGED_SOCKET_DIR="\${localstatedir}/lib/samba"
- fi
- 
-+AC_ARG_WITH(pkgconfigdir,
-+[AS_HELP_STRING([--with-pkgconfigdir=DIR],
-+ [Which directory to use for .pc files ($libdir/pkgconfig)])],
-+[ case "$withval" in
-+  yes|no)
-+  #
-+  # Just in case anybody calls it without argument
-+  #
-+    AC_MSG_WARN([--with-pkgconfigdir called without argument - will use default])
-+  ;;
-+  * )
-+    PKGCONFIGDIR="$withval"
-+  ;;
-+  esac])
-+
-+
- AC_ARG_WITH(modulesdir,
- [AS_HELP_STRING([--with-modulesdir=DIR],
-  [Which directory to use for modules ($exec_prefix/modules)])],
-@@ -261,7 +277,7 @@
- NMBDSOCKETDIR="${SOCKET_DIR}/nmbd"
- NTP_SIGND_SOCKET_DIR="${SOCKET_DIR}/ntp_signd"
- NCALRPCDIR="${SOCKET_DIR}/ncalrpc"
--CONFIGFILE="${CONFIGDIR}/smb.conf"
-+CONFIGFILE="${CONFIGDIR}/%%SAMBA4_CONFIG%%"
- LMHOSTSFILE="${CONFIGDIR}/lmhosts"
- SMB_PASSWD_FILE="${PRIVATE_DIR}/smbpasswd"
- 
diff -ruN samba4.orig/files/patch-lib__util__pidfile.c samba4/files/patch-lib__util__pidfile.c
--- samba4.orig/files/patch-lib__util__pidfile.c	1969-12-31 18:00:00.000000000 -0600
+++ samba4/files/patch-lib__util__pidfile.c	2014-01-12 11:08:34.000000000 -0600
@@ -0,0 +1,20 @@
+*** lib/util/pidfile.c.orig	Thu Dec 19 18:07:02 2013
+--- lib/util/pidfile.c	Thu Dec 19 18:07:43 2013
+***************
+*** 149,155 ****
+  	}
+  	ret = unlink(pidFile);
+  	if (ret == -1) {
+! 		DEBUG(0,("Failed to delete pidfile %s. Error was %s\n",
+! 			pidFile, strerror(errno)));
+  	}
+  }
+--- 149,156 ----
+  	}
+  	ret = unlink(pidFile);
+  	if (ret == -1) {
+! 		/* Comment this out so as not to have spurious log messages */
+! 		/* DEBUG(0,("Failed to delete pidfile %s. Error was %s\n",
+! 			pidFile, strerror(errno))); */
+  	}
+  }
diff -ruN samba4.orig/files/patch-source3__modules__vfs_zfsacl.c samba4/files/patch-source3__modules__vfs_zfsacl.c
--- samba4.orig/files/patch-source3__modules__vfs_zfsacl.c	2013-12-17 01:39:55.000000000 -0600
+++ samba4/files/patch-source3__modules__vfs_zfsacl.c	1969-12-31 18:00:00.000000000 -0600
@@ -1,19 +0,0 @@
---- ./source3/modules/vfs_zfsacl.c.orig	2013-02-05 12:25:25.000000000 +0000
-+++ ./source3/modules/vfs_zfsacl.c	2013-02-06 02:16:53.149872040 +0000
-@@ -269,13 +269,14 @@
- 
- static SMB_ACL_T zfsacl_fail__sys_acl_get_file(vfs_handle_struct *handle,
- 					       const char *path_p,
--					       SMB_ACL_TYPE_T type)
-+					       SMB_ACL_TYPE_T type,
-+					       TALLOC_CTX *mem_ctx)
- {
- 	return (SMB_ACL_T)NULL;
- }
- 
- static SMB_ACL_T zfsacl_fail__sys_acl_get_fd(vfs_handle_struct *handle,
--					     files_struct *fsp)
-+					     files_struct *fsp, TALLOC_CTX *mem_ctx)
- {
- 	return (SMB_ACL_T)NULL;
- }
diff -ruN samba4.orig/files/patch-source3__utils__net_lookup.c samba4/files/patch-source3__utils__net_lookup.c
--- samba4.orig/files/patch-source3__utils__net_lookup.c	2013-12-17 01:39:55.000000000 -0600
+++ samba4/files/patch-source3__utils__net_lookup.c	1969-12-31 18:00:00.000000000 -0600
@@ -1,11 +0,0 @@
---- ./source3/utils/net_lookup.c.orig	2013-11-18 23:13:25.859884543 +0000
-+++ ./source3/utils/net_lookup.c	2013-11-18 23:21:48.283312520 +0000
-@@ -321,7 +321,7 @@
- 
- 		print_sockaddr(addr, sizeof(addr), &kdcs[i].ss);
- 
--		d_printf("%s:%hd\n", addr, kdcs[i].port);
-+		d_printf("%s:%u\n", addr, kdcs[i].port);
- 	}
- 
- 	return 0;
diff -ruN samba4.orig/files/patch-source3__wscript samba4/files/patch-source3__wscript
--- samba4.orig/files/patch-source3__wscript	2013-12-17 01:39:55.000000000 -0600
+++ samba4/files/patch-source3__wscript	1969-12-31 18:00:00.000000000 -0600
@@ -1,105 +0,0 @@
---- ./source3/wscript.orig	2013-10-07 08:49:10.000000000 +0000
-+++ ./source3/wscript	2013-11-18 22:45:12.808702339 +0000
-@@ -35,6 +35,7 @@
-     opt.SAMBA3_ADD_OPTION('utmp')
-     opt.SAMBA3_ADD_OPTION('pthreadpool', with_name="enable", without_name="disable", default=True)
-     opt.SAMBA3_ADD_OPTION('avahi', with_name="enable", without_name="disable")
-+    opt.SAMBA3_ADD_OPTION('dnssd', with_name="enable", without_name="disable")
-     opt.SAMBA3_ADD_OPTION('iconv')
-     opt.SAMBA3_ADD_OPTION('acl-support')
-     opt.SAMBA3_ADD_OPTION('dnsupdate')
-@@ -312,7 +312,9 @@
- 
-     # Check if the compiler will optimize out functions
-     conf.CHECK_CODE('''
--if (0) {
-+char s = "string";
-+int len = 6;
-+if (sizeof(s) != len && sizeof(s) != sizeof(char *)) {
-     this_function_does_not_exist();
- } else {
-     return 1;
-@@ -502,7 +504,7 @@
-             conf.CHECK_CODE('struct aiocb a; return aio_return(&a);', 'HAVE_AIO_RETURN', msg='Checking for aio_return', headers='aio.h', lib='aio rt')
-             conf.CHECK_CODE('struct aiocb a; return aio_error(&a);', 'HAVE_AIO_ERROR', msg='Checking for aio_error', headers='aio.h', lib='aio rt')
-             conf.CHECK_CODE('struct aiocb a; return aio_cancel(1, &a);', 'HAVE_AIO_CANCEL', msg='Checking for aio_cancel', headers='aio.h', lib='aio rt')
--            conf.CHECK_CODE('struct aiocb a; struct timespec t; return aio_suspend(&a, 1, &t);', 'HAVE_AIO_SUSPEND', msg='Checking for aio_suspend', headers='aio.h', lib='aio rt')
-+            conf.CHECK_CODE('const struct aiocb * const a[1]; struct timespec t; return aio_suspend(a, 1, &t);', 'HAVE_AIO_SUSPEND', msg='Checking for aio_suspend', headers='aio.h', lib='aio rt')
-         if not conf.CONFIG_SET('HAVE_AIO'):
-             conf.DEFINE('HAVE_NO_AIO', '1')
-     else:
-@@ -812,6 +813,17 @@
-         conf.SET_TARGET_TYPE('avahi-common', 'EMPTY')
-         conf.SET_TARGET_TYPE('avahi-client', 'EMPTY')
- 
-+    if Options.options.with_dnssd:
-+        conf.env.with_dnssd = True
-+        if not conf.CHECK_HEADERS('dns_sd.h'):
-+            conf.env.with_dnssd = False
-+        if not conf.CHECK_FUNCS_IN('DNSServiceRegister', 'dns_sd'):
-+            conf.env.with_dnssd = False
-+        if conf.env.with_dnssd:
-+            conf.DEFINE('WITH_DNSSD_SUPPORT', 1)
-+    else:
-+        conf.SET_TARGET_TYPE('dns_sd', 'EMPTY')
-+
-     if Options.options.with_iconv:
-         conf.env.with_iconv = True
-         if not conf.CHECK_FUNCS_IN('iconv_open', 'iconv', headers='iconv.h'):
-@@ -1670,26 +1670,8 @@
- 
-     if PTHREAD_LDFLAGS == 'error':
-         if conf.CHECK_FUNCS_IN('pthread_attr_init', 'pthread'):
--            PTHREAD_CFLAGS='-D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS'
--            PTHREAD_LDFLAGS='-lpthread'
--    if PTHREAD_LDFLAGS == 'error':
--        if conf.CHECK_FUNCS_IN('pthread_attr_init', 'pthreads'):
--            PTHREAD_CFLAGS='-D_THREAD_SAFE'
--            PTHREAD_LDFLAGS='-lpthreads'
--    if PTHREAD_LDFLAGS == 'error':
--        if conf.CHECK_FUNCS_IN('pthread_attr_init', 'c_r'):
--            PTHREAD_CFLAGS='-D_THREAD_SAFE -pthread'
-+            PTHREAD_CFLAGS='-pthread'
-             PTHREAD_LDFLAGS='-pthread'
--    if PTHREAD_LDFLAGS == 'error':
--        if conf.CHECK_FUNCS('pthread_attr_init'):
--            PTHREAD_CFLAGS='-D_REENTRANT'
--            PTHREAD_LDFLAGS='-lpthread'
--    # especially for HP-UX, where the CHECK_FUNC macro fails to test for
--    # pthread_attr_init. On pthread_mutex_lock it works there...
--    if PTHREAD_LDFLAGS == 'error':
--        if conf.CHECK_FUNCS_IN('pthread_mutex_lock', 'pthread'):
--            PTHREAD_CFLAGS='-D_REENTRANT'
--            PTHREAD_LDFLAGS='-lpthread'
- 
-     if PTHREAD_CFLAGS != 'error' and PTHREAD_LDFLAGS != 'error':
-         conf.ADD_CFLAGS(PTHREAD_CFLAGS)
-@@ -1719,8 +1701,8 @@
-                                       auth_script vfs_readahead vfs_xattr_tdb vfs_posix_eadb
-                                       vfs_streams_xattr vfs_streams_depot vfs_acl_xattr vfs_acl_tdb
-                                       vfs_smb_traffic_analyzer vfs_preopen vfs_catia vfs_scannedonly
--				      vfs_media_harmony
--				      vfs_commit
-+                                      vfs_media_harmony
-+                                      vfs_commit
-                                       vfs_crossrename vfs_linux_xfs_sgid
-                                       vfs_time_audit idmap_autorid idmap_tdb2
-                                       idmap_rid idmap_hash'''))
-@@ -1733,7 +1715,7 @@
- 
-     if Options.options.enable_selftest or Options.options.developer:
-         default_shared_modules.extend(TO_LIST('vfs_fake_acls'))
--        
-+
- 
-     if conf.CONFIG_SET('AD_DC_BUILD_IS_ENABLED'):
-         default_static_modules.extend(TO_LIST('pdb_samba_dsdb auth_samba4 vfs_dfs_samba4'))
-@@ -1766,7 +1748,7 @@
-         default_static_modules.extend(TO_LIST('charset_macosxfs'))
- 
-     if conf.CONFIG_SET('HAVE_GPFS'):
--	default_shared_modules.extend(TO_LIST('vfs_gpfs'))
-+        default_shared_modules.extend(TO_LIST('vfs_gpfs'))
- 
-     if conf.CONFIG_SET('SAMBA_FAM_LIBS'):
-         default_shared_modules.extend(TO_LIST('vfs_notify_fam'))
diff -ruN samba4.orig/files/patch-source3__wscript_build samba4/files/patch-source3__wscript_build
--- samba4.orig/files/patch-source3__wscript_build	2013-12-17 01:39:55.000000000 -0600
+++ samba4/files/patch-source3__wscript_build	2014-01-12 11:08:34.000000000 -0600
@@ -1,61 +1,73 @@
---- source3/wscript_build.orig	2013-07-01 09:15:40.000000000 +0200
-+++ source3/wscript_build	2013-11-12 10:13:36.004046408 +0100
-@@ -1,7 +1,8 @@
- #!/usr/bin/env python
- 
- from samba_utils import *
--import samba_version, samba3
-+import samba_version, samba3, sys
-+host_os = sys.platform
- 
- TDB_LIB_SRC = '''
- 	  lib/dbwrap/dbwrap_open.c
-@@ -651,7 +652,16 @@
-                     vnum='0',
-                     vars=locals())
- 
--bld.SAMBA3_LIBRARY('nss_wins',
-+if (host_os.rfind('freebsd') > -1):
-+        # FreeBSD winbind client is implemented as a wrapper around
-+        # the Linux version.
-+        bld.SAMBA3_LIBRARY('nss_wins',
-+                  source=' '.join([WINBIND_WINS_NSS_SRC, '../nsswitch/wins_freebsd.c']),
-+                  deps='''param libsmb LIBTSOCKET''',
-+                  realname='nss_wins.so.1',
-+                  vnum='1')
-+else:
-+        bld.SAMBA3_LIBRARY('nss_wins',
-                   source=WINBIND_WINS_NSS_SRC,
-                   deps='''param libsmb LIBTSOCKET''',
-                   realname='libnss_wins.so.2',
-@@ -972,10 +982,12 @@
-                     LIBAFS_SETTOKEN
-                     RPC_SERVER
-                     NDR_SMBXSRV
--		    LIBASYS
-+                    LIBASYS
-                     ccan-hash
-                     NDR_SMB_ACL
-                     netapi
-+                    inotify
-+                    dns_sd
-                     ''' + bld.env['dmapi_lib'],
-                     private_library=True,
-                     vars=locals())
-@@ -1277,6 +1289,7 @@
-                  libsmb
-                  msrpc3
-                  RPC_NDR_SRVSVC
-+                 dns_sd
-                  cli_smb_common''')
- 
- bld.SAMBA3_BINARY('net',
-@@ -1629,7 +1642,7 @@
- 
- bld.SAMBA3_PYTHON('pylibsmb',
-                   source='libsmb/pylibsmb.c',
--                  deps='smbclient samba-credentials',
-+                  deps='smbclient samba-credentials libsmb errors',
-                   realname='samba/samba3/libsmb_samba_internal.so'
-                   )
- 
+*** source3/wscript_build.orig	Tue Dec 17 03:07:22 2013
+--- source3/wscript_build	Tue Dec 17 03:46:31 2013
+***************
+*** 1,7 ****
+  #!/usr/bin/env python
+  
+  from samba_utils import *
+! import samba_version, samba3
+  
+  TDB_LIB_SRC = '''
+  	  lib/dbwrap/dbwrap_open.c
+--- 1,8 ----
+  #!/usr/bin/env python
+  
+  from samba_utils import *
+! import samba_version, samba3, sys
+! host_os = sys.platform
+  
+  TDB_LIB_SRC = '''
+  	  lib/dbwrap/dbwrap_open.c
+***************
+*** 654,660 ****
+                      vnum='0',
+                      vars=locals())
+  
+! bld.SAMBA3_LIBRARY('nss_wins',
+                    source=WINBIND_WINS_NSS_SRC,
+                    deps='''param libsmb LIBTSOCKET''',
+                    realname='libnss_wins.so.2',
+--- 655,670 ----
+                      vnum='0',
+                      vars=locals())
+  
+! if (host_os.rfind('freebsd') > -1):
+!         # FreeBSD winbind client is implemented as a wrapper around
+!         # the Linux version.
+!         bld.SAMBA3_LIBRARY('nss_wins',
+!                   source=' '.join([WINBIND_WINS_NSS_SRC, '../nsswitch/wins_freebsd.c']),
+!                   deps='''param libsmb LIBTSOCKET''',
+!                   realname='nss_wins.so.1',
+!                   vnum='1')
+! else:
+!         bld.SAMBA3_LIBRARY('nss_wins',
+                    source=WINBIND_WINS_NSS_SRC,
+                    deps='''param libsmb LIBTSOCKET''',
+                    realname='libnss_wins.so.2',
+***************
+*** 980,985 ****
+--- 990,996 ----
+                      ccan-hash
+                      NDR_SMB_ACL
+                      netapi
++ 		    inotify
+  		    NDR_IOCTL
+                      ''' + bld.env['dmapi_lib'],
+                      private_library=True,
+***************
+*** 1613,1619 ****
+  
+  bld.SAMBA3_PYTHON('pylibsmb',
+                    source='libsmb/pylibsmb.c',
+!                   deps='smbclient samba-credentials',
+                    realname='samba/samba3/libsmb_samba_internal.so'
+                    )
+  
+--- 1624,1630 ----
+  
+  bld.SAMBA3_PYTHON('pylibsmb',
+                    source='libsmb/pylibsmb.c',
+!                   deps='smbclient samba-credentials libsmb errors',
+                    realname='samba/samba3/libsmb_samba_internal.so'
+                    )
+  
diff -ruN samba4.orig/files/samba4.in samba4/files/samba4.in
--- samba4.orig/files/samba4.in	2013-12-17 01:39:55.000000000 -0600
+++ samba4/files/samba4.in	2014-01-12 11:08:34.000000000 -0600
@@ -16,7 +16,11 @@
 # Configuration file can be set with:
 #samba4_config="%%SAMBA4_CONFDIR%%/%%SAMBA4_CONFIG%%"
 #
-
+# You can disable/enable any of the Samba daemons by specifying:
+#nmbd_enable="NO"
+#smbd_enable="NO"
+%%WINBIND%%# You need to enable winbindd separately, by adding:
+%%WINBIND%%#winbindd_enable="YES"
 . /etc/rc.subr
 
 name="samba4"
@@ -30,7 +34,16 @@
 samba4_config_default="%%SAMBA4_CONFDIR%%/%%SAMBA4_CONFIG%%"
 samba4_config=${samba4_config=${samba4_config_default}}
 samba4_configfile_arg=${samba4_config:+--configfile="${samba4_config}"}			#"
-testparm_command="%%PREFIX%%/bin/samba-tool testparm --suppress-prompt --verbose ${samba4_configfile_arg}"
+testparm_command="/usr/local/bin/samba-tool testparm --suppress-prompt --verbose ${samba4_configfile_arg}"
+samba_daemons="nmbd smbd"
+%%WINBIND%%samba_daemons="${samba_daemons} winbindd"
+
+# Custom commands
+extra_commands="reload status"
+start_cmd="samba4_cmd"
+stop_cmd="samba4_cmd"
+status_cmd="samba4_cmd"
+rcvar_cmd="samba4_rcvar_cmd"
 # Fetch parameters from configuration file
 samba4_role=$(${testparm_command} --parameter-name='server role' 2>/dev/null)
 samba4_lockdir=$(${testparm_command} --parameter-name='lock directory' 2>/dev/null)
@@ -62,10 +75,120 @@
     if [ ! -d "${samba4_piddir}" -a ! -e "${samba4_piddir}" ]; then
 	install -m 0755 -d "${samba4_piddir}"
     fi
-    # Remove smbd.pid before starting up samba(needed for s3fs)
-    if [ -e "${samba4_piddir}/smbd.pid" ] ; then
-	rm -f "${samba4_piddir}/smbd.pid"
+}
+
+samba_start_precmd() {
+    # Make sure rundir exists
+    if [ ! -d "%%SAMBA4_RUNDIR%%" -a ! -e "%%SAMBA4_RUNDIR%%" ]; then
+        install -m 0755 -d "%%SAMBA4_RUNDIR%%"
+    fi
+    # XXX: Never delete winbindd_idmap, winbindd_cache and group_mapping
+    if [ -n "${samba_lockdir}" -a -d "${samba_lockdir}" ]; then
+        echo -n "Removing stale Samba tdb files: "
+        for file in brlock.tdb browse.dat connections.tdb gencache.tdb \
+                    locking.tdb messages.tdb namelist.debug sessionid.tdb \
+                    unexpected.tdb
+        do
+            rm "${samba_lockdir}/${file}" </dev/null 2>/dev/null && echo -n '.'
+        done
+        echo " done"
     fi
 }
 
+samba4_rcvar_cmd() {
+    local name rcvar
+    rcvar=${name}_enable
+    # Prevent recursive calling
+    unset "${rc_arg}_cmd" "${rc_arg}_precmd" "${rc_arg}_postcmd"
+    # Check master variable
+    run_rc_command "${_rc_prefix}${rc_arg}" ${rc_extra_args}
+    # Check dependent variables
+    for name in ${samba_daemons}; do
+        # XXX
+        rcvars=''; v=''
+        rcvar=${name}_enable
+        run_rc_command "${_rc_prefix}${rc_arg}" ${rc_extra_args}
+    done
+}
+
+samba4_config_init() {
+    local name
+    # Load configuration
+    load_rc_config "${name}"
+    for name in ${samba_daemons}; do
+        load_rc_config "${name}"
+    done
+    # Location of the config
+    samba_config=${samba_config="${samba_config_default}"} #"
+    # XXX: Hack to work around name change of pid file with non-default config
+    if [ -n "${samba_config}" -a "${samba_config}" != "${samba_config_default}" ]; then
+        pid_extra="-$(basename "${samba_config}")"
+    fi
+    # Defaults
+    samba_enable=${samba_enable:=NO}
+    # Setup dependent variables
+    if [ -n "${rcvar}" ] && checkyesno "${rcvar}"; then
+        nmbd_enable=${nmbd_enable=YES}
+        smbd_enable=${smbd_enable=YES}
+    fi
+    nmbd_enable=${nmbd_enable:=NO}
+    smbd_enable=${smbd_enable:=NO}
+%%WINBIND%%    # Winbindd
+%%WINBIND%%    if [ -z "${winbind_enable}" ]; then
+%%WINBIND%%     samba_idmap=$(${samba_parm} 'idmap uid' "${samba_config}" 2>/dev/null)
+%%WINBIND%%     # Check that winbindd is actually configured
+%%WINBIND%%     if [ -n "${samba_idmap}" ]; then
+%%WINBIND%%             winbindd_enable="YES"
+%%WINBIND%%     fi
+%%WINBIND%%     winbindd_enable=${winbindd_enable:=NO}
+%%WINBIND%%    fi
+}
+
+samba4_cmd() {
+    local name rcvar rcvars v command pidfile samba_daemons result force_run
+    # Prevent recursive calling
+    unset "${rc_arg}_cmd" "${rc_arg}_precmd" "${rc_arg}_postcmd"
+    # Hack to check if the server role is a domain controller
+    if [ "${samba4_role}" = "active directory domain controller" ]; then
+    samba_daemons="samba"
+    samba_flags=${samba_flags="-D"}
+    fi
+    # Stop processes in the reverse order
+    if [ "${rc_arg}" = "stop" ] ; then
+        samba_daemons=$(reverse_list ${samba_daemons})
+    fi
+    # Ignore rcvar and run command
+    if [ -n "${_rc_prefix}" -a "${_rc_prefix}" = "one" ] || [ -n "${rc_force}" ] || [ -n "${rc_fast}" ]; then
+        force_run=yes
+    fi
+    # Assume success
+    result=0
+    # Apply to all daemons
+    for name in ${samba_daemons}; do
+        # XXX
+        rcvars=''; v=''
+        rcvar=${name}_enable
+        command="%%PREFIX%%/sbin/${name}"
+        pidfile="%%SAMBA4_RUNDIR%%/${name}${pid_extra}.pid"
+        # Daemon should be enabled and running
+        if ( [ -n "${rcvar}" ] && checkyesno "${rcvar}" ) || [ -n "$force_run" ]; then
+            run_rc_command "${_rc_prefix}${rc_arg}" ${rc_extra_args}
+            # If any of the commands failed, take it as a global result
+            result=$((${result} || $?))
+        fi
+    done
+    return ${result}
+}
+
+# Load configuration variables
+samba4_config_init
+# Common flags
+command_args=${samba_config:+-s "${samba_config}"} #"
+nmbd_flags=${nmbd_flags="-D"}
+smbd_flags=${smbd_flags="-D"}
+%%WINBIND%%winbindd_flags=${winbindd_flags=''}
+# Requirements
+required_files="${samba_config}"
+required_dirs="${samba_lockdir}"
+#
 run_rc_command "$1"
diff -ruN samba4.orig/pkg-plist samba4/pkg-plist
--- samba4.orig/pkg-plist	2013-12-17 01:39:55.000000000 -0600
+++ samba4/pkg-plist	2014-01-12 11:08:34.000000000 -0600
@@ -41,7 +41,6 @@
 sbin/samba_spnupdate
 sbin/samba_upgradedns
 sbin/smbd
-%%SWAT%%sbin/swat
 %%WINBIND%%sbin/winbindd
 include/samba4/charset.h
 include/samba4/core/doserr.h
@@ -209,10 +208,10 @@
 lib/libwbclient.so
 lib/libwbclient.so.0
 lib/mit_samba.so
-lib/nss_winbind.so.1
+%%WINBIND%%lib/nss_winbind.so.1
 lib/nss_wins.so.1
 %%SMBPASS%%lib/pam_smbpass.so
-lib/pam_winbind.so
+%%WINBIND%%lib/pam_winbind.so
 lib/winbind_krb5_locator.so
 lib/samba/libCHARSET3.so
 lib/samba/libHDB_SAMBA4.so
@@ -274,6 +273,7 @@
 lib/samba/libnetif.so
 lib/samba/libnpa_tstream.so
 lib/samba/libnss_info.so
+lib/samba/libntdb.so.0
 lib/samba/libntvfs.so
 lib/samba/libpac.so
 lib/samba/libpopt_samba3.so
@@ -307,7 +307,8 @@
 lib/samba/libutil_reg.so
 lib/samba/libutil_setid.so
 lib/samba/libutil_tdb.so
-lib/samba/libwinbind-client.so
+lib/samba/libutil_ntdb.so
+%%WINBIND%%lib/samba/libwinbind-client.so
 lib/samba/libwind-samba4.so.0
 lib/samba/libxattr_tdb.so
 %%LDAP%%lib/samba/libsmbldaphelper.so
@@ -382,7 +383,7 @@
 lib/shared-modules/service/s3fs.so
 lib/shared-modules/service/smb.so
 lib/shared-modules/service/web.so
-lib/shared-modules/service/winbind.so
+%%WINBIND%%lib/shared-modules/service/winbind.so
 lib/shared-modules/service/wrepl.so
 lib/shared-modules/vfs/acl_tdb.so
 lib/shared-modules/vfs/acl_xattr.so
@@ -636,7 +637,6 @@
 %%PYTHON_SITELIBDIR%%/samba/external/testtools/deferredruntest.py
 %%PYTHON_SITELIBDIR%%/samba/external/testtools/distutilscmd.py
 %%PYTHON_SITELIBDIR%%/samba/external/testtools/helpers.py
-%%PYTHON_SITELIBDIR%%/samba/external/testtools/matchers.py
 %%PYTHON_SITELIBDIR%%/samba/external/testtools/monkey.py
 %%PYTHON_SITELIBDIR%%/samba/external/testtools/run.py
 %%PYTHON_SITELIBDIR%%/samba/external/testtools/runtest.py
@@ -653,7 +653,6 @@
 %%PYTHON_SITELIBDIR%%/samba/external/testtools/tests/test_distutilscmd.py
 %%PYTHON_SITELIBDIR%%/samba/external/testtools/tests/test_fixturesupport.py
 %%PYTHON_SITELIBDIR%%/samba/external/testtools/tests/test_helpers.py
-%%PYTHON_SITELIBDIR%%/samba/external/testtools/tests/test_matchers.py
 %%PYTHON_SITELIBDIR%%/samba/external/testtools/tests/test_monkey.py
 %%PYTHON_SITELIBDIR%%/samba/external/testtools/tests/test_run.py
 %%PYTHON_SITELIBDIR%%/samba/external/testtools/tests/test_runtest.py
@@ -778,6 +777,7 @@
 %%PYTHON_SITELIBDIR%%/samba/xattr.py
 %%PYTHON_SITELIBDIR%%/samba/xattr_native.so
 %%PYTHON_SITELIBDIR%%/samba/xattr_tdb.so
+%%PYTHON_SITELIBDIR%%/ntdb.so
 @unexec find %D/%%PYTHON_SITELIBDIR%%/samba -name '*.py[co]' -delete >/dev/null 2>&1
 @dirrm %%PYTHON_SITELIBDIR%%/samba/web_server
 @dirrm %%PYTHON_SITELIBDIR%%/samba/tests/samba_tool
@@ -801,17 +801,7 @@
 @dirrm %%PYTHON_SITELIBDIR%%/samba
 @dirrmtry %%PYTHON_SITELIBDIR%%
 @dirrmtry %%PYTHON_LIBDIR%%
-%%DATADIR%%/codepages/de.msg
-%%DATADIR%%/codepages/en.msg
-%%DATADIR%%/codepages/fi.msg
-%%DATADIR%%/codepages/fr.msg
-%%DATADIR%%/codepages/it.msg
-%%DATADIR%%/codepages/ja.msg
 %%DATADIR%%/codepages/lowcase.dat
-%%DATADIR%%/codepages/nl.msg
-%%DATADIR%%/codepages/pl.msg
-%%DATADIR%%/codepages/ru.msg
-%%DATADIR%%/codepages/tr.msg
 %%DATADIR%%/codepages/upcase.dat
 %%DATADIR%%/codepages/valid.dat
 %%DATADIR%%/setup/DB_CONFIG
@@ -904,54 +894,6 @@
 %%DATADIR%%/setup/slapd.conf
 %%DATADIR%%/setup/spn_update_list
 %%DATADIR%%/setup/ypServ30.ldif
-%%DATADIR%%/swat/help/welcome-no-samba-doc.html
-%%DATADIR%%/swat/help/welcome.html
-%%DATADIR%%/swat/images/globals.gif
-%%DATADIR%%/swat/images/home.gif
-%%DATADIR%%/swat/images/passwd.gif
-%%DATADIR%%/swat/images/printers.gif
-%%DATADIR%%/swat/images/samba.gif
-%%DATADIR%%/swat/images/shares.gif
-%%DATADIR%%/swat/images/status.gif
-%%DATADIR%%/swat/images/viewconfig.gif
-%%DATADIR%%/swat/images/wizard.gif
-%%DATADIR%%/swat/include/footer.html
-%%DATADIR%%/swat/include/header.html
-%%DATADIR%%/swat/lang/ja/help/welcome.html
-%%DATADIR%%/swat/lang/ru/help/welcome-no-samba-doc.html
-%%DATADIR%%/swat/lang/ru/help/welcome.html
-%%DATADIR%%/swat/lang/ru/images/globals.gif
-%%DATADIR%%/swat/lang/ru/images/home.gif
-%%DATADIR%%/swat/lang/ru/images/passwd.gif
-%%DATADIR%%/swat/lang/ru/images/printers.gif
-%%DATADIR%%/swat/lang/ru/images/shares.gif
-%%DATADIR%%/swat/lang/ru/images/status.gif
-%%DATADIR%%/swat/lang/ru/images/viewconfig.gif
-%%DATADIR%%/swat/lang/ru/images/wizard.gif
-%%DATADIR%%/swat/lang/ru/include/header.html
-%%DATADIR%%/swat/lang/tr/help/welcome.html
-%%DATADIR%%/swat/lang/tr/images/globals.gif
-%%DATADIR%%/swat/lang/tr/images/home.gif
-%%DATADIR%%/swat/lang/tr/images/passwd.gif
-%%DATADIR%%/swat/lang/tr/images/printers.gif
-%%DATADIR%%/swat/lang/tr/images/samba.gif
-%%DATADIR%%/swat/lang/tr/images/shares.gif
-%%DATADIR%%/swat/lang/tr/images/status.gif
-%%DATADIR%%/swat/lang/tr/images/viewconfig.gif
-@dirrm %%DATADIR%%/swat/lang/tr/images
-@dirrm %%DATADIR%%/swat/lang/tr/help
-@dirrm %%DATADIR%%/swat/lang/tr
-@dirrm %%DATADIR%%/swat/lang/ru/include
-@dirrm %%DATADIR%%/swat/lang/ru/images
-@dirrm %%DATADIR%%/swat/lang/ru/help
-@dirrm %%DATADIR%%/swat/lang/ru
-@dirrm %%DATADIR%%/swat/lang/ja/help
-@dirrm %%DATADIR%%/swat/lang/ja
-@dirrm %%DATADIR%%/swat/lang
-@dirrm %%DATADIR%%/swat/include
-@dirrm %%DATADIR%%/swat/images
-@dirrm %%DATADIR%%/swat/help
-@dirrm %%DATADIR%%/swat
 @dirrm %%DATADIR%%/setup/display-specifiers
 @dirrm %%DATADIR%%/setup/ad-schema
 @dirrm %%DATADIR%%/setup
@@ -1014,7 +956,6 @@
 man/man8/smbpasswd.8.gz
 man/man8/smbspool.8.gz
 man/man8/smbta-util.8.gz
-man/man8/swat.8.gz
 man/man8/vfs_acl_tdb.8.gz
 man/man8/vfs_acl_xattr.8.gz
 man/man8/vfs_aio_fork.8.gz


>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201401121853.s0CIr1XZ021588>