summaryrefslogtreecommitdiff
path: root/sys-cluster/heartbeat
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
committerV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
commit4f2d7949f03e1c198bc888f2d05f421d35c57e21 (patch)
treeba5f07bf3f9d22d82e54a462313f5d244036c768 /sys-cluster/heartbeat
reinit the tree, so we can have metadata
Diffstat (limited to 'sys-cluster/heartbeat')
-rw-r--r--sys-cluster/heartbeat/Manifest14
-rw-r--r--sys-cluster/heartbeat/files/3.0.4-docs.patch57
-rw-r--r--sys-cluster/heartbeat/files/3.0.4-fix_configure.patch110
-rw-r--r--sys-cluster/heartbeat/files/3.0.4-python_tests.patch29
-rw-r--r--sys-cluster/heartbeat/files/3.0.5-fix_ucast.patch145
-rw-r--r--sys-cluster/heartbeat/files/3.0.6-configure.patch103
-rw-r--r--sys-cluster/heartbeat/files/3.0.6-docs.patch59
-rw-r--r--sys-cluster/heartbeat/files/heartbeat-init92
-rw-r--r--sys-cluster/heartbeat/heartbeat-3.0.5-r3.ebuild86
-rw-r--r--sys-cluster/heartbeat/heartbeat-3.0.6.ebuild85
-rw-r--r--sys-cluster/heartbeat/metadata.xml12
11 files changed, 792 insertions, 0 deletions
diff --git a/sys-cluster/heartbeat/Manifest b/sys-cluster/heartbeat/Manifest
new file mode 100644
index 000000000000..8229d960ea4e
--- /dev/null
+++ b/sys-cluster/heartbeat/Manifest
@@ -0,0 +1,14 @@
+AUX 3.0.4-docs.patch 1735 SHA256 6ca069d0a6862f03026d59078c84dc503cfdd562a159d1e0a3151ed889a108bc SHA512 d8b9328ad8417998f6b3f8ae06a2d99d1b4a1fc53c21770df58b5ae1d2b38b9a396e5b77c9fc74a8a01e7cb239337bdc1b44065161a21f07261c18b7378c0f44 WHIRLPOOL ea5d10e1bd1530cb3939a992af36bea38d8cc8df5c195719bbb7ed7b84ed211144e6db1284fc0a15da4a987847e9f9bc52677434f0a0dd99e71a9abd8acb8b12
+AUX 3.0.4-fix_configure.patch 3300 SHA256 caa4fc8379626aa7c8a021aef47a49eb8d2ef57f30d84bc31a5613ebf814eb48 SHA512 39bb089d2ac6e4d7afb828b24d41e3b261588d8029347ab968dbe3909a3a2a9197fc0ac8f16e920f45870fefaeb86bae064a8625c24ca7cda68cbb79bb1b360b WHIRLPOOL 171a85271b08b9c19201d12112c1c446760b429212a607fc78f6858988f46be34935c89af04b65a1f0da14d417575688935eaae9646a11a46dab229baed929a8
+AUX 3.0.4-python_tests.patch 468 SHA256 b13b88ddb6cbeffea19d756ae54fb2acfb4aa7a169f075e974593a8b40146645 SHA512 e5652ec24b7a5b03347baabb4d09f058df9766020879562822ed3edcd26f78d28456df532c6c12dacfb609d197d06dc565f0bf25ba1b33736d89df2d36f43b9b WHIRLPOOL ba81fbdc1c7efa64be38c817a720e9b90e0ab92dff89fa86d0e3dd70ec17744eabf4d7f9831784907a763b595e6cd16c2d96d0ed4d0bf6e2fea64c722cec2963
+AUX 3.0.5-fix_ucast.patch 4343 SHA256 f8a755ee17145ae1be2e870efaefa01ef3b414a0c32206296471a8d64d5b46ca SHA512 9eac05636bd72be663ab51085310f23ff506290000a8227b24be0efdaa2fb88a7868a848063311af91c0c151e73792a1e9a0ad33ab565f117f339ed6c3241b62 WHIRLPOOL 8f545697b1bcc7707f3e6e78508d5e8b5c99c5d4ec8d784277a653b69f1afbfc2edfe13e3459a97707f7414e752e92550d465b6b68794970341a0d1779fbcdaf
+AUX 3.0.6-configure.patch 2943 SHA256 49d089d9765a5c333e4b18ab3d069f5ee7504f282b507e716e0e5c6cdcf4e6f5 SHA512 408402dd41aaa2afd14c5bcfafade753e4f2ca34b7668cb9f29566c3a41cd231ed8ab6b29f9865177c10e820b177aa9a899cf5a2b98db78b267e2bfb8f1d03d6 WHIRLPOOL 3880ba45d61f13a37c212bb0959ef115992d01aaf19cb8cdf5cc96bc0b6574907e537cd6fee379bde19462c782e6ba1bf362bc63b5028bce98a881987bf06289
+AUX 3.0.6-docs.patch 1946 SHA256 11618fbce7ddcb8b4421c6cd7f50b99a61adf8243bd522b58003516f9b74de77 SHA512 e75f4b75a3340d0df9f81e3ef26a6212b2e6ed447f9f7b4a911f05eb6e383726164e7552e4b20d85874d3d3d7c82ce0aa176e886deab76a944e5d716e4a3a0a2 WHIRLPOOL df6c9c42a3b15004f01f248183ee2810bfb33bfacd5f8ffa5ceddb416038d4a51875d252ac0bff1b30144db3c4bc8d04ddd8c99cc237d6909f7fc757a81457dc
+AUX heartbeat-init 1711 SHA256 fc0e4270b42d47712c7e9547d0b3e8753382e62d70356591271bccf28fbdec19 SHA512 2c91aea1a7fdcfd35a1b7e824fd7467f776f3f1e0d46b8b14a249f756ec6ac4b3ed379f291bc5c8075094bd386e06ca9e15279f136ae89be5c7551b1f20e208d WHIRLPOOL baf071d9bfaad9fb78d9b0cbf5a9b9e1e69f02517dcd37e0bbcc4981b5d192eef06bc348a3f1f8ea53343a9a61c34ebd4a93335153691d4b1d65c8836702a44f
+DIST STABLE-3.0.5.tar.bz2 538986 SHA256 fc7b11f9e1f16bc853434208a1ce86803acf1d0fb6f43715209a84c1c34661c3 SHA512 e38083b87c56a72eb8925ac42adeabb92618608e92218a63960ec0d0bca264f92a8e9c3ebfb0589cc4538da1a82b268b5cc9ee5a51ed33057c969e694e16b27d WHIRLPOOL 699c2679c38f17aacbf230dd68203a8967748c086713ad8bf55688b1e8933caf117ec2a8d2be2ec19b0fa077eacaa1cceec0fea14d181510abb24644a486f6c4
+DIST STABLE-3.0.6.tar.bz2 532796 SHA256 1ab098e6fd22b5a3522b5f9a852ff41a3baff24e5c479801142dbce5f048f42b SHA512 c11fc2e333040b494e63cc0b55d7e5f7555850ba79d8ec6fea17960ec22ee210a81a63a6e486383b6d44d2532c0dc0d69dcffddf9354b7830771a7a532c33f33 WHIRLPOOL d72c74c48917daad202d196a5d0dfc8d80d1dc1f15aa112113d772d8e0c772061169e3f500d36427112720fb316efdbb92a02e897c8c1b8d8c5d7242f3de19b0
+EBUILD heartbeat-3.0.5-r3.ebuild 1860 SHA256 aa64610042d17ebd64dbbfc4fdb37b99d68aef472b263192f710254a0286c2e6 SHA512 9af6307d9cb2cff03944e8d50df61d5ba34b7266ce5d0ae9ddbc226c6136a4d6370c7738f181e2e28edec7f19c71488faa84e983924b4bcb72b288a1b70dcff7 WHIRLPOOL 13fb7543b1d484875593efa35d352f3870148e7fc991a7b64726bee7e1a2ea1852b5821280ae29c3468c2eca2b426b4f25ec4b2b80d461b03c8be4720ef9adbc
+EBUILD heartbeat-3.0.6.ebuild 1820 SHA256 83b280655be9114e460a23b7d84604415c61255173a544064ade2c781d164650 SHA512 9624da9444c81816d314732cb72ef5073d93f89426968f9464a6f443c739f1370e505b76c24758b178a32431e5fa2c25e18474c9c37caee8b38790539c4083cd WHIRLPOOL 6b5932061b71e3159c1251af71a39c6808d882c953ea063e1dd82faca982de46754c6b6564478e51d6b33ecce40c7d2b27181d659d3a160688da007a69ef7872
+MISC ChangeLog 2751 SHA256 d27f8d18daad623347d0c374d2b7c0444253af400d5d9efd94b51ce269a81264 SHA512 2bff4b17366784c5eaff1c23890b2818a3ec72856116f00833e832f9b29a610816796fa662490707981e6f381308baac927e61bc0a1f9daea17fc7835b97c866 WHIRLPOOL a8fdfb38fefcbebdcdc37c1441c7d9ee7380d2de30448a6d422ad06d19a1658e6ab4c95964347df1ff3256118af58485b6d8282d8cfe7e55aece28fc586ecacc
+MISC ChangeLog-2015 18107 SHA256 6943dcf6a540eb794aecacdaca747b8fb0f8e99f2d8068d09aba0eed39eb36eb SHA512 7c3cfb253741800e37c858fd89b91079220d88359ebee84abc388a74dacd0852731ee3df2b50bf6a4c2a67d902b6b3d02496a12e91b688f4a455f2b1d4f58c5e WHIRLPOOL 7e8b2f08ee9de369c42e00b0e11f68b13b4ca7b3e7e00917cc24af163ac1e90fd649228b4687e943c7944085cfb07752239e480c26fccab5e5d0d11783cd0bda
+MISC metadata.xml 373 SHA256 ea66452195c635b5b4df7f5788abc2244498133bae769e7965879c0f1292f581 SHA512 8908e9983ffda4e1bbbd57b772834eb4d79b49193d354de7a336e42aa6eeaf4fae365298e28f074648d1f8681a20c69f86f512cb329f9ad1482dd030d9d38ef6 WHIRLPOOL f4d73d95ef249917818587f3bccdb0a78959d00658b915c0c0e398706ea340eed4d9ee50630807a63b73c34de89bd991971e85c489990bed376bd55d750aee42
diff --git a/sys-cluster/heartbeat/files/3.0.4-docs.patch b/sys-cluster/heartbeat/files/3.0.4-docs.patch
new file mode 100644
index 000000000000..a558dd36f5a3
--- /dev/null
+++ b/sys-cluster/heartbeat/files/3.0.4-docs.patch
@@ -0,0 +1,57 @@
+--- a/configure.in
++++ b/configure.in
+@@ -505,8 +505,15 @@
+ AC_PATH_PROGS(TEST, test)
+ AC_PATH_PROGS(PKGCONFIG, pkg-config)
+
+-dnl xsltproc is required for building the man pages
+-AC_PATH_PROGS(XSLTPROC, xsltproc)
++AC_ARG_ENABLE([doc],
++ AS_HELP_STRING([--enable-doc],[Build documentation]
++))
++AS_IF([test "x$enable_doc" = "xyes"], [
++ AC_PATH_PROGS(XSLTPROC, xsltproc)
++])
++AM_CONDITIONAL([BUILD_DOC], [test "x$enable_doc" = "xyes"] )
++AC_SUBST(XSLTPROC)
++
+
+ dnl ************************************************************************
+ dnl Check whether non-root user can chown.
+--- a/doc/Makefile.am
++++ b/doc/Makefile.am
+@@ -33,11 +33,12 @@
+
+ doc_DATA = $(OTHER_DOCS)
+
++if BUILD_DOC
+ man_MANS = heartbeat.8 apphbd.8 cl_status.1 \
+ hb_standby.1 hb_takeover.1 hb_addnode.1 hb_delnode.1 \
+ ha.cf.5 authkeys.5
+
+-STYLESHEET_PREFIX ?= http://docbook.sourceforge.net/release/xsl/current
++STYLESHEET_PREFIX ?= /usr/share/sgml/docbook/xsl-stylesheets
+ MANPAGES_STYLESHEET ?= $(STYLESHEET_PREFIX)/manpages/docbook.xsl
+ HTML_STYLESHEET ?= $(STYLESHEET_PREFIX)/xhtml/docbook.xsl
+ FO_STYLESHEET ?= $(STYLESHEET_PREFIX)/fo/docbook.xsl
+@@ -47,6 +48,12 @@
+ XSLTPROC_HTML_OPTIONS ?= $(XSLTPROC_OPTIONS)
+ XSLTPROC_FO_OPTIONS ?= $(XSLTPROC_OPTIONS)
+
++%.5 %.8 %.1: %.xml
++ $(XSLTPROC) \
++ $(XSLTPROC_MANPAGES_OPTIONS) \
++ $(MANPAGES_STYLESHEET) $<
++endif
++
+ EXTRA_DIST = $(txtfiles) $(htmlfiles) $(man_MANS) $(OTHER_DOCS)
+
+ ChangeLog: $(SPECSRC)
+@@ -56,7 +63,3 @@
+ .html.txt:
+ if [ "X$(HTML2TXT)" = "X" ]; then echo "Lynx or w3m or user-defined HTML2TXT required to convert $< to $@" >$@ ; else $(HTML2TXT) -dump $< >$@ ; fi
+
+-%.5 %.8 %.1: %.xml
+- $(XSLTPROC) \
+- $(XSLTPROC_MANPAGES_OPTIONS) \
+- $(MANPAGES_STYLESHEET) $<
diff --git a/sys-cluster/heartbeat/files/3.0.4-fix_configure.patch b/sys-cluster/heartbeat/files/3.0.4-fix_configure.patch
new file mode 100644
index 000000000000..1df22b337c5a
--- /dev/null
+++ b/sys-cluster/heartbeat/files/3.0.4-fix_configure.patch
@@ -0,0 +1,110 @@
+--- Heartbeat-3-0-STABLE-3.0.4/configure.in 2010-12-09 21:09:47.000000000 +0100
++++ Heartbeat-3-0-STABLE-3.0.4/configure.in 2010-12-28 17:37:45.080773140 +0100
+@@ -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/${PACKAGE_NAME}"`
+-libdir=`var "$libdir" "$exec_prefix/lib"`
+-libexecdir=`var "$libexecdir" "$exec_prefix/libexec"`
++dnl docdir=`var "$docdir" "${datadir}/doc/${PACKAGE_NAME}"`
++dnl libdir=`var "$libdir" "$exec_prefix/lib"`
++dnl libexecdir=`var "$libexecdir" "$exec_prefix/libexec"`
+ noarchlibdir=`var "$noarchlibdir" "$prefix/lib"`
+
+
+@@ -284,59 +284,11 @@
+ 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
+-case $libexecdir in
+- */$LibDirSuffix) : Cool ;;
+- *) : Uh Oh...
+- libexecdir=`dirname $libexecdir`/$LibDirSuffix
+- AC_MSG_WARN([Overriding libexecdir to: $libexecdir]);;
+-esac
+
+ for j in exec_prefix bindir sbindir datadir sysconfdir localstatedir \
+ includedir oldincludedir mandir docdir stdocdir libdir noarchlibdir
+@@ -386,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
+@@ -453,15 +404,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"
+--- Heartbeat-3-0-STABLE-3.0.5/configure.in 2011-12-28 11:51:05.601673071 +0100
++++ Heartbeat-3-0-STABLE-3.0.5/configure.in 2011-12-28 11:54:34.223094385 +0100
+@@ -2002,7 +2002,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.4-python_tests.patch b/sys-cluster/heartbeat/files/3.0.4-python_tests.patch
new file mode 100644
index 000000000000..e6e1071573a9
--- /dev/null
+++ b/sys-cluster/heartbeat/files/3.0.4-python_tests.patch
@@ -0,0 +1,29 @@
+--- a/cts/Makefile.am
++++ b/cts/Makefile.am
+@@ -21,7 +21,7 @@
+
+ ctsdir = @HA_NOARCHDATAHBDIR@/cts
+
+-cts_PYTHON = \
++cts_SCRIPTS = \
+ CM_fs.py \
+ CM_hb.py \
+ CM_LinuxHAv2.py \
+@@ -32,14 +32,12 @@
+ extracttests.py \
+ getpeinputs.sh \
+ OCFIPraTest.py \
+- CIB.py
++ CIB.py \
++ CTSproxy.py \
++ LSBDummy
+
+ cts_DATA = README
+
+-cts_SCRIPTS = \
+- CTSproxy.py \
+- getpeinputs.sh \
+- LSBDummy
+
+ all-local: $(cts_PYTHON)
+
diff --git a/sys-cluster/heartbeat/files/3.0.5-fix_ucast.patch b/sys-cluster/heartbeat/files/3.0.5-fix_ucast.patch
new file mode 100644
index 000000000000..3bec9c89dd86
--- /dev/null
+++ b/sys-cluster/heartbeat/files/3.0.5-fix_ucast.patch
@@ -0,0 +1,145 @@
+
+# HG changeset patch
+# User Lars Ellenberg <lars@linbit.com>
+# Date 1392200751 -3600
+# Node ID 37f57a36a2dd1abf8461a9b758e62f6fe7a22f77
+# Parent 6d4324633600dc7ae7aa08c56d86c2fcc767977f
+Medium: fix usage of SO_REUSEPORT in ucast sockets
+
+Linux learned SO_REUSEPORT only with kernel 3.9,
+but some linux headers already define SO_REUSEPORT.
+Which, on older kernels, will result in ENOPROTOOPT,
+"Protocol not available".
+
+Failure to set SO_REUSEPORT is NOT critical in general.
+It *may* be a problem on certain BSDs,
+with more than two nodes, all using ucast.
+
+Refusing to start because of failure to set SO_REUSEPORT is
+not helpful for the vast majority of the clusters out there.
+
+While at it, downgrade "critical" log messages to warnings
+in non-fatal situations.
+
+--- a/lib/plugins/HBcomm/ucast.c
++++ b/lib/plugins/HBcomm/ucast.c
+@@ -461,12 +461,6 @@ static int HB_make_send_sock(struct hb_m
+ int sockfd;
+ struct ip_private *ei;
+ int tos;
+-#if defined(SO_BINDTODEVICE)
+- struct ifreq i;
+-#endif
+-#if defined(SO_REUSEPORT)
+- int i = 1;
+-#endif
+
+ UCASTASSERT(mp);
+ ei = (struct ip_private*)mp->pd;
+@@ -494,6 +488,7 @@ static int HB_make_send_sock(struct hb_m
+
+ #if defined(SO_BINDTODEVICE)
+ {
++ struct ifreq i;
+ /*
+ * We want to send out this particular interface
+ *
+@@ -515,12 +510,13 @@ static int HB_make_send_sock(struct hb_m
+ #endif
+ #if defined(SO_REUSEPORT)
+ {
++ int one = 1;
+ /* this is for OpenBSD to allow multiple *
+ * ucast connections, e.g. a more than *
+ * two node cluster */
+
+ if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEPORT,
+- &i, sizeof(i)) == -1) {
++ &one, sizeof(one)) == -1) {
+ PILCallLog(LOG, PIL_CRIT,
+ "ucast: error setting option SO_REUSEPORT(w): %s", strerror(errno));
+ close(sockfd);
+@@ -548,7 +544,7 @@ static int HB_make_receive_sock(struct h
+ int sockfd;
+ int bindtries;
+ int boundyet = 0;
+- int j;
++ int one = 1;
+
+ UCASTASSERT(mp);
+ ei = (struct ip_private*)mp->pd;
+@@ -563,22 +559,19 @@ static int HB_make_receive_sock(struct h
+ strerror(errno));
+ return -1;
+ }
+- /*
+- * Set SO_REUSEADDR on the server socket s. Variable j is used
+- * as a scratch varable.
+- *
+- * 16th February 2000
+- * Added by Horms <horms@vergenet.net>
+- * with thanks to Clinton Work <work@scripty.com>
+- */
+- j = 1;
++ /*
++ * Set SO_REUSEADDR on the server socket s.
++ * Below, also try to set SO_REUSEPORT,
++ * if known and supported.
++ */
+ if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR,
+- (void *)&j, sizeof j) < 0) {
++ &one, sizeof(one)) < 0) {
+ /* Ignore it. It will almost always be OK anyway. */
+- PILCallLog(LOG, PIL_CRIT,
++ PILCallLog(LOG, PIL_WARN,
+ "ucast: error setting socket option SO_REUSEADDR: %s",
+ strerror(errno));
+- }
++ } else
++ PILCallLog(LOG, PIL_INFO, "ucast: set SO_REUSEADDR");
+ #if defined(SO_BINDTODEVICE)
+ {
+ /*
+@@ -600,20 +593,32 @@ static int HB_make_receive_sock(struct h
+ }
+ #endif
+ #if defined(SO_REUSEPORT)
+- {
++ /*
++ * Needed for OpenBSD for more than two nodes in a ucast cluster
++ */
++ if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEPORT,
++ &one, sizeof(one)) == -1) {
+ /*
+- * Needed for OpenBSD for more than two nodes in a ucast cluster
++ * Linux learned SO_REUSEPORT only with kernel 3.9,
++ * but some linux headers already define SO_REUSEPORT.
++ * Which will result in ENOPROTOOPT, "Protocol not available"
++ * on older kernels.
++ * Failure to set SO_REUSEPORT is NOT critical in general.
++ * It *may* be a problem on certain BSDs with more than
++ * two nodes all using ucast.
++ * Refusing to start because of failure to set SO_REUSEPORT is
++ * not helpful for the vast majority of the clusters out there.
+ */
+- int i = 1;
+- if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEPORT,
+- &i, sizeof(i)) == -1) {
++ if (errno == ENOPROTOOPT) {
++ PILCallLog(LOG, PIL_WARN,
++ "ucast: error setting option SO_REUSEPORT: %s", strerror(errno));
++ } else {
+ PILCallLog(LOG, PIL_CRIT,
+- "ucast: error setting option SO_REUSEPORT(r) %s", strerror(errno));
+- close(sockfd);
++ "ucast: error setting option SO_REUSEPORT: %s", strerror(errno));
+ return -1;
+ }
+- PILCallLog(LOG, PIL_INFO, "ucast: set SO_REUSEPORT(w)");
+- }
++ } else
++ PILCallLog(LOG, PIL_INFO, "ucast: set SO_REUSEPORT");
+ #endif
+
+ /* Try binding a few times before giving up */
+
diff --git a/sys-cluster/heartbeat/files/3.0.6-configure.patch b/sys-cluster/heartbeat/files/3.0.6-configure.patch
new file mode 100644
index 000000000000..36054dd23d3b
--- /dev/null
+++ b/sys-cluster/heartbeat/files/3.0.6-configure.patch
@@ -0,0 +1,103 @@
+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"`
+-libexecdir=`var "$libexecdir" "$exec_prefix/libexec"`
++dnl docdir=`var "$docdir" "${datadir}/doc/${PACKAGE_NAME}"`
++dnl libdir=`var "$libdir" "$exec_prefix/lib"`
++dnl 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-docs.patch b/sys-cluster/heartbeat/files/3.0.6-docs.patch
new file mode 100644
index 000000000000..7c5c9573109f
--- /dev/null
+++ b/sys-cluster/heartbeat/files/3.0.6-docs.patch
@@ -0,0 +1,59 @@
+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 11:57:33.706753890 +0200
+@@ -574,8 +574,14 @@
+ AC_PATH_PROGS(TEST, test)
+ PKG_PROG_PKG_CONFIG
+
+-dnl xsltproc is required for building the man pages
+-AC_PATH_PROGS(XSLTPROC, xsltproc)
++AC_ARG_ENABLE([doc],
++ AS_HELP_STRING([--enable-doc],[Build documentation]
++))
++AS_IF([test "x$enable_doc" = "xyes"], [
++ AC_PATH_PROGS(XSLTPROC, xsltproc)
++])
++AM_CONDITIONAL([BUILD_DOC], [test "x$enable_doc" = "xyes"] )
++AC_SUBST(XSLTPROC)
+
+ dnl ************************************************************************
+ dnl Check whether non-root user can chown.
+diff -ru a/doc/Makefile.am b/doc/Makefile.am
+--- a/doc/Makefile.am 2015-02-04 15:57:04.000000000 +0100
++++ b/doc/Makefile.am 2017-04-25 11:58:35.459257834 +0200
+@@ -33,11 +33,12 @@
+
+ doc_DATA = $(OTHER_DOCS)
+
++if BUILD_DOC
+ man_MANS = heartbeat.8 apphbd.8 cl_status.1 \
+ hb_standby.1 hb_takeover.1 hb_addnode.1 hb_delnode.1 \
+ ha.cf.5 authkeys.5
+
+-STYLESHEET_PREFIX ?= http://docbook.sourceforge.net/release/xsl/current
++STYLESHEET_PREFIX ?= /usr/share/sgml/docbook/xsl-stylesheets
+ MANPAGES_STYLESHEET ?= $(STYLESHEET_PREFIX)/manpages/docbook.xsl
+ HTML_STYLESHEET ?= $(STYLESHEET_PREFIX)/xhtml/docbook.xsl
+ FO_STYLESHEET ?= $(STYLESHEET_PREFIX)/fo/docbook.xsl
+@@ -47,6 +48,12 @@
+ XSLTPROC_HTML_OPTIONS ?= $(XSLTPROC_OPTIONS)
+ XSLTPROC_FO_OPTIONS ?= $(XSLTPROC_OPTIONS)
+
++%.5 %.8 %.1: %.xml
++ $(XSLTPROC) \
++ $(XSLTPROC_MANPAGES_OPTIONS) \
++ $(MANPAGES_STYLESHEET) $<
++endif
++
+ EXTRA_DIST = $(txtfiles) $(htmlfiles) $(man_MANS) $(OTHER_DOCS)
+
+ ChangeLog: $(SPECSRC)
+@@ -55,8 +62,3 @@
+
+ .html.txt:
+ if [ "X$(HTML2TXT)" = "X" ]; then echo "Lynx or w3m or user-defined HTML2TXT required to convert $< to $@" >$@ ; else $(HTML2TXT) -dump $< >$@ ; fi
+-
+-%.5 %.8 %.1: %.xml
+- $(XSLTPROC) \
+- $(XSLTPROC_MANPAGES_OPTIONS) \
+- $(MANPAGES_STYLESHEET) $<
diff --git a/sys-cluster/heartbeat/files/heartbeat-init b/sys-cluster/heartbeat/files/heartbeat-init
new file mode 100644
index 000000000000..9316fcc81e8f
--- /dev/null
+++ b/sys-cluster/heartbeat/files/heartbeat-init
@@ -0,0 +1,92 @@
+#!/sbin/openrc-run
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+HA_DIR=/etc/ha.d
+. $HA_DIR/shellfuncs
+
+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`" && \
+ ( /usr/lib/heartbeat/ha_logd -s &>/dev/null || \
+ /usr/lib/heartbeat/ha_logd -d -c /etc/ha.d/ha_logd.cf)
+
+ RunStartStop pre-start
+
+ CheckBool "`ha_parameter crm`" || \
+ /usr/lib/heartbeat/ResourceManager verifyallidle
+
+ /usr/lib/heartbeat/heartbeat &>/dev/null
+ ret=$?
+
+ RunStartStop post-start
+
+ eend ${ret}
+}
+
+stop() {
+ ebegin "Stopping heartbeat"
+
+ RunStartStop pre-stop
+
+ /usr/lib/heartbeat/heartbeat -k &>/dev/null
+ ret=$?
+
+ RunStartStop post-stop ${ret}
+
+ # stop log subsystem
+ CheckBool "`ha_parameter use_logd`" && \
+ ( /usr/lib/heartbeat/ha_logd -s &>/dev/null && \
+ /usr/lib/heartbeat/ha_logd -k &>/dev/null )
+
+ eend ${ret}
+}
+
+status() {
+ /usr/lib/heartbeat/heartbeat -s
+}
+
+reload() {
+ ebegin "Reloading heartbeat"
+ /usr/lib/heartbeat/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.5-r3.ebuild b/sys-cluster/heartbeat/heartbeat-3.0.5-r3.ebuild
new file mode 100644
index 000000000000..20aadc77cebf
--- /dev/null
+++ b/sys-cluster/heartbeat/heartbeat-3.0.5-r3.ebuild
@@ -0,0 +1,86 @@
+# Copyright 1999-2017 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"
+
+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.4-fix_configure.patch"
+ "${FILESDIR}/3.0.4-docs.patch"
+ "${FILESDIR}/3.0.4-python_tests.patch"
+ "${FILESDIR}/3.0.5-fix_ucast.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}"/heartbeat-init "${WORKDIR}" || die
+ sed -i \
+ -e "/ResourceManager/ s/lib/share/" \
+ -e "s:lib:$(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
+}
diff --git a/sys-cluster/heartbeat/heartbeat-3.0.6.ebuild b/sys-cluster/heartbeat/heartbeat-3.0.6.ebuild
new file mode 100644
index 000000000000..87b148818ad4
--- /dev/null
+++ b/sys-cluster/heartbeat/heartbeat-3.0.6.ebuild
@@ -0,0 +1,85 @@
+# Copyright 1999-2017 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"
+
+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-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}"/heartbeat-init "${WORKDIR}" || die
+ sed -i \
+ -e "/ResourceManager/ s/lib/share/" \
+ -e "s:lib:$(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
+}
diff --git a/sys-cluster/heartbeat/metadata.xml b/sys-cluster/heartbeat/metadata.xml
new file mode 100644
index 000000000000..5b089a69229f
--- /dev/null
+++ b/sys-cluster/heartbeat/metadata.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>cluster@gentoo.org</email>
+ <name>Gentoo Cluster Project</name>
+ </maintainer>
+
+ <longdescription>
+ Heartbeat is a cluster manager to handle failover of 2 nodes.
+ </longdescription>
+</pkgmetadata>