From 1d3135f1d36f0b84c179079e32dbb48a14d6e1cb129ec8b48bd6a4f553480bbc Mon Sep 17 00:00:00 2001 From: Yan Gao Date: Mon, 13 Jun 2016 15:59:58 +0000 Subject: [PATCH 1/3] Accepting request 401722 from home:yan_gao:branches:network:ha-clustering:Factory:Test - libcrmcommon: really ensure crm_time_t structure is fully initialized by API calls - extra: correct syntax error in sample alert script - crmd: avoid timeout on older peers when cancelling a resource operation - crmd: use proper resource agent name when caching metadata - crmd: avoid memory leak when sending fencing alert - liblrmd: avoid memory leak when closing or deleting lrmd connections - extra: improve determination of successful monitors in SNMP alert script - tools: avoid memory leak when crm_mon unpacks constraints - pengine: avoid use-after-free with location constraint + sets + templates - pengine: better error handling when unpacking sets in location constraints - pengine: avoid memory leak when invalid constraint involves set - Build: rename sample alert scripts and install them in datadir - pengine : Correction of the record judgment of the failed information. - Upstream version cs: dd46368eead0d756735216a4bc765466b99274fc - alert-helpers: some fixes in pcmk_smtp_helper.sh - libpengine: log message when stonith disabled, not enabled - pengine: only set unfencing constraints once - tools: don't require node to be known to crm_resource when deleting attribute - libcrmcommon: ensure crm_time_t structure is fully initialized by API calls - attrd: don't leak memory when returning due to malformed update request - crmd: always free result of crm_itoa() - xml: adapt crm_mon.rng per recent reorder of the summary elements - Upstream version cs: 1a05449500f015414b6df68b6d4feb64b713f533 - Rebase: * bug-977201_pacemaker-controld-self-fencing.patch - pengine: properly order stop actions relative to stonith - crm_resource: don't pretend that target-role:started would prevent promotion - crm_mon: consistently print ms resource state OBS-URL: https://build.opensuse.org/request/show/401722 OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/pacemaker?expand=0&rev=246 --- _service | 2 +- ...7201_pacemaker-controld-self-fencing.patch | 16 +++--- pacemaker-1.1.14+git20160527.389294f.tar.bz2 | 3 -- pacemaker-1.1.14+git20160612.dd46368.tar.bz2 | 3 ++ pacemaker.changes | 53 +++++++++++++++++-- pacemaker.spec | 22 ++++---- 6 files changed, 71 insertions(+), 28 deletions(-) delete mode 100644 pacemaker-1.1.14+git20160527.389294f.tar.bz2 create mode 100644 pacemaker-1.1.14+git20160612.dd46368.tar.bz2 diff --git a/_service b/_service index 0f52122..9400b92 100644 --- a/_service +++ b/_service @@ -11,7 +11,7 @@ 1.1.14 --> 1.1.14+git%cd.%h - 389294fd1ebefddad67fff51306f585b758ca860 + dd46368eead0d756735216a4bc765466b99274fc diff --git a/bug-977201_pacemaker-controld-self-fencing.patch b/bug-977201_pacemaker-controld-self-fencing.patch index ea5a55c..beb15fa 100644 --- a/bug-977201_pacemaker-controld-self-fencing.patch +++ b/bug-977201_pacemaker-controld-self-fencing.patch @@ -1,23 +1,19 @@ -commit f61b9889cd169ce2c715a5cc4808321977432ec0 +commit c199dc320b4faa01c19df68a9f2566465f5afa2c Author: Gao,Yan -Date: Sun May 29 20:31:25 2016 +0200 +Date: Mon Jun 13 17:26:27 2016 +0200 Fix: controld: Prevent unwanted self-fencing if "stateful_merge_wait" state of dlm is not available diff --git a/extra/resources/controld b/extra/resources/controld -index 7d75319..908e2ca 100644 +index ddb514a..37d5c62 100644 --- a/extra/resources/controld +++ b/extra/resources/controld -@@ -229,13 +229,9 @@ controld_monitor() { - - case $rc in - 0) smw=$(dlm_tool status -v | grep "stateful_merge_wait=" | cut -d= -f2) -- if [ $smw -eq 1 ]; then -+ if [ "$smw" = "1" ]; then +@@ -232,10 +232,6 @@ controld_monitor() { + if [ -n "$smw" ] && [ $smw -eq 1 ]; then ocf_log err "DLM status is: stateful_merge_wait" rc=$OCF_ERR_GENERIC - elif [ -z "$smw" ] && dlm_tool ls | grep -q "wait fencing" && \ -- ! stonith_admin -H -V | grep -q "wishes to"; then +- ! stonith_admin -H '*' -V | grep -q "wishes to"; then - ocf_log err "DLM status is: wait fencing" - rc=$OCF_ERR_GENERIC else diff --git a/pacemaker-1.1.14+git20160527.389294f.tar.bz2 b/pacemaker-1.1.14+git20160527.389294f.tar.bz2 deleted file mode 100644 index f944576..0000000 --- a/pacemaker-1.1.14+git20160527.389294f.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4d0c26d5c57607cf4368187f4b68e0e3549085305baa4c1c69ccb452ff06701e -size 3820078 diff --git a/pacemaker-1.1.14+git20160612.dd46368.tar.bz2 b/pacemaker-1.1.14+git20160612.dd46368.tar.bz2 new file mode 100644 index 0000000..c8c883a --- /dev/null +++ b/pacemaker-1.1.14+git20160612.dd46368.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b8abb5c69dc833c7fb28e093ed7706eabd2f6355a8d36e718ab3e645c044772f +size 3821850 diff --git a/pacemaker.changes b/pacemaker.changes index 5d1d118..5fc96e1 100644 --- a/pacemaker.changes +++ b/pacemaker.changes @@ -1,3 +1,50 @@ +------------------------------------------------------------------- +Mon Jun 13 10:31:52 UTC 2016 - ygao@suse.com + +- libcrmcommon: really ensure crm_time_t structure is fully initialized by API calls +- extra: correct syntax error in sample alert script +- crmd: avoid timeout on older peers when cancelling a resource operation +- crmd: use proper resource agent name when caching metadata +- crmd: avoid memory leak when sending fencing alert +- liblrmd: avoid memory leak when closing or deleting lrmd connections +- extra: improve determination of successful monitors in SNMP alert script +- tools: avoid memory leak when crm_mon unpacks constraints +- pengine: avoid use-after-free with location constraint + sets + templates +- pengine: better error handling when unpacking sets in location constraints +- pengine: avoid memory leak when invalid constraint involves set +- Build: rename sample alert scripts and install them in datadir +- pengine : Correction of the record judgment of the failed information. +- Upstream version cs: dd46368eead0d756735216a4bc765466b99274fc + +------------------------------------------------------------------- +Tue Jun 7 08:40:25 UTC 2016 - ygao@suse.com + +- alert-helpers: some fixes in pcmk_smtp_helper.sh +- libpengine: log message when stonith disabled, not enabled +- pengine: only set unfencing constraints once +- tools: don't require node to be known to crm_resource when deleting attribute +- libcrmcommon: ensure crm_time_t structure is fully initialized by API calls +- attrd: don't leak memory when returning due to malformed update request +- crmd: always free result of crm_itoa() +- xml: adapt crm_mon.rng per recent reorder of the summary elements +- Upstream version cs: 1a05449500f015414b6df68b6d4feb64b713f533 + +------------------------------------------------------------------- +Fri Jun 3 12:07:19 UTC 2016 - ygao@suse.com + +- Rebase: + * bug-977201_pacemaker-controld-self-fencing.patch + +- pengine: properly order stop actions relative to stonith +- crm_resource: don't pretend that target-role:started would prevent promotion +- crm_mon: consistently print ms resource state +- controld: use "stonith_admin -H '*' -V" (bsc#977201) +- stonith_admin: allow -H '*' to show history for all nodes (bsc#977201) +- controld: fix "[: -eq: unary operator expected" issue from PR 1022 (bsc#977201) +- extra: Support of the task designation of a resource and the fencing. +- extra: Change pcmk_snmp_helper.sh (2). +- Upstream version cs: 6a8c1e9d35c65cbfd4019cfe797cb7bb9dfd4322 + ------------------------------------------------------------------- Sun May 29 20:06:12 UTC 2016 - ygao@suse.com @@ -44,7 +91,7 @@ Wed May 4 10:38:16 UTC 2016 - ygao@suse.com - pengine: Organize order of actions for master resources in anti-colocations (bsc#977800) - pengine: Respect asymmetrical ordering when trying to move resources (bsc#977675) - fencing: Record the last known names of nodes to make sure fencing requested with nodeid works (bsc#974108) -- crmd: first implementation of integrated multi-agent, multi-target alerting mechanism +- crmd: first implementation of integrated multi-agent, multi-target alerting mechanism (fate#320855) - ping resource: Use fping6 for IPv6 hosts (bsc#976271) - pengine: Consider resource failed if any of the configured monitor operations failed (bsc#972187) - ping resource: avoid undefined func w/ OCF_FUNCTIONS=/dev/null @@ -676,7 +723,7 @@ Fri Feb 27 09:44:50 UTC 2015 - ygao@suse.com - properly record stop args after reload - pengine: Do not reschedule monitors that are no longer needed while resource definitions have changed (bsc#914761) - Build: Fix building when heartbeat support is disabled -- fencing: cl#5134 - Support random fencing delay to avoid double fencing (FATE#317136, FATE#318381) +- fencing: cl#5134 - Support random fencing delay to avoid double fencing (FATE#317136, FATE#318381, bsc#970733) - extra: Use crm_simulate for the showscores script - attrd: refresh should force an immediate write-out of all attributes - service: Leave synchronous calls to be free'd by the caller @@ -861,7 +908,7 @@ Fri Oct 17 12:55:03 UTC 2014 - ygao@suse.com - crmd: properly update job limit for baremetal remote-nodes - crmd: Remote-node throttle jobs count towards cluster-node hosting conneciton rsc - crmd: Ensure throttle_mode() does something on Linux -- systemd: Perform actions asynchronously +- systemd: Perform actions asynchronously (bsc#956500) - crm_attribute: Correctly update config options when -o crm_config is specified - crmd: Fixes crash when remote connection migration fails - pengine: fixes segfault caused by malformed log warning diff --git a/pacemaker.spec b/pacemaker.spec index 9b3c6a7..188f4af 100644 --- a/pacemaker.spec +++ b/pacemaker.spec @@ -21,7 +21,7 @@ %global pcmk_docdir %{_docdir}/%{name} %global specversion 1 -%global pcmkversion 1.1.14+git20160527.389294f +%global pcmkversion 1.1.14+git20160612.dd46368 # set following to the actual commit or, for final release, concatenate # "pcmkversion" macro to "Pacemaker-" (will yield a tag per the convention) %global commit HEAD @@ -142,6 +142,7 @@ Release: 0 #Release: %{pcmk_release}%{?dist} Url: http://www.clusterlabs.org +# eg. https://github.com/ClusterLabs/pacemaker/archive/8ae45302394b039fb098e150f156df29fc0cb576/pacemaker-8ae4530.tar.gz #Source0: https://github.com/%{github_owner}/%{name}/archive/%{commit}/%{name}-%{shortcommit}.tar.gz Source0: %{name}-%{version}.tar.bz2 Source1: crm_report.in @@ -177,10 +178,6 @@ Suggests: graphviz %systemd_requires %endif -%if 0%{?rhel} > 0 -ExclusiveArch: i386 i686 x86_64 -%endif - # Required for core functionality (python-devel depends on python) BuildRequires: autoconf BuildRequires: automake @@ -451,10 +448,13 @@ manager for Corosync, CMAN and/or Linux-HA. find . -exec touch \{\} \; %build + +# Early versions of autotools (e.g. RHEL <= 5) do not support --docdir +export docdir=%{pcmk_docdir} + ./autogen.sh -# RHEL <= 5 does not support --docdir -docdir=%{pcmk_docdir} %{configure} \ +%{configure} \ %{?with_profiling: --with-profiling} \ %{?with_coverage: --with-coverage} \ %{!?with_cman: --without-cman} \ @@ -490,7 +490,7 @@ sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool %endif -make %{_smp_mflags} V=1 docdir=%{pcmk_docdir} all +make %{_smp_mflags} V=1 all %install rm -rf %{buildroot} @@ -515,9 +515,6 @@ chmod a+x %{buildroot}/%{_datadir}/pacemaker/tests/cts/CTSlab.py # 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 -find %{buildroot} -name '*.dtd' -type f -print0 | xargs -0 chmod a-x # Don't package static libs find %{buildroot} -name '*.a' -type f -print0 | xargs -0 rm -f @@ -722,6 +719,8 @@ fi %doc %{_mandir}/man8/pacemakerd.* %doc %{_mandir}/man8/stonith_admin.* +%doc %{_datadir}/pacemaker/alerts + #%license COPYING %doc COPYING %doc AUTHORS @@ -780,6 +779,7 @@ fi %{_sbindir}/crm_report %{_sbindir}/crm_report.pacemaker %{_sbindir}/crm_ticket +%exclude %{_datadir}/pacemaker/alerts %exclude %{_datadir}/pacemaker/tests %{_datadir}/pacemaker %{_datadir}/snmp/mibs/PCMK-MIB.txt From 2b3ea922136a59665ade08ae9ac79e969cc829021c87d37e5033bc0d32e2f3c6 Mon Sep 17 00:00:00 2001 From: Yan Gao Date: Mon, 20 Jun 2016 11:39:16 +0000 Subject: [PATCH 2/3] Accepting request 401947 from home:scarabeus_iv:branches:network:ha-clustering:Factory - Clean-up with spec-cleaner - Drop heartbeat conditions, no heartbeat around - Sort CMAN conditionals to be actually logical - Run fdupes to not waste so much space - Add logrotate to reqs of pacemaker-cli - Cleanup rpmlintrc to contain only bare needed minimum - Run basic sanity check in %check phase - Drop sysvinit support we now run on sle12+ only - Cleanup the define conditionals that are never used - Drop profiling and coverage options it is not enabled by default and better to run separately OBS-URL: https://build.opensuse.org/request/show/401947 OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/pacemaker?expand=0&rev=247 --- pacemaker.changes | 19 ++ pacemaker.rpmlintrc | 12 - pacemaker.spec | 608 +++++++++++--------------------------------- 3 files changed, 163 insertions(+), 476 deletions(-) diff --git a/pacemaker.changes b/pacemaker.changes index 5fc96e1..7e836b1 100644 --- a/pacemaker.changes +++ b/pacemaker.changes @@ -1,3 +1,22 @@ +------------------------------------------------------------------- +Tue Jun 14 11:35:04 UTC 2016 - tchvatal@suse.com + +- Clean-up with spec-cleaner +- Drop heartbeat conditions, no heartbeat around +- Sort CMAN conditionals to be actually logical +- Run fdupes to not waste so much space +- Add logrotate to reqs of pacemaker-cli +- Cleanup rpmlintrc to contain only bare needed minimum +- Run basic sanity check in %check phase + +------------------------------------------------------------------- +Tue Jun 14 11:09:45 UTC 2016 - tchvatal@suse.com + +- Drop sysvinit support we now run on sle12+ only +- Cleanup the define conditionals that are never used +- Drop profiling and coverage options it is not enabled by default + and better to run separately + ------------------------------------------------------------------- Mon Jun 13 10:31:52 UTC 2016 - ygao@suse.com diff --git a/pacemaker.rpmlintrc b/pacemaker.rpmlintrc index 293eb4f..574275c 100644 --- a/pacemaker.rpmlintrc +++ b/pacemaker.rpmlintrc @@ -1,16 +1,4 @@ -#addFilter(".*") addFilter("script-without-shebang /usr/share/pacemaker/.*\.rng") addFilter("script-without-shebang /usr/share/pacemaker/.*\.dtd") addFilter("script-without-shebang /usr/share/pacemaker/.*\.xsl") -#addFilter("script-without-shebang /usr/share/pacemaker/cts/") addFilter("non-executable-script /usr/share/pacemaker/cts/") -#addFilter("non-utf8-spec-file heartbeat.spec") -addFilter("no-version-in-last-changelog") -addFilter("shlib-policy-missing-suffix") -addFilter("source-or-patch-not-bzipped") -#addFilter("missing-dependency-to-cron") -#addFilter("no-prereq-on pwdutils") -#addFilter("no-packager-tag") - -# Debug packages take care of this -addFilter("unstripped-binary-or-object") diff --git a/pacemaker.spec b/pacemaker.spec index 188f4af..2576bdb 100644 --- a/pacemaker.spec +++ b/pacemaker.spec @@ -19,131 +19,37 @@ %global gname haclient %global uname hacluster %global pcmk_docdir %{_docdir}/%{name} - -%global specversion 1 -%global pcmkversion 1.1.14+git20160612.dd46368 -# set following to the actual commit or, for final release, concatenate -# "pcmkversion" macro to "Pacemaker-" (will yield a tag per the convention) -%global commit HEAD -%global lparen ( -%global rparen ) -%global shortcommit %(c=%{commit}; case ${c} in - Pacemaker-*%{rparen} echo ${c:10};; - *%{rparen} echo ${c:0:7};; esac) -%global pre_release %(s=%{shortcommit}; [ ${s: -4:3} != -rc ]; echo $?) -%global post_release %([ %{commit} = Pacemaker-%{shortcommit} ]; echo $?) -%global github_owner ClusterLabs - -# Turn off the auto compilation of python files not in the site-packages directory -# Needed so that the -devel package is multilib compliant -%global __os_install_post %(echo '%{__os_install_post}' | sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g') - -#%global rawhide %(test ! -e /etc/yum.repos.d/fedora-rawhide.repo; echo $?) -%global rawhide 0 -#%%global cs_version %%(pkg-config corosync --modversion | awk -F . '{print $1}') -%global cs_version 2 -# It has to be eventually decided whether to use Python2 or Python3 -%global py_site %{?python_sitearch}%{!?python_sitearch:%(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")} -%global cman_native 0%{?el6} || (0%{?fedora} > 0 && 0%{?fedora} < 17) - -# It's desired to apply "license" macro uniformly in "files" sections below, -# but RPM versions not aware of this new classification normally (re)define it -# to the value of "License:", so following is to ensure the macro definition -# is per expectation only after that tag; solution courtesy of Jason Tibbitts: -# https://pkgs.fedoraproject.org/cgit/rpms/epel-rpm-macros.git/tree/macros.zzz-epel?h=el6&id=e1adcb77b0c05a6c29bc0eb0c4e82113180a0a99#n12 -%if !%{defined _licensedir} -%define description %{lua: - rpm.define("license %doc") - print("%description") -} -%endif - -# Conditionals -# Invoke "rpmbuild --without " or "rpmbuild --with " -# to disable or enable specific features - -# Legacy stonithd fencing agents -%bcond_with stonithd -%define with_stonithd 1 - -# Build with/without support for profiling tools -%bcond_with profiling - -# Include Build with/without support for performing coverage analysis -%bcond_with coverage - -# We generate docs using Publican, Asciidoc and Inkscape, but they're not available everywhere -%bcond_without doc -%define with_doc 0 - -# Use a different versioning scheme -%bcond_with pre_release - -# Ship an Upstart job file -%bcond_with upstart_job - -# Turn off cman support on platforms that normally ship with it -%bcond_without cman - -%if %{with profiling} -# This disables -debuginfo package creation and also the stripping binaries/libraries -# Useful if you want sane profiling data -%global debug_package %{nil} -%endif - -%if %{with pre_release} || 0%{pre_release} -%if 0%{pre_release} -%global pcmk_release 0.%{specversion}.%(s=%{shortcommit}; echo ${s: -3}) -%else -%global pcmk_release 0.%{specversion}.%{shortcommit}.git -%endif -%else -%if 0%{post_release} -%global pcmk_release %{specversion}.%{shortcommit}.git -%else -%global pcmk_release %{specversion} -%endif -%endif - -#%if 0%{?suse_version} -#%define _libexecdir %{_libdir} -#%endif - %define with_corosync_support 1 -%define with_heartbeat_support 0 - %define with_nagios 1 -%define with_snmp 1 %define with_esmtp 1 %define with_acl 1 %define with_cibsecrets 1 - %define enable_lib_cluster_pkg 0 %define enable_fatal_warnings 1 - %define with_regression_tests 0 - %if ! %{defined _rundir} %define _rundir %{_localstatedir}/run %endif - +# Conditionals +# Invoke "rpmbuild --without " or "rpmbuild --with " +# to disable or enable specific features +# Legacy stonithd fencing agents +%bcond_without stonithd +# We generate docs using Publican, Asciidoc and Inkscape, but they're not available everywhere +%bcond_with doc +# Use a different versioning scheme +%bcond_with pre_release +# Turn off cman support +%bcond_with cman Name: pacemaker -Summary: Scalable High-Availability cluster resource manager -%if %{defined _unitdir} -License: GPL-2.0 and GPL-2.0+ and LGPL-2.1+ -%else -# initscript is Revised BSD -License: GPL-2.0 and GPL-2.0+ and LGPL-2.1+ and BSD-3-Clause -%endif # AGPL-3.0 licensed extra/clustermon.sh is not present in the binary -Group: Productivity/Clustering/HA -Version: %{pcmkversion} +Version: 1.1.14+git20160612.dd46368 Release: 0 -#Release: %{pcmk_release}%{?dist} +Summary: Scalable High-Availability cluster resource manager +License: GPL-2.0 and GPL-2.0+ and LGPL-2.1+ +Group: Productivity/Clustering/HA Url: http://www.clusterlabs.org - # eg. https://github.com/ClusterLabs/pacemaker/archive/8ae45302394b039fb098e150f156df29fc0cb576/pacemaker-8ae4530.tar.gz -#Source0: https://github.com/%{github_owner}/%{name}/archive/%{commit}/%{name}-%{shortcommit}.tar.gz Source0: %{name}-%{version}.tar.bz2 Source1: crm_report.in Source100: pacemaker.rpmlintrc @@ -156,135 +62,84 @@ Patch6: bug-812269_pacemaker-fencing-device-register-messages.patch Patch7: pacemaker-Wno-format-signedness.patch Patch8: bug-943295_pacemaker-lrmd-log-notice.patch Patch9: bug-977201_pacemaker-controld-self-fencing.patch -BuildRoot: %{_tmppath}/%{name}-%{version}-build -Provides: pacemaker-ticket-support = 2.0 -Conflicts: heartbeat < 3.0 -Conflicts: libheartbeat2 < 3.0.0 -Requires: %{name}-cli = %{version}-%{release} -Requires: libpacemaker3 = %{version}-%{release} -%if %{enable_lib_cluster_pkg} -Requires: libpacemaker3-cluster = %{version}-%{release} -%endif -Requires: psmisc -Requires: python -Requires: resource-agents -Recommends: crmsh -Recommends: libdlm -Recommends: fence-agents -Recommends: sbd -Suggests: graphviz - -%if %{defined systemd_requires} -%systemd_requires -%endif - # Required for core functionality (python-devel depends on python) BuildRequires: autoconf BuildRequires: automake -BuildRequires: pkgconfig(glib-2.0) - -%if 0%{?suse_version} +# Enables optional functionality +BuildRequires: bison +BuildRequires: docbook-xsl-stylesheets +BuildRequires: fdupes +BuildRequires: flex +BuildRequires: help2man BuildRequires: libbz2-devel -%else -BuildRequires: bzip2-devel -%endif - +BuildRequires: libgnutls-devel +# We need reasonably recent versions of libqb +BuildRequires: libqb-devel > 0.11.0 +BuildRequires: libselinux-devel BuildRequires: libtool BuildRequires: libtool-ltdl-devel BuildRequires: libuuid-devel BuildRequires: libxml2-devel BuildRequires: libxslt-devel +BuildRequires: ncurses-devel +BuildRequires: net-snmp-devel +BuildRequires: openssl-devel BuildRequires: pam-devel BuildRequires: pkgconfig BuildRequires: python BuildRequires: python-devel - # Required for agent_config.h which specifies the correct scratch directory BuildRequires: resource-agents - -# We need reasonably recent versions of libqb -BuildRequires: libqb-devel > 0.11.0 -Requires: libqb > 0.11.0 - -# Enables optional functionality -BuildRequires: bison -#BuildRequires: byacc BuildRequires: pkgconfig(dbus-1) - -%if 0%{?suse_version} > 1100 -BuildRequires: docbook-xsl-stylesheets -%else -BuildRequires: docbook-style-xsl -%endif - -BuildRequires: flex - -%if 0%{?suse_version} > 1210 -BuildRequires: libgnutls-devel -%else -BuildRequires: gnutls-devel -%endif - -BuildRequires: help2man -BuildRequires: libselinux-devel -BuildRequires: ncurses-devel -BuildRequires: openssl-devel - +BuildRequires: pkgconfig(glib-2.0) BuildRequires: pkgconfig(systemd) - -%if %{with cman} && %{cman_native} +Requires: %{name}-cli = %{version}-%{release} +Requires: libpacemaker3 = %{version}-%{release} +Requires: libqb > 0.11.0 +Requires: psmisc +Requires: python +Requires: resource-agents +Recommends: crmsh +Recommends: fence-agents +Recommends: libdlm +Recommends: sbd +Suggests: graphviz +Conflicts: heartbeat < 3.0 +Conflicts: libheartbeat2 < 3.0.0 +Provides: pacemaker-ticket-support = 2.0 +BuildRoot: %{_tmppath}/%{name}-%{version}-build +%{?systemd_requires} +%if %{enable_lib_cluster_pkg} +Requires: libpacemaker3-cluster = %{version}-%{release} +%endif +%if %{with cman} BuildRequires: clusterlib-devel # pacemaker initscript: cman initscript, fence_tool (+ some soft-dependencies) # "post" scriptlet: ccs_update_schema Requires: cman %endif - -%if %with_corosync_support -Requires: corosync -#BuildRequires: corosynclib-devel +%if %{with_corosync_support} BuildRequires: libcorosync-devel +Requires: corosync %endif - -%if %with_heartbeat_support -BuildRequires: heartbeat-devel -Requires: heartbeat -%endif - -#%if %{with stonithd} -%if %{with_stonithd} -#BuildRequires: cluster-glue-libs-devel +%if %{with stonithd} BuildRequires: libglue-devel %endif - -%if !0%{?rawhide} -# More often than not, inkscape is busted on rawhide, don't even bother - -#%if %{with doc} -%if %{with_doc} -%ifarch %{ix86} x86_64 +%if %{with doc} BuildRequires: asciidoc BuildRequires: inkscape BuildRequires: publican %endif -%endif - -%if %with_snmp -BuildRequires: net-snmp-devel -%endif - -%if %with_esmtp +%if %{with_esmtp} BuildRequires: libesmtp-devel %endif - -%if %with_regression_tests +%if %{with_regression_tests} BuildRequires: procps BuildRequires: python-curses BuildRequires: python-xml BuildRequires: vim-base %endif -%endif - %description Pacemaker is an advanced, scalable High-Availability cluster resource manager for Corosync, CMAN and/or Linux-HA. @@ -296,13 +151,11 @@ 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) : cman stonithd doc coverage profiling pre_release upstart_job - %package cli Summary: Command line tools for controlling Pacemaker clusters Group: Productivity/Clustering/HA -Requires: libpacemaker3 = %{version}-%{release} +Requires: libpacemaker3 = %{version} +Requires: logrotate Requires: perl-TimeDate %description cli @@ -328,7 +181,7 @@ nodes and those just running the CLI tools. %package -n libpacemaker3-cluster Summary: Cluster Libraries used by Pacemaker Group: Productivity/Clustering/HA -Requires: libpacemaker3 = %{version}-%{release} +Requires: libpacemaker3 = %{version} %description -n libpacemaker3-cluster Pacemaker is an advanced, scalable High-Availability cluster resource @@ -341,12 +194,10 @@ libraries needed for nodes that will form part of the cluster nodes. %package remote Summary: Pacemaker remote daemon for non-cluster nodes Group: Productivity/Clustering/HA -Requires: %{name}-cli = %{version}-%{release} -Requires: libpacemaker3 = %{version}-%{release} +Requires: %{name}-cli = %{version} +Requires: libpacemaker3 = %{version} Requires: resource-agents -%if %{defined systemd_requires} -%systemd_requires -%endif +%{?systemd_requires} %description remote Pacemaker is an advanced, scalable High-Availability cluster resource @@ -361,24 +212,18 @@ Summary: Pacemaker development package Group: Development/Libraries/C and C++ Requires: %{name}-cts = %{version}-%{release} Requires: glib2-devel - -%if 0%{?suse_version} Requires: libbz2-devel -%else -Requires: bzip2-devel -%endif - Requires: libcorosync-devel -Requires: libpacemaker3 = %{version}-%{release} -%if %{enable_lib_cluster_pkg} -Requires: libpacemaker3-cluster = %{version}-%{release} -%endif +Requires: libpacemaker3 = %{version} Requires: libqb-devel Requires: libtool-ltdl-devel Requires: libuuid-devel Requires: libxml2-devel Requires: libxslt-devel -%if %with_regression_tests +%if %{enable_lib_cluster_pkg} +Requires: libpacemaker3-cluster = %{version} +%endif +%if %{with_regression_tests} # For the regression tests, we can run them only if all pacemaker # packages are installed, so we pull that in here for the regression # builds; this is supposed to be disabled for shipping code. @@ -395,26 +240,13 @@ for developing tools for Pacemaker. %package cts Summary: Test framework for cluster-related technologies like Pacemaker Group: Productivity/Clustering/HA -Requires: libpacemaker3 = %{version}-%{release} +Requires: libpacemaker3 = %{version} Requires: python -# systemd python bindings are separate package in some distros -%if %{defined systemd_requires} - -%if 0%{?fedora} > 20 -Requires: systemd-python -%endif - -%if 0%{?rhel} > 6 -Requires: systemd-python -%endif - -%endif - %description cts -Test framework for cluster-related technologies like Pacemaker +Testing framework for cluster-related technologies like Pacemaker -%if %{with_doc} +%if %{with doc} %package doc Summary: Documentation for Pacemaker Group: Productivity/Clustering/HA @@ -427,8 +259,7 @@ manager for Corosync, CMAN and/or Linux-HA. %endif %prep -#%setup -q -n %{name}-%{commit} -%setup -q -n %{name}-%{version} +%setup -q %patch1 -p1 %patch2 -p1 %patch3 -p1 @@ -439,76 +270,45 @@ manager for Corosync, CMAN and/or Linux-HA. %patch8 -p1 %patch9 -p1 -# Force the local time -# -# 'git' sets the file date to the date of the last commit. -# This can result in files having been created in the future -# when building on machines in timezones 'behind' the one the -# commit occurred in - which seriously confuses 'make' -find . -exec touch \{\} \; - %build +autoreconf -fvi -# Early versions of autotools (e.g. RHEL <= 5) do not support --docdir -export docdir=%{pcmk_docdir} - -./autogen.sh - -%{configure} \ - %{?with_profiling: --with-profiling} \ - %{?with_coverage: --with-coverage} \ +%configure \ + --disable-static \ + --disable-silent-rules\ + --without-profiling \ + --without-coverage \ %{!?with_cman: --without-cman} \ -%if !%with_heartbeat_support --without-heartbeat \ -%endif -%if %with_nagios +%if %{with_nagios} --with-nagios=true \ %endif -%if %with_snmp --with-snmp=true \ -%endif -%if %with_esmtp +%if %{with_esmtp} --with-esmtp=true \ %endif -%if %with_acl +%if %{with_acl} --with-acl=true \ %endif -%if %with_cibsecrets +%if %{with_cibsecrets} --with-cibsecrets=true \ %endif -%if !%enable_fatal_warnings +%if !%{enable_fatal_warnings} --enable-fatal-warnings=no \ %endif - %{!?with_doc: --with-brand=} \ - --with-initdir=%{_initrddir} \ + %{!?with doc: --with-brand=} \ + --with-initdir=%{_initddir} \ --localstatedir=%{_var} \ - --with-version=%{version}-%{release} + --with-version=%{version} -%if 0%{?suse_version} >= 1200 -# Fedora handles rpath removal automagically -sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool -sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool -%endif - -make %{_smp_mflags} V=1 all +make %{?_smp_mflags} all %install -rm -rf %{buildroot} -make DESTDIR=%{buildroot} docdir=%{pcmk_docdir} V=1 install +make DESTDIR=%{buildroot} docdir=%{pcmk_docdir} install -#mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig -install -d -m755 $RPM_BUILD_ROOT/var/adm/fillup-templates -#install -m 644 mcp/pacemaker.sysconfig ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig/pacemaker -install -m 644 mcp/pacemaker.sysconfig $RPM_BUILD_ROOT/var/adm/fillup-templates/sysconfig.pacemaker -#install -m 644 tools/crm_mon.sysconfig ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig/crm_mon -install -m 644 tools/crm_mon.sysconfig $RPM_BUILD_ROOT/var/adm/fillup-templates/sysconfig.crm_mon - -%if %{with upstart_job} -mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/init -install -m 644 mcp/pacemaker.upstart ${RPM_BUILD_ROOT}%{_sysconfdir}/init/pacemaker.conf -install -m 644 mcp/pacemaker.combined.upstart ${RPM_BUILD_ROOT}%{_sysconfdir}/init/pacemaker.combined.conf -install -m 644 tools/crm_mon.upstart ${RPM_BUILD_ROOT}%{_sysconfdir}/init/crm_mon.conf -%endif +install -d -m755 %{buildroot}%{_localstatedir}/adm/fillup-templates +install -m 644 mcp/pacemaker.sysconfig %{buildroot}%{_localstatedir}/adm/fillup-templates/sysconfig.pacemaker +install -m 644 tools/crm_mon.sysconfig %{buildroot}%{_localstatedir}/adm/fillup-templates/sysconfig.crm_mon # Scripts that should be executable chmod a+x %{buildroot}/%{_datadir}/pacemaker/tests/cts/CTSlab.py @@ -516,161 +316,94 @@ chmod a+x %{buildroot}/%{_datadir}/pacemaker/tests/cts/CTSlab.py # These are not actually scripts find %{buildroot} -name '*.xml' -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 +find %{buildroot} -type f -name "*.la" -delete -print -# Do not package these either rm -f %{buildroot}/%{_libdir}/service_crm.so # Don't ship init scripts for systemd based platforms -%if %{defined _unitdir} -rm -f %{buildroot}/%{_initrddir}/pacemaker -rm -f %{buildroot}/%{_initrddir}/pacemaker_remote +rm -f %{buildroot}/%{_initddir}/pacemaker +rm -f %{buildroot}/%{_initddir}/pacemaker_remote # Don't ship fence_pcmk where it has no use %if %{without cman} rm -f %{buildroot}/%{_sbindir}/fence_pcmk %endif -ln -s /usr/sbin/service %{buildroot}%{_sbindir}/rcpacemaker -ln -s /usr/sbin/service %{buildroot}%{_sbindir}/rcpacemaker_remote -ln -s /usr/sbin/service %{buildroot}%{_sbindir}/rccrm_mon -%endif +ln -s service %{buildroot}%{_sbindir}/rcpacemaker +ln -s service %{buildroot}%{_sbindir}/rcpacemaker_remote +ln -s service %{buildroot}%{_sbindir}/rccrm_mon mv %{buildroot}%{_sbindir}/crm_report %{buildroot}%{_sbindir}/crm_report.pacemaker -install -m 755 %{S:1} %{buildroot}%{_sbindir}/crm_report +install -m 755 %{SOURCE1} %{buildroot}%{_sbindir}/crm_report -%if %{with coverage} -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 -%endif +%fdupes -s %{buildroot} -%if %{defined _unitdir} +%check +# Prevent false positives in rpmlint +./BasicSanity.sh -V pengine cli 2>&1 %post -#%systemd_post pacemaker.service %service_add_post pacemaker.service %pre %service_add_pre pacemaker.service %preun -#%systemd_preun pacemaker.service %service_del_preun pacemaker.service %postun -#%systemd_postun_with_restart pacemaker.service %service_del_postun pacemaker.service %post remote -#%systemd_post pacemaker_remote.service %service_add_post pacemaker_remote.service %pre remote %service_add_pre pacemaker_remote.service %preun remote -#%systemd_preun pacemaker_remote.service %service_del_preun pacemaker_remote.service %postun remote -#%systemd_postun_with_restart pacemaker_remote.service %service_del_postun pacemaker_remote.service %post cli - -if [ ! -e %{_sysconfdir}/sysconfig/pacemaker ]; then - %fillup_only pacemaker -fi - -#%systemd_post crm_mon.service +%fillup_only pacemaker %service_add_post crm_mon.service - -if [ ! -e %{_sysconfdir}/sysconfig/crm_mon ]; then - %fillup_only crm_mon -fi +%fillup_only crm_mon %pre cli %service_add_pre crm_mon.service %preun cli -#%systemd_preun crm_mon.service %service_del_preun crm_mon.service %postun cli -#%systemd_postun_with_restart crm_mon.service %service_del_postun crm_mon.service -%else - -%post -/sbin/chkconfig --add pacemaker || : -%if %{with cman} && %{cman_native} -# make fence_pcmk in cluster.conf valid instantly otherwise tools like ccs may -# choke (until schema gets auto-regenerated on the next start of cluster), -# per the protocol shared with other packages contributing to cluster.rng -/usr/sbin/ccs_update_schema >/dev/null 2>&1 || : -%endif - -%preun -/sbin/service pacemaker stop || : -if [ $1 -eq 0 ]; then - # Package removal, not upgrade - /sbin/chkconfig --del pacemaker || : -fi - -%post remote -/sbin/chkconfig --add pacemaker_remote || : - -%preun remote -/sbin/service pacemaker_remote stop &>/dev/null || : -if [ $1 -eq 0 ]; then - # Package removal, not upgrade - /sbin/chkconfig --del pacemaker_remote || : -fi - -%post cli - -if [ ! -e %{_sysconfdir}/sysconfig/pacemaker ]; then - %fillup_only pacemaker -fi - -%endif - %pre -n libpacemaker3 - getent group %{gname} >/dev/null || groupadd -r %{gname} -g 189 getent passwd %{uname} >/dev/null || useradd -r -g %{gname} -u 189 -s /sbin/nologin -c "cluster user" %{uname} exit 0 %post -n libpacemaker3 -p /sbin/ldconfig - %postun -n libpacemaker3 -p /sbin/ldconfig %if %{enable_lib_cluster_pkg} %post -n libpacemaker3-cluster -p /sbin/ldconfig - %postun -n libpacemaker3-cluster -p /sbin/ldconfig %endif -%if %with_regression_tests - +%if %{with_regression_tests} %post -n libpacemaker-devel if [ ! -e /tmp/.pcmk_regression_tests_ran ]; then touch /tmp/.pcmk_regression_tests_ran # Needed so that the shell doesn't get stuck on escape # sequences export TERM=dumb - /usr/share/pacemaker/tests/cli/regression.sh || true - /usr/share/pacemaker/tests/pengine/regression.sh -V || true + %{_datadir}/pacemaker/tests/cli/regression.sh || true + %{_datadir}/pacemaker/tests/pengine/regression.sh -V || true echo Now running shell regression tests ; date - if ! /usr/share/pacemaker/tests/shell/regression.sh ; then + if ! %{_datadir}/pacemaker/tests/shell/regression.sh ; then echo "Shell tests failed." cat crmtestout/regression.out fi @@ -678,18 +411,13 @@ fi %endif %files +%defattr(-,root,root) ########################################################### %defattr(-,root,root) - -#%config(noreplace) %{_sysconfdir}/sysconfig/pacemaker %{_sbindir}/pacemakerd -%if %{defined _unitdir} %{_unitdir}/pacemaker.service %{_sbindir}/rcpacemaker -%else -%{_initrddir}/pacemaker -%endif %exclude %{_libexecdir}/pacemaker/lrmd_test %exclude %{_sbindir}/pacemaker_remoted @@ -703,64 +431,40 @@ fi %endif %{_sbindir}/stonith_admin -%doc %{_mandir}/man7/crmd.* -%doc %{_mandir}/man7/pengine.* -%doc %{_mandir}/man7/stonithd.* -%if %{without cman} || !%{cman_native} -%doc %{_mandir}/man7/ocf_pacemaker_controld.* +%{_mandir}/man7/crmd.7%{ext_man} +%{_mandir}/man7/pengine.7%{ext_man} +%{_mandir}/man7/stonithd.7%{ext_man} +%if %{without cman} +%{_mandir}/man7/ocf_pacemaker_controld.7%{ext_man} %endif -%doc %{_mandir}/man7/ocf_pacemaker_o2cb.* -%doc %{_mandir}/man7/ocf_pacemaker_remote.* -%doc %{_mandir}/man8/crm_node.* +%{_mandir}/man7/ocf_pacemaker_o2cb.7%{ext_man} +%{_mandir}/man7/ocf_pacemaker_remote.7%{ext_man} +%{_mandir}/man8/crm_node.8%{ext_man} %if %{with cman} -%doc %{_mandir}/man8/fence_pcmk.* +%{_mandir}/man8/fence_pcmk.8%{ext_man} %endif -%doc %{_mandir}/man8/fence_legacy.* -%doc %{_mandir}/man8/pacemakerd.* -%doc %{_mandir}/man8/stonith_admin.* +%{_mandir}/man8/fence_legacy.8%{ext_man} +%{_mandir}/man8/pacemakerd.8%{ext_man} +%{_mandir}/man8/stonith_admin.8%{ext_man} %doc %{_datadir}/pacemaker/alerts -#%license COPYING -%doc COPYING -%doc AUTHORS -%doc ChangeLog +%doc COPYING AUTHORS ChangeLog %dir %attr (750, %{uname}, %{gname}) %{_var}/lib/pacemaker/cib %dir %attr (750, %{uname}, %{gname}) %{_var}/lib/pacemaker/pengine -%if %{without cman} || !%{cman_native} -/usr/lib/ocf/resource.d/pacemaker/controld -%endif -/usr/lib/ocf/resource.d/pacemaker/o2cb -/usr/lib/ocf/resource.d/pacemaker/remote -/usr/lib/ocf/resource.d/.isolation - -%if "%{?cs_version}" != "UNKNOWN" -%if 0%{?cs_version} < 2 -%{_libexecdir}/lcrso/pacemaker.lcrso -%endif -%endif - -%if %{with upstart_job} -%config(noreplace) %{_sysconfdir}/init/pacemaker.conf -%config(noreplace) %{_sysconfdir}/init/pacemaker.combined.conf +%if %{without cman} +%{_libexecdir}/ocf/resource.d/pacemaker/controld %endif +%{_libexecdir}/ocf/resource.d/pacemaker/o2cb +%{_libexecdir}/ocf/resource.d/pacemaker/remote +%{_libexecdir}/ocf/resource.d/.isolation %files cli %defattr(-,root,root) - %config(noreplace) %{_sysconfdir}/logrotate.d/pacemaker -#%config(noreplace) %{_sysconfdir}/sysconfig/crm_mon - -%if %{defined _unitdir} %{_unitdir}/crm_mon.service %{_sbindir}/rccrm_mon -%endif - -%if %{with upstart_job} -%config(noreplace) %{_sysconfdir}/init/crm_mon.conf -%endif - %{_sbindir}/attrd_updater %{_sbindir}/cibadmin %{_sbindir}/crm_attribute @@ -784,24 +488,24 @@ fi %{_datadir}/pacemaker %{_datadir}/snmp/mibs/PCMK-MIB.txt -%exclude /usr/lib/ocf/resource.d/pacemaker/controld -%exclude /usr/lib/ocf/resource.d/pacemaker/o2cb -%exclude /usr/lib/ocf/resource.d/pacemaker/remote +%exclude %{_libexecdir}/ocf/resource.d/pacemaker/controld +%exclude %{_libexecdir}/ocf/resource.d/pacemaker/o2cb +%exclude %{_libexecdir}/ocf/resource.d/pacemaker/remote -%dir /usr/lib/ocf -%dir /usr/lib/ocf/resource.d -/usr/lib/ocf/resource.d/pacemaker +%dir %{_libexecdir}/ocf +%dir %{_libexecdir}/ocf/resource.d +%{_libexecdir}/ocf/resource.d/pacemaker -%config(noreplace) /var/adm/fillup-templates/sysconfig.pacemaker -%config(noreplace) /var/adm/fillup-templates/sysconfig.crm_mon -%doc %{_mandir}/man7/* +%config(noreplace) %{_localstatedir}/adm/fillup-templates/sysconfig.pacemaker +%config(noreplace) %{_localstatedir}/adm/fillup-templates/sysconfig.crm_mon +%{_mandir}/man7/* %exclude %{_mandir}/man7/crmd.* %exclude %{_mandir}/man7/pengine.* %exclude %{_mandir}/man7/stonithd.* %exclude %{_mandir}/man7/ocf_pacemaker_controld.* %exclude %{_mandir}/man7/ocf_pacemaker_o2cb.* %exclude %{_mandir}/man7/ocf_pacemaker_remote.* -%doc %{_mandir}/man8/* +%{_mandir}/man8/* %exclude %{_mandir}/man8/crm_node.* %exclude %{_mandir}/man8/fence_pcmk.* %exclude %{_mandir}/man8/fence_legacy.* @@ -809,10 +513,7 @@ fi %exclude %{_mandir}/man8/pacemaker_remoted.* %exclude %{_mandir}/man8/stonith_admin.* -#%license COPYING -%doc COPYING -%doc AUTHORS -%doc ChangeLog +%doc COPYING AUTHORS ChangeLog %dir %attr (750, %{uname}, %{gname}) %{_var}/lib/pacemaker %dir %attr (750, %{uname}, %{gname}) %{_var}/lib/pacemaker/blackbox @@ -830,38 +531,25 @@ fi %{_libdir}/libpengine.so.* %{_libdir}/libstonithd.so.* %{_libdir}/libtransitioner.so.* -#%license COPYING.LIB -%doc COPYING.LIB -%doc AUTHORS +%doc COPYING.LIB AUTHORS %{_libdir}/libcrmcluster.so.* %if %{enable_lib_cluster_pkg} %files -n libpacemaker3-cluster %defattr(-,root,root) -#%{_libdir}/libcrmcluster.so.* -#%license COPYING.LIB -%doc COPYING.LIB -%doc AUTHORS +%{_libdir}/libcrmcluster.so.* +%doc COPYING.LIB AUTHORS %endif %files remote %defattr(-,root,root) - -#%config(noreplace) %{_sysconfdir}/sysconfig/pacemaker -%if %{defined _unitdir} %{_unitdir}/pacemaker_remote.service %{_sbindir}/rcpacemaker_remote -%else -%{_initrddir}/pacemaker_remote -%endif - %{_sbindir}/pacemaker_remoted -%{_mandir}/man8/pacemaker_remoted.* -#%license COPYING -%doc COPYING -%doc AUTHORS +%{_mandir}/man8/pacemaker_remoted.8%{ext_man} +%doc COPYING AUTHORS -%if %{with_doc} +%if %{with doc} %files doc %defattr(-,root,root) %doc %{pcmk_docdir} @@ -869,13 +557,10 @@ fi %files cts %defattr(-,root,root) -#%{py_site}/cts %{py_sitedir}/cts %{_datadir}/pacemaker/tests/cts %{_libexecdir}/pacemaker/lrmd_test -#%license COPYING -%doc COPYING -%doc AUTHORS +%doc COPYING AUTHORS %files -n libpacemaker-devel %defattr(-,root,root) @@ -883,12 +568,7 @@ fi %{_datadir}/pacemaker/tests %{_includedir}/pacemaker %{_libdir}/*.so -%if %{with coverage} -%{_var}/lib/pacemaker/gcov -%endif %{_libdir}/pkgconfig/*.pc -#%license COPYING.LIB -%doc COPYING.LIB -%doc AUTHORS +%doc COPYING.LIB AUTHORS %changelog From 31da03a182ec4a7b08645a2b042ace7a07511ca046b314c66f6447440c3cf455 Mon Sep 17 00:00:00 2001 From: Yan Gao Date: Mon, 4 Jul 2016 15:06:14 +0000 Subject: [PATCH 3/3] Accepting request 406453 from home:yan_gao:branches:network:ha-clustering:Factory:Test - ping: Log sensible error when /tmp is full (bsc#987348) - crm_mon: Do not log errors for the known CIB changes that should be ignored (bsc#986931) - logging: Enable synchronous logging when blackboxes are enabled - libpengine: print target role and blocked status in XML output - tools: add maintenance mode and disabled/blocked resources to crm_mon XML/HTML output - tools: break up long lines in crm_mon console output - libservices: include socket units when listing all systemd agents - fencing: fence_legacy - Search capable devices by querying them through "list" action for cluster-glue stonith agents (bsc#986265) - extra: correct quoting of timestamp-format in alert-snmp-example - pengine,tools: Display pending resource state by default when it's available (bsc#986201) - rng: Allow rsc-pattern in locations for version 2.6 - pengine: Expand regexp references in location constraints - pengine: Allow to set base score for progressive node health strategy - systemd: Allow unit names ending in .socket. - watchdog: Correction to do to change action of the system reboot by fail_fast - Upstream version cs: 630d0d112092042b6f79c2a02bb442e82fee93ec - Remove conditionals that are not really needed as they always kept the values - Remove the cman conditional as we do not even have the dependencies to build with it in OBS - Convert deps to pkgconfig style ones and remove deps that are not mentioned by the testsuite or the configure.ac - Update to version 1.1.15 - crmd: mention that graceful remote shutdowns may cause connection failures (bsc#981489) - alerts - drop 5min timeout to 30s since it is configurable now - Bug bz#5292 - crmd: wait for alerts to finish - libais,libcluster,libcrmcommon,liblrmd: don't use %z specifier - alerts: ensure sample alert agents handle undefined recipient OBS-URL: https://build.opensuse.org/request/show/406453 OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/pacemaker?expand=0&rev=248 --- _service | 6 +- pacemaker-1.1.14+git20160612.dd46368.tar.bz2 | 3 - pacemaker-1.1.15+git20160701.630d0d1.tar.bz2 | 3 + pacemaker.changes | 74 ++++++++-- pacemaker.spec | 142 +++++++++---------- 5 files changed, 133 insertions(+), 95 deletions(-) delete mode 100644 pacemaker-1.1.14+git20160612.dd46368.tar.bz2 create mode 100644 pacemaker-1.1.15+git20160701.630d0d1.tar.bz2 diff --git a/_service b/_service index 9400b92..aae6e18 100644 --- a/_service +++ b/_service @@ -8,10 +8,10 @@ To update to a new release, change "revision" to the desired git commit hash and bump "version" if necessary - 1.1.14 + 1.1.15 --> - 1.1.14+git%cd.%h - dd46368eead0d756735216a4bc765466b99274fc + 1.1.15+git%cd.%h + 630d0d112092042b6f79c2a02bb442e82fee93ec diff --git a/pacemaker-1.1.14+git20160612.dd46368.tar.bz2 b/pacemaker-1.1.14+git20160612.dd46368.tar.bz2 deleted file mode 100644 index c8c883a..0000000 --- a/pacemaker-1.1.14+git20160612.dd46368.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b8abb5c69dc833c7fb28e093ed7706eabd2f6355a8d36e718ab3e645c044772f -size 3821850 diff --git a/pacemaker-1.1.15+git20160701.630d0d1.tar.bz2 b/pacemaker-1.1.15+git20160701.630d0d1.tar.bz2 new file mode 100644 index 0000000..41d70dd --- /dev/null +++ b/pacemaker-1.1.15+git20160701.630d0d1.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9587853126135f54777779084e9ea2946536d02a6e06b93695ee215d4c535179 +size 3844245 diff --git a/pacemaker.changes b/pacemaker.changes index 7e836b1..6bc55f4 100644 --- a/pacemaker.changes +++ b/pacemaker.changes @@ -1,3 +1,55 @@ +------------------------------------------------------------------- +Fri Jul 1 23:10:54 UTC 2016 - ygao@suse.com + +- ping: Log sensible error when /tmp is full (bsc#987348) +- crm_mon: Do not log errors for the known CIB changes that should be ignored (bsc#986931) +- logging: Enable synchronous logging when blackboxes are enabled +- libpengine: print target role and blocked status in XML output +- tools: add maintenance mode and disabled/blocked resources to crm_mon XML/HTML output +- tools: break up long lines in crm_mon console output +- libservices: include socket units when listing all systemd agents +- fencing: fence_legacy - Search capable devices by querying them through "list" action for cluster-glue stonith agents (bsc#986265) +- extra: correct quoting of timestamp-format in alert-snmp-example +- pengine,tools: Display pending resource state by default when it's available (bsc#986201) +- rng: Allow rsc-pattern in locations for version 2.6 +- pengine: Expand regexp references in location constraints +- pengine: Allow to set base score for progressive node health strategy +- systemd: Allow unit names ending in .socket. +- watchdog: Correction to do to change action of the system reboot by fail_fast +- Upstream version cs: 630d0d112092042b6f79c2a02bb442e82fee93ec + +------------------------------------------------------------------- +Thu Jun 30 13:16:25 UTC 2016 - tchvatal@suse.com + +- Remove conditionals that are not really needed as they always kept + the values +- Remove the cman conditional as we do not even have the dependencies + to build with it in OBS +- Convert deps to pkgconfig style ones and remove deps that are + not mentioned by the testsuite or the configure.ac + +------------------------------------------------------------------- +Wed Jun 22 12:25:47 UTC 2016 - ygao@suse.com + +- Update to version 1.1.15 +- crmd: mention that graceful remote shutdowns may cause connection failures (bsc#981489) +- alerts - drop 5min timeout to 30s since it is configurable now +- Bug bz#5292 - crmd: wait for alerts to finish +- libais,libcluster,libcrmcommon,liblrmd: don't use %z specifier +- alerts: ensure sample alert agents handle undefined recipient +- tools: crm_resource -T option should not be hidden anymore +- PE: Correctly update the dependant actions of un-runnable clones +- alerts: make timestamp-format-string work properly if strftime-escape is the last character +- extra: make alert-file-example cope with spaces in timeformat-string +- attrd,ipc: Prevent possible segfault on exit (bsc#986056) +- alerts: fix SMTP recipient defaulting +- tools: properly handle crm_resource --restart with a resource in a group +- tools: don't assume all resources restart on same node with crm_resource --restart +- tools: avoid memory leaks in crm_resource --restart +- tools: remember any existing target-role when doing crm_resource --restart +- tools: correctly count starting resources when doing crm_resource --restart +- Upstream version cs: e174ec84857e087210b9dacee3318f8203176129 (Pacemaker-1.1.15) + ------------------------------------------------------------------- Tue Jun 14 11:35:04 UTC 2016 - tchvatal@suse.com @@ -78,8 +130,8 @@ Sun May 29 14:44:18 UTC 2016 - ygao@suse.com - crmd: Acknowledge cancellation operations for remote connection resources (bsc#976865) - controld: improve DLM check with stateful_merge_wait (bsc#977201) - attrd, libcrmcommon: validate attrd requests better -- crmd: clear remote node transient attributes on disconnect -- Revert "Fix: attrd: Correctly implement mass removal of a node's attributes" +- crmd: clear remote node transient attributes on disconnect (bsc#981489) +- Revert "Fix: attrd: Correctly implement mass removal of a node's attributes" (bsc#981489) - crm_mon: Fix time formatting on x32 - resources: use OCF version tagging correctly - libcommon: crm_procfs_pid_of() would always return last /proc entry checked @@ -200,8 +252,8 @@ Thu Feb 11 13:28:13 UTC 2016 - ygao@suse.com - crmd: Prevent potential use-after-free (bsc#964183) - liblrmd: Prevent potential use-after-free issues (bsc#964183) - PE: Fix conditions for internal sanity check (bsc#971129) -- attrd: ensure remote nodes are in correct peer cache -- crmd: set remote flag when gracefully shutting down remote nodes +- attrd: ensure remote nodes are in correct peer cache (bsc#981489) +- crmd: set remote flag when gracefully shutting down remote nodes (bsc#981489) - fencing: Correctly track active stonith actions (bsc#938545) - fencing: Functionize adding and removing active pids of device (bsc#938545) - crm_shadow: Do not invoke shells with --noprofile option other than bash (bsc#961392) @@ -213,13 +265,13 @@ Thu Feb 11 13:28:13 UTC 2016 - ygao@suse.com - spec: C++ compiler is not something currently needed - RHBZ#1286316: Do an ordered shutdown of systemd resources - header == NULL when parsing compressed message -- attrd: Correctly implement mass removal of a node's attributes +- attrd: Correctly implement mass removal of a node's attributes (bsc#981489) - attrd: Hook up the client name so we can track requests -- crmd: Set the shutdown transient attribute in response to LRMD_IPC_OP_SHUTDOWN_REQ from remote nodes -- PE: Honor the shutdown transient attributes for remote nodes -- pacemaker_remote: support graceful stops -- crmd: support graceful pacemaker_remote stops -- lrmd,liblrmd: add lrmd IPC operations for requesting and acknowledging shutdown +- crmd: Set the shutdown transient attribute in response to LRMD_IPC_OP_SHUTDOWN_REQ from remote nodes (bsc#981489) +- PE: Honor the shutdown transient attributes for remote nodes (bsc#981489) +- pacemaker_remote: support graceful stops (bsc#981489) +- crmd: support graceful pacemaker_remote stops (bsc#981489) +- lrmd,liblrmd: add lrmd IPC operations for requesting and acknowledging shutdown (bsc#981489) - fencing: Support concurrent fencing actions on each device (bsc#938545) - pengine: Support concurrent fencing (bsc#938545) - Upstream version cs: c54f10440a7bba5a1491ea8506925c7d6d9ca2a3 @@ -338,7 +390,7 @@ Thu Oct 8 10:29:54 UTC 2015 - ygao@suse.com - crmd: properly detect CIB update failures for remote nodes - cibadmin: Prevent potential use-of-NULL in print_xml_output() (bsc#947180) - Fencing: The device list is expected to be comma separated -- Tools: Do not send command lines to syslog +- Tools: Do not send command lines to syslog (bsc#986676) - Tools: Repair the logging of 'interesting' command-lines - PE: resolve memory leak - libfencing: make topology level removal compatible with latest stonithd API diff --git a/pacemaker.spec b/pacemaker.spec index 2576bdb..a759640 100644 --- a/pacemaker.spec +++ b/pacemaker.spec @@ -19,17 +19,14 @@ %global gname haclient %global uname hacluster %global pcmk_docdir %{_docdir}/%{name} -%define with_corosync_support 1 +%global cs_version 2 %define with_nagios 1 +%define with_snmp 1 %define with_esmtp 1 -%define with_acl 1 %define with_cibsecrets 1 %define enable_lib_cluster_pkg 0 -%define enable_fatal_warnings 1 +%define enable_fatal_warnings 0 %define with_regression_tests 0 -%if ! %{defined _rundir} -%define _rundir %{_localstatedir}/run -%endif # Conditionals # Invoke "rpmbuild --without " or "rpmbuild --with " # to disable or enable specific features @@ -37,17 +34,13 @@ %bcond_without stonithd # We generate docs using Publican, Asciidoc and Inkscape, but they're not available everywhere %bcond_with doc -# Use a different versioning scheme -%bcond_with pre_release -# Turn off cman support -%bcond_with cman Name: pacemaker -# AGPL-3.0 licensed extra/clustermon.sh is not present in the binary -Version: 1.1.14+git20160612.dd46368 +Version: 1.1.15+git20160701.630d0d1 Release: 0 Summary: Scalable High-Availability cluster resource manager License: GPL-2.0 and GPL-2.0+ and LGPL-2.1+ Group: Productivity/Clustering/HA +# AGPL-3.0 licensed extra/clustermon.sh is not present in the binary Url: http://www.clusterlabs.org # eg. https://github.com/ClusterLabs/pacemaker/archive/8ae45302394b039fb098e150f156df29fc0cb576/pacemaker-8ae4530.tar.gz Source0: %{name}-%{version}.tar.bz2 @@ -65,35 +58,32 @@ Patch9: bug-977201_pacemaker-controld-self-fencing.patch # Required for core functionality (python-devel depends on python) BuildRequires: autoconf BuildRequires: automake -# Enables optional functionality BuildRequires: bison -BuildRequires: docbook-xsl-stylesheets BuildRequires: fdupes BuildRequires: flex BuildRequires: help2man -BuildRequires: libbz2-devel -BuildRequires: libgnutls-devel -# We need reasonably recent versions of libqb -BuildRequires: libqb-devel > 0.11.0 -BuildRequires: libselinux-devel BuildRequires: libtool -BuildRequires: libtool-ltdl-devel -BuildRequires: libuuid-devel -BuildRequires: libxml2-devel -BuildRequires: libxslt-devel BuildRequires: ncurses-devel -BuildRequires: net-snmp-devel -BuildRequires: openssl-devel BuildRequires: pam-devel BuildRequires: pkgconfig BuildRequires: python -BuildRequires: python-devel # Required for agent_config.h which specifies the correct scratch directory BuildRequires: resource-agents +BuildRequires: pkgconfig(bzip2) +BuildRequires: pkgconfig(corosync) BuildRequires: pkgconfig(dbus-1) BuildRequires: pkgconfig(glib-2.0) +BuildRequires: pkgconfig(gnutls) +BuildRequires: pkgconfig(libexslt) +# We need reasonably recent versions of libqb +BuildRequires: pkgconfig(libqb) > 0.11.0 +BuildRequires: pkgconfig(libxml-2.0) +BuildRequires: pkgconfig(libxslt) +BuildRequires: pkgconfig(python) BuildRequires: pkgconfig(systemd) +BuildRequires: pkgconfig(uuid) Requires: %{name}-cli = %{version}-%{release} +Requires: corosync Requires: libpacemaker3 = %{version}-%{release} Requires: libqb > 0.11.0 Requires: psmisc @@ -112,24 +102,27 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-build %if %{enable_lib_cluster_pkg} Requires: libpacemaker3-cluster = %{version}-%{release} %endif -%if %{with cman} -BuildRequires: clusterlib-devel -# pacemaker initscript: cman initscript, fence_tool (+ some soft-dependencies) -# "post" scriptlet: ccs_update_schema -Requires: cman -%endif -%if %{with_corosync_support} -BuildRequires: libcorosync-devel -Requires: corosync +# Enables optional functionality +%if 0%{?suse_version} > 1100 +BuildRequires: docbook-xsl-stylesheets +%else +BuildRequires: docbook-style-xsl %endif %if %{with stonithd} +%if 0%{?suse_version} BuildRequires: libglue-devel +%else +BuildRequires: cluster-glue-libs-devel +%endif %endif %if %{with doc} BuildRequires: asciidoc BuildRequires: inkscape BuildRequires: publican %endif +%if %{with_snmp} +BuildRequires: net-snmp-devel +%endif %if %{with_esmtp} BuildRequires: libesmtp-devel %endif @@ -137,7 +130,6 @@ BuildRequires: libesmtp-devel BuildRequires: procps BuildRequires: python-curses BuildRequires: python-xml -BuildRequires: vim-base %endif %description @@ -154,7 +146,7 @@ resource health. %package cli Summary: Command line tools for controlling Pacemaker clusters Group: Productivity/Clustering/HA -Requires: libpacemaker3 = %{version} +Requires: libpacemaker3 = %{version}-%{release} Requires: logrotate Requires: perl-TimeDate @@ -181,7 +173,7 @@ nodes and those just running the CLI tools. %package -n libpacemaker3-cluster Summary: Cluster Libraries used by Pacemaker Group: Productivity/Clustering/HA -Requires: libpacemaker3 = %{version} +Requires: libpacemaker3 = %{version}-%{release} %description -n libpacemaker3-cluster Pacemaker is an advanced, scalable High-Availability cluster resource @@ -194,8 +186,8 @@ libraries needed for nodes that will form part of the cluster nodes. %package remote Summary: Pacemaker remote daemon for non-cluster nodes Group: Productivity/Clustering/HA -Requires: %{name}-cli = %{version} -Requires: libpacemaker3 = %{version} +Requires: %{name}-cli = %{version}-%{release} +Requires: libpacemaker3 = %{version}-%{release} Requires: resource-agents %{?systemd_requires} @@ -211,17 +203,18 @@ nodes not running the full corosync/cluster stack. Summary: Pacemaker development package Group: Development/Libraries/C and C++ Requires: %{name}-cts = %{version}-%{release} -Requires: glib2-devel -Requires: libbz2-devel -Requires: libcorosync-devel -Requires: libpacemaker3 = %{version} -Requires: libqb-devel +Requires: libpacemaker3 = %{version}-%{release} Requires: libtool-ltdl-devel -Requires: libuuid-devel -Requires: libxml2-devel -Requires: libxslt-devel +Requires: pkgconfig +Requires: pkgconfig(bzip2) +Requires: pkgconfig(corosync) +Requires: pkgconfig(glib-2.0) +Requires: pkgconfig(libqb) +Requires: pkgconfig(libxml-2.0) +Requires: pkgconfig(libxslt) +Requires: pkgconfig(uuid) %if %{enable_lib_cluster_pkg} -Requires: libpacemaker3-cluster = %{version} +Requires: libpacemaker3-cluster = %{version}-%{release} %endif %if %{with_regression_tests} # For the regression tests, we can run them only if all pacemaker @@ -238,13 +231,13 @@ The libpacemaker-devel package contains headers and shared libraries for developing tools for Pacemaker. %package cts -Summary: Test framework for cluster-related technologies like Pacemaker +Summary: Test framework for cluster-related technologies Group: Productivity/Clustering/HA -Requires: libpacemaker3 = %{version} +Requires: libpacemaker3 = %{version}-%{release} Requires: python %description cts -Testing framework for cluster-related technologies like Pacemaker +Test framework for cluster-related technologies like Pacemaker %if %{with doc} %package doc @@ -274,37 +267,38 @@ manager for Corosync, CMAN and/or Linux-HA. autoreconf -fvi %configure \ - --disable-static \ - --disable-silent-rules\ - --without-profiling \ - --without-coverage \ - %{!?with_cman: --without-cman} \ - --without-heartbeat \ + --docdir=%{_docdir}/%{name} \ + --disable-static \ + --disable-silent-rules \ + --without-profiling \ + --without-coverage \ + --without-cman \ + --without-heartbeat \ + --with-acl=true \ %if %{with_nagios} --with-nagios=true \ %endif +%if %{with_snmp} --with-snmp=true \ +%endif %if %{with_esmtp} --with-esmtp=true \ %endif -%if %{with_acl} - --with-acl=true \ -%endif %if %{with_cibsecrets} --with-cibsecrets=true \ %endif %if !%{enable_fatal_warnings} --enable-fatal-warnings=no \ %endif - %{!?with doc: --with-brand=} \ + %{!?with_doc: --with-brand=} \ --with-initdir=%{_initddir} \ --localstatedir=%{_var} \ - --with-version=%{version} + --with-version=%{version}-%{release} make %{?_smp_mflags} all %install -make DESTDIR=%{buildroot} docdir=%{pcmk_docdir} install +%make_install install -d -m755 %{buildroot}%{_localstatedir}/adm/fillup-templates install -m 644 mcp/pacemaker.sysconfig %{buildroot}%{_localstatedir}/adm/fillup-templates/sysconfig.pacemaker @@ -325,9 +319,7 @@ rm -f %{buildroot}/%{_initddir}/pacemaker rm -f %{buildroot}/%{_initddir}/pacemaker_remote # Don't ship fence_pcmk where it has no use -%if %{without cman} rm -f %{buildroot}/%{_sbindir}/fence_pcmk -%endif ln -s service %{buildroot}%{_sbindir}/rcpacemaker ln -s service %{buildroot}%{_sbindir}/rcpacemaker_remote @@ -412,8 +404,6 @@ fi %files %defattr(-,root,root) -########################################################### -%defattr(-,root,root) %{_sbindir}/pacemakerd %{_unitdir}/pacemaker.service @@ -426,23 +416,15 @@ fi %{_sbindir}/crm_node %{_sbindir}/fence_legacy -%if %{with cman} -%{_sbindir}/fence_pcmk -%endif %{_sbindir}/stonith_admin %{_mandir}/man7/crmd.7%{ext_man} %{_mandir}/man7/pengine.7%{ext_man} %{_mandir}/man7/stonithd.7%{ext_man} -%if %{without cman} %{_mandir}/man7/ocf_pacemaker_controld.7%{ext_man} -%endif %{_mandir}/man7/ocf_pacemaker_o2cb.7%{ext_man} %{_mandir}/man7/ocf_pacemaker_remote.7%{ext_man} %{_mandir}/man8/crm_node.8%{ext_man} -%if %{with cman} -%{_mandir}/man8/fence_pcmk.8%{ext_man} -%endif %{_mandir}/man8/fence_legacy.8%{ext_man} %{_mandir}/man8/pacemakerd.8%{ext_man} %{_mandir}/man8/stonith_admin.8%{ext_man} @@ -453,13 +435,17 @@ fi %dir %attr (750, %{uname}, %{gname}) %{_var}/lib/pacemaker/cib %dir %attr (750, %{uname}, %{gname}) %{_var}/lib/pacemaker/pengine -%if %{without cman} %{_libexecdir}/ocf/resource.d/pacemaker/controld -%endif %{_libexecdir}/ocf/resource.d/pacemaker/o2cb %{_libexecdir}/ocf/resource.d/pacemaker/remote %{_libexecdir}/ocf/resource.d/.isolation +%if "%{?cs_version}" != "UNKNOWN" +%if 0%{?cs_version} < 2 +%{_libexecdir}/lcrso/pacemaker.lcrso +%endif +%endif + %files cli %defattr(-,root,root) %config(noreplace) %{_sysconfdir}/logrotate.d/pacemaker