# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=samba
pkgver=4.13.3
pkgrel=1
pkgdesc="Tools to access a server's filespace and printers via SMB"
url="https://www.samba.org/"
arch="all"
license="GPL-3.0-or-later LGPL-3.0-or-later"
subpackages="
$pkgname-dev $pkgname-doc $pkgname-server-openrc
libwbclient
$pkgname-util-libs:_util_libs
$pkgname-common::noarch
$pkgname-common-tools:_common_tools
$pkgname-common-server-libs:_common_server_libs
libsmbclient
$pkgname-client
$pkgname-client-libs:_client_libs
$pkgname-winbind
$pkgname-winbind-clients:_winbind_clients
$pkgname-winbind-krb5-locator:_winbind_krb5_locator
$pkgname-libnss-winbind:_libnss_winbind
pam-winbind:_pam_winbind
$pkgname-dc
$pkgname-dc-libs:_dc_libs
$pkgname-server
$pkgname-server-libs:_server_libs
$pkgname-pidl::noarch
py3-$pkgname:_py3
$pkgname-test:_test
$pkgname-libs-py3:_libs_py3
$pkgname-libs
"
depends="
$pkgname-server=$pkgver-r$pkgrel
$pkgname-client=$pkgver-r$pkgrel
$pkgname-common-tools=$pkgver-r$pkgrel
"
_dc_deps="py3-dnspython py3-markdown tdb"
# note that heimdal is required (over mit krb5) for AD DC functionality
makedepends="
acl-dev
bind-dev
cups-dev
dbus-dev
docbook-xsl
e2fsprogs-dev
fuse-dev
gnutls-dev
iniparser-dev
jansson-dev
ldb-dev
libarchive-dev
libcap-dev
libtirpc-dev
liburing-dev
linux-pam-dev
musl-nscd-dev
ncurses-dev
openldap-dev
perl
perl-parse-yapp
popt-dev
py3-tdb
py3-tevent
python3-dev
rpcgen
subunit-dev
talloc-dev
tdb-dev
tevent-dev
zlib-dev
$_dc_deps
"
source="
https://download.samba.org/pub/samba/stable/samba-$pkgver.tar.gz
getpwent_r.patch
musl_uintptr.patch
netdb-defines.patch
netapp.patch
missing-headers.patch
musl_rm_unistd_incl.patch
add_missing___compar_fn_t.patch
pidl.patch
$pkgname.initd
$pkgname.confd
$pkgname.logrotate
"
pkggroups="winbind"
# secfixes:
# 4.12.9-r0:
# - CVE-2020-14318
# - CVE-2020-14323
# - CVE-2020-14383
# 4.12.7-r0:
# - CVE-2020-1472
# 4.12.5-r0:
# - CVE-2020-10730
# - CVE-2020-10745
# - CVE-2020-10760
# - CVE-2020-14303
# 4.12.2-r0:
# - CVE-2020-10700
# - CVE-2020-10704
# 4.11.5-r0:
# - CVE-2019-14902
# - CVE-2019-14907
# - CVE-2019-19344
# 4.11.3-r0:
# - CVE-2019-14861
# - CVE-2019-14870
# 4.11.2-r0:
# - CVE-2019-10218
# - CVE-2019-14833
# 4.10.8-r0:
# - CVE-2019-10197
# 4.10.5-r0:
# - CVE-2019-12435
# - CVE-2019-12436
# 4.10.3-r0:
# - CVE-2018-16860
# 4.8.11-r0:
# - CVE-2018-14629
# - CVE-2019-3880
# 4.8.7-r0:
# - CVE-2018-16841
# - CVE-2018-16851
# - CVE-2018-16853
# 4.8.4-r0:
# - CVE-2018-1139
# - CVE-2018-1140
# - CVE-2018-10858
# - CVE-2018-10918
# - CVE-2018-10919
# 4.7.6-r0:
# - CVE-2018-1050
# - CVE-2018-1057
# 4.7.3-r0:
# - CVE-2017-14746
# - CVE-2017-15275
# 4.7.0-r0:
# - CVE-2017-12150
# - CVE-2017-12151
# - CVE-2017-12163
# 4.6.1-r0:
# - CVE-2017-2619
build() {
local _jobs=$JOBS
local _idmap_modules=idmap_ad,idmap_rid,idmap_adex,idmap_hash,idmap_tdb2
local _pdb_modules=pdb_tdbsam,pdb_ldap,pdb_ads,pdb_smbpasswd,pdb_wbc_sam,pdb_samba4
local _auth_modules=auth_unix,auth_wbc,auth_server,auth_netlogond,auth_script,auth_samba4
if [ -z "$_jobs" ]; then
_jobs=$(awk '/^core id/ {n++} END{print n}' /proc/cpuinfo)
fi
./configure \
--prefix=/usr \
--jobs=${_jobs:-2} \
--sysconfdir=/etc/$pkgname \
--with-configdir=/etc/$pkgname \
--localstatedir=/var \
--libexecdir=/usr/lib \
--enable-fhs \
--with-lockdir=/var/cache/$pkgname \
--with-piddir=/run/$pkgname \
--with-logfilebase=/var/log/$pkgname \
--with-pam \
--without-systemd \
--with-ads \
--with-shared-modules=$_idmap_modules,$_pdb_modules,$_auth_modules,vfs_io_uring \
--enable-cups \
--without-gettext \
--bundled-libraries=NONE,ntdb,roken,wind,hx509,asn1,heimbase,hcrypto,krb5,gssapi,heimntlm,hdb,kdc,cmocka \
--disable-rpath-install \
--without-gpgme
make
}
package() {
make DESTDIR="$pkgdir" install
install -d "$pkgdir"/var/log/$pkgname \
"$pkgdir"/usr/share/doc/$pkgname
install -dm755 "$pkgdir"/var/lib/$pkgname/sysvol
install -Dm644 examples/smb.conf.default \
"$pkgdir"/etc/$pkgname/smb.conf
install -m744 packaging/printing/smbprint \
"$pkgdir"/usr/bin/smbprint
install -Dm644 "$srcdir"/$pkgname.logrotate \
"$pkgdir"/etc/logrotate.d/$pkgname
install -Dm755 "$srcdir/$pkgname.initd" "$pkgdir/etc/init.d/$pkgname"
install -Dm644 "$srcdir/$pkgname.confd" "$pkgdir/etc/conf.d/$pkgname"
}
_mv_files() {
local i
for i in "$@"; do
case $i in
*/*) mkdir -p "$subpkgdir"/${i%/*};;
*) mkdir -p "$subpkgdir";;
esac
mv "$pkgdir"/$i "$subpkgdir"/$i
done
}
common() {
pkgdesc="Samba common files for both client an servers"
depends=
cd "$pkgdir"
_mv_files \
etc \
var
install -d -m700 "$subpkgdir"/var/lib/$pkgname/private
}
# common-libs is an attempt to avoid libpython dependency for libsmbclient
_libs_py3() {
pkgdesc="Libraries that require libpython"
depends=
cd "$pkgdir"
_mv_files \
usr/lib/$pkgname/libsamba-net*samba4.so \
usr/lib/$pkgname/libsamba-python*samba4.so
return 0
}
# may depend on samba-common-server-libs but not samba-server-libs
_common_tools() {
pkgdesc="Tools for Samba servers and clients"
depends=
cd "$pkgdir"
_mv_files \
usr/bin/net \
usr/bin/pdbedit \
usr/bin/profiles \
usr/bin/smbcontrol \
usr/bin/smbpasswd \
usr/bin/testparm \
usr/lib/$pkgname/libgpext-samba4.so \
usr/lib/$pkgname/libnet-keytab-samba4.so
}
# should not depend on client libs
_common_server_libs() {
pkgdesc="Samba libraries shared by common-tools and servers" # not shared with clients
depends=""
cd "$pkgdir"
_mv_files \
usr/lib/libdcerpc-server-core.so.* \
usr/lib/libnetapi.so.* \
usr/lib/$pkgname/libdfs-server-ad-samba4.so \
usr/lib/$pkgname/libnpa-tstream-samba4.so \
usr/lib/$pkgname/libprinting-migrate-samba4.so \
usr/lib/$pkgname/libsmbd-base-samba4.so \
usr/lib/$pkgname/libsmbd-conn-samba4.so \
usr/lib/$pkgname/libsmbldaphelper-samba4.so \
usr/lib/$pkgname/pdb
}
libsmbclient() {
pkgdesc="The SMB client library"
depends=
cd "$pkgdir"
_mv_files \
usr/lib/libsmbclient.so.*
}
# should only depend on samba-util-libs, libwbclient and samba-libs
_client_libs() {
pkgdesc="Samba libraries used by clients"
depends=
cd "$pkgdir"
_mv_files \
usr/lib/$pkgname/libcli-ldap-samba4.so \
usr/lib/$pkgname/libcmdline-contexts-samba4.so \
usr/lib/$pkgname/libcmdline-credentials-samba4.so \
usr/lib/$pkgname/libdsdb-garbage-collect-tombstones-samba4.so \
usr/lib/$pkgname/libgpo-samba4.so \
usr/lib/$pkgname/libhttp-samba4.so \
usr/lib/$pkgname/libmscat-samba4.so \
usr/lib/$pkgname/libnetif-samba4.so \
usr/lib/$pkgname/libpopt-samba3-cmdline-samba4.so \
usr/lib/$pkgname/libprinter-driver-samba4.so \
usr/lib/$pkgname/libregistry-samba4.so \
usr/lib/$pkgname/libsmbclient-raw-samba4.so \
usr/lib/libdcerpc.so.*
}
client() {
pkgdesc="Samba client programs"
depends="$pkgname-common=$pkgver-r$pkgrel"
cd "$pkgdir"
_mv_files \
usr/bin/cifsdd \
usr/bin/dumpmscat \
usr/bin/findsmb \
usr/bin/dbwrap_tool \
usr/bin/mdfind \
usr/bin/mvxattr \
usr/bin/nmblookup \
usr/bin/oLschema2ldif \
usr/bin/regdiff \
usr/bin/regpatch \
usr/bin/regshell \
usr/bin/regtree \
usr/bin/rpcclient \
usr/bin/samba-regedit \
usr/bin/sharesec \
usr/bin/smbcacls \
usr/bin/smbclient \
usr/bin/smbcquotas \
usr/bin/smbget \
usr/bin/smbprint \
usr/bin/smbspool \
usr/bin/smbtar \
usr/bin/smbtree \
usr/lib/$pkgname/smbspool_krb5_wrapper
}
# should not pull in samba-client-libs
_server_libs() {
pkgdesc="Samba libraries shared by server and windbind"
depends=
cd "$pkgdir"
_mv_files \
usr/lib/$pkgname/libdcerpc-samba4.so \
usr/lib/$pkgname/libidmap-samba4.so \
usr/lib/$pkgname/libnss-info-samba4.so
}
# should not pull in samba-client-libs
winbind() {
pkgdesc="Samba user and group resolver"
depends="$pkgname-common=$pkgver-r$pkgrel"
install="winbind.pre-install winbind.pre-upgrade winbind.post-install
winbind.post-upgrade"
cd "$pkgdir"
_mv_files \
usr/sbin/winbindd \
usr/lib/$pkgname/idmap \
usr/lib/$pkgname/nss_info
install -d -g winbind -m 750 \
"$subpkgdir"/var/cache/$pkgname/winbindd_privileged
}
# should not depend on any other samba package
_util_libs() {
pkgdesc="Samba utility libraries"
depends=
cd "$pkgdir"
_mv_files \
usr/lib/libsamba-util.so.* \
usr/lib/$pkgname/libgenrand-samba4.so \
usr/lib/$pkgname/libsocket-blocking-samba4.so \
usr/lib/$pkgname/libsamba-debug-samba4.so \
usr/lib/$pkgname/libtime-basic-samba4.so \
usr/lib/$pkgname/libsys-rw-samba4.so \
usr/lib/$pkgname/libiov-buf-samba4.so \
usr/lib/$pkgname/libreplace-samba4.so \
usr/lib/$pkgname/libcom_err-samba4.so.*
}
# should only depend on samba-util-libs
libwbclient() {
pkgdesc="Samba winbind client libraries"
depends=
cd "$pkgdir"
_mv_files \
usr/lib/libwbclient.so.* \
usr/lib/$pkgname/libwinbind-client-samba4.so
}
_winbind_clients() {
pkgdesc="Samba winbind client tools"
depends=
cd "$pkgdir"
_mv_files \
usr/bin/ntlm_auth \
usr/bin/wbinfo
}
_libnss_winbind() {
pkgdesc="Samba winbind NSS plugin"
depends=
cd "$pkgdir"
_mv_files \
usr/lib/libnss_winbind.so* \
usr/lib/libnss_wins.so*
}
_winbind_krb5_locator() {
pkgdesc="Samba winbind krb5 locator"
depends=
cd "$pkgdir"
_mv_files \
usr/lib/samba/krb5
}
_pam_winbind() {
pkgdesc="PAM module for winbind"
depends=
cd "$pkgdir"
_mv_files \
usr/lib/security
}
dc() {
pkgdesc="Samba AD Domain Controller"
depends="$pkgname-common=$pkgver-r$pkgrel
$pkgname-server=$pkgver-r$pkgrel
$pkgname-winbind=$pkgver-r$pkgrel
py3-$pkgname=$pkgver-r$pkgrel
$_dc_deps"
cd "$pkgdir"
_mv_files \
usr/bin/samba-tool \
usr/sbin/samba* \
usr/share/$pkgname \
usr/lib/$pkgname/auth/samba4.so \
usr/lib/$pkgname/gensec \
usr/lib/$pkgname/ldb \
usr/lib/$pkgname/libsmbpasswdparser-samba4.so \
usr/lib/$pkgname/vfs/posix_eadb.so
}
_dc_libs() {
pkgdesc="Samba AD Domain Controller libraries"
cd "$pkgdir"
_mv_files \
usr/lib/libdcerpc-samr.so.* \
usr/lib/libdcerpc-server.so.* \
usr/lib/libsamba-policy.* \
usr/lib/$pkgname/bind9 \
usr/lib/$pkgname/libHDB-SAMBA4-samba4.so \
usr/lib/$pkgname/libLIBWBCLIENT-OLD-samba4.so \
usr/lib/$pkgname/libauth-unix-token-samba4.so \
usr/lib/$pkgname/libauth4-samba4.so \
usr/lib/$pkgname/libcluster-samba4.so \
usr/lib/$pkgname/libdb-glue-samba4.so \
usr/lib/$pkgname/libdnsserver-common-samba4.so \
usr/lib/$pkgname/libdsdb-module-samba4.so \
usr/lib/$pkgname/libhdb-samba4.so.* \
usr/lib/$pkgname/libkdc-samba4.so.* \
usr/lib/$pkgname/libpac-samba4.so \
usr/lib/$pkgname/libposix-eadb-samba4.so \
usr/lib/$pkgname/libprocess-model-samba4.so \
usr/lib/$pkgname/libscavenge-dns-records-samba4.so \
usr/lib/$pkgname/libservice-samba4.so \
usr/lib/$pkgname/libshares-samba4.so \
usr/lib/$pkgname/process_model \
usr/lib/$pkgname/service
}
server() {
pkgdesc="Samba server"
depends="$pkgname-common=$pkgver-r$pkgrel"
cd "$pkgdir"
_mv_files \
usr/sbin/nmbd \
usr/sbin/smbd \
usr/sbin/eventlogadm \
usr/bin/smbstatus \
\
usr/lib/$pkgname/auth \
usr/lib/$pkgname/libxattr-tdb-samba4.so \
usr/lib/$pkgname/vfs
}
pidl() {
pkgdesc="Perl IDL compiler"
depends="perl"
cd "$pkgdir"
_mv_files \
usr/bin/pidl \
usr/share/perl*
}
_py3() {
pkgdesc="Samba python libraries"
depends="py3-tdb"
mkdir -p "$subpkgdir"/usr/lib
mv "$pkgdir"/usr/lib/python* "$subpkgdir"/usr/lib/
}
_test() {
pkgdesc="Samba server and client testing tools"
depends=
cd "$pkgdir"
_mv_files \
usr/bin/gentest \
usr/bin/locktest \
usr/bin/masktest \
usr/bin/ndrdump \
usr/bin/smbtorture \
usr/lib/$pkgname/libdlz-bind9-for-torture-samba4.so \
usr/lib/$pkgname/libtorture-samba4.so
}
# should only depend on samba-util-libs and libwbclient
libs() {
pkgdesc="Samba core libraries shared by common-tools, server and clients"
depends=
cd "$pkgdir"
# heimdal libs
_mv_files \
usr/lib/$pkgname/libasn1-samba4.so.* \
usr/lib/$pkgname/libgssapi-samba4.so.* \
usr/lib/$pkgname/libhcrypto-samba4.so.* \
usr/lib/$pkgname/libheimbase-samba4.so.* \
usr/lib/$pkgname/libheimntlm-samba4.so.* \
usr/lib/$pkgname/libhx509-samba4.so.* \
usr/lib/$pkgname/libkrb5-samba4.so.* \
usr/lib/$pkgname/libroken-samba4.so.* \
usr/lib/$pkgname/libwind-samba4.so.*
_mv_files \
usr/lib/$pkgname/libCHARSET3-samba4.so \
usr/lib/$pkgname/libMESSAGING-SEND-samba4.so \
usr/lib/$pkgname/libMESSAGING-samba4.so \
usr/lib/$pkgname/libaddns-samba4.so \
usr/lib/$pkgname/libads-samba4.so \
usr/lib/$pkgname/libasn1util-samba4.so \
usr/lib/$pkgname/libauth-samba4.so \
usr/lib/$pkgname/libauthkrb5-samba4.so \
usr/lib/$pkgname/libcli-cldap-samba4.so \
usr/lib/$pkgname/libcli-ldap-common-samba4.so \
usr/lib/$pkgname/libcli-nbt-samba4.so \
usr/lib/$pkgname/libcli-smb-common-samba4.so \
usr/lib/$pkgname/libcli-spoolss-samba4.so \
usr/lib/$pkgname/libcliauth-samba4.so \
usr/lib/$pkgname/libclidns-samba4.so \
usr/lib/$pkgname/libcmocka-samba4.so \
usr/lib/$pkgname/libcommon-auth-samba4.so \
usr/lib/$pkgname/libdbwrap-samba4.so \
usr/lib/$pkgname/libdcerpc-samba-samba4.so \
usr/lib/$pkgname/libevents-samba4.so \
usr/lib/$pkgname/libflag-mapping-samba4.so \
usr/lib/$pkgname/libgensec-samba4.so \
usr/lib/$pkgname/libgse-samba4.so \
usr/lib/$pkgname/libinterfaces-samba4.so \
usr/lib/$pkgname/libkrb5samba-samba4.so \
usr/lib/$pkgname/libldbsamba-samba4.so \
usr/lib/$pkgname/liblibcli-lsa3-samba4.so \
usr/lib/$pkgname/liblibcli-netlogon3-samba4.so \
usr/lib/$pkgname/liblibsmb-samba4.so \
usr/lib/$pkgname/libmessages-dgm-samba4.so \
usr/lib/$pkgname/libmessages-util-samba4.so \
usr/lib/$pkgname/libmsghdr-samba4.so \
usr/lib/$pkgname/libmsrpc3-samba4.so \
usr/lib/$pkgname/libndr-samba-samba4.so \
usr/lib/$pkgname/libndr-samba4.so \
usr/lib/$pkgname/libpopt-samba3-samba4.so \
usr/lib/$pkgname/libsamba-cluster-support-samba4.so \
usr/lib/$pkgname/libsamba-modules-samba4.so \
usr/lib/$pkgname/libsamba-security-samba4.so \
usr/lib/$pkgname/libsamba-sockets-samba4.so \
usr/lib/$pkgname/libsamba3-util-samba4.so \
usr/lib/$pkgname/libsamdb-common-samba4.so \
usr/lib/$pkgname/libsecrets3-samba4.so \
usr/lib/$pkgname/libserver-id-db-samba4.so \
usr/lib/$pkgname/libserver-role-samba4.so \
usr/lib/$pkgname/libsmb-transport-samba4.so \
usr/lib/$pkgname/libsmbd-shim-samba4.so \
usr/lib/$pkgname/libtalloc-report-printf-samba4.so \
usr/lib/$pkgname/libtalloc-report-samba4.so \
usr/lib/$pkgname/libtdb-wrap-samba4.so \
usr/lib/$pkgname/libtrusts-util-samba4.so \
usr/lib/$pkgname/libutil-cmdline-samba4.so \
usr/lib/$pkgname/libutil-reg-samba4.so \
usr/lib/$pkgname/libutil-setid-samba4.so \
usr/lib/$pkgname/libutil-tdb-samba4.so \
usr/lib/libdcerpc-binding.so.* \
usr/lib/libndr-krb5pac.so.* \
usr/lib/libndr-nbt.so.* \
usr/lib/libndr-standard.so.* \
usr/lib/libndr.so.* \
usr/lib/libsamba-credentials.so.* \
usr/lib/libsamba-errors.so.* \
usr/lib/libsamba-hostconfig.so.* \
usr/lib/libsamba-passdb.so.* \
usr/lib/libsamdb.so.* \
usr/lib/libsmbconf.so.* \
usr/lib/libsmbldap.so.* \
usr/lib/libtevent-util.so.*
# exit with error if some stuff stayed at main pack
rmdir "$pkgdir"/usr/lib/$pkgname \
"$pkgdir"/usr/share \
"$pkgdir"/usr/sbin \
"$pkgdir"/usr/bin \
"$pkgdir"/usr/lib \
"$pkgdir"/usr
}
sha512sums="e7d29a89ba31ac6ca6c2dfd2629b8e07e47f4b1f265907847b43845dcf19a2200bcb1ca9f6845dd39c1ffca5dbf89f998bcc4defe33f5e3c4d8006ec9c6e88ab samba-4.13.3.tar.gz
58de5e79fdfd06e828d478e112d581d333a8bee88d2602b92204d780f0d707b27dd84f8e2e6b00fca40da81c8fe99aa5bcec70d8b393d3a0a83199c72a4aa48b getpwent_r.patch
b7906d66fe55a980a54161ee3f311b51bcbce76b8d4c8cc1ba6d0c5bdf98232cb192b9d2c1aa7b3e2742f5b9848c6cf429347940eefe66c3e0eda1d5aac1bf93 musl_uintptr.patch
1854577d0e4457e27da367a6c7ec0fb5cfd63cefea0a39181c9d6e78cf8d3eb50878cdddeea3daeec955d00263151c2f86ea754ff4276ef98bc52c0276d9ffe8 netdb-defines.patch
3b4759dfcf6ec54f2131390c9eb7fd7dd23071e304905cdeaf7a9828fa888cb3dcb5c5bb6a07a634c51d0392ac47f6e22b937faf4354e3b07cfc0de7fdfa28e9 netapp.patch
c0afe8b1dfddc5290c9aa611163d20adc3a546f54bba0081f739cda4255829f1a72bae422b6cb049aca82e58d4daf63ad5553f4c5c51671019bfbbc2781460f0 missing-headers.patch
9bf4bbc8b03d9ea17d2f8ffeaf3a83541b171936a90bb8d75b08cc5afbdbaaec545c1b3782c90ae2ffc4568ab4e6f15fb21899d80c654a796301e16429c93b65 musl_rm_unistd_incl.patch
bc2df70e327fea5dfbd923600225f1448815d842c37d6937dd74eab7f7699d7f52cd7a8e28a61233974649cf86661a0107dce5019d33b71205e4b41bac73f4e2 add_missing___compar_fn_t.patch
c0bbe1186b150a9bb2a0b741a8cfbd7a5109e5fed1eaa07aaa38cf026ebe054d38cc01e2496f0cab7b40f743e1b7ecfbf8a4d5820810226c4152021df65f36dc pidl.patch
96070e2461370437f48571e7de550c13a332fef869480cfe92e7cac73a998f6c2ee85d2580df58211953bebd0e577691aa710c8edddf3ea0f30e9d47d0a2fd44 samba.initd
e2b49cb394e758447ca97de155a61b4276499983a0a5c00b44ae621c5559b759a766f8d1c8d3ee98ad5560f4064a847a7a20cfa2e14f85c061bec8b80fd649eb samba.confd
3458a4e1f8a8b44c966afb339b2dca51615be049f594c14911fc4d8203623deee416b6fe881436e246fc7d49c97a2b3bf9c5f33ba774302b24190a1103d6b67d samba.logrotate"