2.0.3-2 (potentially) - make project buildable with GCC 10
Signed-off-by: Jan Pokorný <jpokorny@redhat.com>
This commit is contained in:
parent
5d2275ed5a
commit
01e21f8b68
62
Build-get-ready-for-implicit-fno-common-with-GCC10.patch
Normal file
62
Build-get-ready-for-implicit-fno-common-with-GCC10.patch
Normal 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;
|
@ -14,7 +14,7 @@
|
|||||||
## can be incremented to build packages reliably considered "newer"
|
## can be incremented to build packages reliably considered "newer"
|
||||||
## than previously built packages with the same pcmkversion)
|
## than previously built packages with the same pcmkversion)
|
||||||
%global pcmkversion 2.0.3
|
%global pcmkversion 2.0.3
|
||||||
%global specversion 1
|
%global specversion 2
|
||||||
|
|
||||||
## Upstream commit (or git tag, such as "Pacemaker-" plus the
|
## Upstream commit (or git tag, such as "Pacemaker-" plus the
|
||||||
## {pcmkversion} macro for an official release) to use for this package
|
## {pcmkversion} macro for an official release) to use for this package
|
||||||
@ -144,6 +144,7 @@ Source0: https://github.com/%{github_owner}/%{name}/archive/%{commit}/%{na
|
|||||||
Source1: https://github.com/%{github_owner}/%{nagios_name}/archive/%{nagios_hash}/%{nagios_name}-%{nagios_hash}.tar.gz
|
Source1: https://github.com/%{github_owner}/%{nagios_name}/archive/%{nagios_hash}/%{nagios_name}-%{nagios_hash}.tar.gz
|
||||||
# ---
|
# ---
|
||||||
Patch0: Build-fix-unability-to-build-with-Inkscape-1.0-beta-.patch
|
Patch0: Build-fix-unability-to-build-with-Inkscape-1.0-beta-.patch
|
||||||
|
Patch1: https://github.com/ClusterLabs/pacemaker/commit/898d369f3bc770c0db2ad3973c204e6d11ec0e0f.patch#/Build-get-ready-for-implicit-fno-common-with-GCC10.patch
|
||||||
|
|
||||||
Requires: resource-agents
|
Requires: resource-agents
|
||||||
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
|
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
|
||||||
|
Loading…
Reference in New Issue
Block a user