diff options
author | Thomas Oettli <spacefreak@noop.ch> | 2018-02-07 11:07:26 +0100 |
---|---|---|
committer | Matthew Thode <prometheanfire@gentoo.org> | 2018-04-20 21:22:44 -0500 |
commit | ba9cc71a1a5b0f48768f01f190c73fd14f47baf4 (patch) | |
tree | 953a8d474bcbd3d03098e0026cd2a256ad811524 /sys-cluster/heartbeat | |
parent | dev-php/PEAR-Mail: Stable 1.4.1-r1; drop old (diff) | |
download | gentoo-ba9cc71a1a5b0f48768f01f190c73fd14f47baf4.tar.gz gentoo-ba9cc71a1a5b0f48768f01f190c73fd14f47baf4.tar.bz2 gentoo-ba9cc71a1a5b0f48768f01f190c73fd14f47baf4.zip |
sys-cluster/heartbeat: Critical bugfixes #648336
Heartbeat restarts itself after returning from partition (split-brain).
Due to a bug in 3.0.6-configure.patch, the daemon died instead.
The init-script was totally broken, some rework was needed.
Closes: https://bugs.gentoo.org/648336
Package-Manager: Portage-2.3.19, Repoman-2.3.6
Signed-off-by: Matthew Thode <prometheanfire@gentoo.org>
Diffstat (limited to 'sys-cluster/heartbeat')
-rw-r--r-- | sys-cluster/heartbeat/Manifest | 1 | ||||
-rw-r--r-- | sys-cluster/heartbeat/files/3.0.6-r1-configure.patch | 102 | ||||
-rw-r--r-- | sys-cluster/heartbeat/files/3.0.6-r1-heartbeat-init | 95 | ||||
-rw-r--r-- | sys-cluster/heartbeat/heartbeat-3.0.6-r1.ebuild | 84 |
4 files changed, 282 insertions, 0 deletions
diff --git a/sys-cluster/heartbeat/Manifest b/sys-cluster/heartbeat/Manifest index ee4f88cb8a73..9f22b36af30a 100644 --- a/sys-cluster/heartbeat/Manifest +++ b/sys-cluster/heartbeat/Manifest @@ -1,2 +1,3 @@ DIST STABLE-3.0.5.tar.bz2 538986 BLAKE2B 3087c87acea7d6800e60960e67271263400eaffa929bd9c5cf438cb4c88ec1d03186e197669afa26839b6e42780bb71a7f30cd566696fb6bcb16b5ec876a41e6 SHA512 e38083b87c56a72eb8925ac42adeabb92618608e92218a63960ec0d0bca264f92a8e9c3ebfb0589cc4538da1a82b268b5cc9ee5a51ed33057c969e694e16b27d DIST STABLE-3.0.6.tar.bz2 532796 BLAKE2B 7c882312a4e528919fd94474233ffa0ac15121ef43a1c461a7e9ae26db91c0bb92b3d90859373e0285cc56ed7981e23592ad5d8b657d2dc5a43c92fc22259741 SHA512 c11fc2e333040b494e63cc0b55d7e5f7555850ba79d8ec6fea17960ec22ee210a81a63a6e486383b6d44d2532c0dc0d69dcffddf9354b7830771a7a532c33f33 +DIST heartbeat-3.0.6.tar.bz2 532796 BLAKE2B 7c882312a4e528919fd94474233ffa0ac15121ef43a1c461a7e9ae26db91c0bb92b3d90859373e0285cc56ed7981e23592ad5d8b657d2dc5a43c92fc22259741 SHA512 c11fc2e333040b494e63cc0b55d7e5f7555850ba79d8ec6fea17960ec22ee210a81a63a6e486383b6d44d2532c0dc0d69dcffddf9354b7830771a7a532c33f33 diff --git a/sys-cluster/heartbeat/files/3.0.6-r1-configure.patch b/sys-cluster/heartbeat/files/3.0.6-r1-configure.patch new file mode 100644 index 000000000000..ab24282e4208 --- /dev/null +++ b/sys-cluster/heartbeat/files/3.0.6-r1-configure.patch @@ -0,0 +1,102 @@ +diff -ru a/configure.ac b/configure.ac +--- a/configure.ac 2015-02-04 15:57:04.000000000 +0100 ++++ b/configure.ac 2017-04-25 13:33:58.668521006 +0200 +@@ -243,9 +243,9 @@ + mandir=`var "$mandir" "$exec_prefix/man"` + dnl docdir is available in autoconf 2.60+, for older versions preseed + dnl with the same value that 2.60+ uses +-docdir=`var "$docdir" "${datadir}/doc/${HB_PKG}"` +-libdir=`var "$libdir" "$exec_prefix/lib"` ++dnl docdir=`var "$docdir" "${datadir}/doc/${PACKAGE_NAME}"` ++dnl libdir=`var "$libdir" "$exec_prefix/lib"` + libexecdir=`var "$libexecdir" "$exec_prefix/libexec"` + noarchlibdir=`var "$noarchlibdir" "$prefix/lib"` + + +@@ -284,53 +284,12 @@ + LIBC=`${LDD} ${tmpOutfile} | grep libc | sed -e 's%.*=> *%%' -e 's% .*$%%'` + LibCdir=`dirname $LIBC` + dirlist=`echo $LibCdir | tr '/' ' '` +- LibDirSuffix=unknown +- for dir in $dirlist +- do +- case $dir in +- *lib*) LibDirSuffix=$dir; break;; +- *);; +- esac +- done +- case $LibDirSuffix in +- unknown) LibDirSuffix=`basename $LibCdir`;; +- esac + OutFileType=`file $tmpOutfile` + rm -f $tmpCfile $tmpOutfile + else + AC_MSG_ERROR([Cannot Compile trivial C program]) + fi +-# +-# The code above doesn't work right everywhere +-# (like Fedora and OpenBSD) +-# +-case ${LibDirSuffix} in +- *lib*) : Cool;; +- *) : Sigh... +- case $OutFileType in +- *64-bit*) +- case $host_os in +- openbsd*) LibDirSuffix=lib;; +- *) LibDirSuffix=lib64;; +- esac;; +- *32-bit*) LibDirSuffix=lib;; +- *) LibDirSuffix=lib;; +- esac;; +-esac +-# +-# This may not yet be quite right for PPC where the default +-# is to produce 32-bit binaries, even though the OS is 64-bit +-# or for that matter for system Z, But, it's a lot better than +-# it used to be. +-# +-AC_MSG_RESULT($LibDirSuffix) + +-case $libdir in +- */*${LibDirSuffix}) : Cool ;; +- *) : Uh Oh... +- libdir=`dirname $libdir`/$LibDirSuffix +- AC_MSG_WARN([Overriding libdir to: $libdir]);; +-esac + for j in exec_prefix bindir sbindir datadir sysconfdir localstatedir \ + includedir oldincludedir mandir docdir stdocdir libdir noarchlibdir + do +@@ -379,7 +338,6 @@ + fi + + AC_CHECK_HEADERS(heartbeat/glue_config.h) +-GLUE_HEADER=none + if test "$ac_cv_header_heartbeat_glue_config_h" = "yes"; then + GLUE_HEADER=heartbeat/glue_config.h + else +@@ -463,15 +421,6 @@ + + dnl We use this in the RPM specfile... + AC_SUBST(ac_configure_args) +-cleaned_configure_args="" +-for j in ${ac_configure_args} +-do +- case $j in +- *--libdir=*|*--libexecdir=*) ;; +- *) cleaned_configure_args="$cleaned_configure_args $j";; +- esac +-done +-AC_SUBST(cleaned_configure_args) + + dnl ************************************************************************* + PATH="$PATH:/sbin:/usr/sbin:/usr/local/sbin:/usr/local/bin" +@@ -2087,7 +2036,7 @@ + fi + + if test "$GCC" = yes; then +- CFLAGS="$CFLAGS -ggdb3" ++ CFLAGS="$CFLAGS" + if + cc_supports_flag -funsigned-char + then diff --git a/sys-cluster/heartbeat/files/3.0.6-r1-heartbeat-init b/sys-cluster/heartbeat/files/3.0.6-r1-heartbeat-init new file mode 100644 index 000000000000..5e15b322f503 --- /dev/null +++ b/sys-cluster/heartbeat/files/3.0.6-r1-heartbeat-init @@ -0,0 +1,95 @@ +#!/sbin/openrc-run +# Copyright 1999-2018 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +HA_DIR=/etc/ha.d +. $HA_DIR/shellfuncs +HA_DAEMON_DIR=/usr/libexec/heartbeat +HA_LIB_DIR=/usr/lib/heartbeat +HA_SHARE_DIR=/usr/share/heartbeat + +depend() { + use logger + need net +} + +opts="start stop status reload restart" + +CheckBool() { + case `echo "$1" | tr A-Z a-z` in + y|yes|enable|on|true|1) true;; + *) false;; + esac +} + +# Run pre-startup script if it exists +RunStartStop() { + [ -f $HA_DIR/resource.d/startstop ] && $HA_DIR/resource.d/startstop "$@" +} + +start() { + checkpath -q -d -m 0755 -o root:root /var/run/heartbeat + + ebegin "Starting heartbeat" + + . $HA_DIR/shellfuncs + + # start the log subsystem + CheckBool "`ha_parameter use_logd`" && \ + ( ${HA_LIB_DIR}/ha_logd -s &>/dev/null || \ + ${HA_LIB_DIR}/ha_logd -d -c /etc/ha.d/ha_logd.cf) + + RunStartStop pre-start + + CheckBool "`ha_parameter crm`" || \ + ${HA_SHARE_DIR}/ResourceManager verifyallidle + + ${HA_DAEMON_DIR}/heartbeat &>/dev/null + ret=$? + + RunStartStop post-start + + eend ${ret} +} + +stop() { + ebegin "Stopping heartbeat" + + RunStartStop pre-stop + + ${HA_DAEMON_DIR}/heartbeat -k &>/dev/null + ret=$? + + RunStartStop post-stop ${ret} + + # stop log subsystem + CheckBool "`ha_parameter use_logd`" && \ + ( ${HA_LIB_DIR}/ha_logd -s &>/dev/null && \ + ${HA_LIB_DIR}/ha_logd -k &>/dev/null ) + + eend ${ret} +} + +status() { + ${HA_DAEMON_DIR}/heartbeat -s +} + +reload() { + ebegin "Reloading heartbeat" + ${HA_DAEMON_DIR}/heartbeat -r &>/dev/null + eend $? +} + +restart() { + . $HA_DIR/shellfuncs + + sleeptime=$(( `ha_parameter deadtime` + 10 )) + + svc_stop + + ebegin " waiting ${sleeptime}s to allow resource takeover to complete" + sleep ${sleeptime} + eend 0 + + svc_start +} diff --git a/sys-cluster/heartbeat/heartbeat-3.0.6-r1.ebuild b/sys-cluster/heartbeat/heartbeat-3.0.6-r1.ebuild new file mode 100644 index 000000000000..f4ea34d9baf5 --- /dev/null +++ b/sys-cluster/heartbeat/heartbeat-3.0.6-r1.ebuild @@ -0,0 +1,84 @@ +# Copyright 1999-2018 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 +PYTHON_COMPAT=( python2_7 ) + +inherit autotools python-single-r1 + +DESCRIPTION="Heartbeat high availability cluster manager" +HOMEPAGE="http://www.linux-ha.org/wiki/Heartbeat" +SRC_URI="http://hg.linux-ha.org/${PN}-STABLE_3_0/archive/STABLE-${PV}.tar.bz2 -> ${P}.tar.bz2" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~hppa ~x86" +IUSE="doc snmp static-libs" + +RDEPEND="sys-cluster/cluster-glue + dev-libs/glib:2 + virtual/ssh + net-libs/gnutls + snmp? ( net-analyzer/net-snmp ) + ${PYTHON_DEPS} +" +DEPEND="${RDEPEND} + virtual/pkgconfig + dev-lang/swig + doc? ( dev-libs/libxslt app-text/docbook-xsl-stylesheets )" + +PDEPEND="sys-cluster/resource-agents" + +REQUIRED_USE="${PYTHON_REQUIRED_USE}" + +S=${WORKDIR}/Heartbeat-3-0-STABLE-${PV} + +PATCHES=( + "${FILESDIR}/3.0.6-r1-configure.patch" + "${FILESDIR}/3.0.6-docs.patch" + "${FILESDIR}/3.0.4-python_tests.patch" +) + +pkg_setup() { + python-single-r1_pkg_setup + + ewarn "If you're upgrading from heartbeat-2.x please follow:" + ewarn "https://www.gentoo.org/proj/en/cluster/ha-cluster/heartbeat-upgrade.xml" +} + +src_prepare() { + default + eautoreconf + + cp "${FILESDIR}"/3.0.6-r1-heartbeat-init "${WORKDIR}"/heartbeat-init || die + sed -i \ + -e "s:HA_LIB_DIR=/usr/lib/:HA_LIB_DIR=/usr/$(get_libdir)/:g" \ + "${WORKDIR}"/heartbeat-init || die +} + +src_configure() { + econf \ + --disable-fatal-warnings \ + $(use_enable static-libs static) \ + $(use_enable doc) \ + --disable-tipc \ + --enable-dopd \ + $(use_enable snmp) +} + +src_install() { + default + + newinitd "${WORKDIR}/heartbeat-init" heartbeat + + # fix collisions + rm -rf "${D}"/usr/include/heartbeat/{compress,ha_msg}.h || die + + if ! use static-libs; then + find "${D}" -name "*.la" -delete || die + fi + + if use doc ; then + dodoc README doc/*.txt doc/AUTHORS || die + fi +} |