484 lines
13 KiB
Bash
484 lines
13 KiB
Bash
# Copyright 1999-2015 Gentoo Foundation
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
# $Id$
|
|
|
|
EAPI=5
|
|
|
|
inherit pam versionator multilib multilib-minimal eutils flag-o-matic systemd
|
|
|
|
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/stable/${MY_P}.tar.gz"
|
|
LICENSE="GPL-3"
|
|
SLOT="0"
|
|
KEYWORDS="alpha amd64 arm hppa ia64 ~mips ppc ppc64 sparc x86 ~amd64-fbsd ~x86-fbsd ~arm-linux ~x86-linux"
|
|
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.8-r1[${MULTILIB_USEDEP}]
|
|
>=sys-libs/tdb-1.2.13[${MULTILIB_USEDEP}]
|
|
>=sys-libs/tevent-0.9.19[${MULTILIB_USEDEP}]
|
|
>=virtual/libiconv-0-r1[${MULTILIB_USEDEP}]
|
|
ads? ( >=virtual/krb5-0-r1[${MULTILIB_USEDEP}] sys-fs/e2fsprogs
|
|
client? ( sys-apps/keyutils ) )
|
|
avahi? ( net-dns/avahi[dbus] )
|
|
caps? ( >=sys-libs/libcap-2.22-r2[${MULTILIB_USEDEP}] )
|
|
client? ( !net-fs/mount-cifs
|
|
>=dev-libs/iniparser-3.1-r1:0[${MULTILIB_USEDEP}] )
|
|
cluster? ( >=dev-db/ctdb-1.13 )
|
|
cups? ( net-print/cups )
|
|
debug? ( dev-libs/dmalloc )
|
|
dmapi? ( sys-apps/dmapi )
|
|
fam? ( >=virtual/fam-0-r1[${MULTILIB_USEDEP}] )
|
|
ldap? ( >=net-nds/openldap-2.4.38-r1[${MULTILIB_USEDEP}] )
|
|
ldb? ( sys-libs/ldb )
|
|
pam? ( >=virtual/pam-0-r1[${MULTILIB_USEDEP}]
|
|
winbind? ( >=dev-libs/iniparser-3.1-r1:0[${MULTILIB_USEDEP}] )
|
|
)
|
|
readline? ( >=sys-libs/readline-5.2:= )
|
|
syslog? ( virtual/logger )"
|
|
|
|
RDEPEND="${DEPEND}
|
|
kernel_linux? ( ads? ( net-fs/cifs-utils[ads] )
|
|
client? ( net-fs/cifs-utils ) )
|
|
selinux? ( sec-policy/selinux-samba )
|
|
"
|
|
|
|
# Disable tests since we don't want to build that much here
|
|
RESTRICT="test"
|
|
|
|
SBINPROGS=""
|
|
BINPROGS=""
|
|
KRBPLUGIN=""
|
|
PLUGINEXT=".so"
|
|
SHAREDMODS=""
|
|
|
|
S=${WORKDIR}/${MY_P}
|
|
|
|
# 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
|
|
$(usex client "" "bin/smbclient")"
|
|
|
|
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' \
|
|
source3/configure || die "sed failed"
|
|
epatch "${CONFDIR}"/smb.conf.default.patch
|
|
|
|
#bug #399141 wrap newer iniparser version
|
|
has_version ">=dev-libs/iniparser-3.0.0:0" && \
|
|
append-cppflags "-Diniparser_getstr\(d,i\)=iniparser_getstring\(d,i,NULL\)"
|
|
|
|
multilib_copy_sources
|
|
}
|
|
|
|
multilib_src_configure() {
|
|
local myconf=()
|
|
|
|
# we can't alter S since build system writes to '../' and therefore
|
|
# we need to duplicate the whole structure
|
|
cd source3 || die
|
|
|
|
# Filter out -fPIE
|
|
[[ ${CHOST} == *-*bsd* ]] && myconf+=( --disable-pie )
|
|
|
|
#Allowing alpha/s390/sh to build
|
|
if use alpha || [[ ${ABI} == s390 ]] || use sh ; then
|
|
local CFLAGS=${CFLAGS} CXXFLAGS=${CXXFLAGS}
|
|
replace-flags -O? -O1
|
|
fi
|
|
|
|
# http://wiki.samba.org/index.php/CTDB_Setup
|
|
use cluster && myconf+=( --disable-pie )
|
|
|
|
# Upstream refuses to make this configurable
|
|
myconf+=( ac_cv_header_sys_capability_h=$(usex caps) )
|
|
|
|
# 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="${EPREFIX}"/var/run/samba \
|
|
--sysconfdir="${EPREFIX}"/etc/samba \
|
|
--localstatedir="${EPREFIX}"/var \
|
|
$(multilib_native_use_enable debug developer) \
|
|
--enable-largefile \
|
|
--enable-socket-wrapper \
|
|
--enable-nss-wrapper \
|
|
$(multilib_native_use_enable swat) \
|
|
$(multilib_native_use_enable debug dmalloc) \
|
|
$(multilib_native_use_enable cups) \
|
|
--disable-iprint \
|
|
$(use_enable fam) \
|
|
--enable-shared-libs \
|
|
--disable-dnssd \
|
|
$(multilib_native_use_enable avahi) \
|
|
--with-fhs \
|
|
--with-privatedir="${EPREFIX}"/var/lib/samba/private \
|
|
--with-rootsbindir="${EPREFIX}"/var/cache/samba \
|
|
--with-lockdir="${EPREFIX}"/var/cache/samba \
|
|
--with-swatdir="${EPREFIX}"/usr/share/doc/${PF}/swat \
|
|
--with-configdir="${EPREFIX}"/etc/samba \
|
|
--with-logfilebase="${EPREFIX}"/var/log/samba \
|
|
--with-pammodulesdir=$(getpam_mod_dir) \
|
|
$(multilib_native_use_with dmapi) \
|
|
--without-afs \
|
|
--without-fake-kaserver \
|
|
--without-vfs-afsacl \
|
|
$(use_with ldap) \
|
|
$(use_with ads) \
|
|
$(use_with ads krb5 "${EPREFIX}"/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 "${EPREFIX}"/usr) \
|
|
$(use_with cluster cluster-support) \
|
|
$(multilib_native_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
|
|
}
|
|
|
|
multilib_src_compile() {
|
|
cd source3 || die
|
|
|
|
# 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 multilib_is_native_abi; then
|
|
if [ -n "${BINPROGS}" ] ; then
|
|
einfo "make binprogs"
|
|
emake ${BINPROGS}
|
|
fi
|
|
if [ -n "${SBINPROGS}" ] ; then
|
|
einfo "make sbinprogs"
|
|
emake ${SBINPROGS}
|
|
fi
|
|
fi
|
|
|
|
if [ -n "${KRBPLUGIN}" ] ; then
|
|
einfo "make krbplugin"
|
|
emake ${KRBPLUGIN}${PLUGINEXT}
|
|
fi
|
|
}
|
|
|
|
multilib_src_install() {
|
|
cd source3 || die
|
|
|
|
# pkgconfig files installation needed, bug #464818
|
|
local pkgconfigdir=/usr/$(get_libdir)/pkgconfig
|
|
|
|
# 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}"
|
|
insinto $pkgconfigdir
|
|
doins pkgconfig/netapi.pc
|
|
fi
|
|
if use smbclient ; then
|
|
einfo "install smbclient library"
|
|
emake installlibsmbclient DESTDIR="${D}"
|
|
insinto $pkgconfigdir
|
|
doins pkgconfig/smbclient.pc
|
|
fi
|
|
if use smbsharemodes ; then
|
|
einfo "install smbsharemodes library"
|
|
emake installlibsmbsharemodes DESTDIR="${D}"
|
|
insinto $pkgconfigdir
|
|
doins pkgconfig/smbsharemodes.pc
|
|
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
|
|
insinto $pkgconfigdir
|
|
doins pkgconfig/wbclient.pc
|
|
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
|
|
if multilib_is_native_abi; then
|
|
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
|
|
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
|
|
}
|
|
|
|
multilib_src_install_all() {
|
|
# 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 "${ED}" "${EROOT}/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 || die
|
|
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 \
|
|
"${ED}/usr/$(get_libdir)/samba" \
|
|
"${ED}/usr"/{sbin,bin} \
|
|
"${ED}/usr/share"/{man,locale,} \
|
|
"${ED}/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"
|
|
|
|
systemd_dotmpfilesd "${FILESDIR}"/samba.conf
|
|
systemd_dounit "${FILESDIR}"/nmbd.service
|
|
systemd_dounit "${FILESDIR}"/smbd.{service,socket}
|
|
systemd_newunit "${FILESDIR}"/smbd_at.service 'smbd@.service'
|
|
systemd_dounit "${FILESDIR}"/winbindd.service
|
|
}
|
|
|
|
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"
|
|
}
|