4e86050dcf8b899a94eaeb57f4962036a0411763
[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 Requires(post): /sbin/ldconfig
65 Requires(postun): /sbin/ldconfig
66
67 %description libs
68 The %{name}-libs package  contains the libraries needed by programs 
69 that link against the SMB, RPC and other protocols provided by the Samba suite.
70
71 %package python
72 Summary: Samba python libraries
73 Group: Applications/System
74 Requires: %{name}-libs = %{epoch}:%{version}-%{release}
75
76 %description python
77 The %{name}-python package contains the python libraries needed by programs 
78 that use SMB, RPC and other Samba provided protocols in python programs/
79
80 %package devel
81 Summary: Developer tools for Samba libraries
82 Group: Development/Libraries
83 Requires: %{name}-libs = %{epoch}:%{version}-%{release}
84
85 %description devel
86 The %{name}-devel package contains the header files for the libraries
87 needed to develop programs that link against the SMB, RPC and other
88 libraries in the Samba suite.
89
90 %package pidl
91 Summary: Perl IDL compiler
92 Group: Development/Tools
93 Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
94
95 %description pidl
96 The %{name}-pidl package contains the Perl IDL compiler used by Samba
97 and Wireshark to parse IDL and similar protocols
98
99 %package common
100 Summary: Files used by both Samba servers and clients
101 Group: Applications/System
102 Requires: %{name}-libs = %{epoch}:%{version}-%{release}
103 Requires(post): /sbin/chkconfig, /sbin/service, coreutils
104 Requires(preun): /sbin/chkconfig, /sbin/service
105
106 %description common
107 %{Name}-common provides files necessary for both the server and client
108 packages of Samba.
109
110 %package winbind
111 Summary: Samba winbind
112 Group: Applications/System
113 Requires: %{name} = %{epoch}:%{version}-%{release}
114
115 %description winbind
116 The samba-winbind package provides the winbind NSS library, and some
117 client tools.  Winbind enables Linux to be a full member in Windows
118 domains and to use Windows user and group accounts on Linux.
119
120
121 %prep
122 # TAG: change for non-pre
123 %setup -q -n %{tarball_name}
124 #%setup -q
125
126 # copy Red Hat specific scripts
127
128 # Upstream patches
129 #(none)
130
131 mv source/VERSION source/VERSION.orig
132 sed -e 's/SAMBA_VERSION_VENDOR_SUFFIX=$/&%{release}/' < source/VERSION.orig > source/VERSION
133 cd source
134 script/mkversion.sh
135 cd ..
136
137 %build
138 cd source
139
140 %configure \
141         --with-fhs \
142         --with-lockdir=/var/lib/%{name} \
143         --with-piddir=/var/run \
144         --with-privatedir=/var/lib/%{name}/private \
145         --with-logfilebase=/var/log/%{name} \
146         --with-configdir=%{_sysconfdir}/%{name} \
147         --with-winbindd-socket-dir=/var/run/winbind \
148         --with-ntp-signd-socket-dir=/var/run/ntp_signd \
149         --disable-gnutls
150
151 #Build PIDL for installation into vendor directories before 'make proto' gets to it
152 (cd pidl && %{__perl} Makefile.PL INSTALLDIRS=vendor )
153
154 #Builds using PIDL the IDL and many other things 
155 make proto
156
157 make everything
158
159 %install
160 rm -rf $RPM_BUILD_ROOT
161
162 cd source
163
164 #Don't call 'make install' as we want to call out to the PIDL install manually 
165 make install DESTDIR=%{buildroot}
166
167 #Undo the PIDL install, we want to try again with the right options
168 rm -rf $RPM_BUILD_ROOT/%{_libdir}/perl5
169 rm -rf $RPM_BUILD_ROOT/%{_datadir}/perl5
170
171 #Install PIDL
172 ( cd pidl && make install PERL_INSTALL_ROOT=$RPM_BUILD_ROOT )
173
174 #Clean out crap left behind by the Pidl install
175 find $RPM_BUILD_ROOT -type f -name .packlist -exec rm -f {} \;
176 find $RPM_BUILD_ROOT -depth -type d -exec rmdir {} 2>/dev/null \;
177
178 cd ..
179
180 mkdir -p $RPM_BUILD_ROOT/%{_initrddir}
181 mkdir -p $RPM_BUILD_ROOT/%{_sysconfdir}/logrotate.d
182 mkdir -p $RPM_BUILD_ROOT/%{_sysconfdir}/%{name}
183 mkdir -p $RPM_BUILD_ROOT/var/run/winbindd
184 mkdir -p $RPM_BUILD_ROOT/var/run/ntp_signd
185 mkdir -p $RPM_BUILD_ROOT/var/lib/%{name}/winbindd_privileged
186 mkdir -p $RPM_BUILD_ROOT/var/log/%{name}/
187 mkdir -p $RPM_BUILD_ROOT/var/log/%{name}/old
188
189 mkdir -p $RPM_BUILD_ROOT/var/lib/%{name}
190 mkdir -p $RPM_BUILD_ROOT/var/lib/%{name}/private
191 mkdir -p $RPM_BUILD_ROOT/var/lib/%{name}/sysvol
192
193 mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig
194
195 # Install other stuff
196 install -m755 %{SOURCE5} $RPM_BUILD_ROOT/%{_initrddir}/%{name}
197 install -m644 %{SOURCE1} $RPM_BUILD_ROOT/%{_sysconfdir}/logrotate.d/%{name}
198
199 # winbind
200 mkdir -p $RPM_BUILD_ROOT/%{_lib}
201 ln -sf ../%{_libdir}/libnss_winbind.so  $RPM_BUILD_ROOT/%{_lib}/libnss_winbind.so.2 
202
203 # libs {
204 mkdir -p $RPM_BUILD_ROOT%{_libdir} $RPM_BUILD_ROOT%{_includedir}
205
206 # }
207
208 install -m644 %{SOURCE4} $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/%{name}
209
210 #clean out some stuff we don't want in the Fedora package
211 rm $RPM_BUILD_ROOT/%{_bindir}/autoidl.py*
212 rm $RPM_BUILD_ROOT/%{_bindir}/epdump.py*
213 rm $RPM_BUILD_ROOT/%{_bindir}/gentest
214 rm $RPM_BUILD_ROOT/%{_bindir}/locktest
215 rm $RPM_BUILD_ROOT/%{_bindir}/masktest
216 rm $RPM_BUILD_ROOT/%{_bindir}/minschema.py*
217 rm $RPM_BUILD_ROOT/%{_bindir}/rpcclient
218 rm $RPM_BUILD_ROOT/%{_bindir}/samba3dump
219 rm $RPM_BUILD_ROOT/%{_bindir}/setnttoken
220 rm $RPM_BUILD_ROOT/%{_bindir}/getntacl
221 rm $RPM_BUILD_ROOT/%{_datadir}/samba/js/base.js
222
223 #This makes the right links, as rpmlint requires that the
224 #ldconfig-created links be recorded in the RPM.
225 /sbin/ldconfig -N -n $RPM_BUILD_ROOT/%{_libdir}
226
227 #Fix up permission on perl install
228 %{_fixperms} $RPM_BUILD_ROOT/%{perl_vendorlib}
229
230 #Fix up permissions in source tree, for debuginfo
231 find source/heimdal -type f | xargs chmod -x
232
233 %clean
234 rm -rf $RPM_BUILD_ROOT
235
236 %pre
237 getent group wbpriv >/dev/null || groupadd -g 88 wbpriv
238 exit 0
239
240 %post
241 /sbin/chkconfig --add %{name}
242 if [ "$1" -ge "1" ]; then
243         /sbin/service %{name} condrestart >/dev/null 2>&1 || :
244 fi
245 exit 0
246
247 %preun
248 if [ $1 = 0 ] ; then
249         /sbin/service %{name} stop >/dev/null 2>&1 || :
250         /sbin/chkconfig --del %{name}
251 fi
252 exit 0
253
254 %post libs -p /sbin/ldconfig
255
256 %postun libs -p /sbin/ldconfig
257
258
259 %files
260 %defattr(-,root,root)
261 %{_sbindir}/smbd
262 %{_bindir}/smbstatus
263
264 %attr(755,root,root) %{_initrddir}/%{name}
265 %config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
266 %dir %{_datadir}/samba/setup
267 %{_datadir}/samba/setup/*
268 %dir /var/lib/%{name}/sysvol
269 %config(noreplace) %{_sysconfdir}/sysconfig/%{name}
270 %attr(0700,root,root) %dir /var/log/%{name}
271 %attr(0700,root,root) %dir /var/log/%{name}/old
272
273 %files libs
274 %defattr(-,root,root)
275 %doc WHATSNEW.txt NEWS PFIF.txt
276 %dir %{_datadir}/samba
277 %{_datadir}/samba/*.dat
278 %{_libdir}/*.so.*
279 #Only needed if Samba's build produces plugins
280 #%{_libdir}/samba
281 %dir %{_sysconfdir}/%{name}
282 #Need to mark this as being owned by Samba, but it is normally created
283 #by the provision script, which runs best if there is no existing
284 #smb.conf
285 #%config(noreplace) %{_sysconfdir}/%{name}/smb.conf
286
287 %files winbind
288 %defattr(-,root,root)
289 %{_bindir}/ntlm_auth
290 %{_bindir}/wbinfo
291 %{_libdir}/libnss_winbind.so
292 /%{_lib}/libnss_winbind.so.2
293 %dir /var/run/winbindd
294 %attr(750,root,wbpriv) %dir /var/lib/%{name}/winbindd_privileged
295
296 %files python
297 %defattr(-,root,root)
298 %{python_sitearch}/*
299
300 %files devel
301 %defattr(-,root,root)
302 %{_libdir}/libdcerpc.so
303 %{_libdir}/libdcerpc_atsvc.so
304 %{_libdir}/libdcerpc_samr.so
305 %{_libdir}/libgensec.so
306 %{_libdir}/libldb.so
307 %{_libdir}/libndr.so
308 %{_libdir}/libregistry.so
309 %{_libdir}/libsamba-hostconfig.so
310 %{_libdir}/libtorture.so
311
312 %{_libdir}/pkgconfig
313 %{_includedir}/*
314 %{_bindir}/ndrdump
315 %{_bindir}/nsstest
316
317 %files pidl
318 %defattr(-,root,root,-)
319 %{perl_vendorlib}/*
320 %{_mandir}/man1/pidl*
321 %{_mandir}/man3/Parse*
322 %attr(755,root,root) %{_bindir}/pidl
323
324 %files client
325 %defattr(-,root,root)
326 %{_bindir}/nmblookup
327 %{_bindir}/smbclient
328 %{_bindir}/cifsdd
329
330 %files common
331 %defattr(-,root,root)
332 %{_bindir}/net
333 %{_bindir}/testparm
334 %{_bindir}/ldbadd
335 %{_bindir}/ldbdel
336 %{_bindir}/ldbedit
337 %{_bindir}/ldbmodify
338 %{_bindir}/ldbsearch
339 %{_bindir}/ldbrename
340 %{_bindir}/ad2oLschema
341 %{_bindir}/oLschema2ldif
342 %{_bindir}/regdiff
343 %{_bindir}/regpatch
344 %{_bindir}/regshell
345 %{_bindir}/regtree
346 %{_bindir}/subunitrun
347 %{_bindir}/smbtorture
348
349 %dir /var/lib/%{name}
350 %attr(700,root,root) %dir /var/lib/%{name}/private
351 # We don't want to put a smb.conf in by default, provision should create it
352 #%config(noreplace) %{_sysconfdir}/%{name}/smb.conf
353
354 %doc COPYING
355 %doc WHATSNEW.txt
356
357 %changelog
358 * Mon Jun 30 2008 Andrew Bartlett <abartlet@samba.org> - 0:4.0.0-0.2.alpha5.fc9
359 - Update per review feedback
360 - Update for alpha5
361
362 * Thu Jun 26 2008 Andrew Bartlett <abartlet@samba.org> - 0:4.0.0-0.1.alpha4.fc9
363 - Rework Fedora's Samba 3.2.0-1.rc2.16 spec file for Samba4