Aurelien Larcher
2022-07-15 4f74be07fadc8d695eee898ee0437e97e1641ff9
pacemaker: fix build
2 files added
4 files modified
212 ■■■■ changed files
components/cluster/pacemaker/Makefile 44 ●●●● patch | view | raw | blame | history
components/cluster/pacemaker/manifests/sample-manifest.p5m 33 ●●●● patch | view | raw | blame | history
components/cluster/pacemaker/pacemaker.p5m 30 ●●●● patch | view | raw | blame | history
components/cluster/pacemaker/patches/10-no-common-attrd.patch 35 ●●●●● patch | view | raw | blame | history
components/cluster/pacemaker/patches/11-no-common-execd.patch 62 ●●●●● patch | view | raw | blame | history
components/cluster/pacemaker/pkg5 8 ●●●● patch | view | raw | blame | history
components/cluster/pacemaker/Makefile
@@ -15,25 +15,27 @@
#
BUILD_BITS=        64
USE_OPENSSL11=          yes
include ../../../make-rules/shared-macros.mk
PATH= $(USRBINDIR64):$(PATH.gnu)
COMPONENT_NAME=        pacemaker
COMPONENT_VERSION=    2.0.3
COMPONENT_FMRI=        application/cluster/$(COMPONENT_NAME)
COMPONENT_CLASSIFICATION= System/Services
COMPONENT_SRC=        $(COMPONENT_NAME)-Pacemaker-$(COMPONENT_VERSION)
COMPONENT_ARCHIVE=    $(COMPONENT_NAME)-$(COMPONENT_VERSION).tar.gz
COMPONENT_ARCHIVE_HASH=    sha256:ca228f7f9745c7bc1e31bebe30e51475e95a82d9010d281f1701f2e3310bd3fe
COMPONENT_PROJECT_URL=    https://www.clusterlab.org
COMPONENT_ARCHIVE_URL=    https://github.com/Clusterlabs/$(COMPONENT_NAME)/archive/Pacemaker-$(COMPONENT_VERSION).tar.gz
COMPONENT_LICENSE=    GPLv2,LGPLv2,BSD
COMPONENT_SUMMARY=    Pacemaker is an advanced, scalable high-availability cluster resource manager.
COMPONENT_NAME=         pacemaker
COMPONENT_VERSION=      2.0.3
COMPONENT_REVISION=     1
COMPONENT_FMRI=         application/cluster/$(COMPONENT_NAME)
COMPONENT_CLASSIFICATION=System/Services
COMPONENT_SRC=          $(COMPONENT_NAME)-Pacemaker-$(COMPONENT_VERSION)
COMPONENT_ARCHIVE=      $(COMPONENT_NAME)-$(COMPONENT_VERSION).tar.gz
COMPONENT_ARCHIVE_HASH= sha256:ca228f7f9745c7bc1e31bebe30e51475e95a82d9010d281f1701f2e3310bd3fe
COMPONENT_PROJECT_URL=  https://www.clusterlab.org
COMPONENT_ARCHIVE_URL=  https://github.com/Clusterlabs/$(COMPONENT_NAME)/archive/Pacemaker-$(COMPONENT_VERSION).tar.gz
COMPONENT_LICENSE=      GPLv2,LGPLv2,BSD
COMPONENT_SUMMARY=      Pacemaker is an advanced, scalable high-availability cluster resource manager.
include $(WS_MAKE_RULES)/common.mk
PYTHON_VERSION = 3.5
PYTHON_VERSION = 3.9
COMPONENT_PREP_ACTION=(cd $(SOURCE_DIR); $(CONFIG_SHELL) autogen.sh )
@@ -41,9 +43,11 @@
CONFIGURE_SCRIPT= $(@D)/configure
CFLAGS += -D__EXTENSIONS__ -D_POSIX_PTHREAD_SEMANTICS -lssp_nonshared -lssp -lnsl -lssl -lcrypto
CFLAGS += -D__EXTENSIONS__ -D_POSIX_PTHREAD_SEMANTICS \
      -lssp_nonshared -lssp -lnsl -lssl \
      -L$(OPENSSL_LIBDIR.64) -R$(OPENSSL_LIBDIR.64) -lcrypto
CONFIGURE_OPTIONS.64 += --libexecdir=$(CONFIGURE_PREFIX)/lib
CONFIGURE_OPTIONS += --libexecdir=$(CONFIGURE_PREFIX)/lib
CONFIGURE_OPTIONS += --sysconfdir=/etc
CONFIGURE_OPTIONS += --sharedstatedir=/var/hacluster
CONFIGURE_OPTIONS += --localstatedir=/var
@@ -89,16 +93,18 @@
    '-e "/XPASS/p" ' \
    '-e "/XFAIL/p" '
PKG_MACROS+= PYVER="$(PYTHON_VERSION)"
# added manually, not found as dependency
PERL_REQUIRED_PACKAGES += runtime/perl
REQUIRED_PACKAGES += application/cluster/resource-agents
REQUIRED_PACKAGES += library/libesmtp
REQUIRED_PACKAGES += library/libstatgrab
REQUIRED_PACKAGES += runtime/perl-522
REQUIRED_PACKAGES += system/management/snmp/net-snmp
REQUIRED_PACKAGES += text/asciidoc
# Auto-generated dependencies
REQUIRED_PACKAGES += SUNWcs
REQUIRED_PACKAGES += $(GCC_RUNTIME_PKG)
REQUIRED_PACKAGES += application/cluster/cluster-glue
REQUIRED_PACKAGES += application/cluster/corosync
REQUIRED_PACKAGES += compress/bzip2
@@ -108,13 +114,11 @@
REQUIRED_PACKAGES += library/libxml2
REQUIRED_PACKAGES += library/libxslt
REQUIRED_PACKAGES += library/ncurses
REQUIRED_PACKAGES += library/pcre2
REQUIRED_PACKAGES += library/security/openssl
REQUIRED_PACKAGES += runtime/python-35
REQUIRED_PACKAGES += library/security/openssl-11
REQUIRED_PACKAGES += runtime/python-39
REQUIRED_PACKAGES += shell/bash
REQUIRED_PACKAGES += shell/ksh93
REQUIRED_PACKAGES += system/library
REQUIRED_PACKAGES += system/library/libdbus
# Bogus dependency due to libssp
REQUIRED_PACKAGES += $(GCC_RUNTIME_PKG)
REQUIRED_PACKAGES += $(GXX_RUNTIME_PKG)
components/cluster/pacemaker/manifests/sample-manifest.p5m
@@ -10,10 +10,11 @@
#
#
# Copyright 2018 <contributor>
# Copyright 2022 <contributor>
#
set name=pkg.fmri value=pkg:/$(COMPONENT_FMRI)@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
set name=pkg.human-version value=$(HUMAN_VERSION)
set name=pkg.summary value="$(COMPONENT_SUMMARY)"
set name=info.classification value="$(COMPONENT_CLASSIFICATION)"
set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
@@ -126,21 +127,21 @@
file path=usr/lib/pacemaker/pacemaker-schedulerd
link path=usr/lib/pacemaker/pengine target=pacemaker-schedulerd
link path=usr/lib/pacemaker/stonithd target=pacemaker-fenced
file path=usr/lib/python3.5/vendor-packages/cts/CIB.py
file path=usr/lib/python3.5/vendor-packages/cts/CM_common.py
file path=usr/lib/python3.5/vendor-packages/cts/CM_corosync.py
file path=usr/lib/python3.5/vendor-packages/cts/CTS.py
file path=usr/lib/python3.5/vendor-packages/cts/CTSaudits.py
file path=usr/lib/python3.5/vendor-packages/cts/CTSscenarios.py
file path=usr/lib/python3.5/vendor-packages/cts/CTStests.py
file path=usr/lib/python3.5/vendor-packages/cts/CTSvars.py
file path=usr/lib/python3.5/vendor-packages/cts/__init__.py
file path=usr/lib/python3.5/vendor-packages/cts/cib_xml.py
file path=usr/lib/python3.5/vendor-packages/cts/environment.py
file path=usr/lib/python3.5/vendor-packages/cts/logging.py
file path=usr/lib/python3.5/vendor-packages/cts/patterns.py
file path=usr/lib/python3.5/vendor-packages/cts/remote.py
file path=usr/lib/python3.5/vendor-packages/cts/watcher.py
file path=usr/lib/python$(PYVER)/vendor-packages/cts/CIB.py
file path=usr/lib/python$(PYVER)/vendor-packages/cts/CM_common.py
file path=usr/lib/python$(PYVER)/vendor-packages/cts/CM_corosync.py
file path=usr/lib/python$(PYVER)/vendor-packages/cts/CTS.py
file path=usr/lib/python$(PYVER)/vendor-packages/cts/CTSaudits.py
file path=usr/lib/python$(PYVER)/vendor-packages/cts/CTSscenarios.py
file path=usr/lib/python$(PYVER)/vendor-packages/cts/CTStests.py
file path=usr/lib/python$(PYVER)/vendor-packages/cts/CTSvars.py
file path=usr/lib/python$(PYVER)/vendor-packages/cts/__init__.py
file path=usr/lib/python$(PYVER)/vendor-packages/cts/cib_xml.py
file path=usr/lib/python$(PYVER)/vendor-packages/cts/environment.py
file path=usr/lib/python$(PYVER)/vendor-packages/cts/logging.py
file path=usr/lib/python$(PYVER)/vendor-packages/cts/patterns.py
file path=usr/lib/python$(PYVER)/vendor-packages/cts/remote.py
file path=usr/lib/python$(PYVER)/vendor-packages/cts/watcher.py
file path=usr/sbin/attrd_updater
file path=usr/sbin/cibadmin
file path=usr/sbin/crm_attribute
components/cluster/pacemaker/pacemaker.p5m
@@ -130,21 +130,21 @@
file path=usr/lib/pacemaker/pacemaker-schedulerd
link path=usr/lib/pacemaker/pengine target=pacemaker-schedulerd
link path=usr/lib/pacemaker/stonithd target=pacemaker-fenced
file path=usr/lib/python3.5/vendor-packages/cts/CIB.py
file path=usr/lib/python3.5/vendor-packages/cts/CM_common.py
file path=usr/lib/python3.5/vendor-packages/cts/CM_corosync.py
file path=usr/lib/python3.5/vendor-packages/cts/CTS.py
file path=usr/lib/python3.5/vendor-packages/cts/CTSaudits.py
file path=usr/lib/python3.5/vendor-packages/cts/CTSscenarios.py
file path=usr/lib/python3.5/vendor-packages/cts/CTStests.py
file path=usr/lib/python3.5/vendor-packages/cts/CTSvars.py
file path=usr/lib/python3.5/vendor-packages/cts/__init__.py
file path=usr/lib/python3.5/vendor-packages/cts/cib_xml.py
file path=usr/lib/python3.5/vendor-packages/cts/environment.py
file path=usr/lib/python3.5/vendor-packages/cts/logging.py
file path=usr/lib/python3.5/vendor-packages/cts/patterns.py
file path=usr/lib/python3.5/vendor-packages/cts/remote.py
file path=usr/lib/python3.5/vendor-packages/cts/watcher.py
file path=usr/lib/python$(PYVER)/vendor-packages/cts/CIB.py
file path=usr/lib/python$(PYVER)/vendor-packages/cts/CM_common.py
file path=usr/lib/python$(PYVER)/vendor-packages/cts/CM_corosync.py
file path=usr/lib/python$(PYVER)/vendor-packages/cts/CTS.py
file path=usr/lib/python$(PYVER)/vendor-packages/cts/CTSaudits.py
file path=usr/lib/python$(PYVER)/vendor-packages/cts/CTSscenarios.py
file path=usr/lib/python$(PYVER)/vendor-packages/cts/CTStests.py
file path=usr/lib/python$(PYVER)/vendor-packages/cts/CTSvars.py
file path=usr/lib/python$(PYVER)/vendor-packages/cts/__init__.py
file path=usr/lib/python$(PYVER)/vendor-packages/cts/cib_xml.py
file path=usr/lib/python$(PYVER)/vendor-packages/cts/environment.py
file path=usr/lib/python$(PYVER)/vendor-packages/cts/logging.py
file path=usr/lib/python$(PYVER)/vendor-packages/cts/patterns.py
file path=usr/lib/python$(PYVER)/vendor-packages/cts/remote.py
file path=usr/lib/python$(PYVER)/vendor-packages/cts/watcher.py
file path=usr/sbin/attrd_updater
file path=usr/sbin/cibadmin
file path=usr/sbin/crm_attribute
components/cluster/pacemaker/patches/10-no-common-attrd.patch
New file
@@ -0,0 +1,35 @@
From 77a79358cc72174cbba0dd44e313f6d06d96dbf4 Mon Sep 17 00:00:00 2001
From: Ken Gaillot <kgaillot@redhat.com>
Date: Thu, 2 Jan 2020 09:51:52 -0600
Subject: [PATCH] Refactor: attrd: properly declare global variables as extern
 in header
Restores buildability with GCC 10
---
 daemons/attrd/pacemaker-attrd.h | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/daemons/attrd/pacemaker-attrd.h b/daemons/attrd/pacemaker-attrd.h
index cc8e29ee1e..7b5ba03388 100644
--- a/daemons/attrd/pacemaker-attrd.h
+++ b/daemons/attrd/pacemaker-attrd.h
@@ -1,5 +1,7 @@
 /*
- * Copyright 2013-2018 Andrew Beekhof <andrew@beekhof.net>
+ * Copyright 2013-2020 the Pacemaker project contributors
+ *
+ * The version control history for this file may have further details.
  *
  * This source code is licensed under the GNU General Public License version 2
  * or later (GPLv2+) WITHOUT ANY WARRANTY.
@@ -106,8 +108,8 @@ typedef struct attribute_value_s {
         gboolean seen;
 } attribute_value_t;
-crm_cluster_t *attrd_cluster;
-GHashTable *attributes;
+extern crm_cluster_t *attrd_cluster;
+extern GHashTable *attributes;
 #define attrd_send_ack(client, id, flags) \
     crm_ipcs_send_ack((client), (id), (flags), "ack", __FUNCTION__, __LINE__)
components/cluster/pacemaker/patches/11-no-common-execd.patch
New file
@@ -0,0 +1,62 @@
From 898d369f3bc770c0db2ad3973c204e6d11ec0e0f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jan=20Pokorn=C3=BD?= <jpokorny@redhat.com>
Date: Tue, 21 Jan 2020 18:24:44 +0100
Subject: [PATCH] Build: get ready for implicit -fno-common with upcoming GCC
 10
Currently, -fno-common yields (and only yields, slightly restructured):
> /usr/bin/ld:
>   pacemaker_execd-execd_commands.o:
>     pcmk/daemons/execd/pacemaker-execd.h:23:
>       multiple definition of `rsc_list';
>   + pacemaker_execd-pacemaker-execd.o:
>     pcmk/daemons/execd/pacemaker-execd.h:23:
>       first defined here
>
>   pacemaker_execd-execd_alerts.o:
>     pcmk/daemons/execd/pacemaker-execd.h:23:
>       multiple definition of `rsc_list';
>   + pacemaker_execd-pacemaker-execd.o:
>     pcmk/daemons/execd/pacemaker-execd.h:23:
>       first defined here
>
> collect2: error: ld returned 1 exit status
The problem is that a global (with external linkage) variable without
explicit "extern" stands for "tentative definition" (as opposed to mere
reference to existing object with external linkage otherwise),
and these won't get automagically merged in -fno-common case (which
is going to be a default in upcoming GCC 10).
Solution is to explicitly add "extern" storage-class specifiers
at what's indeed meant as non-tentative reference in the header
files that are going to be included from various translation
units that will end up in the same link.
No more attempts at finding these was performed, just the only instance
that got hit in practice (see above) receives this treatment, since
manual work simply doesn't scale.  Either a static analysis can be
employed to mark other potential show-stoppers, or we'll just deal
with the issues on case-by-case basis (with the gargantuan assistence
of CI systems).
References:
https://gcc.gnu.org/gcc-10/porting_to.html#common
---
 daemons/execd/pacemaker-execd.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/daemons/execd/pacemaker-execd.h b/daemons/execd/pacemaker-execd.h
index 4a52d91834..dab3ccdbee 100644
--- a/daemons/execd/pacemaker-execd.h
+++ b/daemons/execd/pacemaker-execd.h
@@ -20,7 +20,7 @@
 #    include <gnutls/gnutls.h>
 #  endif
-GHashTable *rsc_list;
+extern GHashTable *rsc_list;
 typedef struct lrmd_rsc_s {
     char *rsc_id;
components/cluster/pacemaker/pkg5
@@ -13,10 +13,10 @@
        "library/libxml2",
        "library/libxslt",
        "library/ncurses",
        "library/pcre2",
        "library/security/openssl",
        "runtime/perl-522",
        "runtime/python-35",
        "library/security/openssl-11",
        "runtime/perl-534",
        "runtime/perl-536",
        "runtime/python-39",
        "shell/bash",
        "shell/ksh93",
        "system/library",