Only add WBFLAG_PAM_CONTACT_TRUSTDOM when performing a krb5 auth request.
[ira/wip.git] / packaging / RHEL / samba.spec.tmpl
index 1a19e495607df9d69512ce02fbaeb6530ea683e7..d71e5b07668fd70b55b0f411262a4b61973dd23a 100644 (file)
@@ -4,9 +4,10 @@
 Summary: Samba SMB client and server
 Vendor: Samba Team
 Packager: Samba Team <samba@samba.org>
-Name: samba
-Version: PVERSION
-Release: PRELEASE
+Name:         samba
+Version:      PVERSION
+Release:      PRELEASEPRPMREV
+Epoch:        0
 License: GNU GPL version 2
 Group: System Environment/Daemons
 URL: http://www.samba.org/
@@ -17,17 +18,17 @@ Source: samba-%{version}.tar.bz2
 Source998: filter-requires-samba.sh
 Source999: setup.tar.bz2
 
-Requires: pam >= 0.64 %{auth} samba-common = %{version}
-Requires: logrotate >= 3.4 initscripts >= 5.54-1
-BuildRoot: %{_tmppath}/%{name}-%{version}-root
 Prereq: /sbin/chkconfig /bin/mktemp /usr/bin/killall
 Prereq: fileutils sed /etc/init.d
-BuildRequires: pam-devel, readline-devel, fileutils, libacl-devel, openldap-devel, krb5-devel, cups-devel
+
+Requires: pam >= 0.64 %{auth} 
+Requires: samba-common = %{version}-%{release}
+Requires: logrotate >= 3.4 initscripts >= 5.54-1
 Provides: samba = %{version}
-Obsoletes: samba-common, samba-client, samba-swat
 
-BuildRoot: %{_tmppath}/%{name}-%{version}-root
 Prefix: /usr
+BuildRoot: %{_tmppath}/%{name}-%{version}-root
+BuildRequires: pam-devel, readline-devel, fileutils, libacl-devel, openldap-devel, krb5-devel, cups-devel
 
 # Working around perl dependency problem from docs
 %define __perl_requires %{SOURCE998}
@@ -45,11 +46,13 @@ TCP/IP (NetBT) protocols and does NOT need the NetBEUI (Microsoft Raw
 NetBIOS frame) protocol.
 
 
+#######################################################################
 %package client
 Summary: Samba (SMB) client programs.
 Group: Applications/System
-Requires: samba-common = %{version}
+Requires: samba-common = %{version}-%{release}
 Obsoletes: smbfs
+Provides: samba-client = %{version}-%{release}
 
 %description client
 The samba-client package provides some SMB clients to compliment the
@@ -57,19 +60,23 @@ built-in SMB filesystem in Linux. These clients allow access of SMB
 shares and printing to SMB printers.
 
 
+#######################################################################
 %package common
 Summary: Files used by both Samba servers and clients.
 Group: Applications/System
+Provides: samba-common = %{version}-%{release}
 
 %description common
 Samba-common provides files necessary for both the server and client
 packages of Samba.
 
 
+#######################################################################
 %package swat
 Summary: The Samba SMB server configuration program.
 Group: Applications/System
 Requires: samba = %{version} xinetd
+Provides: samba-swat = %{version}-%{release}
 
 %description swat
 The samba-swat package includes the new SWAT (Samba Web Administration
@@ -77,6 +84,21 @@ Tool), for remotely managing Samba's smb.conf file using your favorite
 Web browser.
 
 
+#######################################################################
+%package doc
+Summary:      Samba Documentation
+Group:        Documentation/Other
+Provides:     samba-doc = %{version}-%{release}
+Prereq:       /usr/bin/find /bin/rm /usr/bin/xargs
+
+%description doc
+The samba-doc package includes the HTML versions of the Samba manpages
+utilized by SWAT as well as the HTML and PDF version of "Using Samba",
+"Samba By Example", and "The Official Samba HOWTO and Reference Guide".
+
+
+#######################################################################
+
 %prep
 %setup -q
 
@@ -88,27 +110,25 @@ Web browser.
 /bin/cp setup/filter-requires-samba.sh %{SOURCE998}
 
 cd source
-%ifarch i386 sparc
-RPM_OPT_FLAGS="$RPM_OPT_FLAGS -D_FILE_OFFSET_BITS=64"
-%endif
-%ifarch ia64
-libtoolize --copy --force     # get it to recognize IA-64
-autoheader
-autoconf
-EXTRA="-D_LARGEFILE64_SOURCE"
-%endif
-
-## run autogen if missing the configure script
-if [ ! -f "configure" ]; then
-       ./autogen.sh
-fi
+# RPM_OPT_FLAGS="$RPM_OPT_FLAGS -D_FILE_OFFSET_BITS=64"
+
+## check for ccache
+# ccache -h 2>&1 > /dev/null
+#if [ $? -eq 0 ]; then
+#      CC="ccache gcc"
+#else
+       CC="gcc"
+#fi 
+
+## always run autogen.sh
+./autogen.sh
 
 CFLAGS="$RPM_OPT_FLAGS $EXTRA -D_GNU_SOURCE" ./configure \
        --prefix=%{_prefix} \
        --localstatedir=/var \
         --with-configdir=%{_sysconfdir}/samba \
         --with-libdir=%{_libdir}/samba \
-        --with-lockdir=/var/cache/samba \
+        --with-lockdir=/var/lib/samba \
         --with-logfilebase=/var/log/samba \
         --with-mandir=%{_mandir} \
         --with-piddir=/var/run \
@@ -126,14 +146,26 @@ CFLAGS="$RPM_OPT_FLAGS $EXTRA -D_GNU_SOURCE" ./configure \
         --without-smbwrapper \
        --with-pam \
        --with-quotas \
-       --with-shared-modules=idmap_rid \
+       --with-shared-modules=idmap_rid,idmap_ad \
        --with-smbmount \
        --with-syslog \
-       --with-utmp 
+       --with-utmp \
+       --with-dnsupdate
 
 make showlayout
 
-make CFLAGS="$RPM_OPT_FLAGS -D_GNU_SOURCE"  proto pch
+make CFLAGS="$RPM_OPT_FLAGS -D_GNU_SOURCE"  proto 
+
+## check for gcc 3.4 or later
+CC_VERSION=`${CC} --version | head -1 | awk '{print $3}'`
+CC_MAJOR=`echo ${CC_VERSION} | cut -d. -f 1`
+CC_MINOR=`echo ${CC_VERSION} | cut -d. -f 2`
+if [ ${CC_MAJOR} -ge 3 ]; then
+        if [ ${CC_MAJOR} -gt 3 -o ${CC_MINOR} -ge 4 ]; then
+                make pch
+        fi
+fi
+
 
 make CFLAGS="$RPM_OPT_FLAGS -D_GNU_SOURCE" %{?_smp_mflags} \
        all modules pam_smbpass
@@ -154,7 +186,6 @@ rm -rf $RPM_BUILD_ROOT
 
 # Create the target build directory hierarchy
 mkdir -p $RPM_BUILD_ROOT%{_datadir}/swat/{help,include,using_samba/{figs,gifsa}}
-mkdir -p $RPM_BUILD_ROOT%{_datadir}/swat/using_samba
 mkdir -p $RPM_BUILD_ROOT%{_includedir}
 mkdir -p $RPM_BUILD_ROOT%{_initrddir}
 mkdir -p $RPM_BUILD_ROOT{%{_libdir},%{_includedir}}
@@ -169,7 +200,7 @@ mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/{pam.d,logrotate.d}
 mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/rc.d/init.d
 mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/{samba,sysconfig}
 mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/xinetd.d
-mkdir -p $RPM_BUILD_ROOT/var/cache/samba/winbindd_privileged
+mkdir -p $RPM_BUILD_ROOT/var/lib/samba/winbindd_privileged
 mkdir -p $RPM_BUILD_ROOT/var/{log,run/winbindd,spool}/samba
 
 cd source
@@ -181,7 +212,7 @@ cd ..
 cp source/bin/pam_smbpass.so $RPM_BUILD_ROOT/%{_lib}/security/pam_smbpass.so
 
 # NSS & PAM winbind support
-install -m 755 source/nsswitch/pam_winbind.so $RPM_BUILD_ROOT/%{_lib}/security/pam_winbind.so
+install -m 755 source/bin/pam_winbind.so $RPM_BUILD_ROOT/%{_lib}/security/pam_winbind.so
 install -m 755 source/nsswitch/libnss_winbind.so $RPM_BUILD_ROOT/%{_lib}/libnss_winbind.so
 install -m 755 source/nsswitch/libnss_wins.so $RPM_BUILD_ROOT/%{_lib}/libnss_wins.so
 ( cd $RPM_BUILD_ROOT/%{_lib};
@@ -194,10 +225,6 @@ install -m 755 source/bin/libsmbclient.so $RPM_BUILD_ROOT%{_libdir}/libsmbclient
 install -m 755 source/bin/libsmbclient.a $RPM_BUILD_ROOT%{_libdir}/libsmbclient.a
 install -m 644 source/include/libsmbclient.h $RPM_BUILD_ROOT%{_includedir}
 ln -s %{_libdir}/libsmbclient.so $RPM_BUILD_ROOT%{_libdir}/libsmbclient.so.0
-#if [ %{_libdir} == /usr/lib64 ];then
-#      ln -s %{_libdir}/libsmbclient.so $RPM_BUILD_ROOT/usr/lib/libsmbclient.so.0
-#      ln -s %{_libdir}/libsmbclient.so $RPM_BUILD_ROOT/usr/lib/libsmbclient.so
-#fi
 
 # make install puts libmsrpc.so in the wrong place on x86_64
 rm -f $RPM_BUILD_ROOT/usr/lib*/samba/libmsrpc.so $RPM_BUILD_ROOT/usr/lib*/samba/libmsrpc.a || true
@@ -206,17 +233,25 @@ install -m 755 source/bin/libmsrpc.a $RPM_BUILD_ROOT%{_libdir}/libmsrpc.a
 install -m 644 source/include/libmsrpc.h $RPM_BUILD_ROOT%{_includedir}
 rm -f $RPM_BUILD_ROOT%{_libdir}/samba/libmsrpc.*
 ln -s /%{_libdir}/libmsrpc.so $RPM_BUILD_ROOT%{_libdir}/libmsrpc.so.0
-#if [ %{_libdir} == /usr/lib64 ];then
-#      ln -s %{_libdir}/libmsrpc.so $RPM_BUILD_ROOT/usr/lib/libmsrpc.so.0
-#      ln -s %{_libdir}/libmsrpc.so $RPM_BUILD_ROOT/usr/lib/libmsrpc.so
-#fi
+
+# make install puts libsmbsharemodes.so in the wrong place on x86_64
+rm -f $RPM_BUILD_ROOT/usr/lib*/samba/libsmbsharemodes.so $RPM_BUILD_ROOT/usr/lib*/samba/libsmbsharemodes.a || true
+install -m 755 source/bin/libsmbsharemodes.so $RPM_BUILD_ROOT%{_libdir}/libsmbsharemodes.so
+install -m 755 source/bin/libsmbsharemodes.a $RPM_BUILD_ROOT%{_libdir}/libsmbsharemodes.a
+install -m 644 source/include/smb_share_modes.h $RPM_BUILD_ROOT%{_includedir}
+rm -f $RPM_BUILD_ROOT%{_libdir}/samba/libsmbsharemodes.*
+ln -s /%{_libdir}/libsmbsharemodes.so $RPM_BUILD_ROOT%{_libdir}/libsmbsharemodes.so.0
 
 # Install pam_smbpass.so
 install -m755 source/bin/pam_smbpass.so $RPM_BUILD_ROOT/%{_lib}/security/pam_smbpass.so
 
+## cleanup
+/bin/rm -rf $RPM_BUILD_ROOT/usr/lib*/samba/security
+
 # we need a symlink for mount to recognise the smb and smbfs filesystem types
-ln -sf %{_prefix}/sbin/smbmount $RPM_BUILD_ROOT/sbin/mount.smbfs
-ln -sf %{_prefix}/sbin/smbmount $RPM_BUILD_ROOT/sbin/mount.smb
+ln -sf %{_prefix}/bin/smbmount $RPM_BUILD_ROOT/sbin/mount.smbfs
+ln -sf %{_prefix}/bin/smbmount $RPM_BUILD_ROOT/sbin/mount.smb
+/bin/rm -f $RPM_BUILD_ROOT/mount.smbfs
 
 # Install the miscellany
 echo 127.0.0.1 localhost > $RPM_BUILD_ROOT%{_sysconfdir}/samba/lmhosts
@@ -234,6 +269,8 @@ install -m755 source/client/mount.cifs $RPM_BUILD_ROOT/sbin/mount.cifs
 install -m755 source/client/umount.cifs $RPM_BUILD_ROOT/sbin/umount.cifs
 install -m755 source/script/mksmbpasswd.sh $RPM_BUILD_ROOT%{_bindir}
 
+/bin/rm $RPM_BUILD_ROOT%{_sbindir}/*mount.cifs
+
 ln -s ../..%{initdir}/smb  $RPM_BUILD_ROOT%{_sbindir}/samba
 ln -s ../..%{initdir}/winbind  $RPM_BUILD_ROOT%{_sbindir}/winbind
 
@@ -257,19 +294,32 @@ rm -f $RPM_BUILD_ROOT%{_mandir}/man5/vfstest.1*
 rm -rf $RPM_BUILD_ROOT
 
 %post
-/sbin/chkconfig --add smb
+## deal with an upgrade from a broken 3.0.21b RPM
+if [ "$1" -eq "2" ]; then
+       if [ -d /var/cache/samba ]; then
+               for file in `ls /var/cache/samba/*tdb`; do
+                       /bin/cp -up $file /var/lib/samba/`basename $file`
+               done
+               mkdir -p /var/lib/samba/eventlog
+               for file in `ls /var/cache/samba/eventlog/*tdb`; do
+                       /bin/cp -up $file /var/lib/samba/eventlog/`basename $file`
+               done
+               /bin/mv /var/cache/samba /var/cache/samba.moved
+        fi
+fi
 
 %preun
 if [ $1 = 0 ] ; then
     /sbin/chkconfig --del smb
-    rm -rf /var/log/samba/* /var/cache/samba/*
+    /sbin/chkconfig --del winbind
+    # rm -rf /var/log/samba/* /var/lib/samba/*
     /sbin/service smb stop >/dev/null 2>&1
 fi
 exit 0
 
 %postun
 if [ "$1" -ge "1" ]; then
-       %{initdir}/smb condrestart >/dev/null 2>&1
+       %{initdir}/smb restart >/dev/null 2>&1
 fi     
 
 
@@ -280,54 +330,52 @@ if [ ! "`grep ^\s**swat /etc/services`" ]; then
 fi
 
 %post common
-/sbin/chkconfig --add winbind
 /sbin/ldconfig
 
-%preun common
-if [ $1 = 0 ] ; then
-    /sbin/chkconfig --del winbind
-    /sbin/service winbind stop >/dev/null 2>&1
-fi
-exit 0
-
-%postun common -p /sbin/ldconfig
-
-%triggerpostun -- samba < 1.9.18p7
-if [ $1 != 0 ]; then
-    /sbin/chkconfig --add smb
-fi
+%postun common 
+/sbin/ldconfig
 
-%triggerpostun -- samba < 2.0.5a-3
-if [ $1 != 0 ]; then
-    [ ! -d /var/lock/samba ] && mkdir -m 0755 /var/lock/samba
-    [ ! -d /var/spool/samba ] && mkdir -m 1777 /var/spool/samba
-    chmod 644 /etc/services
-    [ -f /etc/inetd.conf ] && chmod 644 /etc/inetd.conf
-fi
+#######################################################################
+## Files section                                                     ##
+#######################################################################
 
 %files
 %defattr(-,root,root)
-%doc README COPYING Manifest 
-%doc WHATSNEW.txt Roadmap
-%doc docs
-%doc examples/autofs examples/LDAP examples/libsmbclient examples/misc examples/printer-accounting
-%doc examples/printing
 
-%attr(755,root,root) /%{_lib}/security/pam_smbpass.so
+%config(noreplace) %{_sysconfdir}/sysconfig/samba
+%config(noreplace) %{_sysconfdir}/samba/smbusers
+%attr(755,root,root) %config %{initdir}/smb
+%attr(755,root,root) %config %{initdir}/winbind
+%config(noreplace) %{_sysconfdir}/logrotate.d/samba
+%config(noreplace) %{_sysconfdir}/pam.d/samba
+
+%attr(0755,root,root) %dir /var/log/samba
+%attr(0755,root,root) %dir /var/lib/samba
+%attr(1777,root,root) %dir /var/spool/samba
+
 %{_sbindir}/samba
 %{_sbindir}/winbind
+
 %{_sbindir}/smbd
 %{_sbindir}/nmbd
+%{_sbindir}/winbindd
+
 %{_bindir}/mksmbpasswd.sh
 %{_bindir}/smbcontrol
 %{_bindir}/smbstatus
 %{_bindir}/tdbbackup
 %{_bindir}/tdbtool
-%config(noreplace) %{_sysconfdir}/sysconfig/samba
-%config(noreplace) %{_sysconfdir}/samba/smbusers
-%attr(755,root,root) %config %{initdir}/smb
-%config(noreplace) %{_sysconfdir}/logrotate.d/samba
-%config(noreplace) %{_sysconfdir}/pam.d/samba
+%{_bindir}/tdbdump
+%{_bindir}/wbinfo
+%{_bindir}/ntlm_auth
+%{_bindir}/pdbedit
+%{_bindir}/eventlogadm
+
+%{_libdir}/samba/idmap/*.so
+%{_libdir}/samba/nss_info/*.so
+%{_libdir}/samba/vfs/*.so
+%{_libdir}/samba/auth/*.so
+
 %{_mandir}/man1/smbcontrol.1*
 %{_mandir}/man1/smbstatus.1*
 %{_mandir}/man1/vfstest.1*
@@ -336,22 +384,42 @@ fi
 %{_mandir}/man8/nmbd.8*
 %{_mandir}/man8/pdbedit.8*
 %{_mandir}/man8/smbd.8*
-%{_mandir}/man7/pam_winbind.7*
 %{_mandir}/man8/tdbbackup.8*
-%{_mandir}/man7/libsmbclient.7*
+%{_mandir}/man8/tdbdump.8*
+%{_mandir}/man8/tdbtool.8*
+%{_mandir}/man8/eventlogadm.8*
+%{_mandir}/man8/winbindd.8*
+%{_mandir}/man1/ntlm_auth.1*
+%{_mandir}/man1/wbinfo.1*
+%{_mandir}/man8/vfs_*.8*
+%{_mandir}/man8/idmap_*.8*
 
-%{_libdir}/samba/vfs
 
-%attr(0700,root,root) %dir /var/log/samba
-%attr(1777,root,root) %dir /var/spool/samba
+##########
+
+%files doc
+%defattr(-,root,root)
+%doc README COPYING Manifest 
+%doc WHATSNEW.txt Roadmap
+%doc docs
+%doc examples/autofs examples/LDAP examples/libsmbclient examples/misc examples/printer-accounting
+%doc examples/printing
+%doc %{_datadir}/swat/help
+%doc %{_datadir}/swat/using_samba
+
+##########
 
 %files swat
 %defattr(-,root,root)
 %config(noreplace) %{_sysconfdir}/xinetd.d/swat
-%{_datadir}/swat
+%dir %{_datadir}/swat
+%{_datadir}/swat/include
+%{_datadir}/swat/images
+%{_datadir}/swat/lang
 %{_sbindir}/swat
 %{_mandir}/man8/swat.8*
-%attr(755,root,root) %{_libdir}/samba/*.msg
+
+##########
 
 %files client
 %defattr(-,root,root)
@@ -359,23 +427,14 @@ fi
 /sbin/mount.smbfs
 /sbin/mount.cifs
 /sbin/umount.cifs
-%{_libdir}/samba/lowcase.dat
-%{_libdir}/samba/upcase.dat
-%{_libdir}/samba/valid.dat
+
 %{_bindir}/rpcclient
 %{_bindir}/smbcacls
 %{_bindir}/smbmount
 %{_bindir}/smbmnt
 %{_bindir}/smbumount
 %{_bindir}/findsmb
-%{_bindir}/tdbdump
-%{_mandir}/man8/tdbdump.8*
-%{_mandir}/man8/smbmnt.8*
-%{_mandir}/man8/smbmount.8*
-%{_mandir}/man8/smbumount.8*
-%{_mandir}/man8/mount.cifs.8.*
-%{_mandir}/man8/umount.cifs.8.*
-%{_mandir}/man8/smbspool.8*
+%{_bindir}/smbcquotas
 %{_bindir}/nmblookup
 %{_bindir}/smbget
 %{_bindir}/smbclient
@@ -384,6 +443,13 @@ fi
 %{_bindir}/smbtar
 %{_bindir}/net
 %{_bindir}/smbtree
+
+%{_mandir}/man8/smbmnt.8*
+%{_mandir}/man8/smbmount.8*
+%{_mandir}/man8/smbumount.8*
+%{_mandir}/man8/mount.cifs.8.*
+%{_mandir}/man8/umount.cifs.8.*
+%{_mandir}/man8/smbspool.8*
 %{_mandir}/man1/smbget.1*
 %{_mandir}/man5/smbgetrc.5*
 %{_mandir}/man1/findsmb.1*
@@ -394,45 +460,43 @@ fi
 %{_mandir}/man1/smbtar.1*
 %{_mandir}/man1/smbtree.1*
 %{_mandir}/man8/net.8*
+%{_mandir}/man1/smbcquotas.1*
+
+##########
 
 %files common
 %defattr(-,root,root)
-/%{_lib}/libnss_wins.so*
-/%{_lib}/libnss_winbind.so*
-/%{_lib}/security/pam_winbind.so
+%dir %{_sysconfdir}/samba
+%config(noreplace) %{_sysconfdir}/samba/smb.conf
+%config(noreplace) %{_sysconfdir}/samba/lmhosts
+
+%attr(755,root,root) /%{_lib}/libnss_wins.so*
+%attr(755,root,root) /%{_lib}/libnss_winbind.so*
+%attr(755,root,root) /%{_lib}/security/pam_winbind.so
+%attr(755,root,root) /%{_lib}/security/pam_smbpass.so
+
 %{_includedir}/libsmbclient.h
-%{_libdir}/libsmbclient.a
-%{_libdir}/libsmbclient.so
-%{_libdir}/libsmbclient.so.0
-%{_prefix}/lib/*
+%{_libdir}/libsmbclient.*
 %{_includedir}/libmsrpc.h
-%{_libdir}/libmsrpc.a
-%{_libdir}/libmsrpc.so
-%{_libdir}/samba/charset/CP*.so
-%{_libdir}/samba/idmap/idmap*.so
-%{_libdir}/samba/auth/script.so
+%{_libdir}/libmsrpc.*
+%{_includedir}/smb_share_modes.h
+%{_libdir}/libsmbsharemodes.*
+
+%{_libdir}/samba/*.dat
+%{_libdir}/samba/*.msg
+%{_libdir}/samba/charset/*.so
+
 %{_bindir}/testparm
 %{_bindir}/smbpasswd
-%{_bindir}/wbinfo
-%{_bindir}/ntlm_auth
-%{_bindir}/pdbedit
-%{_bindir}/eventlogadm
 %{_bindir}/profiles
-%{_bindir}/smbcquotas
-%{_sbindir}/winbindd
-%config(noreplace) %{_sysconfdir}/samba/smb.conf
-%config(noreplace) %{_sysconfdir}/samba/lmhosts
-%dir %{_sysconfdir}/samba
-%{initdir}/winbind
-%{_mandir}/man1/ntlm_auth.1*
+
 %{_mandir}/man1/profiles.1*
-%{_mandir}/man1/smbcquotas.1*
 %{_mandir}/man1/testparm.1*
 %{_mandir}/man5/smb.conf.5*
 %{_mandir}/man5/lmhosts.5*
 %{_mandir}/man8/smbpasswd.8*
-%{_mandir}/man1/wbinfo.1*
-%{_mandir}/man8/winbindd.8*
+%{_mandir}/man7/libsmbclient.7*
+%{_mandir}/man7/pam_winbind.7*
 
 %changelog
 * Fri Jan 16 2004 Gerald (Jerry) Carter <jerry@samba,org>