567d89bd5d771b903a079110c672ef1456c60bff
[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 install DESTDIR=%{buildroot}
164
165 #Undo the PIDL install, we want to try again with the right options
166 rm -rf $RPM_BUILD_ROOT/%{_libdir}/perl5
167 rm -rf $RPM_BUILD_ROOT/%{_datadir}/perl5
168
169 #Install PIDL
170 ( cd pidl && make install PERL_INSTALL_ROOT=$RPM_BUILD_ROOT )
171
172 #Clean out crap left behind by the Pidl install
173 find $RPM_BUILD_ROOT -type f -name .packlist -exec rm -f {} \;
174 find $RPM_BUILD_ROOT -depth -type d -exec rmdir {} 2>/dev/null \;
175
176 cd ..
177
178 mkdir -p $RPM_BUILD_ROOT/%{_initrddir}
179 mkdir -p $RPM_BUILD_ROOT/%{_sysconfdir}/logrotate.d
180 mkdir -p $RPM_BUILD_ROOT/%{_sysconfdir}/%{name}
181 mkdir -p $RPM_BUILD_ROOT/var/run/winbindd
182 mkdir -p $RPM_BUILD_ROOT/var/run/ntp_signd
183 mkdir -p $RPM_BUILD_ROOT/var/lib/%{name}/winbindd_privileged
184 mkdir -p $RPM_BUILD_ROOT/var/log/%{name}/
185 mkdir -p $RPM_BUILD_ROOT/var/log/%{name}/old
186
187 mkdir -p $RPM_BUILD_ROOT/var/lib/%{name}
188 mkdir -p $RPM_BUILD_ROOT/var/lib/%{name}/private
189 mkdir -p $RPM_BUILD_ROOT/var/lib/%{name}/sysvol
190
191 mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig
192
193 # Install other stuff
194 install -m755 %{SOURCE5} $RPM_BUILD_ROOT/%{_initrddir}/%{name}
195 install -m644 %{SOURCE1} $RPM_BUILD_ROOT/%{_sysconfdir}/logrotate.d/%{name}
196
197 # winbind
198 mkdir -p $RPM_BUILD_ROOT/%{_lib}
199 ln -sf ../%{_libdir}/libnss_winbind.so  $RPM_BUILD_ROOT/%{_lib}/libnss_winbind.so.2 
200
201 # libs {
202 mkdir -p $RPM_BUILD_ROOT%{_libdir} $RPM_BUILD_ROOT%{_includedir}
203
204 # }
205
206 install -m644 %{SOURCE4} $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/%{name}
207
208 #clean out some stuff we don't want in the Fedora package
209 rm $RPM_BUILD_ROOT/%{_bindir}/autoidl.py*
210 rm $RPM_BUILD_ROOT/%{_bindir}/epdump.py*
211 rm $RPM_BUILD_ROOT/%{_bindir}/gentest
212 rm $RPM_BUILD_ROOT/%{_bindir}/locktest
213 rm $RPM_BUILD_ROOT/%{_bindir}/masktest
214 rm $RPM_BUILD_ROOT/%{_bindir}/minschema.py*
215 rm $RPM_BUILD_ROOT/%{_bindir}/rpcclient
216 rm $RPM_BUILD_ROOT/%{_bindir}/samba3dump
217 rm $RPM_BUILD_ROOT/%{_bindir}/setnttoken
218 rm $RPM_BUILD_ROOT/%{_bindir}/getntacl
219 rm $RPM_BUILD_ROOT/%{_datadir}/samba/js/base.js
220
221 #This makes the right links, as rpmlint requires that the
222 #ldconfig-created links be recorded in the RPM.
223 /sbin/ldconfig -N -n $RPM_BUILD_ROOT/%{_libdir}
224
225 #Fix up permission on perl install
226 %{_fixperms} $RPM_BUILD_ROOT/%{perl_vendorlib}
227
228 #Fix up permissions in source tree, for debuginfo
229 find source/heimdal -type f | xargs chmod -x
230
231 %clean
232 rm -rf $RPM_BUILD_ROOT
233
234 %pre
235 getent group wbpriv >/dev/null || groupadd -g 88 wbpriv
236 exit 0
237
238 %post
239 /sbin/chkconfig --add %{name}
240 if [ "$1" -ge "1" ]; then
241         /sbin/service %{name} condrestart >/dev/null 2>&1 || :
242 fi
243 exit 0
244
245 %preun
246 if [ $1 = 0 ] ; then
247         /sbin/service %{name} stop >/dev/null 2>&1 || :
248         /sbin/chkconfig --del %{name}
249 fi
250 exit 0
251
252 %post libs -p /sbin/ldconfig
253
254 %postun libs -p /sbin/ldconfig
255
256
257 %files
258 %defattr(-,root,root)
259 %{_sbindir}/smbd
260 %{_bindir}/smbstatus
261
262 %attr(755,root,root) %{_initrddir}/%{name}
263 %config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
264 %dir %{_datadir}/samba/setup
265 %{_datadir}/samba/setup/*
266 %dir /var/lib/%{name}/sysvol
267 %config(noreplace) %{_sysconfdir}/sysconfig/%{name}
268 %attr(0700,root,root) %dir /var/log/%{name}
269 %attr(0700,root,root) %dir /var/log/%{name}/old
270
271 %files libs
272 %defattr(-,root,root)
273 %doc WHATSNEW.txt NEWS PFIF.txt
274 %dir %{_datadir}/samba
275 %{_datadir}/samba/*.dat
276 %{_libdir}/*.so.*
277 #Only needed if Samba's build produces plugins
278 #%{_libdir}/samba
279 %dir %{_sysconfdir}/%{name}
280 #Need to mark this as being owned by Samba, but it is normally created
281 #by the provision script, which runs best if there is no existing
282 #smb.conf
283 #%config(noreplace) %{_sysconfdir}/%{name}/smb.conf
284
285 %files winbind
286 %defattr(-,root,root)
287 %{_bindir}/ntlm_auth
288 %{_bindir}/wbinfo
289 %{_libdir}/libnss_winbind.so
290 /%{_lib}/libnss_winbind.so.2
291 %dir /var/run/winbindd
292 %attr(750,root,wbpriv) %dir /var/lib/%{name}/winbindd_privileged
293
294 %files python
295 %defattr(-,root,root)
296 %{python_sitearch}/*
297
298 %files devel
299 %defattr(-,root,root)
300 %{_libdir}/libdcerpc.so
301 %{_libdir}/libdcerpc_atsvc.so
302 %{_libdir}/libdcerpc_samr.so
303 %{_libdir}/libgensec.so
304 %{_libdir}/libldb.so
305 %{_libdir}/libndr.so
306 %{_libdir}/libregistry.so
307 %{_libdir}/libsamba-hostconfig.so
308 %{_libdir}/libtorture.so
309
310 %{_libdir}/pkgconfig
311 %{_includedir}/*
312 %{_bindir}/ndrdump
313 %{_bindir}/nsstest
314
315 %files pidl
316 %defattr(-,root,root,-)
317 %{perl_vendorlib}/*
318 %{_mandir}/man1/pidl*
319 %{_mandir}/man3/Parse*
320 %attr(755,root,root) %{_bindir}/pidl
321
322 %files client
323 %defattr(-,root,root)
324 %{_bindir}/nmblookup
325 %{_bindir}/smbclient
326 %{_bindir}/cifsdd
327
328 %files common
329 %defattr(-,root,root)
330 %{_bindir}/net
331 %{_bindir}/testparm
332 %{_bindir}/ldbadd
333 %{_bindir}/ldbdel
334 %{_bindir}/ldbedit
335 %{_bindir}/ldbmodify
336 %{_bindir}/ldbsearch
337 %{_bindir}/ldbrename
338 %{_bindir}/ad2oLschema
339 %{_bindir}/oLschema2ldif
340 %{_bindir}/regdiff
341 %{_bindir}/regpatch
342 %{_bindir}/regshell
343 %{_bindir}/regtree
344 %{_bindir}/subunitrun
345 %{_bindir}/smbtorture
346
347 %dir /var/lib/%{name}
348 %attr(700,root,root) %dir /var/lib/%{name}/private
349 # We don't want to put a smb.conf in by default, provision should create it
350 #%config(noreplace) %{_sysconfdir}/%{name}/smb.conf
351
352 %doc COPYING
353 %doc WHATSNEW.txt
354
355 %changelog
356 * Mon Jun 30 2008 Andrew Bartlett <abartlet@samba.org> - 0:4.0.0-0.2.alpha5.fc9
357 - Update per review feedback
358 - Update for alpha5
359
360 * Thu Jun 26 2008 Andrew Bartlett <abartlet@samba.org> - 0:4.0.0-0.1.alpha4.fc9
361 - Rework Fedora's Samba 3.2.0-1.rc2.16 spec file for Samba4