-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdrbd.spec.in
557 lines (487 loc) · 15.8 KB
/
drbd.spec.in
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
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
# Define init script directory. %{_initddir} is available from Fedora
# 9 forward; CentOS knows 5 only %{_initrddir}. Neither are known to
# autoconf...
%{!?_initddir: %{expand: %%global _initddir %{_initrddir}}}
# Compatibility macro wrappers for legacy RPM versions that do not
# support conditional builds
%{!?bcond_without: %{expand: %%global bcond_without() %%{expand:%%%%{!?_without_%%{1}:%%%%global with_%%{1} 1}}}}
%{!?bcond_with: %{expand: %%global bcond_with() %%{expand:%%%%{?_with_%%{1}:%%%%global with_%%{1} 1}}}}
%{!?with: %{expand: %%global with() %%{expand:%%%%{?with_%%{1}:1}%%%%{!?with_%%{1}:0}}}}
%{!?without: %{expand: %%global without() %%{expand:%%%%{?with_%%{1}:0}%%%%{!?with_%%{1}:1}}}}
%if 0%{!?initscripttype:1}
# initscripttype not explicitly defined in some macro file or on commandline
# use presence of systemd_post macro to determine the initscripttype
%if %{?systemd_post:1}%{!?systemd_post:0}
%global initscripttype systemd
%else
%global initscripttype sysv
%endif
%endif
# Conditionals
# Invoke "rpmbuild --without <feature>" or "rpmbuild --with <feature>"
# to disable or enable specific features
%bcond_without manual
%bcond_without udev
%bcond_without pacemaker
%bcond_with rgmanager
%bcond_without heartbeat
# conditionals may not contain "-" nor "_", hence "bashcompletion"
%bcond_without bashcompletion
%bcond_without sbinsymlinks
# --with xen is ignored on any non-x86 architecture
%bcond_without xen
%bcond_without 83support
%bcond_without 84support
%bcond_without drbdmon
%ifnarch %{ix86} x86_64
%global _without_xen --without-xen
%endif
Name: drbd
Summary: DRBD driver for Linux
Version: @PACKAGE_VERSION@
Release: 1@RPM_DIST_TAG@
Source: http://www.drbd.org/download/drbd/utils/drbd-utils-%{version}.tar.gz
License: GPLv2+
ExclusiveOS: linux
Group: System Environment/Kernel
URL: http://www.drbd.org/
BuildRoot: %(mktemp -ud %{_tmppath}/drbd-utils-%{version}-%{release}-XXXXXX)
BuildRequires: @RPM_BUILDREQ_DEFAULT@
Requires: drbd-utils = %{version}
%ifarch %{ix86} x86_64
%if %{with xen}
Requires: drbd-xen = %{version}
%endif
%endif
%if %{with udev}
Requires: drbd-udev = %{version}
BuildRequires: udev
%endif
%if %{with pacemaker}
Requires: drbd-pacemaker = %{version}
%endif
%if %{with drbdmon}
BuildRequires: gcc-c++
%endif
## %if %{with rgmanager}
## ## No.
## ## We don't want to annoy the majority of our userbase on pacemaker
## ## by pulling in the full rgmanager stack via drbd-rgmanager as well.
## Requires: drbd-rgmanager = %{version}
## %endif
##
## ## Neither do we want to force anyone to install heartbeat
## ## Usually they use corosync meanwhile.
## ## No need to pull in heartbeat via the drbd-heartbeat scripts
## ## meant for haresources mode
## %if %{with heartbeat}
## Requires: %{name}-heartbeat = %{version}
## %endif
%if %{with bashcompletion}
Requires: drbd-bash-completion = %{version}
%endif
%description
DRBD mirrors a block device over the network to another machine.
Think of it as networked raid 1. It is a building block for
setting up high availability (HA) clusters.
This is a virtual package, installing the full DRBD userland suite.
# Just a few docs go into the "drbd" package. Everything else is part
# of one of the drbd-* packages.
%files
%defattr(-,root,root,-)
%doc COPYING
%doc ChangeLog
%doc README.md
%package utils
Summary: Management utilities for DRBD
Group: System Environment/Kernel
# Our kernel modules "require" specific drbd-utils versions, not ranges.
# Which was natural as long as userland and module shared the same repo
# and source tarball, and would be build together.
#
# Now we split the userland part, we "provide" a list of versions here,
# to be able to use this package with existing module packages.
#
%if %{with 84support}
# which 8.4 version equivalent this package provides
Provides: drbd-utils = 8.4.5
Provides: drbd-utils = 8.4.4
Provides: drbd-utils = 8.4.3
Provides: drbd-utils = 8.4.2
Provides: drbd-utils = 8.4.1
Provides: drbd-utils = 8.4.0
%endif
%if %{with 83support}
# which 8.3 version equivalent this package provides
Provides: drbd-utils = 8.3.16
%endif
# We used to have one monolithic userland package.
# Since all other packages require drbd-utils,
# it should be sufficient to add the conflict here.
Conflicts: drbd < 8.3.6
# These exist in centos extras:
Conflicts: drbd82 drbd83
%if %{initscripttype} == "sysv"
@RPM_REQ_CHKCONFIG_POST@
@RPM_REQ_CHKCONFIG_PREUN@
%endif
%description utils
DRBD mirrors a block device over the network to another machine.
Think of it as networked raid 1. It is a building block for
setting up high availability (HA) clusters.
This packages includes the DRBD administration tools.
%files utils
%defattr(755,root,root,-)
%if %{with sbinsymlinks}
/sbin/drbdsetup
/sbin/drbdadm
/sbin/drbdmeta
%endif
%{_sbindir}/drbdsetup
%{_sbindir}/drbdadm
%{_sbindir}/drbdmeta
%if %{with 83support}
%dir /lib/drbd/
/lib/drbd/drbdsetup-83
/lib/drbd/drbdadm-83
%endif
%if %{with 84support}
/lib/drbd/drbdsetup-84
/lib/drbd/drbdadm-84
%endif
%if %{with drbdmon}
%{_sbindir}/drbdmon
%endif
%if %{initscripttype} == "sysv"
%{_initddir}/drbd
%endif
%{_sbindir}/drbd-overview
%dir %{_prefix}/lib/drbd
%{_prefix}/lib/drbd/outdate-peer.sh
%{_prefix}/lib/drbd/snapshot-resync-target-lvm.sh
%{_prefix}/lib/drbd/unsnapshot-resync-target-lvm.sh
%{_prefix}/lib/drbd/notify-out-of-sync.sh
%{_prefix}/lib/drbd/notify-split-brain.sh
%{_prefix}/lib/drbd/notify-emergency-reboot.sh
%{_prefix}/lib/drbd/notify-emergency-shutdown.sh
%{_prefix}/lib/drbd/notify-io-error.sh
%{_prefix}/lib/drbd/notify-pri-lost-after-sb.sh
%{_prefix}/lib/drbd/notify-pri-lost.sh
%{_prefix}/lib/drbd/notify-pri-on-incon-degr.sh
%{_prefix}/lib/drbd/notify.sh
%dir %{_var}/lib/drbd
%ghost %dir %{_var}/run/drbd
%defattr(-,root,root,-)
%if %{initscripttype} == "systemd"
%{_unitdir}/drbd.service
%{_tmpfilesdir}/drbd.conf
/lib/drbd/drbd
%endif
%config(noreplace) %{_sysconfdir}/drbd.conf
%dir %{_sysconfdir}/drbd.d
%config(noreplace) %{_sysconfdir}/drbd.d/global_common.conf
%if %{with manual}
%{_mandir}/man8/drbd-*
%{_mandir}/man8/drbdsetup-*
%{_mandir}/man8/drbdadm-*
%{_mandir}/man5/drbd.conf-*
%{_mandir}/man8/drbdmeta-*
%if %{with drbdmon}
%{_mandir}/man8/drbdmon-*
%endif
%endif
%doc scripts/drbd.conf.example
%doc COPYING
%doc ChangeLog
%doc README.md
%ifarch %{ix86} x86_64
%if %{with xen}
%package xen
Summary: Xen block device management script for DRBD
Group: System Environment/Kernel
Requires: drbd-utils = %{version}-%{release}
@RPM_REQ_XEN@
@RPM_SUBPACKAGE_NOARCH@
%description xen
This package contains a Xen block device helper script for DRBD, capable of
promoting and demoting DRBD resources as necessary.
%files xen
%defattr(755,root,root,-)
%{_sysconfdir}/xen/scripts/block-drbd
%endif # with xen
%endif # arch %{ix86} x86_64
%if %{with udev}
%package udev
Summary: udev integration scripts for DRBD
Group: System Environment/Kernel
Requires: drbd-utils = %{version}-%{release}, udev
@RPM_SUBPACKAGE_NOARCH@
%description udev
This package contains udev helper scripts for DRBD, managing symlinks to
DRBD devices in /dev/drbd/by-res and /dev/drbd/by-disk.
%files udev
%defattr(-,root,root,-)
%config @udevrulesdir@/65-drbd.rules*
%endif # with udev
%if %{with pacemaker}
%package pacemaker
Summary: Pacemaker resource agent for DRBD
Group: System Environment/Base
Requires: drbd-utils = %{version}-%{release}
@RPM_REQ_PACEMAKER@
License: GPLv2
@RPM_SUBPACKAGE_NOARCH@
%description pacemaker
This package contains the master/slave DRBD resource agent for the
Pacemaker High Availability cluster manager.
%files pacemaker
%defattr(755,root,root,-)
%{_prefix}/lib/drbd/crm-fence-peer.sh
%{_prefix}/lib/drbd/crm-fence-peer.9.sh
%{_prefix}/lib/drbd/crm-unfence-peer.sh
%{_prefix}/lib/drbd/crm-unfence-peer.9.sh
%{_prefix}/lib/drbd/stonith_admin-fence-peer.sh
%{_prefix}/lib/ocf/resource.d/linbit/drbd
%{_prefix}/lib/ocf/resource.d/linbit/drbd.shellfuncs.sh
%endif # with pacemaker
# Dependencies for drbd-rgmanager are particularly awful. On RHEL 5
# and prior (and corresponding Fedora releases), %{_datadir}/cluster
# was owned by rgmanager version 2, so we have to depend on that.
#
# With Red Hat Cluster 3.0.1 (around Fedora 12), the DRBD resource
# agent was merged in, and it became part of the resource-agents 3
# package (which of course is different from resource-agents on all
# other platforms -- go figure). So for resource-agents >= 3, we must
# generally conflict.
#
# Then for RHEL 6, Red Hat in all their glory decided to keep the
# packaging scheme, but kicked DRBD out of the resource-agents
# package. Thus, for RHEL 6 specifically, we must not conflict with
# resource-agents >=3, but instead require it.
#
# The saga continues:
# In RHEL 6.1 they have listed the drbd resource agent as valid agent,
# but do not include it in their resource-agents package. -> So we
# drop any dependency regarding rgmanager's version.
#
# All of this for exactly two (2) files.
%if %{with rgmanager}
%package rgmanager
Summary: Red Hat Cluster Suite agent for DRBD
Group: System Environment/Base
Requires: drbd-utils = %{version}-%{release}
@RPM_SUBPACKAGE_NOARCH@
%description rgmanager
This package contains the DRBD resource agent for the Red Hat Cluster Suite
resource manager.
As of Red Hat Cluster Suite 3.0.1, the DRBD resource agent is included
in the Cluster distribution.
%files rgmanager
%defattr(755,root,root,-)
%{_datadir}/cluster/drbd.sh
%{_prefix}/lib/drbd/rhcs_fence
%defattr(-,root,root,-)
%{_datadir}/cluster/drbd.metadata
%endif # with rgmanager
%if %{with 84support}%{with 83support}
%if %{with heartbeat}
%package heartbeat
Summary: Heartbeat resource agent for DRBD
Group: System Environment/Base
Requires: %{name}-utils = %{version}-%{release}
@RPM_REQ_HEARTBEAT@
License: GPLv2
@RPM_SUBPACKAGE_NOARCH@
%description heartbeat
This package contains the DRBD resource agents for the Heartbeat cluster
resource manager (in v1 compatibility mode).
%files heartbeat
%defattr(755,root,root,-)
%{_sysconfdir}/ha.d/resource.d/drbddisk
%{_sysconfdir}/ha.d/resource.d/drbdupper
%defattr(-,root,root,-)
%if %{with manual}
%{_mandir}/man8/drbddisk-*
%endif
%endif # with heartbeat
%endif # 83 || 84 support
%if %{with bashcompletion}
%package bash-completion
Summary: Programmable bash completion support for drbdadm
Group: System Environment/Base
Requires: drbd-utils = %{version}-%{release}
@RPM_REQ_BASH_COMPLETION@
@RPM_SUBPACKAGE_NOARCH@
%description bash-completion
This package contains programmable bash completion support for the drbdadm
management utility.
%files bash-completion
%defattr(-,root,root,-)
%config %{_sysconfdir}/bash_completion.d/drbdadm*
%endif # with bashcompletion
%if %{with manual}
%package man-ja
Summary: Japanese man pages for DRBD
Group: System Environment/Base
@RPM_SUBPACKAGE_NOARCH@
%description man-ja
This package contains Japanese man pages for DRBD.
%files man-ja
%defattr(-,root,root,-)
%{_mandir}/ja/man8/drbd-*
%{_mandir}/ja/man8/drbdsetup-*
%{_mandir}/ja/man8/drbdadm-*
%{_mandir}/ja/man5/drbd.conf-*
%{_mandir}/ja/man8/drbdmeta-*
%if %{with heartbeat}
%if %{with 84support}
%{_mandir}/ja/man8/drbddisk-*
%endif
%endif # with heartbeat
%if %{with drbdmon}
%{_mandir}/ja/man8/drbdmon-*
%endif
%post man-ja
for f in drbd drbdadm drbdmeta drbdsetup; do
ln -sf $f-8.4.8.gz %{_mandir}/ja/man8/$f.8.gz
done
ln -sf drbd.conf-8.4.5.gz %{_mandir}/ja/man5/drbd.conf.5.gz
%if %{with drbdmon}
ln -sf drbdmon-9.0.8.gz %{_mandir}/ja/man8/drbdmon.8.gz
%endif
%preun man-ja
for f in drbd drbdadm drbdmeta drbdsetup; do
rm -f %{_mandir}/ja/man8/$f.8.gz
done
rm -f %{_mandir}/ja/man5/drbd.conf.5.gz
rm -f %{_mandir}/ja/man8/drbdmon.8.gz
%endif # with manual
%prep
%setup -q -n drbd-utils-%{version}
%build
# rebuild configure...
aclocal
autoheader
autoconf
%configure \
%{?_without_udev} \
%{?_without_xen} \
%{?_without_pacemaker} \
%{?_without_heartbeat} \
%{?_with_rgmanager} \
%{?_without_bashcompletion} \
%{?_without_83support} \
%{?_without_84support} \
%{?_without_manual} \
--with-initdir=%{_initddir} \
%{?_tmpfilesdir:--with-tmpfilesdir=%{_tmpfilesdir}} \
--with-initscripttype=%{initscripttype} \
%{?_without_drbdmon}
make %{?_smp_mflags}
%install
rm -rf %{buildroot}
make install DESTDIR=%{buildroot} CREATE_MAN_LINK=no
%if %{with sbinsymlinks}
# Don't do this if you are already on a /sbin -=> /usr/sbin distro
# compat: we used to live in /sbin/
# there may be many hardcoded /sbin/drbd* out there,
# including variants of our own scripts.
mkdir -p %{buildroot}/var/run/drbd
mkdir %{buildroot}/sbin/
cd %{buildroot}/sbin/
ln -sv ..%{_sbindir}/drbdadm .
ln -sv ..%{_sbindir}/drbdmeta .
ln -sv ..%{_sbindir}/drbdsetup .
%endif
%clean
rm -rf %{buildroot}
%post utils
%if %{initscripttype} == "systemd"
%systemd_post drbd.service
%endif
%if %{initscripttype} == "sysv"
chkconfig --add drbd
%endif
%if %{with manual}
for f in drbd drbdadm drbdmeta drbdsetup; do
ln -sf $f-8.4.8.gz %{_mandir}/man8/$f.8.gz
done
ln -sf drbd.conf-8.4.5.gz %{_mandir}/man5/drbd.conf.5.gz
%if %{with drbdmon}
ln -sf drbdmon-9.0.8.gz %{_mandir}/man8/drbdmon.8.gz
%endif
%endif
%if %{without udev}
for i in `seq 0 15` ; do
test -b /dev/drbd$i || mknod -m 0660 /dev/drbd$i b 147 $i;
done
%endif #without udev
%preun utils
for f in drbd drbdadm drbdmeta drbdsetup; do
rm -f %{_mandir}/man8/$f.8.gz
done
rm -f %{_mandir}/man5/drbd.conf.5.gz
rm -f %{_mandir}/man8/drbdmon.8.gz
%if %{initscripttype} == "systemd"
%systemd_preun drbd.service
%endif
%if %{initscripttype} == "sysv"
if [ $1 -eq 0 ]; then
%{_initrddir}/drbd stop >/dev/null 2>&1
/sbin/chkconfig --del drbd
fi
%endif
%if %{initscripttype} == "systemd"
%postun utils
%systemd_postun
%endif
%changelog
* Tue Jun 26 2018 Roland Kammerer <roland.kammerer@linbit.com> - 9.5.0-1
- New upstream release.
* Tue May 08 2018 Roland Kammerer <roland.kammerer@linbit.com> - 9.4.0-1
- New upstream release.
* Tue Apr 17 2018 Roland Kammerer <roland.kammerer@linbit.com> - 9.3.1-1
- New upstream release.
* Wed Mar 21 2018 Roland Kammerer <roland.kammerer@linbit.com> - 9.3.0-1
- New upstream release.
* Fri Dec 22 2017 Roland Kammerer <roland.kammerer@linbit.com> - 9.2.0-1
- New upstream release.
* Tue Aug 29 2017 Roland Kammerer <roland.kammerer@linbit.com> - 9.1.0-1
- New upstream release.
* Fri Jun 02 2017 Lars Ellenberg <lars@linbit.com> - 9.0.0-1
- New upstream release.
* Fri Apr 28 2017 Lars Ellenberg <lars@linbit.com> - 8.9.11-2
- fix for regression of drbd-8.4 pacemaker integration
- fix 8.4 compatibility of shipped global_common.conf
* Fri Mar 31 2017 Philipp Reisner <phil@linbit.com> - 8.9.11-1
- New upstream release.
* Fri Dec 23 2016 Philipp Reisner <phil@linbit.com> - 8.9.10-1
- New upstream release.
* Thu Oct 20 2016 Philipp Reisner <phil@linbit.com> - 8.9.9-1
- New upstream release.
* Tue Sep 06 2016 Philipp Reisner <phil@linbit.com> - 8.9.8-1
- New upstream release.
* Thu Jul 14 2016 Philipp Reisner <phil@linbit.com> - 8.9.7-1
- New upstream release.
* Wed Feb 3 2016 Roland Kammerer <roland.kammerer@linbit.com> - 8.9.6-1
- New upstream release.
* Wed Dec 16 2015 Philipp Reisner <phil@linbit.com> - 8.9.5-1
- New upstream release.
* Fri Sep 18 2015 Philipp Reisner <phil@linbit.com> - 8.9.4-1
- New upstream release.
* Wed Jul 29 2015 Lars Ellenberg <lars@linbit.com> - 8.9.3-2
- fixes for regression of drbd-8.4 pacemaker integration
* Tue Jun 16 2015 Philipp Reisner <phil@linbit.com> - 8.9.3-1
- New upstream release.
* Fri Apr 03 2015 Philipp Reisner <phil@linbit.com> - 8.9.2-1
- New upstream release.
* Fri Aug 08 2014 Lars Ellenberg <lars@linbit.com> - 8.9.1-3
- some more patches had been only merged into the "9" tools,
but unfortunately not the 8.4 tool compat tools
- place udev rules into $udevdir/*rules.d*
- rebuild: fixed default in case pkg-config does not know about udevdir
- fixed udev generated "by-disk" symlinks for drbd 8.4
* Tue Aug 05 2014 Lars Ellenberg <lars@linbit.com> - 8.9.1-1
- New upstream release.
* Tue Jun 10 2014 Philipp Reisner <phil@linbit.com> - 8.9.0-1
- New upstream release.