4e4de03ad30cff624ae73add536209b18532dea8
[kai/samba.git] / packaging / Fedora / samba4.spec
1 %define main_release 2
2 %define alpha_version 5
3 %define samba_version 4.0.0alpha%{alpha_version}
4 %define tarball_name samba-4.0.0alpha%{alpha_version}
5
6 #Set what versions we require for tdb and talloc
7 %define tdb_version 1.1.1
8 %define talloc_version 1.2.0
9
10 %{!?python_sitearch: %define python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")}
11
12 Summary: The Samba4 CIFS and AD client and server suite
13 Name: samba4
14 Epoch: 0
15 Version: 4.0.0
16 Release: 0.%{main_release}.alpha%{alpha_version}%{?dist}
17 License: GPLv3+, LGPLv3+, BSD
18 Group: System Environment/Daemons
19 URL: http://www.samba.org/
20
21 Source: http://download.samba.org/samba/ftp/samba4/%{tarball_name}.tar.gz
22
23 # Red Hat specific replacement-files
24 Source1: %{name}.log
25 Source4: %{name}.sysconfig
26 Source5: %{name}.init
27
28 Requires(pre): %{name}-common = %{epoch}:%{version}-%{release}
29 Requires: pam >= 0:0.64
30 Requires: logrotate >= 0:3.4
31 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
32 Requires(pre): /usr/sbin/groupadd
33 Requires(post): /sbin/chkconfig, /sbin/service
34 Requires(preun): /sbin/chkconfig, /sbin/service
35 BuildRequires: pam-devel, readline-devel, ncurses-devel, libacl-devel, e2fsprogs-devel
36 BuildRequires: popt-devel, libattr-devel, libaio-devel, sed, ldconfig
37 BuildRequires:  perl(ExtUtils::MakeMaker)
38 BuildRequires: libtalloc-devel >= %{talloc_version}
39 BuildRequires: libtdb-devel >= %{tdb_version}
40
41 %description
42
43 Samba 4 is the ambitious next version of the Samba suite that is being
44 developed in parallel to the stable 3.0 series. The main emphasis in
45 this branch is support for the Active Directory logon protocols used
46 by Windows 2000 and above.
47
48 %package client
49 Summary: Samba client programs
50 Group: Applications/System
51 Requires: %{name}-common = %{epoch}:%{version}-%{release}
52 Requires: %{name}-libs = %{epoch}:%{version}-%{release}
53
54 %description client
55 The %{name}-client package provides some SMB/CIFS clients to complement
56 the built-in SMB/CIFS filesystem in Linux. These clients allow access
57 of SMB/CIFS shares and printing to SMB/CIFS printers.
58
59 %package libs
60 Summary: Samba libraries
61 Group: Applications/System
62 Requires: libtdb >= 0:%{tdb_version}
63 Requires: libtalloc >= 0:%{talloc_version}
64
65 %description libs
66 The %{name}-libs package  contains the libraries needed by programs 
67 that link against the SMB, RPC and other protocols provided by the Samba suite.
68
69 %package python
70 Summary: Samba python libraries
71 Group: Applications/System
72 Requires: %{name}-libs = %{epoch}:%{version}-%{release}
73
74 %description python
75 The %{name}-python package contains the python libraries needed by programs 
76 that use SMB, RPC and other Samba provided protocols in python programs/
77
78 %package devel
79 Summary: Developor tools for Samba libraries
80 Group: Development/Libraries
81 Requires: %{name}-libs = %{epoch}:%{version}-%{release}
82
83 %description devel
84 The %{name}-devel package contains the header files for the libraries
85 needed to develop programs that link against the SMB, RPC and other
86 libraries in the Samba suite.
87
88 %package pidl
89 Summary: Perl IDL compiler
90 Group: Development/Tools
91 Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
92
93 %description pidl
94 The %{name}-pidl package contains the Perl IDL compiler used by Samba
95 and Wireshark to parse IDL and similar protocols
96
97 %package common
98 Summary: Files used by both Samba servers and clients
99 Group: Applications/System
100 Requires: %{name}-libs = %{epoch}:%{version}-%{release}
101 Requires(post): /sbin/chkconfig, /sbin/service, coreutils
102 Requires(preun): /sbin/chkconfig, /sbin/service
103
104 %description common
105 %{Name}-common provides files necessary for both the server and client
106 packages of Samba.
107
108 %package winbind
109 Summary: Samba winbind
110 Group: Applications/System
111 Requires: %{name} = %{epoch}:%{version}-%{release}
112
113 %description winbind
114 The samba-winbind package provides the winbind NSS library, and some
115 client tools.  Winbind enables Linux to be a full member in Windows
116 domains and to use Windows user and group accounts on Linux.
117
118
119 %prep
120 # TAG: change for non-pre
121 %setup -q -n %{tarball_name}
122 #%setup -q
123
124 # copy Red Hat specific scripts
125
126 # Upstream patches
127 #(none)
128
129 mv source/VERSION source/VERSION.orig
130 sed -e 's/SAMBA_VERSION_VENDOR_SUFFIX=$/&%{release}/' < source/VERSION.orig > source/VERSION
131 cd source
132 script/mkversion.sh
133 cd ..
134
135 %build
136 cd source
137
138 %configure \
139         --with-fhs \
140         --with-lockdir=/var/lib/%{name} \
141         --with-piddir=/var/run \
142         --with-privatedir=/var/lib/%{name}/private \
143         --with-logfilebase=/var/log/%{name} \
144         --with-configdir=%{_sysconfdir}/%{name} \
145         --with-winbindd-socket-dir=/var/run/winbind \
146         --with-ntp-signd-socket-dir=/var/run/ntp_signd \
147         --disable-gnutls
148
149 #Build PIDL for installation into vendor directories before 'make proto' gets to it
150 (cd pidl && %{__perl} Makefile.PL INSTALLDIRS=vendor )
151
152 #Builds using PIDL the IDL and many other things 
153 make proto
154
155 make everything
156
157 %install
158 rm -rf $RPM_BUILD_ROOT
159
160 cd source
161
162 #Don't call 'make install' as we want to call out to the PIDL install manually 
163 make installbin installdat installswat installmisc installlib installheader installpc installplugins installpython DESTDIR=%{buildroot}
164
165 #Install PIDL
166 ( cd pidl && make install PERL_INSTALL_ROOT=$RPM_BUILD_ROOT )
167
168 #Clean out crap left behind by the Pidl install
169 find $RPM_BUILD_ROOT -type f -name .packlist -exec rm -f {} \;
170 find $RPM_BUILD_ROOT -depth -type d -exec rmdir {} 2>/dev/null \;
171
172 cd ..
173
174 mkdir -p $RPM_BUILD_ROOT/%{_initrddir}
175 mkdir -p $RPM_BUILD_ROOT/%{_sysconfdir}/logrotate.d
176 mkdir -p $RPM_BUILD_ROOT/%{_sysconfdir}/%{name}
177 mkdir -p $RPM_BUILD_ROOT/var/run/winbindd
178 mkdir -p $RPM_BUILD_ROOT/var/run/ntp_signd
179 mkdir -p $RPM_BUILD_ROOT/var/lib/%{name}/winbindd_privileged
180 mkdir -p $RPM_BUILD_ROOT/var/log/%{name}/
181 mkdir -p $RPM_BUILD_ROOT/var/log/%{name}/old
182
183 mkdir -p $RPM_BUILD_ROOT/var/lib/%{name}
184 mkdir -p $RPM_BUILD_ROOT/var/lib/%{name}/private
185 mkdir -p $RPM_BUILD_ROOT/var/lib/%{name}/sysvol
186
187 mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig
188
189 # Install other stuff
190 install -m755 %{SOURCE5} $RPM_BUILD_ROOT/%{_initrddir}/%{name}
191 install -m644 %{SOURCE1} $RPM_BUILD_ROOT/%{_sysconfdir}/logrotate.d/%{name}
192
193 # winbind
194 mkdir -p $RPM_BUILD_ROOT/%{_lib}
195 ln -sf ../%{_libdir}/libnss_winbind.so  $RPM_BUILD_ROOT/%{_lib}/libnss_winbind.so.2 
196
197 # libs {
198 mkdir -p $RPM_BUILD_ROOT%{_libdir} $RPM_BUILD_ROOT%{_includedir}
199
200 # }
201
202 install -m644 %{SOURCE4} $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/%{name}
203
204 #clean out some stuff we don't want in the Fedora package
205 rm $RPM_BUILD_ROOT/%{_bindir}/autoidl.py*
206 rm $RPM_BUILD_ROOT/%{_bindir}/epdump.py*
207 rm $RPM_BUILD_ROOT/%{_bindir}/gentest
208 rm $RPM_BUILD_ROOT/%{_bindir}/locktest
209 rm $RPM_BUILD_ROOT/%{_bindir}/masktest
210 rm $RPM_BUILD_ROOT/%{_bindir}/minschema.py*
211 rm $RPM_BUILD_ROOT/%{_bindir}/rpcclient
212 rm $RPM_BUILD_ROOT/%{_bindir}/samba3dump
213 rm $RPM_BUILD_ROOT/%{_bindir}/setnttoken
214 rm $RPM_BUILD_ROOT/%{_bindir}/getntacl
215 rm $RPM_BUILD_ROOT/%{_datadir}/samba/js/base.js
216
217 /sbin/ldconfig -N -n $RPM_BUILD_ROOT/%{_libdir}
218
219 #Fix up permission on perl install
220 %{_fixperms} $RPM_BUILD_ROOT/%{perl_vendorlib}
221
222 #Fix up permissions in source tree, for debuginfo
223 find -type f | xargs chmod -x
224
225 %clean
226 rm -rf $RPM_BUILD_ROOT
227
228 %pre
229 getent group wbpriv >/dev/null || groupadd -g 88 wbpriv
230 exit 0
231
232 %post
233 /sbin/chkconfig --add %{name}
234 if [ "$1" -ge "1" ]; then
235         /sbin/service %{name} condrestart >/dev/null 2>&1 || :
236 fi
237 exit 0
238
239 %preun
240 if [ $1 = 0 ] ; then
241         /sbin/service %{name} stop >/dev/null 2>&1 || :
242         /sbin/chkconfig --del %{name}
243 fi
244 exit 0
245
246 %post libs -p /sbin/ldconfig
247
248 %postun libs -p /sbin/ldconfig
249
250
251 %files
252 %defattr(-,root,root)
253 %{_sbindir}/smbd
254 %{_bindir}/smbstatus
255
256 %attr(755,root,root) %{_initrddir}/%{name}
257 %config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
258 %dir %{_datadir}/samba/setup
259 %{_datadir}/samba/setup/*
260 %dir /var/lib/%{name}/sysvol
261 %config(noreplace) %{_sysconfdir}/sysconfig/%{name}
262 %attr(0700,root,root) %dir /var/log/%{name}
263 %attr(0700,root,root) %dir /var/log/%{name}/old
264
265 %files libs
266 %defattr(-,root,root)
267 %doc WHATSNEW.txt NEWS PFIF.txt
268 %dir %{_datadir}/samba
269 %{_datadir}/samba/*.dat
270 %{_libdir}/*.so.*
271 %{_libdir}/samba
272 %dir %{_sysconfdir}/%{name}
273 #Need to mark this as being owned by Samba, but it is normally created
274 #by the provision script, which runs best if there is no existing
275 #smb.conf
276 #%config(noreplace) %{_sysconfdir}/%{name}/smb.conf
277
278 %files winbind
279 %defattr(-,root,root)
280 %{_bindir}/ntlm_auth
281 %{_bindir}/wbinfo
282 %{_libdir}/libnss_winbind.so
283 /%{_lib}/libnss_winbind.so.2
284 %dir /var/run/winbindd
285 %attr(750,root,wbpriv) %dir /var/lib/%{name}/winbindd_privileged
286
287 %files python
288 %defattr(-,root,root)
289 %{python_sitearch}/*
290
291 %files devel
292 %defattr(-,root,root)
293 %{_libdir}/libdcerpc.so
294 %{_libdir}/libdcerpc_atsvc.so
295 %{_libdir}/libdcerpc_samr.so
296 %{_libdir}/libgensec.so
297 %{_libdir}/libldb.so
298 %{_libdir}/libndr.so
299 %{_libdir}/libregistry.so
300 %{_libdir}/libsamba-hostconfig.so
301 %{_libdir}/libtorture.so
302
303 %{_libdir}/pkgconfig
304 %{_includedir}/*
305 %{_bindir}/ndrdump
306 %{_bindir}/nsstest
307
308 %files pidl
309 %defattr(-,root,root,-)
310 %{perl_vendorlib}/*
311 %{_mandir}/man1/pidl*
312 %{_mandir}/man3/Parse*
313 %attr(755,root,root) %{_bindir}/pidl
314
315 %files client
316 %defattr(-,root,root)
317 %{_bindir}/nmblookup
318 %{_bindir}/smbclient
319 %{_bindir}/cifsdd
320
321 %files common
322 %defattr(-,root,root)
323 %{_bindir}/net
324 %{_bindir}/testparm
325 %{_bindir}/ldbadd
326 %{_bindir}/ldbdel
327 %{_bindir}/ldbedit
328 %{_bindir}/ldbmodify
329 %{_bindir}/ldbsearch
330 %{_bindir}/ldbrename
331 %{_bindir}/ad2oLschema
332 %{_bindir}/oLschema2ldif
333 %{_bindir}/regdiff
334 %{_bindir}/regpatch
335 %{_bindir}/regshell
336 %{_bindir}/regtree
337 %{_bindir}/subunitrun
338 %{_bindir}/smbtorture
339
340 %dir /var/lib/%{name}
341 %attr(700,root,root) %dir /var/lib/%{name}/private
342 # We don't want to put a smb.conf in by default, provision should create it
343 #%config(noreplace) %{_sysconfdir}/%{name}/smb.conf
344
345 %doc COPYING
346 %doc WHATSNEW.txt
347
348 %changelog
349 * Thu Jun 26 2008 Andrew Bartlett <abartlet@samba.org> - 0:4.0.0-0.1.alpha4.fc9
350 - Rework Fedora's Samba 3.2.0-1.rc2.16 spec file for Samba4