ctdb-tool: Add helper for talking to event daemon
[metze/samba/wip.git] / ctdb / packaging / RPM / ctdb.spec.in
1 %define with_systemd  %{?_with_systemd: 1} %{?!_with_systemd: 0}
2 %define initdir %{_sysconfdir}/init.d
3 Name: ctdb
4 Summary: Clustered TDB
5 Vendor: Samba Team
6 Packager: Samba Team <samba@samba.org>
7 Version: @VERSION@
8 Release: @RELEASE@
9 Epoch: 0
10 License: GNU GPL version 3
11 Group: System Environment/Daemons
12 URL: http://ctdb.samba.org/
13
14 Source: ctdb-%{version}.tar.gz
15
16 # Packages
17 Requires: coreutils, sed, gawk, iptables, iproute, procps, ethtool, sudo
18 # Commands - package name might vary
19 Requires: /usr/bin/killall, /bin/kill, /bin/netstat
20
21 Provides: ctdb = %{version}
22
23 Prefix: /usr
24 BuildRoot: %{_tmppath}/%{name}-%{version}-root
25
26 # Allow build with system libraries
27 # To enable, run rpmbuild with,
28 #      "--with system_talloc"
29 #      "--with system_tdb"
30 #      "--with system_tevent"
31 #%define with_included_talloc %{?_with_system_talloc: 0} %{?!_with_system_talloc: 1}
32 #%define with_included_tdb %{?_with_system_tdb: 0} %{?!_with_system_tdb: 1}
33 #%define with_included_tevent %{?_with_system_tevent: 0} %{?!_with_system_tevent: 1}
34
35 %define with_included_talloc 0
36 %define with_included_tevent 0
37 %define with_included_tdb 0
38
39 # Required minimum library versions when building with system libraries
40 %define libtalloc_version 2.0.8
41 %define libtdb_version 1.3.11
42 %define libtevent_version 0.9.16
43
44 %if ! %with_included_talloc
45 BuildRequires: libtalloc-devel >= %{libtalloc_version}
46 Requires: libtalloc >= %{libtalloc_version}
47 %endif
48 %if ! %with_included_tdb
49 BuildRequires: libtdb-devel >= %{libtdb_version}
50 Requires: libtdb >= %{libtdb_version}
51 %endif
52 %if ! %with_included_tevent
53 BuildRequires: libtevent-devel >= %{libtevent_version}
54 Requires: libtevent >= %{libtevent_version}
55 %endif
56
57 # To build the ctdb-pcp-pmda package, run rpmbuild with "--with pmda"
58 %define with_pcp_pmda  %{?_with_pmda: 1} %{?!_with_pmda: 0}
59 %if %with_pcp_pmda
60 BuildRequires: pcp-libs-devel
61 %endif
62
63 %if %{with_systemd}
64 BuildRequires: systemd-units
65 %endif
66
67 %description
68 ctdb is the clustered database used by samba
69
70 #######################################################################
71
72
73
74 %prep
75 %setup -q
76 # setup the init script and sysconfig file
77 %setup -T -D -n ctdb-%{version} -q
78
79 %build
80
81 ## check for ccache
82 if ccache -h >/dev/null 2>&1 ; then
83         CC="ccache gcc"
84 else
85         CC="gcc"
86 fi
87
88 export CC
89
90 CFLAGS="$RPM_OPT_FLAGS $EXTRA -D_GNU_SOURCE" ./buildtools/bin/waf configure \
91         --builtin-libraries=replace,popt \
92         --bundled-libraries=!talloc,!tevent,!tdb \
93         --minimum-library-version=talloc:%libtalloc_version,tdb:%libtdb_version,tevent:%libtevent_version \
94 %if %with_pcp_pmda
95         --enable-pmda \
96 %endif
97         --prefix=%{_prefix} \
98         --includedir=%{_includedir}/ctdb \
99         --libdir=%{_libdir} \
100         --libexecdir=%{_libexecdir} \
101         --sysconfdir=%{_sysconfdir} \
102         --mandir=%{_mandir} \
103         --localstatedir="/var"
104
105 ./buildtools/bin/waf build
106
107 %install
108 # Clean up in case there is trash left from a previous build
109 rm -rf $RPM_BUILD_ROOT
110
111 # Create the target build directory hierarchy
112 mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/sudoers.d
113
114 DESTDIR=$RPM_BUILD_ROOT ./buildtools/bin/waf install
115
116 install -m644 config/ctdbd.conf $RPM_BUILD_ROOT%{_sysconfdir}/ctdb
117
118 # Add a pointer to modern location for configuration file.  Allow with
119 # "noreplace" in the files section, this stops RPM moving aside a
120 # working configuration.
121 mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig
122 cat >$RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/ctdb <<EOF
123 # CTDB configuration is now in %{_sysconfdir}/ctdb/ctdbd.conf
124 EOF
125 chmod 644 $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/ctdb
126
127 %if %{with_systemd}
128 mkdir -p $RPM_BUILD_ROOT%{_unitdir}
129 install -m 755 config/ctdb.service $RPM_BUILD_ROOT%{_unitdir}
130 %else
131 mkdir -p $RPM_BUILD_ROOT%{initdir}
132 install -m755 config/ctdb.init $RPM_BUILD_ROOT%{initdir}/ctdb
133 %endif
134
135 # This is a hack. All documents should be installed in /usr/share/doc.
136 rm -f $RPM_BUILD_ROOT%{_sysconfdir}/ctdb/events.d/README
137 cp config/events.d/README README.eventscripts
138 rm -f $RPM_BUILD_ROOT%{_sysconfdir}/ctdb/nfs-checks.d/README
139 cp config/nfs-checks.d/README README.nfs-checks.d
140 cp config/notify.d.README README.notify.d
141
142 # Remove "*.old" files
143 find $RPM_BUILD_ROOT -name "*.old" -exec rm -f {} \;
144
145 %clean
146 rm -rf $RPM_BUILD_ROOT
147
148
149 #######################################################################
150 ## Files section                                                     ##
151 #######################################################################
152
153 %files
154 %defattr(-,root,root)
155
156 %config(noreplace) %{_sysconfdir}/ctdb/ctdbd.conf
157 %config(noreplace) %{_sysconfdir}/ctdb/notify.sh
158 %config(noreplace) %{_sysconfdir}/ctdb/debug-hung-script.sh
159 %config(noreplace) %{_sysconfdir}/ctdb/ctdb-crash-cleanup.sh
160 %config(noreplace) %{_sysconfdir}/ctdb/gcore_trace.sh
161 %config(noreplace) %{_sysconfdir}/ctdb/debug_locks.sh
162
163 %config(noreplace, missingok) %{_sysconfdir}/sysconfig/ctdb
164
165 %if %{with_systemd}
166 %{_unitdir}/ctdb.service
167 %else
168 %attr(755,root,root) %{initdir}/ctdb
169 %endif
170
171 %attr(755,root,root) %{_sysconfdir}/ctdb/notify.d
172
173 %doc README COPYING
174 %doc README.eventscripts README.notify.d
175 %doc doc/recovery-process.txt
176 %doc doc/cluster_mutex_helper.txt
177 %doc doc/*.html
178 %doc doc/examples
179 %{_sysconfdir}/sudoers.d/ctdb
180 %{_sysconfdir}/ctdb/functions
181 %{_sysconfdir}/ctdb/events.d/00.ctdb
182 %{_sysconfdir}/ctdb/events.d/01.reclock
183 %{_sysconfdir}/ctdb/events.d/05.system
184 %{_sysconfdir}/ctdb/events.d/06.nfs
185 %{_sysconfdir}/ctdb/events.d/10.interface
186 %{_sysconfdir}/ctdb/events.d/10.external
187 %{_sysconfdir}/ctdb/events.d/13.per_ip_routing
188 %{_sysconfdir}/ctdb/events.d/11.natgw
189 %{_sysconfdir}/ctdb/events.d/11.routing
190 %{_sysconfdir}/ctdb/events.d/20.multipathd
191 %{_sysconfdir}/ctdb/events.d/31.clamd
192 %{_sysconfdir}/ctdb/events.d/40.vsftpd
193 %{_sysconfdir}/ctdb/events.d/41.httpd
194 %{_sysconfdir}/ctdb/events.d/49.winbind
195 %{_sysconfdir}/ctdb/events.d/50.samba
196 %{_sysconfdir}/ctdb/events.d/60.nfs
197 %{_sysconfdir}/ctdb/events.d/70.iscsi
198 %{_sysconfdir}/ctdb/events.d/91.lvs
199 %{_sysconfdir}/ctdb/events.d/99.timeout
200 %config(noreplace) %{_sysconfdir}/ctdb/nfs-checks.d/00.portmapper.check
201 %config(noreplace) %{_sysconfdir}/ctdb/nfs-checks.d/10.status.check
202 %config(noreplace) %{_sysconfdir}/ctdb/nfs-checks.d/20.nfs.check
203 %config(noreplace) %{_sysconfdir}/ctdb/nfs-checks.d/30.nlockmgr.check
204 %config(noreplace) %{_sysconfdir}/ctdb/nfs-checks.d/40.mountd.check
205 %config(noreplace) %{_sysconfdir}/ctdb/nfs-checks.d/50.rquotad.check
206 %{_sysconfdir}/ctdb/statd-callout
207 %{_sysconfdir}/ctdb/nfs-linux-kernel-callout
208 %{_sbindir}/ctdbd
209 %{_sbindir}/ctdbd_wrapper
210 %{_bindir}/ctdb
211 %{_bindir}/ping_pong
212 %{_bindir}/ltdbtool
213 %{_bindir}/ctdb_diagnostics
214 %{_bindir}/onnode
215 %dir %{_libexecdir}/ctdb
216 %{_libexecdir}/ctdb/ctdb_eventd
217 %{_libexecdir}/ctdb/ctdb_lock_helper
218 %{_libexecdir}/ctdb/ctdb_event_helper
219 %{_libexecdir}/ctdb/ctdb_recovery_helper
220 %{_libexecdir}/ctdb/ctdb_mutex_fcntl_helper
221 %{_libexecdir}/ctdb/ctdb_event
222 %{_libexecdir}/ctdb/ctdb_natgw
223 %{_libexecdir}/ctdb/ctdb_lvs
224 %{_libexecdir}/ctdb/ctdb_killtcp
225 %{_libexecdir}/ctdb/smnotify
226 %dir %{_libdir}
227 %{_libdir}/ctdb/lib*
228 %{_mandir}/man1/ctdb.1.gz
229 %{_mandir}/man1/ctdb_diagnostics.1.gz
230 %{_mandir}/man1/ctdbd.1.gz
231 %{_mandir}/man1/ctdbd_wrapper.1.gz
232 %{_mandir}/man1/onnode.1.gz
233 %{_mandir}/man1/ltdbtool.1.gz
234 %{_mandir}/man1/ping_pong.1.gz
235 %{_mandir}/man5/ctdbd.conf.5.gz
236 %{_mandir}/man7/ctdb.7.gz
237 %{_mandir}/man7/ctdb-statistics.7.gz
238 %{_mandir}/man7/ctdb-tunables.7.gz
239
240
241 %package devel
242 Summary: CTDB development libraries
243 Group: Development/Libraries
244
245 %description devel
246 development libraries for ctdb
247
248 %files devel
249 %defattr(-,root,root)
250
251 %package tests
252 Summary: CTDB test suite
253 Group: Development/Tools
254 Requires: ctdb = %{version}
255 Requires: nc
256
257 %description tests
258 test suite for ctdb
259
260 %files tests
261 %defattr(-,root,root)
262 %dir %{_datadir}/%{name}/tests
263 %{_datadir}/%{name}/tests/*
264 %dir %{_libexecdir}/%{name}/tests
265 %{_libexecdir}/%{name}/tests/*
266 %{_bindir}/ctdb_run_tests
267 %{_bindir}/ctdb_run_cluster_tests
268 %doc tests/README
269
270 %if %with_pcp_pmda
271
272 %package pcp-pmda
273 Summary: CTDB PCP pmda support
274 Group: Development/Tools
275 Requires: ctdb = %{version}
276 Requires: pcp-libs
277
278 %description pcp-pmda
279 Performance Co-Pilot (PCP) support for CTDB
280
281 %files pcp-pmda
282 %dir /var/lib/pcp/pmdas/ctdb
283 /var/lib/pcp/pmdas/ctdb/*
284
285 %endif