mirror of
https://gitdl.cn/https://github.com/chakralinux/core.git
synced 2025-02-03 18:57:13 +08:00
245 lines
9.7 KiB
Bash
245 lines
9.7 KiB
Bash
# Contributions from Arch Linux: https://www.archlinux.org/packages/extra/x86_64/samba/
|
|
|
|
pkgbase=samba
|
|
pkgname=('libwbclient' 'smbclient' 'samba')
|
|
pkgver=4.5.14
|
|
pkgrel=1
|
|
arch=('x86_64')
|
|
url="https://www.samba.org"
|
|
license=('GPL3')
|
|
makedepends=('python2' 'docbook-xsl' 'pkg-config' 'libbsd' 'db' 'popt' 'libcups'
|
|
'readline' 'tevent' 'acl' 'libldap' 'libcap' 'ldb>=1.1.29' 'krb5' 'pam' 'systemd'
|
|
'gamin' 'gnutls' 'talloc' 'tdb' 'dbus' 'libaio')
|
|
source=(http://us1.samba.org/samba/ftp/stable/${pkgbase}-${pkgver}.tar{.gz,.asc}
|
|
samba.logrotate
|
|
samba.pam
|
|
samba.service
|
|
samba.conf.d
|
|
smbd.service
|
|
smbd.socket
|
|
nmbd.service
|
|
smbd@.service
|
|
winbindd.service
|
|
samba.conf)
|
|
validpgpkeys=('52FBC0B86D954B0843324CDC6F33915B6568B7EA') #Samba Distribution Verification Key <samba-bugs@samba.org>
|
|
|
|
md5sums=('37246b18545ce55ac45aa79da9bf7c8a'
|
|
'SKIP'
|
|
'5697da77590ec092cc8a883bae06093c'
|
|
'96f82c38f3f540b53f3e5144900acf17'
|
|
'ee4763a656cf00d92bfda31b6bb2c5cb'
|
|
'6c447748a064d631435dbef0a3dcf32f'
|
|
'e4ae6a3cac080602120aa151918c4a36'
|
|
'a78b9aa93eb14b0ac445897395693225'
|
|
'df6380c73cb73163968eabc8650f7358'
|
|
'70afd2db60a2e8eff7615dbdecd887ac'
|
|
'd5f56f43e1280bba20f6bbd88d16fa41'
|
|
'49abd7b719e3713a3f75a8a50958e381')
|
|
### UNINSTALL dmapi package before building!!!
|
|
|
|
build() {
|
|
# Use samba-pkg as a staging directory for the split packages
|
|
# (This is so RPATHS and symlinks are generated correctly via
|
|
# make install, but the otherwise unsplit pieces can be split)
|
|
_pkgsrc=${srcdir}/samba-pkg
|
|
rm -rf ${_pkgsrc}
|
|
cd ${srcdir}/samba-${pkgver}
|
|
# change to use python2
|
|
SAVEIFS=${IFS}
|
|
IFS=$(echo -en "\n\b")
|
|
PYTHON_CALLERS="$(find ${srcdir}/samba-${pkgver} -name '*.py')
|
|
$(find ${srcdir}/samba-${pkgver} -name 'wscript*')
|
|
$(find ${srcdir}/samba-${pkgver} -name 'configure.ac')
|
|
$(find ${srcdir}/samba-${pkgver} -name 'upgrade_from_s3')
|
|
$(find ${srcdir}/samba-${pkgver}/buildtools -type f)
|
|
$(find ${srcdir}/samba-${pkgver}/source4/scripting -type f)"
|
|
sed -i -e "s|/usr/bin/env python$|/usr/bin/env python2|" \
|
|
-e "s|python-config|python2-config|" \
|
|
-e "s|bin/python|bin/python2|" \
|
|
${PYTHON_CALLERS}
|
|
IFS=${SAVEIFS}
|
|
|
|
export PYTHON=/usr/bin/python2
|
|
_samba4_idmap_modules=idmap_ad,idmap_rid,idmap_adex,idmap_hash,idmap_tdb2
|
|
_samba4_pdb_modules=pdb_tdbsam,pdb_ldap,pdb_ads,pdb_smbpasswd,pdb_wbc_sam,pdb_samba4
|
|
_samba4_auth_modules=auth_unix,auth_wbc,auth_server,auth_netlogond,auth_script,auth_samba4
|
|
cd ${srcdir}/samba-${pkgver}
|
|
./configure --enable-fhs \
|
|
--prefix=/usr \
|
|
--sbindir=/usr/bin \
|
|
--libdir=/usr/lib \
|
|
--localstatedir=/var \
|
|
--with-configdir=/etc/samba \
|
|
--with-lockdir=/var/cache/samba \
|
|
--with-sockets-dir=/var/run/samba \
|
|
--with-piddir=/var/run \
|
|
--with-ads \
|
|
--with-ldap \
|
|
--with-winbind \
|
|
--with-acl-support \
|
|
--enable-gnutls \
|
|
--with-pam \
|
|
--with-pammodulesdir=/usr/lib/security \
|
|
--bundled-libraries=!tdb,!talloc,!pytalloc-util,!tevent,!popt,!ldb,!pyldb-util \
|
|
--with-shared-modules=${_samba4_idmap_modules},${_samba4_pdb_modules},${_samba4_auth_modules} \
|
|
--disable-rpath-install
|
|
|
|
# Add this to the options once it's working...
|
|
#--with-system-mitkrb5 /opt/heimdal
|
|
make
|
|
make DESTDIR="${_pkgsrc}/" install
|
|
|
|
# This gets skipped somehow
|
|
if [ ! -e ${_pkgsrc}/usr/bin/smbtar ]; then
|
|
install -m755 ${srcdir}/samba-${pkgver}/source3/script/smbtar ${_pkgsrc}/usr/bin/
|
|
fi
|
|
}
|
|
|
|
package_libwbclient() {
|
|
pkgdesc="Samba winbind client library"
|
|
depends=('glibc' 'libbsd')
|
|
# Use samba-pkg as a staging directory for the split packages
|
|
# (This is so RPATHS and symlinks are generated correctly via
|
|
# make install, but the otherwise unsplit pieces can be split)
|
|
_pkgsrc=${srcdir}/samba-pkg
|
|
install -d -m755 ${pkgdir}/usr/lib
|
|
mv ${_pkgsrc}/usr/lib/libwbclient*.so* ${pkgdir}/usr/lib/
|
|
|
|
install -d -m755 ${pkgdir}/usr/lib/samba
|
|
mv ${_pkgsrc}/usr/lib/samba/libwinbind-client*.so* ${pkgdir}/usr/lib/samba/
|
|
#mv ${_pkgsrc}/usr/lib/samba/libreplace.so* ${pkgdir}/usr/lib/samba/
|
|
|
|
install -d -m755 ${pkgdir}/usr/lib/pkgconfig
|
|
mv ${_pkgsrc}/usr/lib/pkgconfig/wbclient.pc ${pkgdir}/usr/lib/pkgconfig/
|
|
|
|
install -d -m755 ${pkgdir}/usr/include/samba-4.0
|
|
mv ${_pkgsrc}/usr/include/samba-4.0/wbclient.h ${pkgdir}/usr/include/samba-4.0/
|
|
}
|
|
|
|
package_smbclient() {
|
|
pkgdesc="Tools to access a server's filespace and printers via SMB"
|
|
depends=('popt' 'cifs-utils' 'tdb' "libwbclient>=$pkgver" 'ldb'
|
|
'tevent' 'libgcrypt' 'python2' 'talloc' 'readline' 'gnutls'
|
|
'libbsd' 'libldap' 'libcups' 'systemd')
|
|
|
|
_smbclient_bins=('smbclient' 'rpcclient' 'smbspool'
|
|
'smbtree' 'smbcacls' 'smbcquotas' 'smbget' 'net'
|
|
'nmblookup' 'smbtar')
|
|
# Use samba-pkg as a staging directory for the split packages
|
|
# (This is so RPATHS and symlinks are generated correctly via
|
|
# make install, but the otherwise unsplit pieces can be split)
|
|
_pkgsrc=${srcdir}/samba-pkg
|
|
install -d -m755 ${pkgdir}/usr/bin
|
|
for bin in ${_smbclient_bins[@]}; do
|
|
mv ${_pkgsrc}/usr/bin/${bin} ${pkgdir}/usr/bin/
|
|
done
|
|
|
|
# smbclient binaries link to the majority of the samba
|
|
# libs, so this is a shortcut instead of resolving the
|
|
# whole dependency tree by hand
|
|
install -d -m755 ${pkgdir}/usr/lib
|
|
for lib in ${_pkgsrc}/usr/lib/lib*.so*; do
|
|
mv ${lib} ${pkgdir}/usr/lib/
|
|
done
|
|
|
|
install -d -m755 ${pkgdir}/usr/lib/samba
|
|
for lib in ${_pkgsrc}/usr/lib/samba/lib*.so*; do
|
|
mv ${lib} ${pkgdir}/usr/lib/samba/
|
|
done
|
|
|
|
install -d -m755 ${pkgdir}/usr/lib/pkgconfig
|
|
mv ${_pkgsrc}/usr/lib/pkgconfig/smbclient.pc ${pkgdir}/usr/lib/pkgconfig/
|
|
mv ${_pkgsrc}/usr/lib/pkgconfig/netapi.pc ${pkgdir}/usr/lib/pkgconfig/
|
|
|
|
install -d -m755 ${pkgdir}/usr/share/man/man1
|
|
install -d -m755 ${pkgdir}/usr/share/man/man7
|
|
install -d -m755 ${pkgdir}/usr/share/man/man8
|
|
for bin in ${_smbclient_bins[@]}; do
|
|
if [ -e ${_pkgsrc}/usr/share/man/man1/${bin}.1 ]; then
|
|
mv ${_pkgsrc}/usr/share/man/man1/${bin}.1 ${pkgdir}/usr/share/man/man1/
|
|
fi
|
|
if [ -e ${_pkgsrc}/usr/share/man/man8/${bin}.8 ]; then
|
|
mv ${_pkgsrc}/usr/share/man/man8/${bin}.8 ${pkgdir}/usr/share/man/man8/
|
|
fi
|
|
done
|
|
mv ${_pkgsrc}/usr/share/man/man7/libsmbclient.7 ${pkgdir}/usr/share/man/man7/
|
|
|
|
install -d -m755 ${pkgdir}/usr/include/samba-4.0
|
|
mv ${_pkgsrc}/usr/include/samba-4.0/libsmbclient.h ${pkgdir}/usr/include/samba-4.0/
|
|
mv ${_pkgsrc}/usr/include/samba-4.0/netapi.h ${pkgdir}/usr/include/samba-4.0/
|
|
|
|
mkdir -p ${pkgdir}/usr/lib/cups/backend
|
|
ln -sf /usr/bin/smbspool ${pkgdir}/usr/lib/cups/backend/smb
|
|
}
|
|
|
|
package_samba() {
|
|
pkgdesc="SMB Fileserver and AD Domain server"
|
|
depends=('db>=4.7' 'popt' 'libcups' 'libcap>=2.16' 'gamin' 'gnutls>=2.4.1'
|
|
'talloc' 'ldb' 'libbsd' 'python2' 'iniparser' 'tdb' 'libaio' "smbclient>=$pkgver")
|
|
backup=(etc/logrotate.d/samba
|
|
etc/pam.d/samba
|
|
etc/samba/smb.conf
|
|
etc/xinetd.d/swat
|
|
etc/conf.d/samba)
|
|
install=samba.install
|
|
# Use samba-pkg as a staging directory for the split packages
|
|
# (This is so RPATHS and symlinks are generated correctly via
|
|
# make install, but the otherwise unsplit pieces can be split)
|
|
_pkgsrc=${srcdir}/samba-pkg
|
|
# Everything that libwbclient and smbclient didn't install goes
|
|
# into the samba package...
|
|
mv ${_pkgsrc}/* ${pkgdir}/
|
|
rmdir ${_pkgsrc}
|
|
|
|
_pyver=`python2 -c 'import sys; print(sys.version[:3])'`
|
|
|
|
find ${pkgdir}/usr/lib/python${_pyver}/site-packages/ -name '*.py' | \
|
|
xargs sed -i "s|#!/usr/bin/env python$|#!/usr/bin/env python2|"
|
|
find ${pkgdir}/usr/bin ${pkgdir}/usr/bin -type f -executable | \
|
|
xargs sed -i "s|#!/usr/bin/env python$|#!/usr/bin/env python2|"
|
|
|
|
# Make admin scripts look in the right place for the samba python module
|
|
for script in bin/samba_dnsupdate bin/samba_kcc bin/samba_spnupdate \
|
|
bin/samba_upgradedns bin/samba-tool
|
|
do
|
|
sed -i "/^sys\.path\.insert/ a\
|
|
sys.path.insert(0, '/usr/lib/python${_pyver}/site-packages')" \
|
|
${pkgdir}/usr/${script}
|
|
done
|
|
|
|
# install systemd files
|
|
install -d -m755 ${pkgdir}/usr/lib/systemd/system
|
|
#for i in smbd nmbd winbindd; do
|
|
install -m644 ${srcdir}/*.service ${pkgdir}/usr/lib/systemd/system/
|
|
install -m644 ${srcdir}/*.socket ${pkgdir}/usr/lib/systemd/system/
|
|
install -d -m755 ${pkgdir}/etc/conf.d
|
|
install -m644 ${srcdir}/samba.conf.d ${pkgdir}/etc/conf.d/samba
|
|
#done
|
|
# create ephemeral dirs via tmpfiles rather than shipping them in package
|
|
install -D -m644 ${srcdir}/samba.conf ${pkgdir}/usr/lib/tmpfiles.d/samba.conf
|
|
# install sample smb.conf
|
|
install -d -m755 ${pkgdir}/etc/samba
|
|
install -m644 ${srcdir}/samba-${pkgver}/packaging/LSB/smb.conf ${pkgdir}/etc/samba/smb.conf.default
|
|
|
|
mkdir -p ${pkgdir}/etc/samba/private
|
|
chmod 700 ${pkgdir}/etc/samba/private
|
|
|
|
install -D -m644 ${srcdir}/samba.logrotate ${pkgdir}/etc/logrotate.d/samba
|
|
install -D -m644 ${srcdir}/samba.pam ${pkgdir}/etc/pam.d/samba
|
|
|
|
# winbind krb5 locator
|
|
mkdir -p ${pkgdir}/usr/lib/krb5/plugins/libkrb5
|
|
mv ${pkgdir}/usr/lib/*.so ${pkgdir}/usr/lib/krb5/plugins/libkrb5/
|
|
|
|
# fix logrotate
|
|
sed -i -e 's|log.%m|%m.log|g' ${pkgdir}/etc/samba/smb.conf.default
|
|
|
|
# spool directory
|
|
install -d -m1777 ${pkgdir}/var/spool/samba
|
|
|
|
rm -rf ${pkgdir}/var/run
|
|
|
|
# copy ldap example
|
|
install -D -m644 ${srcdir}/samba-${pkgver}/examples/LDAP/samba.schema ${pkgdir}/usr/share/doc/samba/examples/LDAP/samba.schema
|
|
}
|