import meson-0.58.2-2.el8
This commit is contained in:
parent
e501220589
commit
8389921c72
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1 @@
|
|||||||
SOURCES/meson-0.55.3.tar.gz
|
SOURCES/meson-0.58.2.tar.gz
|
||||||
|
@ -1 +1 @@
|
|||||||
6a6ca4d36eb8cdf954beff08c653fc72cf336527 SOURCES/meson-0.55.3.tar.gz
|
4058a574a8a1335102b24981d049fd82ccdb4150 SOURCES/meson-0.58.2.tar.gz
|
||||||
|
@ -1,92 +0,0 @@
|
|||||||
From a57d1aaafe47dadaa5fad8b73ec9e2e31bb5f123 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Paolo Bonzini <pbonzini@redhat.com>
|
|
||||||
Date: Thu, 8 Oct 2020 15:30:24 +0200
|
|
||||||
Subject: [PATCH] build: use PIE objects for static libraries if
|
|
||||||
b_staticpic=false but b_pie=true
|
|
||||||
|
|
||||||
If static_library is used as a convenience library (e.g. for link_whole)
|
|
||||||
it should in principle not need position independent code.
|
|
||||||
However, if the executables that the libraries is linked to are PIE,
|
|
||||||
the non-PIC objects in the static library will cause linker errors.
|
|
||||||
To avoid this, obey b_pie for static libraries if either b_staticpic=false
|
|
||||||
or they use "pic: false".
|
|
||||||
|
|
||||||
Without this patch, QEMU cannot use b_staticpic, which causes a slowdown
|
|
||||||
on some QEMU benchmarks up to 20%.
|
|
||||||
|
|
||||||
(cherry picked from commit 021d242f9ce8e6cd804af0c1eb4179b8c83fd470)
|
|
||||||
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
|
|
||||||
---
|
|
||||||
mesonbuild/backend/backends.py | 2 +-
|
|
||||||
mesonbuild/build.py | 18 +++++++++++-------
|
|
||||||
2 files changed, 12 insertions(+), 8 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py
|
|
||||||
index c84bb7534..f67efe370 100644
|
|
||||||
--- a/mesonbuild/backend/backends.py
|
|
||||||
+++ b/mesonbuild/backend/backends.py
|
|
||||||
@@ -694,7 +694,7 @@ class Backend:
|
|
||||||
# Set -fPIC for static libraries by default unless explicitly disabled
|
|
||||||
if isinstance(target, build.StaticLibrary) and target.pic:
|
|
||||||
commands += compiler.get_pic_args()
|
|
||||||
- if isinstance(target, build.Executable) and target.pie:
|
|
||||||
+ elif isinstance(target, (build.StaticLibrary, build.Executable)) and target.pie:
|
|
||||||
commands += compiler.get_pie_args()
|
|
||||||
# Add compile args needed to find external dependencies. Link args are
|
|
||||||
# added while generating the link command.
|
|
||||||
diff --git a/mesonbuild/build.py b/mesonbuild/build.py
|
|
||||||
index a06979cea..90cbd1aa6 100644
|
|
||||||
--- a/mesonbuild/build.py
|
|
||||||
+++ b/mesonbuild/build.py
|
|
||||||
@@ -972,13 +972,13 @@ This will become a hard error in a future Meson release.''')
|
|
||||||
if m.is_darwin() or m.is_windows():
|
|
||||||
self.pic = True
|
|
||||||
else:
|
|
||||||
- self.pic = self._extract_pic_pie(kwargs, 'pic')
|
|
||||||
- if isinstance(self, Executable):
|
|
||||||
+ self.pic = self._extract_pic_pie(kwargs, 'pic', environment, 'b_staticpic')
|
|
||||||
+ if isinstance(self, Executable) or (isinstance(self, StaticLibrary) and not self.pic):
|
|
||||||
# Executables must be PIE on Android
|
|
||||||
if self.environment.machines[self.for_machine].is_android():
|
|
||||||
self.pie = True
|
|
||||||
else:
|
|
||||||
- self.pie = self._extract_pic_pie(kwargs, 'pie')
|
|
||||||
+ self.pie = self._extract_pic_pie(kwargs, 'pie', environment, 'b_pie')
|
|
||||||
self.implicit_include_directories = kwargs.get('implicit_include_directories', True)
|
|
||||||
if not isinstance(self.implicit_include_directories, bool):
|
|
||||||
raise InvalidArguments('Implicit_include_directories must be a boolean.')
|
|
||||||
@@ -990,14 +990,20 @@ This will become a hard error in a future Meson release.''')
|
|
||||||
if self.gnu_symbol_visibility not in permitted:
|
|
||||||
raise InvalidArguments('GNU symbol visibility arg {} not one of: {}'.format(self.symbol_visibility, ', '.join(permitted)))
|
|
||||||
|
|
||||||
- def _extract_pic_pie(self, kwargs, arg):
|
|
||||||
+ def _extract_pic_pie(self, kwargs, arg, environment, option):
|
|
||||||
# Check if we have -fPIC, -fpic, -fPIE, or -fpie in cflags
|
|
||||||
all_flags = self.extra_args['c'] + self.extra_args['cpp']
|
|
||||||
if '-f' + arg.lower() in all_flags or '-f' + arg.upper() in all_flags:
|
|
||||||
mlog.warning("Use the '{}' kwarg instead of passing '{}' manually to {!r}".format(arg, '-f' + arg, self.name))
|
|
||||||
return True
|
|
||||||
|
|
||||||
- val = kwargs.get(arg, False)
|
|
||||||
+ if arg in kwargs:
|
|
||||||
+ val = kwargs[arg]
|
|
||||||
+ elif option in environment.coredata.base_options:
|
|
||||||
+ val = environment.coredata.base_options[option].value
|
|
||||||
+ else:
|
|
||||||
+ val = False
|
|
||||||
+
|
|
||||||
if not isinstance(val, bool):
|
|
||||||
raise InvalidArguments('Argument {} to {!r} must be boolean'.format(arg, self.name))
|
|
||||||
return val
|
|
||||||
@@ -1611,8 +1617,6 @@ class StaticLibrary(BuildTarget):
|
|
||||||
|
|
||||||
def __init__(self, name, subdir, subproject, for_machine: MachineChoice, sources, objects, environment, kwargs):
|
|
||||||
self.typename = 'static library'
|
|
||||||
- if 'pic' not in kwargs and 'b_staticpic' in environment.coredata.base_options:
|
|
||||||
- kwargs['pic'] = environment.coredata.base_options['b_staticpic'].value
|
|
||||||
super().__init__(name, subdir, subproject, for_machine, sources, objects, environment, kwargs)
|
|
||||||
if 'cs' in self.compilers:
|
|
||||||
raise InvalidArguments('Static libraries not supported for C#.')
|
|
||||||
--
|
|
||||||
2.27.0
|
|
||||||
|
|
@ -6,8 +6,8 @@
|
|||||||
%bcond_with check
|
%bcond_with check
|
||||||
|
|
||||||
Name: meson
|
Name: meson
|
||||||
Version: 0.55.3
|
Version: 0.58.2
|
||||||
Release: 3%{?dist}
|
Release: 2%{?dist}
|
||||||
Summary: High productivity build system
|
Summary: High productivity build system
|
||||||
|
|
||||||
License: ASL 2.0
|
License: ASL 2.0
|
||||||
@ -72,8 +72,6 @@ BuildRequires: llvm-devel
|
|||||||
BuildRequires: cups-devel
|
BuildRequires: cups-devel
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
patch0001: 0001_use_PIE_objects_for_static_libraries.patch
|
|
||||||
|
|
||||||
%description
|
%description
|
||||||
Meson is a build system designed to optimize programmer
|
Meson is a build system designed to optimize programmer
|
||||||
productivity. It aims to do this by providing simple, out-of-the-box
|
productivity. It aims to do this by providing simple, out-of-the-box
|
||||||
@ -115,6 +113,14 @@ export MESON_PRINT_TEST_OUTPUT=1
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Nov 16 2021 Tomas Pelka <tpelka@redhat.com> - 0.58.2-2
|
||||||
|
- Bump release and rebuild in -candidate target to fix gating issues
|
||||||
|
Resolves: rhbz#2006519
|
||||||
|
|
||||||
|
* Mon Oct 18 2021 Eduardo Lima (Etrunko) <etrunko@redhat.com> - 0.58.2-1
|
||||||
|
- Update meson to 0.58-2
|
||||||
|
Resolves: rhbz#2006519
|
||||||
|
|
||||||
* Tue Dec 15 2020 Danilo C. L. de Paula <ddepaula@redhat.com> - 0.55.3-3
|
* Tue Dec 15 2020 Danilo C. L. de Paula <ddepaula@redhat.com> - 0.55.3-3
|
||||||
- build: use PIE objects for static libraries
|
- build: use PIE objects for static libraries
|
||||||
Resolves: rhbz#1899620
|
Resolves: rhbz#1899620
|
||||||
|
Loading…
Reference in New Issue
Block a user