Package pacemaker: Specfile

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
%define _rundir /run
%define gname haclient
%define uname hacluster
%define _libexecdir /usr/libexec

%add_findreq_skiplist */ocf/resource.d/.isolation/*
%add_findreq_skiplist */ocf/resource.d/pacemaker/*

%def_disable doc

Name:    pacemaker
Summary: Scalable High-Availability cluster resource manager
Version: 2.1.1
Release: alt1
License: GPLv2+ and LGPLv2+
Url:     http://www.clusterlabs.org
# VCS:   https://github.com/ClusterLabs/pacemaker.git
Group:   System/Servers
Source:  %name-%version.tar
Patch:   %name-%version-alt.patch

Provides: pcmk-cluster-manager
Requires: corosync
Requires: resource-agents
Requires: lib%name = %version-%release
Requires(pre): %name-cli = %version-%release

BuildRequires(pre): rpm-build-python3
BuildRequires: /proc
BuildRequires: glib2-devel libxml2-devel libxslt-devel libuuid-devel systemd-devel libdbus-devel  perl(Pod/Text.pm)
BuildRequires: python3-devel gcc-c++ bzlib-devel libpam-devel
BuildRequires: libqb-devel > 0.11.0 libgnutls-devel libltdl-devel libgio-devel
BuildRequires: libncurses-devel libssl-devel libselinux-devel docbook-style-xsl
BuildRequires: help2man xsltproc
BuildRequires: libesmtp-devel libsensors3-devel libnet-snmp-devel libopenipmi-devel libservicelog-devel
BuildRequires: libcorosync-devel
%{?_enable_doc:BuildRequires: publican inkscape asciidoc}

%description
Pacemaker is an advanced, scalable High-Availability cluster resource
manager for Linux-HA (Heartbeat) and/or Corosync.

It supports "n-node" clusters with significant capabilities for
managing resources and dependencies.

It will run scripts at initialization, when machines go up or down,
when related resources fail and can be configured to periodically check
resource health.

Available rpmbuild rebuild options:
  --with(out) : heartbeat cman corosync doc publican snmp esmtp pre_release

%package cli
License: GPLv2+ and LGPLv2+
Summary: Command line tools for controlling Pacemaker clusters
Group: System/Servers
Requires: perl-DateTime-Format-DateParse
Requires: procps-ng
Requires: psmisc

%description cli
Pacemaker is an advanced, scalable High-Availability cluster resource
manager for Linux-HA (Heartbeat) and/or Corosync.

The %name-cli package contains command line tools that can be used
to query and control the cluster from machines that may, or may not,
be part of the cluster.

%package -n lib%name
License: GPLv2+ and LGPLv2+
Summary: Core Pacemaker libraries
Group: System/Servers
Requires: %name-schemas = %version-%release

%description -n lib%name
Pacemaker is an advanced, scalable High-Availability cluster resource
manager for Linux-HA (Heartbeat) and/or Corosync.

The lib%name package contains shared libraries needed for cluster
nodes and those just running the CLI tools.

%package remote
License: GPLv2+ and LGPLv2+
Summary: Pacemaker remote daemon for non-cluster nodes
Group: System/Servers

Provides: pcmk-cluster-manager
Requires: resource-agents
Requires: lib%name = %version-%release
Requires: %name-cli = %version-%release

%description remote
Pacemaker is an advanced, scalable High-Availability cluster resource
manager for Linux-HA (Heartbeat) and/or Corosync.

The %name-remote package contains the Pacemaker Remote daemon
which is capable of extending pacemaker functionality to remote
nodes not running the full corosync/cluster stack.

%package -n lib%name-devel
License: GPLv2+ and LGPLv2+
Summary: Pacemaker development package
Group: Development/C
Requires: lib%name = %version-%release
Requires: libqb-devel libuuid-devel
Requires: libxml2-devel libxslt-devel bzlib-devel glib2-devel
Requires: libcorosync-devel

%description -n lib%name-devel
Pacemaker is an advanced, scalable High-Availability cluster resource
manager for Linux-HA (Heartbeat) and/or Corosync.

The lib%name-devel package contains headers and shared libraries
for developing tools for Pacemaker.

%package cts
License: GPLv2+ and LGPLv2+
Summary: Test framework for cluster-related technologies like Pacemaker
Group: System/Servers
Requires: resource-agents
Requires: procps-ng
Requires: %name-cli = %version-%release
Requires: psmisc
BuildArch: noarch

%description cts
Test framework for cluster-related technologies like Pacemaker

%package doc
License: GPLv2+ and LGPLv2+
Summary: Documentation for Pacemaker
Group: System/Servers
BuildArch: noarch

%description doc
Documentation for Pacemaker.

Pacemaker is an advanced, scalable High-Availability cluster resource
manager for Linux-HA (Heartbeat) and/or Corosync.

%package schemas
License: GPLv2+
Summary: Schemas and upgrade stylesheets for Pacemaker
Group: System/Servers
BuildArch: noarch

%description   schemas
Schemas and upgrade stylesheets for Pacemaker

Pacemaker is an advanced, scalable High-Availability cluster resource
manager.

%prep
%setup
%patch -p1

%build
%autoreconf
%configure \
	PYTHON=/usr/bin/python3 \
	--disable-fatal-warnings	\
	--disable-static	\
	--with-profiling	\
	--with-gcov		\
	--with-acl		\
	--with-ais		\
	--with-corosync		\
	--with-cs-quorum	\
	--with-stonithd		\
	--enable-thread-safe	\
	--with-initdir=%_initdir	\
	--enable-systemd	\
	--disable-upstart	\
	--with-systemdsystemunitdir=%_unitdir	\
	--with-runstatedir=%_rundir	\
	--localstatedir=%_var	\
    --with-nagios-plugin-dir=%_prefix/lib/nagios/plugins \
	--with-daemon-user=%uname	\
	--with-daemon-group=%gname	\
	--with-version=%version-%release

subst 's|/usr/bin/help2man|/usr/bin/help2man --no-discard-stderr|g' tools/Makefile

%make_build
# Hack to fix undefined symbol get_object_root
cd lib/pengine
make clean
subst 's|^libpe_status_la_LIBADD = |libpe_status_la_LIBADD = $(top_builddir)/lib/cib/libcib.la |' Makefile
%make_build LDFLAGS=-L../cib/.libs

%install
%makeinstall_std

mkdir -p %buildroot%_var/lib/pacemaker/cores
install -D -m 644 etc/sysconfig/pacemaker %buildroot%_sysconfdir/sysconfig/pacemaker
install -D -m 755 pacemaker.init %buildroot%_initdir/pacemaker

# Copy configuration for pacemaker_remote and use it in init script
install -D -m 644 etc/sysconfig/pacemaker %buildroot%_sysconfdir/sysconfig/pacemaker_remote
subst 's|/etc/sysconfig/pacemaker|/etc/sysconfig/pacemaker_remote|' %buildroot%_initdir/pacemaker_remote
install -D -m 755 pacemaker_remote.init %buildroot%_initdir/pacemaker_remote

# These are not actually scripts
find %buildroot -name '*.xml' -type f -print0 | xargs -0 chmod a-x
find %buildroot -name '*.xsl' -type f -print0 | xargs -0 chmod a-x
find %buildroot -name '*.rng' -type f -print0 | xargs -0 chmod a-x

# Don't package static libs
find %buildroot -name '*.a' -type f -print0 | xargs -0 rm -f
find %buildroot -name '*.la' -type f -print0 | xargs -0 rm -f

# Do not package this either
rm -rf %buildroot%_datadir/pacemaker/tests/cts

GCOV_BASE=%buildroot/%_var/lib/pacemaker/gcov
mkdir -p $GCOV_BASE
find . -name '*.gcno' -type f | while read F ; do
        D=`dirname $F`
        mkdir -p ${GCOV_BASE}/$D
        cp $F ${GCOV_BASE}/$D
done


%pre cli
groupadd -f -r %gname ||:
getent passwd %uname >/dev/null || useradd -r -g %gname -s /sbin/nologin -c "cluster user" %uname ||:

%post cli
%post_service crm_mon

%preun cli
%preun_service crm_mon

%post
%post_service %name

%preun
%preun_service %name

%post -n %name-remote
%post_service pacemaker_remote

%preun -n %name-remote
%preun_service pacemaker_remote

%files
%doc COPYING ChangeLog README.markdown
%doc %_datadir/pacemaker/alerts
%exclude %_libexecdir/pacemaker/cts-log-watcher
%exclude %_libexecdir/pacemaker/cts-support
%exclude %_sbindir/pacemaker-remoted
%exclude %_sbindir/pacemaker_remoted
%config(noreplace) %_sysconfdir/sysconfig/pacemaker
%_sbindir/pacemakerd
%_initdir/pacemaker
%_unitdir/pacemaker.service
%_logrotatedir/%name
%_libexecdir/pacemaker/*
%_sbindir/fence_legacy
%_sbindir/notifyServicelogEvent
%_sbindir/ipmiservicelogd
%_man7dir/*.7*
%_man8dir/pacemakerd.*
%dir %attr (750, %uname, %gname) %_var/lib/pacemaker/cib
%dir %attr (750, %uname, %gname) %_var/lib/pacemaker/pengine
/usr/lib/ocf/resource.d/pacemaker/controld
/usr/lib/ocf/resource.d/pacemaker/remote

%files cli
%config(noreplace) %_sysconfdir/sysconfig/crm_mon
%_sbindir/attrd_updater
%_sbindir/cibadmin
%_sbindir/crm_attribute
%_sbindir/crm_diff
%_sbindir/crm_error
%_sbindir/crm_failcount
%_sbindir/crm_master
%_sbindir/crm_mon
%_unitdir/crm_mon.service
%_sbindir/crm_node
%_sbindir/crm_standby
%_sbindir/crmadmin
%_sbindir/iso8601
%_sbindir/crm_shadow
%_sbindir/crm_simulate
%_sbindir/crm_report
%_sbindir/crm_resource
%_sbindir/crm_rule
%_sbindir/crm_ticket
%_sbindir/crm_verify
%_sbindir/stonith_admin
%_man8dir/*.8*
%exclude %_man8dir/pacemakerd.*
%exclude %_man8dir/pacemaker-remoted.*

%_datadir/pacemaker/report.collector
%_datadir/pacemaker/report.common
%_datadir/snmp/mibs/PCMK-MIB.txt

%dir /usr/lib/ocf
%dir /usr/lib/ocf/resource.d
/usr/lib/ocf/resource.d/pacemaker
%exclude /usr/lib/ocf/resource.d/pacemaker/controld
%exclude /usr/lib/ocf/resource.d/pacemaker/remote

%dir %attr (750, %uname, %gname) %_var/lib/pacemaker
%dir %attr (750, %uname, %gname) %_var/lib/pacemaker/cores
%dir %attr (750, %uname, %gname) %_var/lib/pacemaker/blackbox
%dir %attr (770, %uname, %gname) %_var/log/pacemaker
%dir %attr (770, %uname, %gname) %_var/log/pacemaker/bundles

%files -n lib%name
%_libdir/*.so.*

%files remote
%config(noreplace) %_sysconfdir/sysconfig/pacemaker_remote
%_initdir/pacemaker_remote
%_unitdir/pacemaker_remote.service
%_sbindir/pacemaker-remoted
%_sbindir/pacemaker_remoted
%_man8dir/pacemaker-remoted.*

%files doc
%doc %_docdir/%name

%files cts
%python3_sitelibdir_noarch/cts
%_datadir/pacemaker/tests
%_libexecdir/pacemaker/cts-log-watcher
%_libexecdir/pacemaker/cts-support

%files -n lib%name-devel
%_includedir/pacemaker
%_libdir/*.so
%_pkgconfigdir/*.pc
%_datadir/pkgconfig/*.pc

%files schemas
%dir %_datadir/pacemaker
%_datadir/pacemaker/*.rng
%_datadir/pacemaker/*.xsl
%_datadir/pacemaker/api

%changelog
* Mon Sep 13 2021 Andrey Cherepanov <cas@altlinux.org> 2.1.1-alt1
- New version.

* Wed Aug 25 2021 Pavel Vasenkov <pav@altlinux.org> 2.1.0-alt2
- Fixes command line arguments parsing (#40643)

* Thu Jun 24 2021 Andrey Cherepanov <cas@altlinux.org> 2.1.0-alt1
- New version.
- Security fix CVE-2020-25654 in 2.0.5.

* Fri Jan 08 2021 Andrey Cherepanov <cas@altlinux.org> 2.0.5-alt1
- New version.

* Sat Apr 04 2020 Alexey Shabalin <shaba@altlinux.org> 2.0.3-alt2
- define %%_libexecdir as /usr/libexec
- move attrd_updater, crm_attribute, crm_master to pacemaker-cli

* Wed Dec 18 2019 Alexey Shabalin <shaba@altlinux.org> 2.0.3-alt1
- New version.
- disable build doc (error build publican on i586)

* Sun Jun 16 2019 Alexey Shabalin <shaba@altlinux.org> 2.0.2-alt1
- New version.
- Security fixes CVE-2018-16878, CVE-2019-3885.

* Wed Mar 06 2019 Alexey Shabalin <shaba@altlinux.org> 2.0.1-alt1
- New version.
- build with python3
- move schemas to sepatated package
- security fix CVE-2018-16877

* Thu Oct 04 2018 Andrey Cherepanov <cas@altlinux.org> 2.0.0-alt1
- New version.

* Tue Mar 13 2018 Andrey Cherepanov <cas@altlinux.org> 1.1.18-alt1
- New version.

* Tue Oct 03 2017 Andrey Cherepanov <cas@altlinux.org> 1.1.17-alt2
- Build without cluster-glue (ALT #33944)

* Thu Jul 13 2017 Andrey Cherepanov <cas@altlinux.org> 1.1.17-alt1
- New version

* Thu Jun 29 2017 Denis Medvedev <nbr@altlinux.org> 1.1.16-alt3
- Fix initscript,(ALT #33598).

* Wed Apr 12 2017 Valery Inozemtsev <shrek@altlinux.ru> 1.1.16-alt2
- enabled stonithd

* Sat Dec 24 2016 Andrey Cherepanov <cas@altlinux.org> 1.1.16-alt1
- New version
- Security fix CVE-2016-7035

* Fri Sep 23 2016 Alexey Shabalin <shaba@altlinux.ru> 1.1.15-alt3
- do not package fence files
- add_findreq_skiplist for resource files

* Wed Sep 14 2016 Alexey Shabalin <shaba@altlinux.ru> 1.1.15-alt2
- build with systemd support
- update sysv init script

* Mon Jun 27 2016 Andrey Cherepanov <cas@altlinux.org> 1.1.15-alt1
- New version
- Security fix CVE-2016-7797

* Fri Jan 22 2016 Andrey Cherepanov <cas@altlinux.org> 1.1.14-alt2
- Fix initscripts and paths

* Thu Jan 21 2016 Andrey Cherepanov <cas@altlinux.org> 1.1.14-alt1
- New version

* Sat Oct 17 2015 Andrey Cherepanov <cas@altlinux.org> 1.1.13-alt1
- New version
- Security fix CVE-2015-1867

* Tue Nov 05 2013 Igor Vlasenko <viy@altlinux.ru> 1.1.10-alt4
- NMU: added missing Pod dependencies

* Thu Aug 15 2013 Slava Dubrovskiy <dubrsl@altlinux.org> 1.1.10-alt3
- Fix initscript

* Mon Aug 12 2013 Slava Dubrovskiy <dubrsl@altlinux.org> 1.1.10-alt2
- New version

* Mon May 27 2013 Slava Dubrovskiy <dubrsl@altlinux.org> 1.1.10-alt1.rc3
- New RC

* Sat Apr 06 2013 Slava Dubrovskiy <dubrsl@altlinux.org> 1.1.9-alt2.git.132019bd
- New version

* Thu Mar 21 2013 Slava Dubrovskiy <dubrsl@altlinux.org> 1.1.9-alt1
- Build for ALT