diff --git a/_service b/_service
index 83e65c4..0f52122 100644
--- a/_service
+++ b/_service
@@ -11,7 +11,7 @@
1.1.14
-->
1.1.14+git%cd.%h
- 5a6cdd11b4f93b4d55e1b2654078018c339931d4
+ 389294fd1ebefddad67fff51306f585b758ca860
diff --git a/bug-977201_pacemaker-controld-self-fencing.patch b/bug-977201_pacemaker-controld-self-fencing.patch
new file mode 100644
index 0000000..ea5a55c
--- /dev/null
+++ b/bug-977201_pacemaker-controld-self-fencing.patch
@@ -0,0 +1,25 @@
+commit f61b9889cd169ce2c715a5cc4808321977432ec0
+Author: Gao,Yan
+Date: Sun May 29 20:31:25 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
+--- 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
+ 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
+- ocf_log err "DLM status is: wait fencing"
+- rc=$OCF_ERR_GENERIC
+ else
+ rc=$OCF_SUCCESS
+ fi
diff --git a/pacemaker-1.1.14+git20160324.5a6cdd1.tar.bz2 b/pacemaker-1.1.14+git20160324.5a6cdd1.tar.bz2
deleted file mode 100644
index bdd7c0f..0000000
--- a/pacemaker-1.1.14+git20160324.5a6cdd1.tar.bz2
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d6ee4ab1f2cc8779a00389577007792b52e38a0dd326538322fd844554278d61
-size 3770202
diff --git a/pacemaker-1.1.14+git20160527.389294f.tar.bz2 b/pacemaker-1.1.14+git20160527.389294f.tar.bz2
new file mode 100644
index 0000000..f944576
--- /dev/null
+++ b/pacemaker-1.1.14+git20160527.389294f.tar.bz2
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4d0c26d5c57607cf4368187f4b68e0e3549085305baa4c1c69ccb452ff06701e
+size 3820078
diff --git a/pacemaker-Wno-format-signedness.patch b/pacemaker-Wno-format-signedness.patch
index bd2f894..7e686fe 100644
--- a/pacemaker-Wno-format-signedness.patch
+++ b/pacemaker-Wno-format-signedness.patch
@@ -1,13 +1,19 @@
-Index: pacemaker-1.1.12.git20150129.3021d73/configure.ac
+Index: pacemaker-1.1.14+git20160503.9e38256/configure.ac
===================================================================
---- pacemaker-1.1.12.git20150129.3021d73.orig/configure.ac 2015-02-24 13:22:11.748602751 +0100
-+++ pacemaker-1.1.12.git20150129.3021d73/configure.ac 2015-02-24 13:22:29.684800783 +0100
-@@ -1708,7 +1708,7 @@ else
- -Wdeclaration-after-statement
- -Wendif-labels
- -Wfloat-equal
-- -Wformat=2
-+ -Wformat=2 -Wno-format-signedness
- -Wformat-security
- -Wformat-nonliteral
- -Wmissing-prototypes
+--- pacemaker-1.1.14+git20160503.9e38256.orig/configure.ac
++++ pacemaker-1.1.14+git20160503.9e38256/configure.ac
+@@ -1792,12 +1792,12 @@ dnl otherwise none of both
+ AC_DEFINE([GCC_FORMAT_NONLITERAL_CHECKING_ENABLED], [],
+ [gcc can complain about nonliterals in format])
+ EXTRA_FLAGS="$EXTRA_FLAGS
+- -Wformat=2
++ -Wformat=2 -Wno-format-signedness
+ -Wformat-nonliteral"
+ else
+ if test "x$gcc_format_nonliteral" = "xyes"; then
+ EXTRA_FLAGS="$EXTRA_FLAGS
+- -Wformat=2"
++ -Wformat=2 -Wno-format-signedness"
+ fi
+ fi
+
diff --git a/pacemaker.changes b/pacemaker.changes
index 9954985..5d1d118 100644
--- a/pacemaker.changes
+++ b/pacemaker.changes
@@ -1,3 +1,59 @@
+-------------------------------------------------------------------
+Sun May 29 20:06:12 UTC 2016 - ygao@suse.com
+
+- controld: Prevent unwanted self-fencing if "stateful_merge_wait" state of dlm is not available (bsc#977201)
+ * bug-977201_pacemaker-controld-self-fencing.patch
+
+-------------------------------------------------------------------
+Sun May 29 14:44:18 UTC 2016 - ygao@suse.com
+
+- libservices: clean up non-signalfd code paths
+- spec: fence_pcmk only eligible for Pacemaker+CMAN
+- 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"
+- 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
+- crmd: correctly dig into cib-query-answer if alerts section is present timestamp-format defaults to "%H:%M:%S.%06N"
+- crmd: Take start-delay into account for the timeout of the action timer (bsc#977258)
+- libservices: make systemd override file world-readable to avoid log warning
+- libcrmcommon: correct directory name in log message
+- Log: make crmd messages more user-friendly
+- Log: make messages in common quorum/fencing situations more user-friendly
+- Log: make shutdown messages more user-friendly
+- pengine: lf#2560/lf#2588 - Correctly set the environment variable "OCF_RESKEY_CRM_meta_timeout" when "start-delay" is configured (bsc#977258)
+- Log: make operation messages more user-friendly
+- Log: make startup messages more user-friendly
+- services: Correctly clean up service actions for non-dbus case
+- uninitialized use of nano_digits
+- attrd: Update also dampens when synchronizing attributes (bsc#977846)
+- Upstream version cs: 389294fd1ebefddad67fff51306f585b758ca860
+
+-------------------------------------------------------------------
+Wed May 4 10:38:16 UTC 2016 - ygao@suse.com
+
+- Rebase:
+ * pacemaker-Wno-format-signedness.patch
+
+- RA: SysInfo - Reset the node attribute "#health_disk" to "green" when there's sufficient free disk (bsc#975079)
+- pengine: Organize order of actions for slave resources in anti-colocations (bsc#977800)
+- attrd: Fix the synchronization of attributes (bsc#977846)
+- 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
+- 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
+- spec: make Publican docs not depend on pre-existing packages
+- cib/fencing: Set status callback before connecting to cluster (bsc#974108)
+- xml: use spaces instead of tabs in schema files
+- extra: Support of the dampen change by RA.
+- Upstream version cs: 9e382568ac3cd54c222496501088ab3fc158b2e2
+
-------------------------------------------------------------------
Thu Mar 24 17:26:44 UTC 2016 - ygao@suse.com
diff --git a/pacemaker.spec b/pacemaker.spec
index c245c9f..9b3c6a7 100644
--- a/pacemaker.spec
+++ b/pacemaker.spec
@@ -21,23 +21,42 @@
%global pcmk_docdir %{_docdir}/%{name}
%global specversion 1
+%global pcmkversion 1.1.14+git20160527.389294f
+# 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 shortcommit %(c=%{commit}; echo ${c:0:7})
+%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 %(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)
-# https://fedoraproject.org/wiki/EPEL:Packaging?rd=Packaging:EPEL#The_.25license_tag
-%{!?_licensedir:%global license %doc}
+# 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 "
@@ -72,11 +91,19 @@
%global debug_package %{nil}
%endif
-%if %{with pre_release}
+%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}
@@ -110,12 +137,12 @@ 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: 1.1.14+git20160324.5a6cdd1
+Version: %{pcmkversion}
Release: 0
#Release: %{pcmk_release}%{?dist}
Url: http://www.clusterlabs.org
-#Source0: https://github.com/%{github_owner}/%{name}/archive/%{commit}/%{name}-%{commit}.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
@@ -127,6 +154,7 @@ Patch5: pacemaker-nagios-plugin-dir.patch
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
@@ -207,20 +235,11 @@ BuildRequires: openssl-devel
BuildRequires: pkgconfig(systemd)
-%if %{with cman}
-
-%if 0%{?fedora} > 0
-%if 0%{?fedora} < 17
+%if %{with cman} && %{cman_native}
BuildRequires: clusterlib-devel
-%endif
-%endif
-
-%if 0%{?rhel} > 0
-%if 0%{?rhel} < 7
-BuildRequires: clusterlib-devel
-%endif
-%endif
-
+# pacemaker initscript: cman initscript, fence_tool (+ some soft-dependencies)
+# "post" scriptlet: ccs_update_schema
+Requires: cman
%endif
%if %with_corosync_support
@@ -421,6 +440,7 @@ manager for Corosync, CMAN and/or Linux-HA.
%patch6 -p1
%patch7 -p1
%patch8 -p1
+%patch9 -p1
# Force the local time
#
@@ -459,6 +479,7 @@ docdir=%{pcmk_docdir} %{configure} \
%if !%enable_fatal_warnings
--enable-fatal-warnings=no \
%endif
+ %{!?with_doc: --with-brand=} \
--with-initdir=%{_initrddir} \
--localstatedir=%{_var} \
--with-version=%{version}-%{release}
@@ -510,6 +531,11 @@ rm -f %{buildroot}/%{_libdir}/service_crm.so
rm -f %{buildroot}/%{_initrddir}/pacemaker
rm -f %{buildroot}/%{_initrddir}/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
@@ -588,6 +614,12 @@ fi
%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 || :
@@ -669,17 +701,23 @@ fi
%{_sbindir}/crm_node
%{_sbindir}/fence_legacy
+%if %{with cman}
%{_sbindir}/fence_pcmk
+%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.*
+%endif
%doc %{_mandir}/man7/ocf_pacemaker_o2cb.*
%doc %{_mandir}/man7/ocf_pacemaker_remote.*
%doc %{_mandir}/man8/crm_node.*
+%if %{with cman}
%doc %{_mandir}/man8/fence_pcmk.*
+%endif
%doc %{_mandir}/man8/fence_legacy.*
%doc %{_mandir}/man8/pacemakerd.*
%doc %{_mandir}/man8/stonith_admin.*
@@ -691,7 +729,9 @@ fi
%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