You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/net-fs/samba/samba-3.6.9.ebuild

443 lines
12 KiB

# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/net-fs/samba/samba-3.6.9.ebuild,v 1.2 2012/11/14 11:30:16 naota Exp $
EAPI=4
inherit pam versionator multilib eutils
MY_PV=${PV/_/}
MY_P="${PN}-${MY_PV}"
DESCRIPTION="Library bits of the samba network filesystem"
HOMEPAGE="http://www.samba.org/"
SRC_URI="mirror://samba/${MY_P}.tar.gz"
LICENSE="GPL-3"
SLOT="0"
KEYWORDS="~amd64 ~hppa ~x86 ~x86-fbsd"
IUSE="acl addns ads +aio avahi caps +client cluster cups debug dmapi doc examples fam
ldap ldb +netapi pam quota +readline selinux +server +smbclient smbsharemodes
swat syslog winbind"
DEPEND="dev-libs/popt
>=sys-libs/talloc-2.0.5
>=sys-libs/tdb-1.2.9
virtual/libiconv
ads? ( virtual/krb5 sys-fs/e2fsprogs
client? ( sys-apps/keyutils
kernel_linux? ( net-fs/cifs-utils[ads] ) ) )
avahi? ( net-dns/avahi[dbus] )
caps? ( sys-libs/libcap )
client? ( !net-fs/mount-cifs
dev-libs/iniparser
kernel_linux? ( net-fs/cifs-utils ) )
cluster? ( >=dev-db/ctdb-1.13 )
cups? ( net-print/cups )
debug? ( dev-libs/dmalloc )
dmapi? ( sys-apps/dmapi )
fam? ( virtual/fam )
ldap? ( net-nds/openldap )
ldb? ( sys-libs/ldb )
pam? ( virtual/pam
winbind? ( dev-libs/iniparser )
)
readline? ( >=sys-libs/readline-5.2 )
selinux? ( sec-policy/selinux-samba )
syslog? ( virtual/logger )"
RDEPEND="${DEPEND}"
# Disable tests since we don't want to build that much here
RESTRICT="test"
SBINPROGS=""
BINPROGS=""
KRBPLUGIN=""
PLUGINEXT=".so"
SHAREDMODS=""
S="${WORKDIR}/${MY_P}/source3"
# TODO:
# - enable iPrint on Prefix/OSX and Darwin?
# - selftest-prefix? selftest?
# - AFS?
CONFDIR="${FILESDIR}/$(get_version_component_range 1-2)"
REQUIRED_USE="
ads? ( ldap )
swat? ( server )
"
pkg_pretend() {
if [[ ${MERGE_TYPE} != binary ]]; then
if use winbind &&
[[ $(tc-getCC)$ == *gcc* ]] &&
[[ $(gcc-major-version)$(gcc-minor-version) -lt 43 ]]
then
eerror "It is a known issue that ${P} will not build with "
eerror "winbind use flag enabled when using gcc < 4.3 ."
eerror "Please use at least the latest stable gcc version."
die "Using sys-devel/gcc < 4.3 with winbind use flag."
fi
fi
}
pkg_setup() {
if use server ; then
SBINPROGS="${SBINPROGS} bin/smbd bin/nmbd"
BINPROGS="${BINPROGS} bin/testparm bin/smbstatus bin/smbcontrol bin/pdbedit
bin/profiles bin/sharesec bin/eventlogadm bin/smbta-util"
use swat && SBINPROGS="${SBINPROGS} bin/swat"
use winbind && SBINPROGS="${SBINPROGS} bin/winbindd"
use ads && use winbind && KRBPLUGIN="${KRBPLUGIN} bin/winbind_krb5_locator"
fi
if use client ; then
BINPROGS="${BINPROGS} bin/smbclient bin/net bin/smbget bin/smbtree
bin/nmblookup bin/smbpasswd bin/rpcclient bin/smbcacls bin/smbcquotas
bin/ntlm_auth"
fi
use cups && BINPROGS="${BINPROGS} bin/smbspool"
# use ldb && BINPROGS="${BINPROGS} bin/ldbedit bin/ldbsearch bin/ldbadd bin/ldbdel bin/ldbmodify bin/ldbrename";
if use winbind ; then
BINPROGS="${BINPROGS} bin/wbinfo"
SHAREDMODS="${SHAREDMODS}idmap_rid,idmap_hash"
use ads && SHAREDMODS="${SHAREDMODS},idmap_ad"
use cluster && SHAREDMODS="${SHAREDMODS},idmap_tdb2"
use ldap && SHAREDMODS="${SHAREDMODS},idmap_ldap,idmap_adex"
fi
}
src_prepare() {
cp "${FILESDIR}/samba-3.4.2-lib.tevent.python.mk" "../lib/tevent/python.mk"
# ensure that winbind has correct ldflags (QA notice)
sed -i \
-e 's|LDSHFLAGS="|LDSHFLAGS="\\${LDFLAGS} |g' \
configure || die "sed failed"
cd "${WORKDIR}/${MY_P}" && epatch "${CONFDIR}"/smb.conf.default.patch
}
src_configure() {
local myconf
# Filter out -fPIE
[[ ${CHOST} == *-*bsd* ]] && myconf+=" --disable-pie"
# http://wiki.samba.org/index.php/CTDB_Setup
use cluster && myconf+=" --disable-pie"
# Upstream refuses to make this configurable
use caps && export ac_cv_header_sys_capability_h=yes || export ac_cv_header_sys_capability_h=no
#bug #399141 wrap newer iniparser version
has_version ">=dev-libs/iniparser-3.0.0" && \
export CPPFLAGS+=" -Diniparser_getstr\(d,i\)=iniparser_getstring\(d,i,NULL\)"
# Notes:
# - automount is only needed in conjunction with NIS and we don't have that
# anymore => LDAP?
# - --without-dce-dfs and --without-nisplus-home can't be passed to configure but are disabled by default
econf ${myconf} \
--with-piddir=/var/run/samba \
--sysconfdir=/etc/samba \
--localstatedir=/var \
$(use_enable debug developer) \
--enable-largefile \
--enable-socket-wrapper \
--enable-nss-wrapper \
$(use_enable swat) \
$(use_enable debug dmalloc) \
$(use_enable cups) \
--disable-iprint \
$(use_enable fam) \
--enable-shared-libs \
--disable-dnssd \
$(use_enable avahi) \
--with-fhs \
--with-privatedir=/var/lib/samba/private \
--with-rootsbindir=/var/cache/samba \
--with-lockdir=/var/cache/samba \
--with-swatdir=/usr/share/doc/${PF}/swat \
--with-configdir=/etc/samba \
--with-logfilebase=/var/log/samba \
--with-pammodulesdir=$(getpam_mod_dir) \
$(use_with dmapi) \
--without-afs \
--without-fake-kaserver \
--without-vfs-afsacl \
$(use_with ldap) \
$(use_with ads) \
$(use_with ads krb5 /usr) \
$(use_with ads dnsupdate) \
--without-automount \
$(use_with pam) \
$(use_with pam pam_smbpass) \
$(use_with syslog) \
$(use_with quota quotas) \
$(use_with quota sys-quotas) \
--without-utmp \
--without-lib{talloc,tdb} \
$(use_with netapi libnetapi) \
$(use_with smbclient libsmbclient) \
$(use_with smbsharemodes libsmbsharemodes) \
$(use_with addns libaddns) \
$(use_with cluster ctdb /usr) \
$(use_with cluster cluster-support) \
$(use_with acl acl-support) \
$(use_with aio aio-support) \
--with-sendfile-support \
$(use_with winbind) \
--with-shared-modules=${SHAREDMODS} \
--without-included-popt \
--without-included-iniparser
}
src_compile() {
# compile libs
if use addns ; then
einfo "make addns library"
emake libaddns
fi
if use netapi ; then
einfo "make netapi library"
emake libnetapi
fi
if use smbclient ; then
einfo "make smbclient library"
emake libsmbclient
fi
if use smbsharemodes ; then
einfo "make smbsharemodes library"
emake libsmbsharemodes
fi
# compile modules
emake modules
# compile pam moudles
if use pam ; then
einfo "make pam modules"
emake pam_modules
fi
# compile winbind nss modules
if use winbind ; then
einfo "make nss modules"
emake nss_modules
fi
# compile utilities
if [ -n "${BINPROGS}" ] ; then
einfo "make binprogs"
emake ${BINPROGS}
fi
if [ -n "${SBINPROGS}" ] ; then
einfo "make sbinprogs"
emake ${SBINPROGS}
fi
if [ -n "${KRBPLUGIN}" ] ; then
einfo "make krbplugin"
emake ${KRBPLUGIN}${PLUGINEXT}
fi
}
src_install() {
# install libs
if use addns ; then
einfo "install addns library"
emake installlibaddns DESTDIR="${D}"
fi
if use netapi ; then
einfo "install netapi library"
emake installlibnetapi DESTDIR="${D}"
fi
if use smbclient ; then
einfo "install smbclient library"
emake installlibsmbclient DESTDIR="${D}"
fi
if use smbsharemodes ; then
einfo "install smbsharemodes library"
emake installlibsmbsharemodes DESTDIR="${D}"
fi
# install modules
emake installmodules DESTDIR="${D}"
if use pam ; then
einfo "install pam modules"
emake installpammodules DESTDIR="${D}"
if use winbind ; then
newpamd "${CONFDIR}/system-auth-winbind.pam" system-auth-winbind
doman ../docs/manpages/pam_winbind.8
# bug #376853
insinto /etc/security
doins ../examples/pam_winbind/pam_winbind.conf || die
fi
newpamd "${CONFDIR}/samba.pam" samba
dodoc pam_smbpass/README
fi
# Nsswitch extensions. Make link for wins and winbind resolvers
if use winbind ; then
einfo "install libwbclient"
emake installlibwbclient DESTDIR="${D}"
dolib.so ../nsswitch/libnss_wins.so
dosym libnss_wins.so /usr/$(get_libdir)/libnss_wins.so.2
dolib.so ../nsswitch/libnss_winbind.so
dosym libnss_winbind.so /usr/$(get_libdir)/libnss_winbind.so.2
einfo "install libwbclient related manpages"
doman ../docs/manpages/idmap_rid.8
doman ../docs/manpages/idmap_hash.8
if use ldap ; then
doman ../docs/manpages/idmap_adex.8
doman ../docs/manpages/idmap_ldap.8
fi
if use ads ; then
doman ../docs/manpages/idmap_ad.8
fi
fi
# install binaries
insinto /usr
for prog in ${SBINPROGS} ; do
dosbin ${prog}
doman ../docs/manpages/${prog/bin\/}*
done
for prog in ${BINPROGS} ; do
dobin ${prog}
doman ../docs/manpages/${prog/bin\/}*
done
# install scripts
if use client ; then
dobin script/findsmb
doman ../docs/manpages/findsmb.1
fi
# install krbplugin
if [ -n "${KRBPLUGIN}" ] ; then
if has_version app-crypt/mit-krb5 ; then
insinto /usr/$(get_libdir)/krb5/plugins/libkrb5
doins ${KRBPLUGIN}${PLUGINEXT}
elif has_version app-crypt/heimdal ; then
insinto /usr/$(get_libdir)/plugin/krb5
doins ${KRBPLUGIN}${PLUGINEXT}
fi
insinto /usr
for prog in ${KRBPLUGIN} ; do
doman ../docs/manpages/${prog/bin\/}*
done
fi
# install server components
if use server ; then
doman ../docs/manpages/vfs* ../docs/manpages/samba.7
diropts -m0700
keepdir /var/lib/samba/private
diropts -m1777
keepdir /var/spool/samba
diropts -m0755
keepdir /var/{cache,log}/samba
keepdir /var/lib/samba/{netlogon,profiles}
keepdir /var/lib/samba/printers/{W32X86,WIN40,W32ALPHA,W32MIPS,W32PPC,X64,IA64,COLOR}
keepdir /usr/$(get_libdir)/samba/{auth,pdb,rpc,idmap,nss_info,gpext}
newconfd "${CONFDIR}/samba.confd" samba
newinitd "${CONFDIR}/samba.initd" samba
insinto /etc/samba
doins "${CONFDIR}"/{smbusers,lmhosts}
if use ldap ; then
insinto /etc/openldap/schema
doins ../examples/LDAP/samba.schema
fi
if use swat ; then
insinto /etc/xinetd.d
newins "${CONFDIR}/swat.xinetd" swat
script/installswat.sh "${D}" "${ROOT}/usr/share/doc/${PF}/swat" "${S}"
fi
dodoc ../MAINTAINERS.txt ../README* ../Roadmap ../WHATSNEW.txt ../docs/THANKS
fi
# install the spooler to cups
if use cups ; then
dosym /usr/bin/smbspool $(cups-config --serverbin)/backend/smb
fi
# install misc files
insinto /etc/samba
doins ../examples/smb.conf.default
doman ../docs/manpages/smb.conf.5
insinto /usr/"$(get_libdir)"/samba
doins ../codepages/{valid.dat,upcase.dat,lowcase.dat}
# install docs
if use doc ; then
dohtml -r ../docs/htmldocs/*
dodoc ../docs/*.pdf
fi
# install examples
if use examples ; then
insinto /usr/share/doc/${PF}/examples
if use smbclient ; then
doins -r ../examples/libsmbclient
fi
if use winbind ; then
doins -r ../examples/pam_winbind ../examples/nss
fi
if use server ; then
cd ../examples
doins -r auth autofs dce-dfs LDAP logon misc pdb \
perfcounter printer-accounting printing scripts tridge \
validchars VFS
fi
fi
# Remove empty installation directories
rmdir --ignore-fail-on-non-empty \
"${D}/usr/$(get_libdir)/samba" \
"${D}/usr"/{sbin,bin} \
"${D}/usr/share"/{man,locale,} \
"${D}/var"/{run,lib/samba/private,lib/samba,lib,cache/samba,cache,} \
# || die "tried to remove non-empty dirs, this seems like a bug in the ebuild"
}
pkg_postinst() {
elog "Samba 3.6 has adopted a number of improved security defaults that"
elog "will impact on existing users of Samba."
elog " client ntlmv2 auth = yes"
elog " client use spnego principal = no"
elog " send spnego principal = no"
elog ""
elog "SMB2 protocol support in 3.6.0 is fully functional and can be "
elog "enabled by setting 'max protocol = smb2'. SMB2 is a new "
elog "implementation of the SMB protocol used by Windows Vista and higher"
elog ""
elog "For further information make sure to read the release notes at"
elog "http://samba.org/samba/history/${P}.html and "
elog "http://samba.org/samba/history/${PN}-3.6.0.html"
}