diff options
Diffstat (limited to 'abs/extra/samba/PKGBUILD')
-rw-r--r-- | abs/extra/samba/PKGBUILD | 339 |
1 files changed, 219 insertions, 120 deletions
diff --git a/abs/extra/samba/PKGBUILD b/abs/extra/samba/PKGBUILD index 63d943d..4209761 100644 --- a/abs/extra/samba/PKGBUILD +++ b/abs/extra/samba/PKGBUILD @@ -1,168 +1,267 @@ -# $Id: PKGBUILD 162373 2012-06-26 05:39:58Z tpowa $ + # Maintainer: Tobias Powalowski <tpowa@archlinux.org> # Contributor: judd <jvinet@zeroflux.org> +# Contributor: Michael Hansen <zrax0111 gmail com> +# Contributor: Marco A Rojas <marquicus at gmail.com> +# Contributor: Netanel Shine <netanel at archlinux.org.il > +# Contributor: ngoonee <ngoonee.talk@gmail.com> +# Contributor: Adam Russell <adamlr6+arch@gmail.com> +# Contributor: Dhananjay Sathe <dhananjaysathe@gmail.com> + pkgbase=samba pkgname=('libwbclient' 'smbclient' 'samba') -pkgver=3.6.6 +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=3.6.6 +_realver=4.1.6 pkgrel=1 arch=(i686 x86_64) url="http://www.samba.org" license=('GPL3') -makedepends=('db' 'popt' 'libcups' 'acl' 'libldap' 'libcap' 'krb5' 'pam' 'gnutls>=2.4.1' 'talloc' 'tdb') +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 samba.logrotate - swat.xinetd + samba.logrotate samba.pam + samba.service samba.conf.d smbd.service + smbd.socket nmbd.service + smbd@.service winbindd.service - samba.conf) + samba.conf + readline-6.3.patch) ### UNINSTALL dmapi package before building!!! build() { - cd ${srcdir}/${pkgbase}-${_realver}/source3 - ./configure --prefix=/usr \ - --libdir=/usr/lib/ \ + # 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-piddir=/var/run/samba \ - --with-fhs \ - --with-pam \ - --with-pam_smbpass \ - --with-pammodulesdir=/usr/lib/security \ - --with-dnsupdate \ - --with-automount \ - --with-quotas \ + --with-sockets-dir=/var/run/samba \ + --with-piddir=/var/run \ --with-ads \ + --with-ldap \ + --with-winbind \ --with-acl-support \ - --with-libsmbclient \ - --with-syslog \ - --enable-external-libtalloc \ - --disable-dnssd \ - --disable-avahi \ - --with-shared-modules=idmap_ad,idmap_adex,idmap_rid,idmap_hash,idmap_tdb2 \ - --enable-external-libtdb + --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 () { +package_libwbclient() { pkgdesc="Samba winbind client library" -depends=('glibc') - cd ${srcdir}/${pkgbase}-${_realver}/source3 - mkdir -p ${pkgdir}/usr/lib - for i in libwbclient*; do - cp -a bin/${i}*.so* ${pkgdir}/usr/lib/ - done +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 () { +package_smbclient() { pkgdesc="Tools to access a server's filespace and printers via SMB" -depends=('readline' 'popt' 'libldap' 'cifs-utils' 'libcap' 'krb5' 'db' 'e2fsprogs' 'tdb' 'talloc' 'libwbclient') - cd ${srcdir}/${pkgbase}-${_realver}/source3 - mkdir -p ${pkgdir}/usr/bin ${pkgdir}/usr/lib - install -m755 bin/{smbclient,rpcclient,smbspool,smbtree,smbcacls,smbcquotas,smbget,net,nmblookup} ${pkgdir}/usr/bin/ - for i in libnetapi* libsmbclient*;do - cp -a bin/${i}*.so* ${pkgdir}/usr/lib/ - done - install -m755 script/smbtar ${pkgdir}/usr/bin/ - mkdir -p ${pkgdir}/usr/lib/cups/backend - ln -sf /usr/bin/smbspool ${pkgdir}/usr/lib/cups/backend/smb - mkdir -p ${pkgdir}/usr/include - install -m644 include/libsmbclient.h ${pkgdir}/usr/include/ - install -m644 lib/netapi/netapi.h ${pkgdir}/usr/include/ - mkdir -p ${pkgdir}/usr/share/man/man{1,7} - for man in rpcclient smbcacls smbclient smbcquotas smbget \ - smbtree smbtar nmblookup; do - install -m644 ../docs/manpages/${man}.1 ${pkgdir}/usr/share/man/man1/ - done - install -m644 ../docs/manpages/libsmbclient.7 ${pkgdir}/usr/share/man/man7/ +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="Tools to access a server's filespace and printers via 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) -depends=('db' 'popt' 'libcups' 'acl' 'libldap' "smbclient>=$pkgver" 'libcap' 'krb5' 'pam' 'gnutls' 'e2fsprogs' 'tdb' 'talloc') -install='samba.install' - cd ${srcdir}/samba-${_realver}/source3 +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 - make DESTDIR=${pkgdir} install - chmod 644 ${pkgdir}/usr/include/*.h - rm -rf ${pkgdir}/usr/var - rm -rf ${pkgdir}/var/run/samba - (cd script; cp installbin.sh i; cat i | sed 's/\/sbin\///' > installbin.sh) - install -D -m755 ../../samba ${pkgdir}/etc/rc.d/samba - install -D -m644 ../../samba.conf.d ${pkgdir}/etc/conf.d/samba - mkdir -p ${pkgdir}/etc/samba - cat ../examples/smb.conf.default | sed 's|log file = .*$|log file = /var/log/samba/log.%m|g' >${pkgdir}/etc/samba/smb.conf.default - install -D -m644 ../../samba.logrotate ${pkgdir}/etc/logrotate.d/samba - install -D -m644 ../../swat.xinetd ${pkgdir}/etc/xinetd.d/swat - install -D -m644 ../../samba.pam ${pkgdir}/etc/pam.d/samba - # spool directory - install -d -m1777 ${pkgdir}/var/spool/samba - sed -i 's|/usr/spool/samba|/var/spool/samba|g' ${pkgdir}/etc/samba/smb.conf.default - # fix logrotate - sed -i -e 's|log.%m|%m.log|g' ${pkgdir}/etc/samba/smb.conf.default - # nsswitch libraries - install -D -m755 ${srcdir}/samba-${_realver}/nsswitch/libnss_wins.so ${pkgdir}/usr/lib/libnss_wins.so - ln -s libnss_wins.so ${pkgdir}/usr/lib/libnss_wins.so.2 - install -D -m755 ${srcdir}/samba-${_realver}/nsswitch/libnss_winbind.so ${pkgdir}/usr/lib/libnss_winbind.so - ln -s libnss_winbind.so ${pkgdir}/usr/lib/libnss_winbind.so.2 + + 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 - install -d -m 0755 ${pkgdir}/usr/lib/krb5/plugins/libkrb5 - install -m 755 bin/winbind_krb5_locator.so ${pkgdir}/usr/lib/krb5/plugins/libkrb5/winbind_krb5_locator.so - # remove conflict files of smbclient - for man in libsmbclient smbspool \ - mount.cifs net cifs.upcall; do - rm -f ${pkgdir}/usr/share/man/man8/${man}.8 - done - for i in libnetapi* libwbclient* libsmbclient* winbind_krb5*;do - rm -f ${pkgdir}/usr/lib/$i - done - for bin in net \ - nmblookup rpcclient smbcacls smbclient \ - smbcquotas smbget smbspool smbtar smbtree; do - rm -f ${pkgdir}/usr/bin/$bin - done - rm -f ${pkgdir}/usr/sbin/cifs.upcall - rm -f ${pkgdir}/usr/include/netapi.h - for man in rpcclient smbcacls smbclient smbcquotas \ - smbtree smbtar nmblookup smbget; do - rm -f ${pkgdir}/usr/share/man/man1/${man}.1 - done - for man in tdbbackup tdbdump tdbtool; do - rm -f ${pkgdir}/usr/share/man/man8/${man}.8 - done - rm -f ${pkgdir}/usr/share/man/man7/libsmbclient.7 - rm -f ${pkgdir}/usr/include/libsmbclient.h + 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 - # install systemd files - for i in smbd nmbd winbindd; do - install -D -m644 ${srcdir}/$i.service ${pkgdir}/usr/lib/systemd/system/$i.service - 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 - rm -rf ${pkgdir}/var/run } -md5sums=('0bea52842d172231c0c0e23ee570d7af' - 'a45a4283723be2b0ae32439dc4496a09' +md5sums=('9dc64658c0cc81e7637f9b975c19638c' + '5697da77590ec092cc8a883bae06093c' + '96f82c38f3f540b53f3e5144900acf17' + 'ee4763a656cf00d92bfda31b6bb2c5cb' + '6c447748a064d631435dbef0a3dcf32f' + 'e4ae6a3cac080602120aa151918c4a36' + 'a78b9aa93eb14b0ac445897395693225' + 'df6380c73cb73163968eabc8650f7358' + '70afd2db60a2e8eff7615dbdecd887ac' + 'd5f56f43e1280bba20f6bbd88d16fa41' + '49abd7b719e3713a3f75a8a50958e381') +md5sums=('9dc64658c0cc81e7637f9b975c19638c' '5697da77590ec092cc8a883bae06093c' - 'a4bbfa39fee95bba2e7ad6b535fae7e6' '96f82c38f3f540b53f3e5144900acf17' - 'f2f2e348acd1ccb566e95fa8a561b828' - '389cc4fa3b459360feaa1b3d93274693' - 'ea6a1251be979cb30c6098a28b270d2d' - '455f106ce7a4f983975b3a686eaa85e5' - '8e7ed39b54968e427f9506e9107bfb45') + 'ee4763a656cf00d92bfda31b6bb2c5cb' + '6c447748a064d631435dbef0a3dcf32f' + 'e4ae6a3cac080602120aa151918c4a36' + 'a78b9aa93eb14b0ac445897395693225' + 'df6380c73cb73163968eabc8650f7358' + '70afd2db60a2e8eff7615dbdecd887ac' + 'd5f56f43e1280bba20f6bbd88d16fa41' + '49abd7b719e3713a3f75a8a50958e381' + '1179c1dcdb95f79b0d5813698d010d2c') |