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 <[email protected]> +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 <[email protected]> @@ -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() {
