aboutsummaryrefslogtreecommitdiffstats
path: root/net/samba4
diff options
context:
space:
mode:
authorTimur I. Bakeyev <timur@FreeBSD.org>2014-04-21 07:53:54 +0800
committerTimur I. Bakeyev <timur@FreeBSD.org>2014-04-21 07:53:54 +0800
commite0582b0a563c0b93043f47e20366f5f48437605a (patch)
tree38d2ea2d71cccf6202b3d99917f6ede0f13921db /net/samba4
parente58cdfad2027226c15de6ad3508575f0dc3095c4 (diff)
downloadfreebsd-ports-gnome-e0582b0a563c0b93043f47e20366f5f48437605a.tar.gz
freebsd-ports-gnome-e0582b0a563c0b93043f47e20366f5f48437605a.tar.zst
freebsd-ports-gnome-e0582b0a563c0b93043f47e20366f5f48437605a.zip
Update Samba4 to the newer version. Sync Makefile and structure with Samba41.
Diffstat (limited to 'net/samba4')
-rw-r--r--net/samba4/Makefile143
-rw-r--r--net/samba4/distinfo4
-rw-r--r--net/samba4/files/README.FreeBSD.in4
-rw-r--r--net/samba4/files/patch-buildtools__wafadmin__Tools__config_c.py22
-rw-r--r--net/samba4/files/pkg-install.in35
-rw-r--r--net/samba4/files/pkg-message.in2
-rw-r--r--net/samba4/files/samba4.in71
-rw-r--r--net/samba4/files/samba_server.in199
8 files changed, 305 insertions, 175 deletions
diff --git a/net/samba4/Makefile b/net/samba4/Makefile
index 0613031fb277..2c2f24c0d9e9 100644
--- a/net/samba4/Makefile
+++ b/net/samba4/Makefile
@@ -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 server and client for UNIX
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}/sysutils/libsunacl
# 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_LOGDIR}" \
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 idmap_autorid.8 idmap_hash.8 \
PORTDOCS= README.FreeBSD
+CONFIGURE_TARGET= configure
ALL_TARGET= build
INSTALL_TARGET= install
@@ -450,15 +444,6 @@ IGNORE_NONTHREAD_PYTHON=needs port lang/python${PYTHON_SUFFIX} to be build with
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
diff --git a/net/samba4/distinfo b/net/samba4/distinfo
index f18957f86e37..0dbf2d9af096 100644
--- a/net/samba4/distinfo
+++ b/net/samba4/distinfo
@@ -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
diff --git a/net/samba4/files/README.FreeBSD.in b/net/samba4/files/README.FreeBSD.in
index b97ed8e37fd6..b40faa7ceed2 100644
--- a/net/samba4/files/README.FreeBSD.in
+++ b/net/samba4/files/README.FreeBSD.in
@@ -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.
diff --git a/net/samba4/files/patch-buildtools__wafadmin__Tools__config_c.py b/net/samba4/files/patch-buildtools__wafadmin__Tools__config_c.py
new file mode 100644
index 000000000000..3015402eace6
--- /dev/null
+++ b/net/samba4/files/patch-buildtools__wafadmin__Tools__config_c.py
@@ -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'):
diff --git a/net/samba4/files/pkg-install.in b/net/samba4/files/pkg-install.in
deleted file mode 100644
index 2097c3f90a51..000000000000
--- a/net/samba4/files/pkg-install.in
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/bin/sh
-#
-PATH=/bin:/usr/sbin:/usr/bin:/usr/sbin
-
-SAMBA4_LOGDIR="%%SAMBA4_LOGDIR%%"
-SAMBA4_RUNDIR="%%SAMBA4_RUNDIR%%"
-SAMBA4_LOCKDIR="%%SAMBA4_LOCKDIR%%"
-SAMBA4_MODULEDIR="%%SAMBA4_MODULEDIR%%"
-SAMBA4_PRIVATEDIR="%%SAMBA4_PRIVATEDIR%%"
-SAMBA4_OWNER=root
-SAMBA4_GROUP=wheel
-INSTALL_DATA="install -c -m 0444"
-INSTALL_DIR="install -d -m 0755"
-
-post-install() {
- if [ $(id -u) -eq 0 ]; then
- INSTALL_DATA="${INSTALL_DATA} -o ${SAMBA4_OWNER} -g ${SAMBA4_GROUP}"
- INSTALL_DIR="${INSTALL_DIR} -o ${SAMBA4_OWNER} -g ${SAMBA4_GROUP}"
- fi
- ${INSTALL_DIR} ${STAGEDIR}${SAMBA4_LOGDIR}
- ${INSTALL_DIR} ${STAGEDIR}${SAMBA4_RUNDIR}
- ${INSTALL_DIR} ${STAGEDIR}${SAMBA4_LOCKDIR}
- ${INSTALL_DIR} ${STAGEDIR}${SAMBA4_MODULEDIR}
- ${INSTALL_DIR} ${STAGEDIR}${SAMBA4_PRIVATEDIR}
- for dir in auth bind9 gensec gpext idmap ldb nss_info pdb perfcount \
- process_model service vfs; do
- ${INSTALL_DIR} "${STAGEDIR}${SAMBA4_MODULEDIR}/${dir}"
- done
-}
-
-case $2 in
- POST-INSTALL)
- post-install
- ;;
-esac
diff --git a/net/samba4/files/pkg-message.in b/net/samba4/files/pkg-message.in
index 19d1d66110b0..6cdc13d1753d 100644
--- a/net/samba4/files/pkg-message.in
+++ b/net/samba4/files/pkg-message.in
@@ -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%%
diff --git a/net/samba4/files/samba4.in b/net/samba4/files/samba4.in
deleted file mode 100644
index ffdbbe8c9565..000000000000
--- a/net/samba4/files/samba4.in
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/bin/sh
-#
-# $FreeBSD$
-#
-
-# PROVIDE: samba4
-# REQUIRE: NETWORKING SERVERS DAEMON ldconfig resolv ntpd
-# BEFORE: LOGIN
-# KEYWORD: shutdown
-#
-# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
-# to enable this service:
-#
-#samba4_enable="YES"
-#
-# Configuration file can be set with:
-#samba4_config="%%SAMBA4_CONFDIR%%/%%SAMBA4_CONFIG%%"
-#
-
-. /etc/rc.subr
-
-name="samba4"
-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}"
-
-samba4_checkconfig() {
- echo -n "Performing sanity check on Samba configuration: "
- if ${testparm_command} >/dev/null 2>&1; then
- echo "OK"
- else
- echo "FAILED"
- return 1
- fi
-}
-
-samba4_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}"
- fi
- # Remove smbd.pid before starting up samba(needed for s3fs)
- if [ -e "${samba4_piddir}/smbd.pid" ] ; then
- rm -f "${samba4_piddir}/smbd.pid"
- fi
-}
-
-run_rc_command "$1"
diff --git a/net/samba4/files/samba_server.in b/net/samba4/files/samba_server.in
new file mode 100644
index 000000000000..b1556370bef6
--- /dev/null
+++ b/net/samba4/files/samba_server.in
@@ -0,0 +1,199 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+# PROVIDE: samba_server
+# REQUIRE: NETWORKING SERVERS DAEMON ldconfig resolv ntpd
+# BEFORE: LOGIN
+# KEYWORD: shutdown
+#
+# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
+# to enable this service:
+#
+#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:
+#samba_server_config="%%SAMBA4_CONFDIR%%/%%SAMBA4_CONFIG%%"
+#
+
+. /etc/rc.subr
+
+name="samba_server"
+rcvar=${name}_enable
+
+# Defaults
+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"
+
+
+samba_server_checkconfig() {
+ echo -n "Performing sanity check on Samba configuration: "
+ if ${testparm_command} >/dev/null 2>&1; then
+ echo "OK"
+ else
+ echo "FAILED"
+ return 1
+ fi
+}
+
+samba_server_prestart() {
+ # Make sure we have our RUNDIR, even if it's on a tmpfs
+ 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
+ # 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"