# Maintainer: Tobias Powalowski # Contributor: judd # Contributor: Michael Hansen # Contributor: Marco A Rojas # Contributor: Netanel Shine # Contributor: ngoonee # Contributor: Adam Russell # Contributor: Dhananjay Sathe pkgbase=samba pkgname=('libwbclient' 'smbclient' 'samba') pkgver=4.1.6 # We use the 'A' to fake out pacman's version comparators. Samba chooses # to append 'a','b',etc to their subsequent releases, which pamcan # misconstrues as alpha, beta, etc. Bad samba! _realver=4.1.6 pkgrel=3 arch=(i686 x86_64) url="http://www.samba.org" license=('GPL3') makedepends=('python2' 'docbook-xsl' 'pkg-config' 'libbsd' 'db' 'popt' 'libcups' 'readline' 'tevent' 'acl' 'libldap' 'libcap' 'ldb>=1.1.15' 'krb5' 'pam' 'gnutls>=2.4.1' 'talloc' 'tdb' 'dbus') source=(http://us1.samba.org/samba/ftp/stable/${pkgbase}-${_realver}.tar.gz samba.logrotate samba.pam samba.service samba.conf.d smbd.service smbd.socket nmbd.service smbd@.service winbindd.service samba.conf readline-6.3.patch) ### 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-${_realver} # change to use python2 SAVEIFS=${IFS} IFS=$(echo -en "\n\b") PYTHON_CALLERS="$(find ${srcdir}/samba-${_realver} -name '*.py') $(find ${srcdir}/samba-${_realver} -name 'wscript*') $(find ${srcdir}/samba-${_realver} -name 'configure.ac') $(find ${srcdir}/samba-${_realver} -name 'upgrade_from_s3') $(find ${srcdir}/samba-${_realver}/buildtools -type f) $(find ${srcdir}/samba-${_realver}/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-${_realver} patch -Np1 -i ${srcdir}/readline-6.3.patch ./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 \ --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-${_realver}/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') _smbclient_bins=('smbclient' 'smbclient4' 'rpcclient' 'smbspool' 'smbtree' 'smbcacls' 'smbcquotas' 'smbget' 'net' 'nmblookup' 'nmblookup4' '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/smbclient-raw.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' '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-${_realver}/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-${_realver}/examples/LDAP/samba.schema ${pkgdir}/usr/share/doc/samba/examples/LDAP/samba.schema } md5sums=('9dc64658c0cc81e7637f9b975c19638c' '5697da77590ec092cc8a883bae06093c' '96f82c38f3f540b53f3e5144900acf17' 'ee4763a656cf00d92bfda31b6bb2c5cb' '6c447748a064d631435dbef0a3dcf32f' 'e4ae6a3cac080602120aa151918c4a36' 'a78b9aa93eb14b0ac445897395693225' 'df6380c73cb73163968eabc8650f7358' '70afd2db60a2e8eff7615dbdecd887ac' 'd5f56f43e1280bba20f6bbd88d16fa41' '49abd7b719e3713a3f75a8a50958e381') md5sums=('9dc64658c0cc81e7637f9b975c19638c' '5697da77590ec092cc8a883bae06093c' '96f82c38f3f540b53f3e5144900acf17' 'ee4763a656cf00d92bfda31b6bb2c5cb' '6c447748a064d631435dbef0a3dcf32f' 'e4ae6a3cac080602120aa151918c4a36' 'a78b9aa93eb14b0ac445897395693225' 'df6380c73cb73163968eabc8650f7358' '70afd2db60a2e8eff7615dbdecd887ac' 'd5f56f43e1280bba20f6bbd88d16fa41' '49abd7b719e3713a3f75a8a50958e381' '1179c1dcdb95f79b0d5813698d010d2c')