# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=samba
pkgver=4.1.6
pkgrel=0
pkgdesc="Tools to access a server's filespace and printers via SMB"
url="http://www.samba.org"
arch="all"
license="GPL3"
subpackages="$pkgname-dev $pkgname-doc $pkgname-common $pkgname-initscript
	libsmbclient $pkgname-client
	$pkgname-dc $pkgname-dc-libs:_dc_libs
	$pkgname-winbind libwbclient $pkgname-winbind-clients:_winbind_clients
	$pkgname-winbind-krb5-locator:_winbind_krb5_locator
	$pkgname-pidl py-$pkgname:_py $pkgname-test:_test
	$pkgname-libs-py:_libs_py $pkgname-libs"
depends="$pkgname-initscript $pkgname-client"
# note that heimdal is required (over mit krb5) for AD DC functionality
makedepends="popt-dev ncurses-dev openldap-dev heimdal-dev e2fsprogs-dev
	libiconv-dev talloc-dev tdb-dev ldb-dev cups-dev python-dev libcap-dev
	tevent-dev iniparser-dev perl subunit-dev"
source="http://us1.samba.org/samba/ftp/stable/samba-$pkgver.tar.gz
	fix-libreplace.patch
	musl-fix-headers.patch
	uclibc-xattr-create.patch
	samba.initd
	samba.confd
	samba.logrotate
	"
pkggroups="winbind"

_builddir="$srcdir"/samba-$pkgver
prepare() {
	cd "$_builddir"
	for i in $source; do
		case $i in
		*.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;;
		esac
	done
}

build() {
	cd "$_builddir"
	local _jobs=$JOBS
	if [ -z "$_jobs" ]; then
		_jobs=$(awk '/^core id/ {n++} END{print n}' /proc/cpuinfo)
	fi
	./configure --prefix=/usr \
		--jobs=${_jobs:-2} \
		--sysconfdir=/etc/samba \
		--with-configdir=/etc/samba \
		--localstatedir=/var \
		--enable-fhs \
		--with-lockdir=/var/cache/samba \
		--with-piddir=/var/run/samba \
		--with-logfilebase=/var/log/samba \
		--without-pam \
		--with-ads \
		--with-shared-modules=idmap_ad,idmap_rid,idmap_adex,idmap_hash,idmap_tdb2,pdb_tdbsam,pdb_ldap,pdb_ads,pdb_smbpasswd,pdb_wbc_sam,pdb_samba4,auth_unix,auth_wbc,auth_server,auth_netlogond,auth_script,auth_samba4 \
		--enable-cups \
		--without-gettext \
		--bundled-libraries=NONE,ntdb \
		|| return 1
	make || return 1
}

package() {
	cd "$_builddir"
	make DESTDIR="$pkgdir" install

	install -d "$pkgdir"/var/log/samba \
		"$pkgdir"/usr/share/doc/samba \
		|| return 1
	install -D packaging/RHEL/setup/smbusers "$pkgdir"/etc/samba/smbusers \
		|| return 1
	install -m 0744 packaging/printing/smbprint "$pkgdir"/usr/bin/smbprint \
		|| return 1
	install -Dm644 "$srcdir"/samba.logrotate "$pkgdir"/etc/logrotate.d/samba
}

initscript() {
	pkgdesc="Init script for Samba"
	depends=""
	install -Dm755 $srcdir/samba.initd "$subpkgdir"/etc/init.d/samba
	install -Dm644 $srcdir/samba.confd "$subpkgdir"/etc/conf.d/samba
}

_mv_files() {
	local i
	for i in "$@"; do
		mkdir -p "$subpkgdir"/${i%/*}
		mv "$pkgdir"/$i "$subpkgdir"/$i || return 1
	done
}

common() {
	pkgdesc="Samba common files for both client an servers"
	depends=
	# we have moved libnetapi to samba-common
	replaces="winbind samba"
	cd "$pkgdir"
	_mv_files \
		usr/bin/net \
		usr/bin/pdbedit \
		usr/bin/profiles \
		usr/bin/smbcontrol \
		usr/bin/testparm \
		usr/share/samba/codepages \
		usr/lib/libnetapi.so.* \
		var/run/samba \
		var/cache/samba \
		var/log/samba \
		|| return 1
	install -d -m 700 "$subpkgdir"/var/lib/samba/private
}

# common-libs is an attempt to avoid libpython dependency for libsmbclient
_libs_py() {
	pkgdesc="Libraries that require libpython"
	replaces="samba-libs"
	depends=
	cd "$pkgdir"
	_mv_files \
		usr/lib/samba/libsamba-net.so \
		usr/lib/samba/libsamba_python.so \
		|| return 1
	return 0
}

libsmbclient() {
	pkgdesc="The SMB client library"
	replaces="samba"
	depends=
	cd "$pkgdir"
	_mv_files \
		usr/lib/libsmbclient.so.* \
		usr/lib/libsmbsharemodes.so.* \
		|| return 1
}

client() {
	pkgdesc="Samba client program"
	replaces="samba"
	depends=
	cd "$pkgdir"
	_mv_files \
		usr/bin/cifsdd \
		usr/bin/dbwrap_tool \
		usr/bin/nmblookup \
		usr/bin/nmblookup4 \
		usr/bin/oLschema2ldif \
		usr/bin/regdiff \
		usr/bin/regpatch \
		usr/bin/regshell \
		usr/bin/regtree \
		usr/bin/rpcclient \
		usr/bin/sharesec \
		usr/bin/smbcacls \
		usr/bin/smbclient \
		usr/bin/smbclient4 \
		usr/bin/smbcquotas \
		usr/bin/smbget \
		usr/bin/smbpasswd \
		usr/bin/smbprint \
		usr/bin/smbspool \
		usr/bin/smbta-util \
		usr/bin/smbtar \
		usr/bin/smbtree \
		|| return 1
}

dc() {
	pkgdesc="Samba AD Domain Controller"
	depends=
	cd "$pkgdir"
	_mv_files \
		usr/bin/samba-tool \
		usr/sbin/samba* \
		usr/lib/samba/ldb \
		usr/lib/samba/libpac.so \
		usr/lib/samba/gensec \
		usr/lib/samba/bind9/dlz_bind9.so \
		usr/lib/mit_samba.so \
		|| return 1
	install -d -m 0755 "$subpkgdir"/var/lib/samba/sysvol || return 1
}

_dc_libs() {
	pkgdesc="Samba AD Domain Controller libraries"
	depends=
	cd "$pkgdir"
	_mv_files \
		usr/lib/samba/bind9/dlz_bind9_9.so \
		usr/lib/samba/libprocess_model.so \
		usr/lib/samba/libservice.so \
		usr/lib/samba/service \
		usr/lib/samba/libdsdb-module.so \
		usr/lib/samba/libntvfs.so \
		usr/lib/samba/libposix_eadb.so \
		usr/lib/libdcerpc-server.so.* \
		|| return 1
}

winbind() {
	pkgdesc="Samba user and group resolver"
	depends=
	install="winbind.pre-install winbind.pre-upgrade winbind.post-install
		winbind.post-upgrade"
	replaces="winbind"
	cd "$pkgdir"
	_mv_files \
		usr/sbin/winbindd \
		usr/lib/samba/idmap \
		usr/lib/samba/nss_info \
		usr/lib/samba/libidmap.so \
		|| return 1
	install -d -g winbind -m 750 \
		"$subpkgdir"/var/cache/samba/winbindd_privileged
}

libwbclient() {
	pkgdesc="Samba winbind client libraries"
	depends=
	# we have moved libwbclient from samba-common
	replaces="samba-common winbind"
	cd "$pkgdir"
	_mv_files \
		usr/lib/libwbclient.so.* \
		usr/lib/samba/libwinbind-client.so \
		|| return 1
}

_winbind_clients() {
	pkgdesc="Samba winbind clients"
	replaces="winbind"
	depends=
	cd "$pkgdir"
	_mv_files \
		usr/bin/ntlm_auth \
		usr/bin/wbinfo \
		usr/lib/libnss_winbind.so* \
		usr/lib/libnss_wins.so* \
		|| return 1
}

_winbind_krb5_locator() {
	pkgdesc="Samba winbind krb5 locator"
	depends=
	cd "$pkgdir"
	_mv_files \
		usr/lib/winbind_krb5_locator.so \
		|| return 1
}

pidl() {
	pkgdesc="Perl IDL compiler"
	depends=
	mkdir -p "$subpkgdir"/usr/share
	mv "$pkgdir"/usr/share/perl* "$subpkgdir"/usr/share/
}

_py() {
	pkgdesc="Samba python libraries"
	depends=
	mkdir -p "$subpkgdir"/usr/lib
	mv "$pkgdir"/usr/lib/python* "$subpkgdir"/usr/lib/
}

_test() {
	pkgdesc="Samba server and client testing tools"
	depends=
	mkdir -p "$subpkgdir"/usr/bin "$subpkgdir"/usr/lib/samba
	mv "$pkgdir"/usr/bin/*test \
		"$pkgdir"/usr/bin/ndrdump \
		"$pkgdir"/usr/bin/smbtorture \
		"$subpkgdir"/usr/bin/ || return 1
	mv "$pkgdir"/usr/lib/libtorture.so.* \
		"$subpkgdir"/usr/lib/ || return 1
	mv "$pkgdir"/usr/lib/samba/*torture* \
		"$subpkgdir"/usr/lib/samba/ || return 1
}

libs() {
	pkgdesc="Samba libraries"
	depends=
	cd "$pkgdir"
	_mv_files \
		usr/lib/lib*.so.* \
		usr/lib/samba/lib* \
		|| return 1
}

md5sums="9dc64658c0cc81e7637f9b975c19638c  samba-4.1.6.tar.gz
b8c06c1a37bce8a7feea3b6896483da0  fix-libreplace.patch
2386589c1e2cbcf95b644554b8a2f4d1  musl-fix-headers.patch
f9ee1f13e59c60ee7e481f51329bf7d4  uclibc-xattr-create.patch
044c756d3c33c2d610c40bcd76cfb75c  samba.initd
c150433426e18261e6e3eed3930e1a76  samba.confd
b7cafabfb4fa5b3ab5f2e857d8d1c733  samba.logrotate"
sha256sums="6d3b25cb70acbd75352e1a6039093689ded373f6ac755c207635416786532e6b  samba-4.1.6.tar.gz
13617f691c648b44867c1a76d8be7c185021e8a8f3b695f8689a9f6244e65827  fix-libreplace.patch
0cf7e4eadf442422434d2b0fb43193f3a79f2887e32432f12cb6aed1941e807a  musl-fix-headers.patch
dcf6a7118297d6567d8ff31c9eff1afffdf2f548db36fd17d00cdf0ffc555fe3  uclibc-xattr-create.patch
86646cb845aababd9e8655994379526f03327a2cc33b489c3a7dea83ab689c8f  samba.initd
1d12f98a7727967b04eb123109b34cfffef320822dc0e8059286b6e3394c3fc0  samba.confd
4c2b7d529126b2fc4f62fb09d99e49a87632d723a2d9d289a61e37dd84145be1  samba.logrotate"
sha512sums="3eaca534c475d57962088df6a23ae7230e05da4696b5b9314a6f21bff669bfd50c7f2abf04eb62462d69866545c8429f01d9886014c526eacf4009d81c8d7ff8  samba-4.1.6.tar.gz
4adbbeb75de6c55199e10f284e741ee252f403b7809251caf4baf378669770be01d469b23e12f8119ed5dca5080dd45bda1b5b78cc7a791be44c1eb6fb8c0fa2  fix-libreplace.patch
8d2e1be5f020d0558917f328770b289d0a41836616952d0d3208cecd457df3649f1357a2d35dc54123559ab6a1b720f3189286c65cee90b02ccbae7d676ae383  musl-fix-headers.patch
b43809d7ecbf3968f5154c2ded6ed47dae36921f1895ea98bcce50557eb2ad39b736345ffb4214655ed3154c143c20431d248cde828285380bafbf4d2627df9b  uclibc-xattr-create.patch
59d05252b8ebbe6ba6a419edc86b66b9541d0bac9dbe810cccb20e64f6044e2900cc6c0979e077741ed00fbbf2d51f9184c83715013299782707b44e39aa99b1  samba.initd
4faf581ecef3ec38319e3c4ab6d3995c51fd7ba83180dc5553a2ff4dfb92efadb43030c543292130c4ed0c281dc0972c6973d52d48062c5edb39bb1c4bbb6dd6  samba.confd
f88ebe59ca3a9e9b77dd5993c13ef3e73a838efb8ed858088b464a330132d662f33e25c27819e38835389dee23057a3951de11bae1eef55db8ff5e1ec6760053  samba.logrotate"