diff options
author | shaun <shaun@FreeBSD.org> | 2006-09-19 09:39:21 +0800 |
---|---|---|
committer | shaun <shaun@FreeBSD.org> | 2006-09-19 09:39:21 +0800 |
commit | ef8c0874c40305db61539361754d786a1eba1f0e (patch) | |
tree | 3b6c9dfa10d2e05c641fff5c1ad22e2ca24a402d /net | |
parent | a6974e6b7690479c0e4a73b42ba92fce2bed0448 (diff) | |
download | freebsd-ports-gnome-ef8c0874c40305db61539361754d786a1eba1f0e.tar.gz freebsd-ports-gnome-ef8c0874c40305db61539361754d786a1eba1f0e.tar.zst freebsd-ports-gnome-ef8c0874c40305db61539361754d786a1eba1f0e.zip |
- Maintainer reports: [1]
After recent release of Samba 3.0.23c and corresponding version of
port several problems with it were reported back by the users.
- Fix for the broken OPTIONS menu due overlong line. That addresses PR
ports/103158 and ports/102980
- Fix build on FreeBSD 7. PR ports/102919.
- Several fixes to the rc.d/samba script, as well as a new code.
Should handle 'restart' properly now.
- Remove enforcement of a daemon shutdown during deinstallation due
several requests.
- SAMBA_PRIVATEDIR can now be redefined.
- Warn the user if FAM_SUPPORT is enabled contrary to the selected
OPTIONS. [2]
PR: ports/103170 [1] ports/103276 [2]
Submitted by: Timur I. Bakeyev <timur@gnu.org> (mainainer) [1],
Scot Hetzel <swhetzel@gmail.com> [2]
Approved by: maintainer [2]
Diffstat (limited to 'net')
-rw-r--r-- | net/samba3/Makefile | 22 | ||||
-rw-r--r-- | net/samba3/files/patch-include_includes.h | 16 | ||||
-rw-r--r-- | net/samba3/files/samba.in | 192 |
3 files changed, 138 insertions, 92 deletions
diff --git a/net/samba3/Makefile b/net/samba3/Makefile index 13be83c679f6..113a7d4c8692 100644 --- a/net/samba3/Makefile +++ b/net/samba3/Makefile @@ -1,6 +1,6 @@ # New ports collection makefile for: samba # Date created: 11th Feb 1995 -# Whom: Gary Palmer <gpalmer@FreeBSD.org> +# Whom: Gary Palmer <gpalmer> # # $FreeBSD$ # @@ -36,7 +36,7 @@ SAMBA_SWATDIR= ${PREFIX}/share/swat # DEPRECATED: This is an old location of the private dir SAMBA_PRIVATE?= ${PREFIX}/private SAMBA_CONFDIR?= ${PREFIX}/etc -SAMBA_PRIVATEDIR= ${SAMBA_CONFDIR}/samba +SAMBA_PRIVATEDIR?= ${SAMBA_CONFDIR}/samba SAMBA_CONFIG= smb.conf SAMBA_LIB= lib SAMBA_LIBDIR= ${PREFIX}/${SAMBA_LIB} @@ -71,8 +71,8 @@ OPTIONS= LDAP "With LDAP support" on \ UTMP "With UTMP accounting support" on \ MSDFS "With MSDFS support" off \ SMBSH "With SMBSH wrapper for UNIX commands" off \ - PAM_SMBPASS "With PAM authentication against passdb backend(s)" off \ - EXP_MODULES "With experimental module(s)" off \ + PAM_SMBPASS "With PAM authentication vs passdb backends" off \ + EXP_MODULES "With experimental modules" off \ POPT "With system-wide POPT library" on .endif @@ -299,6 +299,10 @@ SUB_LIST+= SAMBA_LOGDIR=${SAMBA_LOGDIR} \ SAMBA_PRIVATE=${SAMBA_PRIVATE} pre-everything:: +.if defined(WANT_FAM_SYSTEM) + @${ECHO_CMD} "===> NOTICE: ${WANT_FAM_SYSTEM} detected, forcing FAM_SUPPORT" + @${ECHO_CMD} "" +.endif @${ECHO_CMD} "===> NOTICE: This version of port has changed location of Samba password" @${ECHO_CMD} "===> NOTICE: (smbpasswd) directory. Files in '${SAMBA_PRIVATE}'" @${ECHO_CMD} "===> NOTICE: have moved to '${SAMBA_PRIVATEDIR}'." @@ -372,16 +376,6 @@ post-install: @for d in `${FIND} ${SAMBA_MODULEDIR} -type d | ${SORT} -r`; do \ ${ECHO_CMD} "@unexec ${RMDIR} $$d 2>/dev/null || true" >> ${TMPPLIST}; \ done -# Taken from bsd.port.mk -.if (${OSVERSION} >= 700007 || ( ${OSVERSION} < 700000 && ${OSVERSION} >= 600101 )) - @for i in ${USE_RC_SUBR}; do \ - ${ECHO_CMD} "@unexec %D/etc/rc.d/$${i%.sh} forcestop 2>/dev/null || true" >> ${TMPPLIST}; \ - done -.else - @for i in ${USE_RC_SUBR}; do \ - ${ECHO_CMD} "@unexec %D/etc/rc.d/$${i%.sh}.sh forcestop 2>/dev/null || true" >> ${TMPPLIST}; \ - done -.endif # Documentation .if !defined(NOPORTDOCS) @${MKDIR} ${DOCSDIR} diff --git a/net/samba3/files/patch-include_includes.h b/net/samba3/files/patch-include_includes.h new file mode 100644 index 000000000000..a9ae02a59eaf --- /dev/null +++ b/net/samba3/files/patch-include_includes.h @@ -0,0 +1,16 @@ +--- include/includes.h.orig Wed Aug 23 18:16:38 2006 ++++ include/includes.h Fri Sep 8 00:12:44 2006 +@@ -475,10 +475,10 @@ + #undef HAVE_LDAP + #endif + +-#if HAVE_GSSAPI_H +-#include <gssapi.h> +-#elif HAVE_GSSAPI_GSSAPI_H ++#if HAVE_GSSAPI_GSSAPI_H + #include <gssapi/gssapi.h> ++#elif HAVE_GSSAPI_H ++#include <gssapi.h> + #elif HAVE_GSSAPI_GSSAPI_GENERIC_H + #include <gssapi/gssapi_generic.h> + #endif diff --git a/net/samba3/files/samba.in b/net/samba3/files/samba.in index 407dd02019ec..767accc7d4bb 100644 --- a/net/samba3/files/samba.in +++ b/net/samba3/files/samba.in @@ -9,109 +9,145 @@ %%CUPSD%%# REQUIRE: cupsd # BEFORE: LOGIN # KEYWORD: shutdown - # -# Add the following lines to /etc/rc.conf to enable samba: +# Add the following lines to /etc/rc.conf.local or /etc/rc.conf +# to enable this service: # #samba_enable="YES" -# -# or, for fine grain control -# +# or, for fine grain control: #nmbd_enable="YES" #smbd_enable="YES" %%WINBIND%%# You need to enable winbindd separately, by adding: %%WINBIND%%#winbindd_enable="YES" # +# Configuration file can be set with: +#samba_config="%%SAMBA_CONFDIR%%/%%SAMBA_CONFIG%%" +# . %%RC_SUBR%% -name=samba -rcvar=`set_rcvar` -samba_enable=${samba_enable="NO"} -testparm_command="%%PREFIX%%/bin/testparm" -samba_parm="${testparm_command} -s -v --parameter-name" +name="samba" +rcvar=$(set_rcvar) -load_rc_config $name -# Set defaults +load_rc_config "${name}" +# Custom commands +extra_commands="reload status" +start_precmd="samba_start_precmd" +start_cmd="samba_cmd" +stop_cmd="samba_cmd" +status_cmd="samba_cmd" +restart_precmd="samba_checkconfig" +reload_precmd="samba_checkconfig" +reload_cmd="samba_reload_cmd" +rcvar_cmd="samba_rcvar_cmd" +# Defaults +samba_enable=${samba_enable:="NO"} samba_config=${samba_config="%%SAMBA_CONFDIR%%/%%SAMBA_CONFIG%%"} -# Config file is required -if [ ! -r ${samba_config} ]; then - warn "${samba_config} is not readable." - case $1 in - force*) : ;; - *) exit 1 ;; - esac -fi - -samba_idmap=`${samba_parm} 'idmap uid' ${samba_config} 2>/dev/null` -samba_lockdir=`${samba_parm} 'lock directory' ${samba_config} 2>/dev/null` - -if test -n ${samba_enable="NO"} && checkyesno samba_enable; then +samba_daemons="nmbd smbd" +%%WINBIND%%samba_daemons="${samba_daemons} winbindd" +testparm_command="%%PREFIX%%/bin/testparm" +smbcontrol_command="%%PREFIX%%/bin/smbcontrol" +# Fetch parameters from configuration file +samba_parm="${testparm_command} -s -v --parameter-name" +%%WINBIND%%samba_idmap=$(${samba_parm} 'idmap uid' ${samba_config} 2>/dev/null) +samba_lockdir=$(${samba_parm} 'lock directory' ${samba_config} 2>/dev/null) +# Setup slave variables +if [ -n "${samba_enable}" ] && checkyesno samba_enable; then nmbd_enable=${nmbd_enable="YES"} smbd_enable=${smbd_enable="YES"} -%%WINBIND%% # Check that winbind is actually configured -%%WINBIND%% if [ -n ${samba_idmap} ]; then -%%WINBIND%% winbindd_enable="YES" +%%WINBIND%% # Check that winbindd is actually configured +%%WINBIND%% if [ -n "${samba_idmap}" ]; then +%%WINBIND%% winbindd_enable=${winbindd_enable="YES"} %%WINBIND%% fi fi +# Defaults for slave variables +nmbd_enable=${nmbd_enable:="NO"} +nmbd_flags=${nmbd_flags="-D"} +smbd_enable=${smbd_enable:="NO"} +smbd_flags=${smbd_flags="-D"} +%%WINBIND%%winbindd_enable=${winbindd_enable:="NO"} +%%WINBIND%%winbindd_flags=${winbindd_flags=""} +# Requirements +required_files="${samba_config}" +required_dirs="${samba_lockdir}" +command_args="${samba_config:+"-s ${samba_config}"}" +#" +samba_checkconfig() { + echo -n "Performing sanity check on Samba configuration: " + if ${testparm_command} -s ${samba_config} >/dev/null 2>&1; then + echo "OK" + else + echo "FAILED" + return 1 + fi +} -nmbd_precmd() { +samba_start_precmd() { # XXX: Never delete winbindd_idmap, winbindd_cache and group_mapping - echo -n "Starting Samba " - if [ -d ${samba_lockdir} ]; then - echo -n "- removing stale tdbs: " - for file in connections.tdb messages.tdb sessionid.tdb \ - unexpected.tdb brlock.tdb locking.tdb namelist.debug + if [ -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 -vf "${samba_lockdir}/${file}" + rm "${samba_lockdir}/${file}" </dev/null 2>/dev/null && echo -n '.' done + echo " done" fi - echo '.' } -# nmbd -name=nmbd -rcvar=`set_rcvar` -command="%%PREFIX%%/sbin/${name}" -required_dirs="${samba_lockdir}" -pidfile="%%SAMBA_RUNDIR%%/${name}.pid" -start_precmd="nmbd_precmd" -# Defaults -nmbd_enable=${nmbd_enable="NO"} -nmbd_flags=${nmbd_flags="-D"} -command_args="-s ${samba_config}" +samba_rcvar_cmd() { + # Prevent recursive calling + unset ${rc_arg}_cmd ${rc_arg}_precmd ${rc_arg}_postcmd + # Check master variable + echo "# ${name}" + if [ -n "${rcvar}" ]; then + if checkyesno ${rcvar}; then + echo "\$${rcvar}=YES" + else + echo "\$${rcvar}=NO" + fi + fi + # Check slave variables + samba_cmd "${_rc_prefix}${rc_arg}" ${rc_extra_args} +} -load_rc_config $name -run_rc_command "$1" -_rc_restart_done=false +samba_reload_cmd() { + local name rcvar + # Prevent recursive calling + unset ${rc_arg}_cmd ${rc_arg}_precmd ${rc_arg}_postcmd + # Apply to all the daemons + for name in ${samba_daemons}; do + rcvar=$(set_rcvar) + command="%%PREFIX%%/sbin/${name}" + pidfile="%%SAMBA_RUNDIR%%/${name}.pid" + # Daemon should be enabled and running + if [ -n "${rcvar}" ] && checkyesno ${rcvar}; then + if [ -n "$(check_pidfile "${pidfile}" "${command}")" ]; then + debug "reloading ${name} configuration" + echo "Reloading ${name}." + ${smbcontrol_command} "${name}" 'reload-config' ${command_args} + fi + fi + done +} -# smbd -name=smbd -rcvar=`set_rcvar` -command="%%PREFIX%%/sbin/${name}" -required_dirs="${samba_lockdir}" -pidfile="%%SAMBA_RUNDIR%%/${name}.pid" -start_precmd=":" -# Defaults -smbd_enable=${smbd_enable="NO"} -smbd_flags=${smbd_flags="-D"} -command_args="-s ${samba_config}" +samba_cmd() { + local name rcvar + # Prevent recursive calling + unset ${rc_arg}_cmd ${rc_arg}_precmd ${rc_arg}_postcmd + # Stop processes in the reverse to order + if [ "${rc_arg}" = "stop" ] ; then + samba_daemons=$(reverse_list ${samba_daemons}) + fi + # Apply to all the daemons + for name in ${samba_daemons}; do + rcvar=$(set_rcvar) + command="%%PREFIX%%/sbin/${name}" + pidfile="%%SAMBA_RUNDIR%%/${name}.pid" + + run_rc_command "${_rc_prefix}${rc_arg}" ${rc_extra_args} + done +} -load_rc_config $name run_rc_command "$1" -%%WINBIND%%_rc_restart_done=false -%%WINBIND%% -%%WINBIND%%# winbindd -%%WINBIND%%name=winbindd -%%WINBIND%%rcvar=`set_rcvar` -%%WINBIND%%command="%%PREFIX%%/sbin/${name}" -%%WINBIND%%required_dirs="${samba_lockdir}" -%%WINBIND%%pidfile="%%SAMBA_RUNDIR%%/${name}.pid" -%%WINBIND%%start_precmd=":" -%%WINBIND%%# Defaults -%%WINBIND%%winbindd_enable=${winbindd_enable="NO"} -%%WINBIND%%winbindd_flags=${winbindd_flags=""} -%%WINBIND%%command_args="-s ${samba_config}" -%%WINBIND%% -%%WINBIND%%load_rc_config $name -%%WINBIND%%run_rc_command "$1" |