Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 20 Apr 2014 23:53:55 +0000 (UTC)
From:      "Timur I. Bakeyev" <timur@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r351660 - in head/net/samba4: . files
Message-ID:  <201404202353.s3KNrt0k010359@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: timur
Date: Sun Apr 20 23:53:54 2014
New Revision: 351660
URL: http://svnweb.freebsd.org/changeset/ports/351660
QAT: https://qat.redports.org/buildarchive/r351660/

Log:
  Update Samba4 to the newer version. Sync Makefile and structure with Samba41.

Added:
  head/net/samba4/files/patch-buildtools__wafadmin__Tools__config_c.py   (contents, props changed)
  head/net/samba4/files/samba_server.in
     - copied, changed from r351460, head/net/samba4/files/samba4.in
Deleted:
  head/net/samba4/files/pkg-install.in
  head/net/samba4/files/samba4.in
Modified:
  head/net/samba4/Makefile
  head/net/samba4/distinfo
  head/net/samba4/files/README.FreeBSD.in
  head/net/samba4/files/pkg-message.in

Modified: head/net/samba4/Makefile
==============================================================================
--- head/net/samba4/Makefile	Sun Apr 20 23:51:40 2014	(r351659)
+++ head/net/samba4/Makefile	Sun Apr 20 23:53:54 2014	(r351660)
@@ -1,7 +1,7 @@
 # Created by: timur@FreeBSD.org
 # $FreeBSD$
 
-PORTNAME?=		${SAMBA4_PORTNAME}
+PORTNAME?=		${SAMBA4_BASENAME}4
 PORTVERSION?=		${SAMBA4_VERSION}
 PORTREVISION?=		0
 CATEGORIES?=		net
@@ -14,11 +14,13 @@ COMMENT?=		A free SMB/CIFS and AD/DC ser
 
 LICENSE=		GPLv3
 
-CONFLICTS?=		*samba3[2-6]-3.*
+CONFLICTS?=		*samba3[2-6]-3.* samba41-4.1.*
+
+SAMBA4_PORT=		${PORTNAME}
 
 SAMBA4_BASENAME=	samba
 SAMBA4_PORTNAME=	${SAMBA4_BASENAME}4
-SAMBA4_VERSION=		4.0.16
+SAMBA4_VERSION=		4.0.17
 SAMBA4_DISTNAME=	${SAMBA4_BASENAME}-${SAMBA4_VERSION:S|.p|pre|:S|.r|rc|:S|.t|tp|:S|.a|alpha|}
 
 WRKSRC?=		${WRKDIR}/${DISTNAME}
@@ -56,23 +58,18 @@ CONFIGURE_ARGS+=	--prefix="${PREFIX}" \
 			--with-cachedir="${SAMBA4_LOCKDIR}" \
 			--with-privatedir="${SAMBA4_PRIVATEDIR}" \
 			--with-logfilebase="${SAMBA4_LOGDIR}"
-
+# Support staging
 DESTDIRNAME=		--destdir
-
-WAF_TOOL=		buildtools/bin/waf
-HAS_CONFIGURE=		yes
-CONFIGURE_SCRIPT=	${WAF_TOOL} configure
-CONFIGURE_LOG=		bin/config.log
 # Flags
 CONFIGURE_ENV+=		PTHREAD_CFLAGS="${PTHREAD_CFLAGS}" \
 			PTHREAD_LDFLAGS="${PTHREAD_LIBS}"
 
-USE_PYTHON_BUILD=	2
-
-USE_PYTHON=		yes
-USES=			compiler perl5 pkgconfig iconv
+USE_PYTHON=		2
+USES=			shebangfix compiler perl5 pkgconfig iconv readline
 USE_PERL5=		build
 USE_LDCONFIG=		${SAMBA4_LIBDIR}
+WAF_TOOL=		buildtools/bin/waf
+CONFIGURE_LOG=		bin/config.log
 
 PKGCONFIGDIR?=		${PREFIX}/libdata/pkgconfig
 PLIST_SUB+=		PKGCONFIGDIR=${PKGCONFIGDIR:S;${PREFIX}/;;}
@@ -95,8 +92,8 @@ LIB_DEPENDS+=		libsunacl.so:${PORTSDIR}/
 # IDL compiler
 BUILD_DEPENDS+=		p5-Parse-Pidl>=4.0.0:${PORTSDIR}/devel/p5-Parse-Pidl
 # talloc
-BUILD_DEPENDS+=		talloc>=2.0.8:${PORTSDIR}/devel/talloc
-RUN_DEPENDS+=		talloc>=2.0.8:${PORTSDIR}/devel/talloc
+BUILD_DEPENDS+=		talloc>=2.1.0:${PORTSDIR}/devel/talloc
+RUN_DEPENDS+=		talloc>=2.1.0:${PORTSDIR}/devel/talloc
 SAMBA4_BUNDLED_LIBS+=	!talloc
 # tevent
 BUILD_DEPENDS+=		tevent>=0.9.18:${PORTSDIR}/devel/tevent
@@ -116,7 +113,7 @@ SAMBA4_BUNDLED_LIBS+=	com_err
 # Options
 OPTIONS_DEFINE=		ACL_SUPPORT ADS AIO_SUPPORT CUPS DEBUG \
 			DNSUPDATE FAM_SUPPORT LDAP PAM_SMBPASS \
-			PTHREADPOOL QUOTAS SWAT SYSLOG UTMP WINBIND
+			PTHREADPOOL QUOTAS SWAT SYSLOG UTMP
 
 OPTIONS_DEFAULT:=	${OPTIONS_DEFINE}
 
@@ -132,9 +129,6 @@ PTHREADPOOL_DESC=	Pthread pool
 QUOTAS_DESC=		Disk quota support
 SWAT_DESC=		SWAT WebGUI
 UTMP_DESC=		UTMP accounting support
-WINBIND_DESC=		WinBIND support
-
-FAM_SUPPORT_USES=	fam
 ##############################################################################
 OPTIONS_DEFINE+=	DEVELOPER MANPAGES EXP_MODULES
 
@@ -154,25 +148,15 @@ OPTIONS_DEFAULT+=	AVAHI
 
 .include <bsd.port.options.mk>
 
-# !SAMBA4_SUBPORT
-.endif
-
-.include <bsd.port.pre.mk>
-
-.if !defined(SAMBA4_SUBPORT)
-
 CONFIGURE_ARGS+=	\
 			--with-pam \
 			--with-iconv \
+			--with-winbind \
 			--without-gettext \
 			--with-sendfile-support \
 			--builtin-libraries=smbclient \
 			${ICONV_CONFIGURE_BASE}
 
-# No fancy error messages
-.if ${COMPILER_TYPE} == "clang"
-CFLAGS+=		-fno-color-diagnostics
-.endif
 # for libexecinfo: (so that __builtin_frame_address() finds the top of the stack)
 .if ${ARCH} == "amd64"
 CFLAGS+=		-fno-omit-frame-pointer
@@ -290,6 +274,7 @@ CONFIGURE_ARGS+=	--without-dnsupdate
 
 # https://bugzilla.samba.org/show_bug.cgi?id=9545
 .if ${PORT_OPTIONS:MFAM_SUPPORT}
+USES+=			fam
 CONFIGURE_ARGS+=	--with-fam
 WANT_EXP_MODULES+=	vfs_notify_fam
 SAMBA4_MODULES+=	vfs_notify_fam
@@ -342,14 +327,6 @@ CONFIGURE_ARGS+=	--with-utmp
 CONFIGURE_ARGS+=	--without-utmp
 .endif
 
-.if ${PORT_OPTIONS:MWINBIND}
-CONFIGURE_ARGS+=	--with-winbind
-PLIST_SUB+=		WINBIND=""
-.else
-CONFIGURE_ARGS+=	--without-winbind
-PLIST_SUB+=		WINBIND="@comment "
-.endif
-
 .if defined(SAMBA4_WANT_ADS)
 CONFIGURE_ARGS+=	--with-ads
 .else
@@ -358,6 +335,7 @@ CONFIGURE_ARGS+=	--without-ads
 
 .if defined(SAMBA4_WANT_LDAP)
 USE_OPENLDAP=		yes
+#WANT_OPENLDAP_SASL=	yes
 CONFIGURE_ARGS+=	--with-ldap
 PLIST_SUB+=		LDAP=""
 .else
@@ -365,6 +343,13 @@ CONFIGURE_ARGS+=	--without-ldap
 PLIST_SUB+=		LDAP="@comment "
 .endif
 
+.if ! ${PORT_OPTIONS:MMANPAGES}
+CONFIGURE_ENV+=		XSLTPROC="true"
+.else
+BUILD_DEPENDS+=		${LOCALBASE}/share/xsl/docbook/manpages/docbook.xsl:${PORTSDIR}/textproc/docbook-xsl \
+			xsltproc:${PORTSDIR}/textproc/libxslt
+.endif
+
 .if defined(WANT_EXP_MODULES) && !empty(WANT_EXP_MODULES)
 SAMBA4_MODULES+=	${WANT_EXP_MODULES}
 CONFIGURE_ARGS+=	--with-shared-modules="${WANT_EXP_MODULES:Q:C|(\\\\ )+|,|g:S|\\||g}"
@@ -380,13 +365,13 @@ PLIST_REINPLACE+=	${m}
 PLIST_REINPLACE_${m:U}=	s|^@comment ${m} ||g
 .endfor
 ##############################################################################
-.if ! ${PORT_OPTIONS:MMANPAGES}
-CONFIGURE_ENV+=		XSLTPROC="true"
-.else
-BUILD_DEPENDS+=		${LOCALBASE}/share/xsl/docbook/manpages/docbook.xsl:${PORTSDIR}/textproc/docbook-xsl \
-			xsltproc:${PORTSDIR}/textproc/libxslt
+# !SAMBA4_SUBPORT
 .endif
 
+.include <bsd.port.pre.mk>
+
+.if !defined(SAMBA4_SUBPORT)
+
 SAMBA4_SUB=		SAMBA4_LOGDIR="${SAMBA4_LOGDIR}" \
 			SAMBA4_RUNDIR="${SAMBA4_RUNDIR}" \
 			SAMBA4_LOCKDIR="${SAMBA4_LOCKDIR}" \
@@ -398,9 +383,17 @@ SAMBA4_SUB=		SAMBA4_LOGDIR="${SAMBA4_LOG
 PLIST_SUB+=		${SAMBA4_SUB}
 SUB_LIST+=		${SAMBA4_SUB}
 
-USE_RC_SUBR=		${SAMBA4_PORTNAME}
-SUB_FILES=		pkg-install pkg-message README.FreeBSD
-
+USE_RC_SUBR=		samba_server
+SUB_FILES=		pkg-message README.FreeBSD
+# Make sure that the right version of Python is used by the tools
+# https://bugzilla.samba.org/show_bug.cgi?id=7305
+python_CMD=		${PYTHON_CMD}
+python_OLD_CMD=		${SETENV} python
+SHEBANG_FILES=		${PATCH_WRKSRC}/source4/scripting/bin/*
+# No fancy color error messages
+.if ${COMPILER_TYPE} == "clang"
+CFLAGS+=		-fno-color-diagnostics
+.endif
 CONFIGURE_ENV+=		NOCOLOR=yes
 MAKE_ENV+=		NOCOLOR=yes
 
@@ -442,6 +435,7 @@ SAMBA_MAN8+=		eventlogadm.8 idmap_ad.8 i
 
 PORTDOCS=		README.FreeBSD
 
+CONFIGURE_TARGET=	configure
 ALL_TARGET=		build
 INSTALL_TARGET=		install
 
@@ -450,15 +444,6 @@ IGNORE_NONTHREAD_PYTHON=needs port lang/
 post-extract:
 			@${RM} -rf ${WRKSRC}/pidl
 
-# Use threading (or multiprocessing) but not thread (renamed in python 3+).
-pre-configure:
-			@if ! ${PYTHON_CMD} -c "import multiprocessing;" 2>/dev/null; then \
-				${ECHO_CMD}; \
-				${ECHO_MSG} "===>  ${PKGNAME} "${IGNORE_NONTHREAD_PYTHON:Q}.; \
-				${ECHO_CMD}; \
-				${FALSE}; \
-			fi
-
 post-patch:
 			@${REINPLACE_CMD} -e 's|$${PKGCONFIGDIR}|${PKGCONFIGDIR}|g' \
 				${PATCH_WRKSRC}/buildtools/wafsamba/pkgconfig.py
@@ -468,13 +453,40 @@ post-patch:
 			@${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
-# 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 \
-				${REINPLACE_CMD} -e '1,1 s|.*python.*|#!${PYTHON_CMD}|' $${f}; \
-			done
+				${PATCH_WRKSRC}/dynconfig/wscript
+
+# Use threading (or multiprocessing) but not thread (renamed in python 3+).
+pre-configure:
+			@if ! ${PYTHON_CMD} -c "import multiprocessing;" 2>/dev/null; then \
+				${ECHO_CMD}; \
+				${ECHO_MSG} "===>  ${PKGNAME} "${IGNORE_NONTHREAD_PYTHON:Q}.; \
+				${ECHO_CMD}; \
+				${FALSE}; \
+			fi
+
+do-configure:
+			@(cd ${CONFIGURE_WRKSRC} && \
+			    ${SET_LATE_CONFIGURE_ARGS} \
+				if ! ${SETENV} CC="${CC}" CPP="${CPP}" CXX="${CXX}" \
+					CFLAGS="${CFLAGS}" CPPFLAGS="${CPPFLAGS}" CXXFLAGS="${CXXFLAGS}" \
+					LDFLAGS="${LDFLAGS}" \
+					INSTALL="/usr/bin/install -c ${_BINOWNGRP}" \
+					INSTALL_DATA="${INSTALL_DATA}" \
+					INSTALL_LIB="${INSTALL_LIB}" \
+					INSTALL_PROGRAM="${INSTALL_PROGRAM}" \
+					INSTALL_SCRIPT="${INSTALL_SCRIPT}" \
+					${CONFIGURE_ENV} ${PYTHON_CMD} ${CONFIGURE_WRKSRC}/${WAF_TOOL} ${CONFIGURE_ARGS} ${CONFIGURE_TARGET}; then \
+						${ECHO_MSG} "===>  Script \"${CONFIGURE_SCRIPT}\" failed unexpectedly."; \
+						(${ECHO_CMD} ${CONFIGURE_FAIL_MESSAGE}) | ${FMT} 75 79 ; \
+						${FALSE}; \
+				fi)
+
+# XXX: Gross hack to allow build newer Samba while old one is installed.
+# This implies that LINKFLAGS_PYEMBED contains flags which are already
+# used in other parts of LINKFLAGS, namely -L$(LOCALBASE)/lib and -pthread
+post-configure:
+	-${REINPLACE_CMD} -e 's|LINKFLAGS_PYEMBED.*|LINKFLAGS_PYEMBED = []|' \
+		${CONFIGURE_WRKSRC}/bin/c4che/default.cache.py
 
 pre-build:
 .if ! ${PORT_OPTIONS:MMANPAGES}
@@ -521,7 +533,12 @@ post-install:
 			@${LN} -sf smb.conf.5.gz ${STAGEDIR}${PREFIX}/man/man5/smb4.conf.5.gz
 .endif
 # Run post-install script
-			@${SETENV} STAGEDIR=${STAGEDIR} ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL
+.for dir in ${SAMBA4_LOGDIR} ${SAMBA4_RUNDIR} ${SAMBA4_LOCKDIR} ${STAGEDIR}${SAMBA4_MODULEDIR} ${SAMBA4_PRIVATEDIR}
+			@${MKDIR} "${STAGEDIR}${dir}"
+.endfor
+.for dir in auth bind9 gensec gpext idmap ldb nss_info pdb perfcount process_model service vfs
+			@${MKDIR} "${STAGEDIR}${SAMBA4_MODULEDIR}/${dir}"
+.endfor
 
 .if ${PORT_OPTIONS:MDEVELOPER}
 test: build

Modified: head/net/samba4/distinfo
==============================================================================
--- head/net/samba4/distinfo	Sun Apr 20 23:51:40 2014	(r351659)
+++ head/net/samba4/distinfo	Sun Apr 20 23:53:54 2014	(r351660)
@@ -1,2 +1,2 @@
-SHA256 (samba-4.0.16.tar.gz) = 50f45bb2c90fdef958d959b1c6bbac57731238e268301d5fc5e9bf304b62ed15
-SIZE (samba-4.0.16.tar.gz) = 22113747
+SHA256 (samba-4.0.17.tar.gz) = 6775cc093dc1f5b4feec3b47b458b78ad44f14de11f4bc8838b69e86d1ddf6ed
+SIZE (samba-4.0.17.tar.gz) = 22126553

Modified: head/net/samba4/files/README.FreeBSD.in
==============================================================================
--- head/net/samba4/files/README.FreeBSD.in	Sun Apr 20 23:51:40 2014	(r351659)
+++ head/net/samba4/files/README.FreeBSD.in	Sun Apr 20 23:53:54 2014	(r351660)
@@ -68,12 +68,12 @@ option would be to start from scratch.
 %%NSUPDATE%%
 %%NSUPDATE%%      nsupdate command = %%PREFIX%%/bin/samba-nsupdate -g
 %%NSUPDATE%%
-2. Put string 'samba4_enable="YES"' into your /etc/rc.conf.
+2. Put string 'samba_server_enable="YES"' into your /etc/rc.conf.
 
 3. Make sure that your server doesn't run Samba3, OpenLDAP and named.
 Stop them, if necessary.
 
-4. Run '%%PREFIX%%/etc/rc.d/samba4 start' or reboot.
+4. Run '%%PREFIX%%/etc/rc.d/samba_server start' or reboot.
 
 WARNING! This port is still experimental and if you need any asistance,
 please, check archives of samba@lists.samba.org and ask there for help.

Added: head/net/samba4/files/patch-buildtools__wafadmin__Tools__config_c.py
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/net/samba4/files/patch-buildtools__wafadmin__Tools__config_c.py	Sun Apr 20 23:53:54 2014	(r351660)
@@ -0,0 +1,22 @@
+--- buildtools/wafadmin/Tools/config_c.py.orig	2013-06-13 09:21:02.000000000 +0000
++++ buildtools/wafadmin/Tools/config_c.py	2014-03-27 11:46:02.381178536 +0000
+@@ -73,6 +73,19 @@
+ 			app('CCFLAGS_' + uselib, x)
+ 			app('CXXFLAGS_' + uselib, x)
+ 			app('LINKFLAGS_' + uselib, x)
++		#
++		# NOTE on special treatment of -Wl,-R and -Wl,-rpath:
++		#
++		# It is important to not put a library provided RPATH
++		# into the LINKFLAGS but in the RPATH instead, since
++		# the provided LINKFLAGS get prepended to our own internal
++		# RPATH later, and hence can potentially lead to linking
++		# in too old versions of our internal libs.
++		#
++		elif x.startswith('-Wl,-R'):
++			app('RPATH_' + uselib, x[6:])
++		elif x.startswith('-Wl,-rpath,'):
++			app('RPATH_' + uselib, x[11:])
+ 		elif x.startswith('-Wl'):
+ 			app('LINKFLAGS_' + uselib, x)
+ 		elif x.startswith('-m') or x.startswith('-f'):

Modified: head/net/samba4/files/pkg-message.in
==============================================================================
--- head/net/samba4/files/pkg-message.in	Sun Apr 20 23:51:40 2014	(r351659)
+++ head/net/samba4/files/pkg-message.in	Sun Apr 20 23:53:54 2014	(r351660)
@@ -1,7 +1,5 @@
 ===============================================================================
 
-This port is *STILL* experimental, use it at your own risk.
-
 How to start: http://wiki.samba.org/index.php/Samba4/HOWTO
 
 * Your configuration is: %%SAMBA4_CONFDIR%%/%%SAMBA4_CONFIG%%

Copied and modified: head/net/samba4/files/samba_server.in (from r351460, head/net/samba4/files/samba4.in)
==============================================================================
--- head/net/samba4/files/samba4.in	Thu Apr 17 10:31:37 2014	(r351460, copy source)
+++ head/net/samba4/files/samba_server.in	Sun Apr 20 23:53:54 2014	(r351660)
@@ -3,7 +3,7 @@
 # $FreeBSD$
 #
 
-# PROVIDE: samba4
+# PROVIDE: samba_server
 # REQUIRE: NETWORKING SERVERS DAEMON ldconfig resolv ntpd
 # BEFORE: LOGIN
 # KEYWORD: shutdown
@@ -11,43 +11,45 @@
 # Add the following lines to /etc/rc.conf.local or /etc/rc.conf
 # to enable this service:
 #
-#samba4_enable="YES"
+#samba_server_enable="YES"
 #
+# You can disable/enable any of the Samba daemons by specifying:
+#samba_enable="NO"
+#nmbd_enable="NO"
+#smbd_enable="NO"
+# You need to enable winbindd separately, by adding:
+#winbindd_enable="YES"
 # Configuration file can be set with:
-#samba4_config="%%SAMBA4_CONFDIR%%/%%SAMBA4_CONFIG%%"
+#samba_server_config="%%SAMBA4_CONFDIR%%/%%SAMBA4_CONFIG%%"
 #
 
 . /etc/rc.subr
 
-name="samba4"
+name="samba_server"
 rcvar=${name}_enable
 
-load_rc_config "${name}"
-
 # Defaults
-samba4_enable=${samba4_enable:=NO}
-samba4_flags=${samba4_flags=--daemon}
-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}"
-# 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)
-samba4_piddir=$(${testparm_command} --parameter-name='pid directory' 2>/dev/null)
-
-# Runtime options
-start_precmd="samba4_prestart"
-restart_precmd="samba4_checkconfig"
-command_name="samba"
-command="%%PREFIX%%/sbin/${command_name}"
-command_args=${samba4_configfile_arg}
-pidfile="%%SAMBA4_RUNDIR%%/${command_name}.pid"
-# Requirements
-required_files="${samba4_config}"
-required_dirs="${samba4_lockdir}"
+samba_server_config_default="%%SAMBA4_CONFDIR%%/%%SAMBA4_CONFIG%%"
+samba_server_config=${samba_server_config=${samba_server_config_default}}
+samba_server_configfile_arg=${samba_server_config:+--configfile="${samba_server_config}"}			#"
+#testparm_command="%%PREFIX%%/bin/samba-tool testparm --suppress-prompt --verbose ${samba_server_configfile_arg}"
+testparm_command="%%PREFIX%%/bin/testparm --suppress-prompt --verbose ${samba_server_configfile_arg}"
+smbcontrol_command="%%PREFIX%%/bin/smbcontrol"
+
+# Custom commands
+extra_commands="reload status"
+
+start_precmd="samba_server_prestart"
+restart_precmd="samba_server_checkconfig"
+reload_precmd="samba_server_checkconfig"
+start_cmd="samba_server_cmd"
+stop_cmd="samba_server_cmd"
+status_cmd="samba_server_cmd"
+reload_cmd="samba_server_reload_cmd"
+rcvar_cmd="samba_server_rcvar_cmd"
 
-samba4_checkconfig() {
+
+samba_server_checkconfig() {
     echo -n "Performing sanity check on Samba configuration: "
     if ${testparm_command} >/dev/null 2>&1; then
 	echo "OK"
@@ -57,15 +59,141 @@ samba4_checkconfig() {
     fi
 }
 
-samba4_prestart() {
+samba_server_prestart() {
     # Make sure we have our RUNDIR, even if it's on a tmpfs
-    if [ ! -d "${samba4_piddir}" -a ! -e "${samba4_piddir}" ]; then
-	install -m 0755 -d "${samba4_piddir}"
+    if [ ! -d "${samba_server_piddir}" -a ! -e "${samba_server_piddir}" ]; then
+	install -m 0755 -d "${samba_server_piddir}"
+    fi
+#    # Remove smbd.pid before starting up samba(needed for s3fs)
+#    if [ -e "${samba_server_piddir}/smbd.pid" ] ; then
+#	rm -f "${samba_server_piddir}/smbd.pid"
+#    fi
+    samba_server_checkconfig
+}
+
+samba_server_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
+}
+
+samba_server_reload_cmd() {
+    local name rcvar command pidfile force_run
+    # Prevent recursive calling
+    unset "${rc_arg}_cmd" "${rc_arg}_precmd" "${rc_arg}_postcmd"
+    # Ignore rcvar and run command
+    if [ -n "${_rc_prefix}" -a "${_rc_prefix}" = "one" ] || [ -n "${rc_force}" ] || [ -n "${rc_fast}" ]; then
+	force_run=yes
     fi
-    # Remove smbd.pid before starting up samba(needed for s3fs)
-    if [ -e "${samba4_piddir}/smbd.pid" ] ; then
-	rm -f "${samba4_piddir}/smbd.pid"
+    # Apply to all daemons
+    for name in ${samba_daemons}; do
+	rcvar=${name}_enable
+	command="%%PREFIX%%/sbin/${name}"
+	pidfile="${samba_server_piddir}/${name}.pid"
+	# Daemon should be enabled and running
+	if ( [ -n "${rcvar}" ] && checkyesno "${rcvar}" ) || [ -n "$force_run" ]; then
+	    if [ -n "$(check_pidfile "${pidfile}" "${command}")" ]; then
+		debug "reloading ${name} configuration"
+		echo "Reloading ${name}."
+		${smbcontrol_command} "${name}" 'reload-config' ${command_args} >/dev/null 2>&1
+	    fi
+	fi
+    done
+}
+
+samba_server_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"
+    # 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="${samba_server_piddir}/${name}.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}
 }
 
+samba_server_config_init() {
+    local name
+    # Determine what daemons are necessary to run Samba in the current role
+    samba_server_role=$(${testparm_command} --parameter-name='server role' 2>/dev/null)
+    case "${samba_server_role}" in
+	active\ directory\ domain\ controller)
+	    samba_daemons="samba"
+	    ;;
+	auto|*)
+	    samba_daemons="nmbd smbd winbindd"
+	    ;;
+    esac
+    # Load configuration
+    load_rc_config "${name}"
+    for name in ${samba_daemons}; do
+	load_rc_config "${name}"
+    done
+    # Defaults
+    samba_server_enable=${samba_server_enable:=NO}
+    # Setup dependent variables
+    if [ -n "${rcvar}" ] && checkyesno "${rcvar}"; then
+	for name in ${samba_daemons}; do
+	    # Winbindd
+	    if [ "${name}" = "winbindd" ]; then
+		samba_server_idmap=$(${testparm_command} --parameter-name='idmap uid' 2>/dev/null)
+		if [ -n "${samba_server_idmap}" ]; then
+		    winbindd_enable="YES"
+		fi
+	    fi
+	    # Set variable to 'YES' only if it is unset
+	    eval ${name}_enable=\${${name}_enable-YES}
+	    # If variable is empty set it to 'NO'
+	    eval ${name}_enable=\${${name}_enable:-NO}
+	done
+    fi
+}
+
+# Load configuration variables
+samba_server_config_init
+# Fetch parameters from configuration file
+samba_server_lockdir=$(${testparm_command} --parameter-name='lock directory' 2>/dev/null)
+samba_server_lockdir=${samba_server_lockdir=%%SAMBA4_LOCKDIR%%}
+samba_server_piddir=$(${testparm_command} --parameter-name='pid directory' 2>/dev/null)
+samba_server_piddir=${samba_server_piddir=%%SAMBA4_RUNDIR%%}
+# Common flags
+command_args=${samba_server_configfile_arg}
+samba_flags=${samba_flags="--daemon"}
+nmbd_flags=${nmbd_flags="--daemon"}
+smbd_flags=${smbd_flags="--daemon"}
+winbindd_flags=${winbindd_flags="--daemon"}
+# Requirements
+required_files="${samba_server_config}"
+required_dirs="${samba_server_lockdir}"
+
 run_rc_command "$1"



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