[arch-commits] Commit in meson/trunk (2 files)

Jan Steffens heftig at gemini.archlinux.org
Tue Aug 16 15:00:20 UTC 2022


    Date: Tuesday, August 16, 2022 @ 15:00:20
  Author: heftig
Revision: 453005

0.63.1-2: Add patch to fix buildtype plain adding -O0

Added:
  meson/trunk/0002-compilers-Add-optimization-plain-option.patch
Modified:
  meson/trunk/PKGBUILD

----------------------------------------------------+
 0002-compilers-Add-optimization-plain-option.patch |  340 +++++++++++++++++++
 PKGBUILD                                           |    8 
 2 files changed, 347 insertions(+), 1 deletion(-)

Added: 0002-compilers-Add-optimization-plain-option.patch
===================================================================
--- 0002-compilers-Add-optimization-plain-option.patch	                        (rev 0)
+++ 0002-compilers-Add-optimization-plain-option.patch	2022-08-16 15:00:20 UTC (rev 453005)
@@ -0,0 +1,340 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Jan Tojnar <jtojnar at gmail.com>
+Date: Tue, 12 Jul 2022 15:22:30 +0200
+Subject: [PATCH] compilers: Add optimization=plain option
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+https://github.com/mesonbuild/meson/pull/9287 changed the `optimization=0`
+to pass `-O0` to the compiler. This change is reasonable by itself
+but unfortunately, it breaks `buildtype=plain`, which promises
+that “no extra build flags are used”.
+
+`buildtype=plain` is important for distros like NixOS,
+which manage compiler flags for optimization and hardening
+themselves.
+
+Let’s introduce a new optimization level that does nothing
+and set it as the default for `buildtype=plain`.
+
+(cherry picked from commit 70663f652863443b427e6711ec5ce6c07b85ff84)
+---
+ mesonbuild/backend/xcodebackend.py               | 7 +++++--
+ mesonbuild/compilers/compilers.py                | 6 ++++--
+ mesonbuild/compilers/cs.py                       | 4 +++-
+ mesonbuild/compilers/d.py                        | 6 ++++--
+ mesonbuild/compilers/mixins/arm.py               | 2 ++
+ mesonbuild/compilers/mixins/clang.py             | 1 +
+ mesonbuild/compilers/mixins/compcert.py          | 1 +
+ mesonbuild/compilers/mixins/gnu.py               | 1 +
+ mesonbuild/compilers/mixins/intel.py             | 6 ++++--
+ mesonbuild/compilers/mixins/ti.py                | 1 +
+ mesonbuild/compilers/mixins/visualstudio.py      | 1 +
+ mesonbuild/compilers/mixins/xc16.py              | 1 +
+ mesonbuild/compilers/rust.py                     | 1 +
+ mesonbuild/compilers/swift.py                    | 1 +
+ mesonbuild/coredata.py                           | 6 +++---
+ test cases/failing/101 number in combo/test.json | 2 +-
+ 16 files changed, 34 insertions(+), 13 deletions(-)
+
+diff --git a/mesonbuild/backend/xcodebackend.py b/mesonbuild/backend/xcodebackend.py
+index 0d8bafb4b745..9e101ce63aa4 100644
+--- a/mesonbuild/backend/xcodebackend.py
++++ b/mesonbuild/backend/xcodebackend.py
+@@ -52,7 +52,8 @@ LANGNAMEMAP = {'c': 'C',
+                'objcpp': 'OBJCPLUSPLUS',
+                'swift': 'SWIFT_'
+                }
+-OPT2XCODEOPT = {'0': '0',
++OPT2XCODEOPT = {'plain': None,
++                '0': '0',
+                 'g': '0',
+                 '1': '1',
+                 '2': '2',
+@@ -1561,7 +1562,9 @@ class XCodeBackend(backends.Backend):
+                 settings_dict.add_item('EXECUTABLE_SUFFIX', suffix)
+             settings_dict.add_item('GCC_GENERATE_DEBUGGING_SYMBOLS', BOOL2XCODEBOOL[target.get_option(OptionKey('debug'))])
+             settings_dict.add_item('GCC_INLINES_ARE_PRIVATE_EXTERN', 'NO')
+-            settings_dict.add_item('GCC_OPTIMIZATION_LEVEL', OPT2XCODEOPT[target.get_option(OptionKey('optimization'))])
++            opt_flag = OPT2XCODEOPT[target.get_option(OptionKey('optimization'))]
++            if opt_flag is not None:
++                settings_dict.add_item('GCC_OPTIMIZATION_LEVEL', opt_flag)
+             if target.has_pch:
+                 # Xcode uses GCC_PREFIX_HEADER which only allows one file per target/executable. Precompiling various header files and
+                 # applying a particular pch to each source file will require custom scripts (as a build phase) and build flags per each
+diff --git a/mesonbuild/compilers/compilers.py b/mesonbuild/compilers/compilers.py
+index 18ba6e951fe8..61b9cb40f406 100644
+--- a/mesonbuild/compilers/compilers.py
++++ b/mesonbuild/compilers/compilers.py
+@@ -247,15 +247,17 @@ msvc_winlibs = ['kernel32.lib', 'user32.lib', 'gdi32.lib',
+                 'winspool.lib', 'shell32.lib', 'ole32.lib', 'oleaut32.lib',
+                 'uuid.lib', 'comdlg32.lib', 'advapi32.lib']  # type: T.List[str]
+ 
+-clike_optimization_args = {'0': [],
++clike_optimization_args = {'plain': [],
++                           '0': [],
+                            'g': [],
+                            '1': ['-O1'],
+                            '2': ['-O2'],
+                            '3': ['-O3'],
+                            's': ['-Os'],
+                            }  # type: T.Dict[str, T.List[str]]
+ 
+-cuda_optimization_args = {'0': [],
++cuda_optimization_args = {'plain': [],
++                          '0': [],
+                           'g': ['-O0'],
+                           '1': ['-O1'],
+                           '2': ['-O2'],
+diff --git a/mesonbuild/compilers/cs.py b/mesonbuild/compilers/cs.py
+index b38f626a820f..3f020e2cfd00 100644
+--- a/mesonbuild/compilers/cs.py
++++ b/mesonbuild/compilers/cs.py
+@@ -26,7 +26,9 @@ if T.TYPE_CHECKING:
+     from ..envconfig import MachineInfo
+     from ..environment import Environment
+ 
+-cs_optimization_args = {'0': [],
++cs_optimization_args = {
++                        'plain': [],
++                        '0': [],
+                         'g': [],
+                         '1': ['-optimize+'],
+                         '2': ['-optimize+'],
+diff --git a/mesonbuild/compilers/d.py b/mesonbuild/compilers/d.py
+index 35ab02470545..f866af641ed7 100644
+--- a/mesonbuild/compilers/d.py
++++ b/mesonbuild/compilers/d.py
+@@ -64,15 +64,17 @@ d_feature_args = {'gcc':  {'unittest': '-funittest',
+                            }
+                   }  # type: T.Dict[str, T.Dict[str, str]]
+ 
+-ldc_optimization_args = {'0': [],
++ldc_optimization_args = {'plain': [],
++                         '0': [],
+                          'g': [],
+                          '1': ['-O1'],
+                          '2': ['-O2'],
+                          '3': ['-O3'],
+                          's': ['-Oz'],
+                          }  # type: T.Dict[str, T.List[str]]
+ 
+-dmd_optimization_args = {'0': [],
++dmd_optimization_args = {'plain': [],
++                         '0': [],
+                          'g': [],
+                          '1': ['-O'],
+                          '2': ['-O'],
+diff --git a/mesonbuild/compilers/mixins/arm.py b/mesonbuild/compilers/mixins/arm.py
+index 5bf862ddf197..b3abd70d6936 100644
+--- a/mesonbuild/compilers/mixins/arm.py
++++ b/mesonbuild/compilers/mixins/arm.py
+@@ -43,24 +43,26 @@ arm_buildtype_args = {
+ }  # type: T.Dict[str, T.List[str]]
+ 
+ arm_optimization_args = {
++    'plain': [],
+     '0': ['-O0'],
+     'g': ['-g'],
+     '1': ['-O1'],
+     '2': [], # Compiler defaults to -O2
+     '3': ['-O3', '-Otime'],
+     's': ['-O3'], # Compiler defaults to -Ospace
+ }  # type: T.Dict[str, T.List[str]]
+ 
+ armclang_buildtype_args = {
+     'plain': [],
+     'debug': [],
+     'debugoptimized': [],
+     'release': [],
+     'minsize': [],
+     'custom': [],
+ }  # type: T.Dict[str, T.List[str]]
+ 
+ armclang_optimization_args = {
++    'plain': [],
+     '0': [], # Compiler defaults to -O0
+     'g': ['-g'],
+     '1': ['-O1'],
+diff --git a/mesonbuild/compilers/mixins/clang.py b/mesonbuild/compilers/mixins/clang.py
+index 5083ace7c72b..4ac9b92c60c2 100644
+--- a/mesonbuild/compilers/mixins/clang.py
++++ b/mesonbuild/compilers/mixins/clang.py
+@@ -35,6 +35,7 @@ clang_color_args = {
+ }  # type: T.Dict[str, T.List[str]]
+ 
+ clang_optimization_args = {
++    'plain': [],
+     '0': ['-O0'],
+     'g': ['-Og'],
+     '1': ['-O1'],
+diff --git a/mesonbuild/compilers/mixins/compcert.py b/mesonbuild/compilers/mixins/compcert.py
+index 5e2ba0de5000..71d138a9ec23 100644
+--- a/mesonbuild/compilers/mixins/compcert.py
++++ b/mesonbuild/compilers/mixins/compcert.py
+@@ -38,6 +38,7 @@ ccomp_buildtype_args = {
+ }  # type: T.Dict[str, T.List[str]]
+ 
+ ccomp_optimization_args = {
++    'plain': [],
+     '0': ['-O0'],
+     'g': ['-O0'],
+     '1': ['-O1'],
+diff --git a/mesonbuild/compilers/mixins/gnu.py b/mesonbuild/compilers/mixins/gnu.py
+index 1b1e8a1c1332..11efcc9fe2dc 100644
+--- a/mesonbuild/compilers/mixins/gnu.py
++++ b/mesonbuild/compilers/mixins/gnu.py
+@@ -55,6 +55,7 @@ gnulike_buildtype_args = {
+ }  # type: T.Dict[str, T.List[str]]
+ 
+ gnu_optimization_args = {
++    'plain': [],
+     '0': ['-O0'],
+     'g': ['-Og'],
+     '1': ['-O1'],
+diff --git a/mesonbuild/compilers/mixins/intel.py b/mesonbuild/compilers/mixins/intel.py
+index 2698b393096a..9877a54ff4c8 100644
+--- a/mesonbuild/compilers/mixins/intel.py
++++ b/mesonbuild/compilers/mixins/intel.py
+@@ -58,7 +58,8 @@ class IntelGnuLikeCompiler(GnuLikeCompiler):
+         'custom': [],
+     }  # type: T.Dict[str, T.List[str]]
+ 
+-    OPTIM_ARGS = {
++    OPTIM_ARGS: T.Dict[str, T.List[str]] = {
++        'plain': [],
+         '0': ['-O0'],
+         'g': ['-O0'],
+         '1': ['-O1'],
+@@ -136,7 +137,8 @@ class IntelVisualStudioLikeCompiler(VisualStudioLikeCompiler):
+         'custom': [],
+     }  # type: T.Dict[str, T.List[str]]
+ 
+-    OPTIM_ARGS = {
++    OPTIM_ARGS: T.Dict[str, T.List[str]] = {
++        'plain': [],
+         '0': ['/Od'],
+         'g': ['/Od'],
+         '1': ['/O1'],
+diff --git a/mesonbuild/compilers/mixins/ti.py b/mesonbuild/compilers/mixins/ti.py
+index cbad3004fa66..c9028b8498c3 100644
+--- a/mesonbuild/compilers/mixins/ti.py
++++ b/mesonbuild/compilers/mixins/ti.py
+@@ -39,6 +39,7 @@ ti_buildtype_args = {
+ }  # type: T.Dict[str, T.List[str]]
+ 
+ ti_optimization_args = {
++    'plain': [],
+     '0': ['-O0'],
+     'g': ['-Ooff'],
+     '1': ['-O1'],
+diff --git a/mesonbuild/compilers/mixins/visualstudio.py b/mesonbuild/compilers/mixins/visualstudio.py
+index f4f2f1e1d0c7..d3b01108192e 100644
+--- a/mesonbuild/compilers/mixins/visualstudio.py
++++ b/mesonbuild/compilers/mixins/visualstudio.py
+@@ -62,6 +62,7 @@ vs64_instruction_set_args = {
+ }  # T.Dicst[str, T.Optional[T.List[str]]]
+ 
+ msvc_optimization_args = {
++    'plain': [],
+     '0': ['/Od'],
+     'g': [], # No specific flag to optimize debugging, /Zi or /ZI will create debug information
+     '1': ['/O1'],
+diff --git a/mesonbuild/compilers/mixins/xc16.py b/mesonbuild/compilers/mixins/xc16.py
+index 243356105af6..917791c0e4ce 100644
+--- a/mesonbuild/compilers/mixins/xc16.py
++++ b/mesonbuild/compilers/mixins/xc16.py
+@@ -39,6 +39,7 @@ xc16_buildtype_args = {
+ }  # type: T.Dict[str, T.List[str]]
+ 
+ xc16_optimization_args = {
++    'plain': [],
+     '0': ['-O0'],
+     'g': ['-O0'],
+     '1': ['-O1'],
+diff --git a/mesonbuild/compilers/rust.py b/mesonbuild/compilers/rust.py
+index 296c53906ae4..168448f5be8c 100644
+--- a/mesonbuild/compilers/rust.py
++++ b/mesonbuild/compilers/rust.py
+@@ -31,6 +31,7 @@ if T.TYPE_CHECKING:
+ 
+ 
+ rust_optimization_args = {
++    'plain': [],
+     '0': [],
+     'g': ['-C', 'opt-level=0'],
+     '1': ['-C', 'opt-level=1'],
+diff --git a/mesonbuild/compilers/swift.py b/mesonbuild/compilers/swift.py
+index a2b57b872f4a..6515387d1639 100644
+--- a/mesonbuild/compilers/swift.py
++++ b/mesonbuild/compilers/swift.py
+@@ -25,6 +25,7 @@ if T.TYPE_CHECKING:
+     from ..linkers import DynamicLinker
+ 
+ swift_optimization_args = {
++    'plain': [],
+     '0': [],
+     'g': [],
+     '1': ['-O'],
+diff --git a/mesonbuild/coredata.py b/mesonbuild/coredata.py
+index a82a9fa702cd..d37889b44a48 100644
+--- a/mesonbuild/coredata.py
++++ b/mesonbuild/coredata.py
+@@ -693,34 +693,34 @@ class CoreData:
+         result = []
+         value = self.options[OptionKey('buildtype')].value
+         if value == 'plain':
+-            opt = '0'
++            opt = 'plain'
+             debug = False
+         elif value == 'debug':
+             opt = '0'
+             debug = True
+         elif value == 'debugoptimized':
+             opt = '2'
+             debug = True
+         elif value == 'release':
+             opt = '3'
+             debug = False
+         elif value == 'minsize':
+             opt = 's'
+             debug = True
+         else:
+             assert value == 'custom'
+             return []
+         actual_opt = self.options[OptionKey('optimization')].value
+         actual_debug = self.options[OptionKey('debug')].value
+         if actual_opt != opt:
+             result.append(('optimization', actual_opt, opt))
+         if actual_debug != debug:
+             result.append(('debug', actual_debug, debug))
+         return result
+ 
+     def _set_others_from_buildtype(self, value: str) -> None:
+         if value == 'plain':
+-            opt = '0'
++            opt = 'plain'
+             debug = False
+         elif value == 'debug':
+             opt = '0'
+@@ -1217,7 +1217,7 @@ BUILTIN_CORE_OPTIONS: 'MutableKeyedOptionDictType' = OrderedDict([
+     (OptionKey('errorlogs'),       BuiltinOption(UserBooleanOption, "Whether to print the logs from failing tests", True)),
+     (OptionKey('install_umask'),   BuiltinOption(UserUmaskOption, 'Default umask to apply on permissions of installed files', '022')),
+     (OptionKey('layout'),          BuiltinOption(UserComboOption, 'Build directory layout', 'mirror', choices=['mirror', 'flat'])),
+-    (OptionKey('optimization'),    BuiltinOption(UserComboOption, 'Optimization level', '0', choices=['0', 'g', '1', '2', '3', 's'])),
++    (OptionKey('optimization'),    BuiltinOption(UserComboOption, 'Optimization level', '0', choices=['plain', '0', 'g', '1', '2', '3', 's'])),
+     (OptionKey('prefer_static'),   BuiltinOption(UserBooleanOption, 'Whether to try static linking before shared linking', False)),
+     (OptionKey('stdsplit'),        BuiltinOption(UserBooleanOption, 'Split stdout and stderr in test logs', True)),
+     (OptionKey('strip'),           BuiltinOption(UserBooleanOption, 'Strip targets on install', False)),
+diff --git a/test cases/failing/101 number in combo/test.json b/test cases/failing/101 number in combo/test.json
+index 5d37df109f3a..4c30f98002ed 100644
+--- a/test cases/failing/101 number in combo/test.json	
++++ b/test cases/failing/101 number in combo/test.json	
+@@ -1,5 +1,5 @@
+ {
+   "stdout": [
+-    { "line": "test cases/failing/101 number in combo/meson.build:1:0: ERROR: Value \"1\" (of type \"number\") for combo option \"Optimization level\" is not one of the choices. Possible choices are (as string): \"0\", \"g\", \"1\", \"2\", \"3\", \"s\"." }
++    { "line": "test cases/failing/101 number in combo/meson.build:1:0: ERROR: Value \"1\" (of type \"number\") for combo option \"Optimization level\" is not one of the choices. Possible choices are (as string): \"plain\", \"0\", \"g\", \"1\", \"2\", \"3\", \"s\"." }
+   ]
+ }

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2022-08-16 14:42:49 UTC (rev 453004)
+++ PKGBUILD	2022-08-16 15:00:20 UTC (rev 453005)
@@ -4,7 +4,7 @@
 
 pkgname=meson
 pkgver=0.63.1
-pkgrel=1
+pkgrel=2
 pkgdesc='High productivity build system'
 url='https://mesonbuild.com/'
 arch=('any')
@@ -18,10 +18,12 @@
               'python-pytest-xdist' 'python2-setuptools' 'ldc' 'rust-bindgen' 'cuda' 'hotdoc')
 source=(https://github.com/mesonbuild/meson/releases/download/${pkgver}/meson-${pkgver}.tar.gz{,.asc}
         0001-Skip-broken-tests.patch
+        0002-compilers-Add-optimization-plain-option.patch
         arch-meson)
 sha512sums=('25f96e18bcdbb6346c44d9f8e63035d6cb3d8f781cf43ac5530ddd6f8090f4d16d192f8d331240154602e92b498b410fabb1381dc5f39db1dfb9da05a964d44e'
             'SKIP'
             'b59d90b5466fcf877969a49982308b1c89f0f4521e4d3774a4531bb2c0093f46b5ea2ef569e32984632e6f9c7e91328bc3511978427b553ed8c97a64a52b79ff'
+            '9335dd98626ebddb1bbc6247c4ec8b1cd28c8b97e520d0e0d657671093b6bc6ca4399d2e06311ca9084b4920660aa48b29402fb2aae946c7e5e44d90cd970e8c'
             'f451f8a7ef9cf1dd724c2ce20bb85a3f1611b87b2e7a17ef0fdbe8ab82a67389f818ea30a5adfe8413143e4eac77ea2e0b8234b5b2466b41a892e2bd0435376c')
 validpgpkeys=('19E2D6D9B46D8DAA6288F877C24E631BABB1FE70') # Jussi Pakkanen <jpakkane at gmail.com>
 
@@ -28,6 +30,10 @@
 prepare() {
   cd ${pkgname}-${pkgver}
   patch -Np1 -i ../0001-Skip-broken-tests.patch
+
+  # Fix buildtype plain to not add -O0
+  # https://github.com/mesonbuild/meson/pull/10593
+  patch -Np1 -i ../0002-compilers-Add-optimization-plain-option.patch
 }
 
 build() {



More information about the arch-commits mailing list