From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <gentoo-commits+bounces-1591492-garchives=archives.gentoo.org@lists.gentoo.org> Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 39D5B15838E for <garchives@archives.gentoo.org>; Wed, 17 Jan 2024 08:05:49 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 4FFA5E2A81; Wed, 17 Jan 2024 08:05:48 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [IPv6:2001:470:ea4a:1:5054:ff:fec7:86e4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 2125EE2A81 for <gentoo-commits@lists.gentoo.org>; Wed, 17 Jan 2024 08:05:48 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 26E7734332B for <gentoo-commits@lists.gentoo.org>; Wed, 17 Jan 2024 08:05:47 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id B717A11F4 for <gentoo-commits@lists.gentoo.org>; Wed, 17 Jan 2024 08:05:45 +0000 (UTC) From: "Fabian Groffen" <grobian@gentoo.org> To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Fabian Groffen" <grobian@gentoo.org> Message-ID: <1705478600.c76c83d5e1d8ccb20be5333d3cc5d921b4849380.grobian@gentoo> Subject: [gentoo-commits] repo/proj/prefix:master commit in: dev-build/meson/files/, dev-build/meson/ X-VCS-Repository: repo/proj/prefix X-VCS-Files: dev-build/meson/Manifest dev-build/meson/files/0001-Revert-clike-Deduplicate-rpath-linker-flags.patch dev-build/meson/files/0001-ninja-backend-don-t-hide-all-compiler-warnings-for-t.patch dev-build/meson/files/meson-1.2.1-python-path.patch dev-build/meson/files/meson-1.3.1-xtools-support.patch dev-build/meson/meson-1.3.1.ebuild dev-build/meson/metadata.xml X-VCS-Directories: dev-build/meson/files/ dev-build/meson/ X-VCS-Committer: grobian X-VCS-Committer-Name: Fabian Groffen X-VCS-Revision: c76c83d5e1d8ccb20be5333d3cc5d921b4849380 X-VCS-Branch: master Date: Wed, 17 Jan 2024 08:05:45 +0000 (UTC) Precedence: bulk List-Post: <mailto:gentoo-commits@lists.gentoo.org> List-Help: <mailto:gentoo-commits+help@lists.gentoo.org> List-Unsubscribe: <mailto:gentoo-commits+unsubscribe@lists.gentoo.org> List-Subscribe: <mailto:gentoo-commits+subscribe@lists.gentoo.org> List-Id: Gentoo Linux mail <gentoo-commits.gentoo.org> X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: 7253dfe2-cb22-4862-b18d-1179c6b50cb2 X-Archives-Hash: 55e6f9af88ad3d70e3f9096106617a81 commit: c76c83d5e1d8ccb20be5333d3cc5d921b4849380 Author: Fabian Groffen <grobian <AT> gentoo <DOT> org> AuthorDate: Wed Jan 17 08:01:15 2024 +0000 Commit: Fabian Groffen <grobian <AT> gentoo <DOT> org> CommitDate: Wed Jan 17 08:03:20 2024 +0000 URL: https://gitweb.gentoo.org/repo/proj/prefix.git/commit/?id=c76c83d5 dev-build/meson: import from gx86 to keep xtools support Signed-off-by: Fabian Groffen <grobian <AT> gentoo.org> dev-build/meson/Manifest | 2 + ...vert-clike-Deduplicate-rpath-linker-flags.patch | 55 +++++ ...nd-don-t-hide-all-compiler-warnings-for-t.patch | 250 +++++++++++++++++++++ .../meson/files/meson-1.2.1-python-path.patch | 26 +++ .../meson/files/meson-1.3.1-xtools-support.patch | 26 +++ dev-build/meson/meson-1.3.1.ebuild | 134 +++++++++++ dev-build/meson/metadata.xml | 15 ++ 7 files changed, 508 insertions(+) diff --git a/dev-build/meson/Manifest b/dev-build/meson/Manifest new file mode 100644 index 0000000000..c5619b32b9 --- /dev/null +++ b/dev-build/meson/Manifest @@ -0,0 +1,2 @@ +DIST meson-1.3.1.tar.gz 2222386 BLAKE2B 64d53eddc8cb321a4e2dabaa4b7499798a7b68764b1a7a5182bfa21d081dc07105acab616119b88ff610e5d75504f03d1c0aefee3602ddf538fc491ff3d0204a SHA512 6e694beb70329535faca9405358c04e2fd5a490b0c0d2678d5831b7de3477e0fcf4f6a242f1bc6218da04ac4f6e096ee53cdf273c6b6a38a35d370e8c16694ba +DIST meson-1.3.1.tar.gz.asc 833 BLAKE2B 1db7aabe3b7d491dfcd288a780d10784517a73e07348f2d5b98d1fa347dd08b2afa210511c7f5ff867b10ecd3ce470ea764b5ce6907aa7dcaa4d619f705e339c SHA512 0f652d375fa7700f3048266330d783664593c08da47d4f0d87af0be5d8b5e21113521651fb923c6a1cfe88aef7067ebd85b27946f19e71133d7c9805839fc873 diff --git a/dev-build/meson/files/0001-Revert-clike-Deduplicate-rpath-linker-flags.patch b/dev-build/meson/files/0001-Revert-clike-Deduplicate-rpath-linker-flags.patch new file mode 100644 index 0000000000..3d40616fec --- /dev/null +++ b/dev-build/meson/files/0001-Revert-clike-Deduplicate-rpath-linker-flags.patch @@ -0,0 +1,55 @@ +From 2fbc7b5ce3aced483b196dd10ca9eee1713b7494 Mon Sep 17 00:00:00 2001 +From: Eli Schwartz <eschwartz93@gmail.com> +Date: Tue, 26 Dec 2023 15:06:12 -0500 +Subject: [PATCH] Revert "clike: Deduplicate rpath linker flags" + +This reverts commit 53ea59ad8455277797117d225f326851fe7d369c. + +This breaks at least: +- frameworks/17 mpi +- frameworks/30 scalapack + +The problem is that openmpi's pkg-config emitted link arguments +includes: + +``` +-Wl,-rpath -Wl,/path/to/libdir +``` + +The deduplication logic in meson doesn't contain sufficient information +to tell when the compiler is passing an argument that requires values, +and definitely cannot tell when that argument is split across argv. But +for arguments that *can* do this, it is not possible to deduplicate a +single argument as standalone, because it is not standalone. + +The argument for deduplicating rpath here was that if you have multiple +dependencies that all add the same rpath, the Apple ld64 emits a +non-fatal warning "duplicate -rpath ignored". Since this is non-fatal, +it's not a major issue. A major issue is when builds fatally error out +with: + +``` +FAILED: scalapack_c +cc -o scalapack_c scalapack_c.p/main.c.o -Wl,--as-needed -Wl,--no-undefined -Wl,--start-group /usr/lib64/libscalapack.so /usr/lib64/liblapack.so /usr/lib64/libblas.so -Wl,-rpath -Wl,/usr/lib64 -Wl,/usr/lib64 -Wl,--enable-new-dtags /usr/lib64/libmpi.so -Wl,--end-group +/usr/libexec/gcc/x86_64-pc-linux-gnu/ld: error: /usr/lib64: read: Is a directory +``` +--- + mesonbuild/compilers/mixins/clike.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/mesonbuild/compilers/mixins/clike.py b/mesonbuild/compilers/mixins/clike.py +index b3fc96cec..76c8e0413 100644 +--- a/mesonbuild/compilers/mixins/clike.py ++++ b/mesonbuild/compilers/mixins/clike.py +@@ -54,7 +54,7 @@ class CLikeCompilerArgs(arglist.CompilerArgs): + + # NOTE: not thorough. A list of potential corner cases can be found in + # https://github.com/mesonbuild/meson/pull/4593#pullrequestreview-182016038 +- dedup1_prefixes = ('-l', '-Wl,-l', '-Wl,--export-dynamic', '-Wl,-rpath') ++ dedup1_prefixes = ('-l', '-Wl,-l', '-Wl,--export-dynamic') + dedup1_suffixes = ('.lib', '.dll', '.so', '.dylib', '.a') + dedup1_args = ('-c', '-S', '-E', '-pipe', '-pthread') + +-- +2.41.0 + diff --git a/dev-build/meson/files/0001-ninja-backend-don-t-hide-all-compiler-warnings-for-t.patch b/dev-build/meson/files/0001-ninja-backend-don-t-hide-all-compiler-warnings-for-t.patch new file mode 100644 index 0000000000..652ffd2522 --- /dev/null +++ b/dev-build/meson/files/0001-ninja-backend-don-t-hide-all-compiler-warnings-for-t.patch @@ -0,0 +1,250 @@ +From 5f659af870011e74299d1455a65c2cd5f5ace51f Mon Sep 17 00:00:00 2001 +From: Eli Schwartz <eschwartz93@gmail.com> +Date: Tue, 5 Dec 2023 14:26:54 -0500 +Subject: [PATCH] ninja backend: don't hide all compiler warnings for + transpiled languages + +This was originally added for vala only, with the rationale that vala +generates bad code that has warnings. Unfortunately, the rationale was +fatally flawed. The compiler warns about a number of things, which the +user can control depending on their code (or their code generator's +code), but some of those things are absolutely critical to warn about. + +In particular, GCC 14 and clang 17 are updating their defaults to warn +-- and error by default for -- invalid C code that breaks the standard, +but has been silently accepted for over 20 years "because lots of people +do it". The code in question is UB, and compilers will generate faulty +machine code that behaves erroneously and probably has a mass of CVEs +waiting to happen. + +Compiler warnings are NOT safe to just... universally turn off. Compiler +warnings could be either: + +- coding style lints + +- threatening statements that the code is factually and behaviorally wrong + +There is no magic bullet to ignore the former while respecting the +latter. And the very last thing we should ever do is pass `-w`, since +that causes ALL warnings to be disabled, even the manually added +`-Werror=XXX`. + +If vala generated code creates warnings, then the vala compiler can +decrease the log level by generating better code, or by adding warning +suppression pragmas for *specific* issues, such as unused functions. +--- + mesonbuild/backend/backends.py | 13 ++----- + mesonbuild/backend/ninjabackend.py | 19 ++++------ + .../failing build/1 vala c werror/meson.build | 10 ----- + .../failing build/1 vala c werror/prog.vala | 7 ---- + .../1 vala c werror/unused-var.c | 8 ---- + test cases/vala/5 target glib/meson.build | 4 -- + unittests/linuxliketests.py | 37 ------------------- + 7 files changed, 11 insertions(+), 87 deletions(-) + delete mode 100644 test cases/failing build/1 vala c werror/meson.build + delete mode 100644 test cases/failing build/1 vala c werror/prog.vala + delete mode 100644 test cases/failing build/1 vala c werror/unused-var.c + +diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py +index 2c24e4c31..639e07b2a 100644 +--- a/mesonbuild/backend/backends.py ++++ b/mesonbuild/backend/backends.py +@@ -986,7 +986,7 @@ class Backend: + return compiler.get_no_stdinc_args() + return [] + +- def generate_basic_compiler_args(self, target: build.BuildTarget, compiler: 'Compiler', no_warn_args: bool = False) -> 'CompilerArgs': ++ def generate_basic_compiler_args(self, target: build.BuildTarget, compiler: 'Compiler') -> 'CompilerArgs': + # Create an empty commands list, and start adding arguments from + # various sources in the order in which they must override each other + # starting from hard-coded defaults followed by build options and so on. +@@ -999,17 +999,12 @@ class Backend: + commands += self.get_no_stdlib_args(target, compiler) + # Add things like /NOLOGO or -pipe; usually can't be overridden + commands += compiler.get_always_args() +- # Only add warning-flags by default if the buildtype enables it, and if +- # we weren't explicitly asked to not emit warnings (for Vala, f.ex) +- if no_warn_args: +- commands += compiler.get_no_warn_args() +- else: +- # warning_level is a string, but mypy can't determine that +- commands += compiler.get_warn_args(T.cast('str', target.get_option(OptionKey('warning_level')))) ++ # warning_level is a string, but mypy can't determine that ++ commands += compiler.get_warn_args(T.cast('str', target.get_option(OptionKey('warning_level')))) + # Add -Werror if werror=true is set in the build options set on the + # command-line or default_options inside project(). This only sets the + # action to be done for warnings if/when they are emitted, so it's ok +- # to set it after get_no_warn_args() or get_warn_args(). ++ # to set it after or get_warn_args(). + if target.get_option(OptionKey('werror')): + commands += compiler.get_werror_args() + # Add compile args for c_* or cpp_* build options set on the +diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py +index 049ae253f..cdb747d73 100644 +--- a/mesonbuild/backend/ninjabackend.py ++++ b/mesonbuild/backend/ninjabackend.py +@@ -1939,7 +1939,7 @@ class NinjaBackend(backends.Backend): + if cratetype in {'bin', 'dylib'}: + args.extend(rustc.get_linker_always_args()) + +- args += self.generate_basic_compiler_args(target, rustc, False) ++ args += self.generate_basic_compiler_args(target, rustc) + # Rustc replaces - with _. spaces or dots are not allowed, so we replace them with underscores + args += ['--crate-name', target.name.replace('-', '_').replace(' ', '_').replace('.', '_')] + depfile = os.path.join(target.subdir, target.name + '.d') +@@ -2804,10 +2804,9 @@ https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47485''')) + bargs = [] + return (sargs, bargs) + +- def _generate_single_compile(self, target: build.BuildTarget, compiler: 'Compiler', +- is_generated: bool = False) -> 'CompilerArgs': ++ def _generate_single_compile(self, target: build.BuildTarget, compiler: Compiler) -> CompilerArgs: + commands = self._generate_single_compile_base_args(target, compiler) +- commands += self._generate_single_compile_target_args(target, compiler, is_generated) ++ commands += self._generate_single_compile_target_args(target, compiler) + return commands + + def _generate_single_compile_base_args(self, target: build.BuildTarget, compiler: 'Compiler') -> 'CompilerArgs': +@@ -2825,14 +2824,10 @@ https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47485''')) + return commands + + @lru_cache(maxsize=None) +- def _generate_single_compile_target_args(self, target: build.BuildTarget, compiler: 'Compiler', +- is_generated: bool = False) -> 'ImmutableListProtocol[str]': +- # The code generated by valac is usually crap and has tons of unused +- # variables and such, so disable warnings for Vala C sources. +- no_warn_args = is_generated == 'vala' ++ def _generate_single_compile_target_args(self, target: build.BuildTarget, compiler: Compiler) -> ImmutableListProtocol[str]: + # Add compiler args and include paths from several sources; defaults, + # build options, external dependencies, etc. +- commands = self.generate_basic_compiler_args(target, compiler, no_warn_args) ++ commands = self.generate_basic_compiler_args(target, compiler) + # Add custom target dirs as includes automatically, but before + # target-specific include directories. + if target.implicit_include_directories: +@@ -2901,7 +2896,7 @@ https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47485''')) + if use_pch and 'mw' not in compiler.id: + commands += self.get_pch_include_args(compiler, target) + +- commands += self._generate_single_compile_target_args(target, compiler, is_generated=False) ++ commands += self._generate_single_compile_target_args(target, compiler) + + # Metrowerks compilers require PCH include args to come after intraprocedural analysis args + if use_pch and 'mw' in compiler.id: +@@ -2935,7 +2930,7 @@ https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47485''')) + if use_pch and 'mw' not in compiler.id: + commands += self.get_pch_include_args(compiler, target) + +- commands += self._generate_single_compile_target_args(target, compiler, is_generated) ++ commands += self._generate_single_compile_target_args(target, compiler) + + # Metrowerks compilers require PCH include args to come after intraprocedural analysis args + if use_pch and 'mw' in compiler.id: +diff --git a/test cases/failing build/1 vala c werror/meson.build b/test cases/failing build/1 vala c werror/meson.build +deleted file mode 100644 +index 736d7aa43..000000000 +--- a/test cases/failing build/1 vala c werror/meson.build ++++ /dev/null +@@ -1,10 +0,0 @@ +-project('valatest', 'c', default_options : 'werror=true') +- +-if find_program('valac', required : false).found() +- add_languages('vala') +- valadeps = [dependency('glib-2.0'), dependency('gobject-2.0')] +- # Must fail due to -Werror and unused variable in C file +- executable('valaprog', 'prog.vala', 'unused-var.c', dependencies : valadeps) +-else +- executable('failprog', 'unused-var.c') +-endif +diff --git a/test cases/failing build/1 vala c werror/prog.vala b/test cases/failing build/1 vala c werror/prog.vala +deleted file mode 100644 +index 638e77660..000000000 +--- a/test cases/failing build/1 vala c werror/prog.vala ++++ /dev/null +@@ -1,7 +0,0 @@ +-class MainProg : GLib.Object { +- +- public static int main(string[] args) { +- stdout.printf("Vala is working.\n"); +- return 0; +- } +-} +diff --git a/test cases/failing build/1 vala c werror/unused-var.c b/test cases/failing build/1 vala c werror/unused-var.c +deleted file mode 100644 +index 6b85078c9..000000000 +--- a/test cases/failing build/1 vala c werror/unused-var.c ++++ /dev/null +@@ -1,8 +0,0 @@ +-#warning "something" +- +-int +-somelib(void) +-{ +- int unused_var; +- return 33; +-} +diff --git a/test cases/vala/5 target glib/meson.build b/test cases/vala/5 target glib/meson.build +index f285d9f16..089bb3c97 100644 +--- a/test cases/vala/5 target glib/meson.build ++++ b/test cases/vala/5 target glib/meson.build +@@ -1,9 +1,5 @@ + project('valatest', 'vala', 'c') + +-if not meson.is_unity() +- add_global_arguments('-Werror', language : 'c') +-endif +- + valadeps = [dependency('glib-2.0', version : '>=2.32'), dependency('gobject-2.0')] + + e = executable('valaprog', 'GLib.Thread.vala', 'retcode.c', dependencies : valadeps) +diff --git a/unittests/linuxliketests.py b/unittests/linuxliketests.py +index 4fcf52e09..a02c99e8f 100644 +--- a/unittests/linuxliketests.py ++++ b/unittests/linuxliketests.py +@@ -298,43 +298,6 @@ class LinuxlikeTests(BasePlatformTests): + self.build() + self._run(self.mtest_command) + +- def test_vala_c_warnings(self): +- ''' +- Test that no warnings are emitted for C code generated by Vala. This +- can't be an ordinary test case because we need to inspect the compiler +- database. +- https://github.com/mesonbuild/meson/issues/864 +- ''' +- if not shutil.which('valac'): +- raise SkipTest('valac not installed.') +- testdir = os.path.join(self.vala_test_dir, '5 target glib') +- self.init(testdir) +- compdb = self.get_compdb() +- vala_command = None +- c_command = None +- for each in compdb: +- if each['file'].endswith('GLib.Thread.c'): +- vala_command = each['command'] +- elif each['file'].endswith('GLib.Thread.vala'): +- continue +- elif each['file'].endswith('retcode.c'): +- c_command = each['command'] +- else: +- m = 'Unknown file {!r} in vala_c_warnings test'.format(each['file']) +- raise AssertionError(m) +- self.assertIsNotNone(vala_command) +- self.assertIsNotNone(c_command) +- # -w suppresses all warnings, should be there in Vala but not in C +- self.assertIn(" -w ", vala_command) +- self.assertNotIn(" -w ", c_command) +- # -Wall enables all warnings, should be there in C but not in Vala +- self.assertNotIn(" -Wall ", vala_command) +- self.assertIn(" -Wall ", c_command) +- # -Werror converts warnings to errors, should always be there since it's +- # injected by an unrelated piece of code and the project has werror=true +- self.assertIn(" -Werror ", vala_command) +- self.assertIn(" -Werror ", c_command) +- + @skipIfNoPkgconfig + def test_qtdependency_pkgconfig_detection(self): + ''' +-- +2.41.0 + diff --git a/dev-build/meson/files/meson-1.2.1-python-path.patch b/dev-build/meson/files/meson-1.2.1-python-path.patch new file mode 100644 index 0000000000..d6151881f8 --- /dev/null +++ b/dev-build/meson/files/meson-1.2.1-python-path.patch @@ -0,0 +1,26 @@ +From 2b33c94e6315e9a397dd48a58a5becb0df3b8aba Mon Sep 17 00:00:00 2001 +From: James Le Cuirot <chewi@gentoo.org> +Date: Sat, 12 Aug 2023 09:56:44 +0100 +Subject: [PATCH 2/2] python module: Respect PATH when python is not given in + machine file + +We should only fall back to the Python interpreter running Meson itself +if `python3` is not found in the PATH. + +https://github.com/mesonbuild/meson/pull/12116 + +diff --git a/mesonbuild/modules/python.py b/mesonbuild/modules/python.py +index 5654e4231..2b2395a9b 100644 +--- a/mesonbuild/modules/python.py ++++ b/mesonbuild/modules/python.py +@@ -381,7 +381,9 @@ class PythonModule(ExtensionModule): + + def _find_installation_impl(self, state: 'ModuleState', display_name: str, name_or_path: str, required: bool) -> MaybePythonProg: + if not name_or_path: +- python = PythonExternalProgram('python3', mesonlib.python_command) ++ python = PythonExternalProgram('python3') ++ if not python.found(): ++ python = PythonExternalProgram('python3', mesonlib.python_command) + else: + tmp_python = ExternalProgram.from_entry(display_name, name_or_path) + python = PythonExternalProgram(display_name, ext_prog=tmp_python) diff --git a/dev-build/meson/files/meson-1.3.1-xtools-support.patch b/dev-build/meson/files/meson-1.3.1-xtools-support.patch new file mode 100644 index 0000000000..6e9e670ba8 --- /dev/null +++ b/dev-build/meson/files/meson-1.3.1-xtools-support.patch @@ -0,0 +1,26 @@ +linkers_detect: detect xtools (Apple ld64 derivative) + +xtools is in use on x86_64 and ppc based darwin Prefix installs. Pick +it up as a valid linker. + +Meson is the only thing known at this point to try and figure out what +linker is in use exactly, so instead of changing the linker (xtools), +just teach Meson about xtools. + +Author: Fabian Groffen <grobian@gentoo.org> +Bug: https://bugs.gentoo.org/868516 + +--- a/mesonbuild/linkers/detect.py ++++ b/mesonbuild/linkers/detect.py +@@ -185,6 +185,11 @@ + v = search_version(o) + + linker = linkers.LLVMDynamicLinker(compiler, for_machine, comp_class.LINKER_PREFIX, override, version=v) ++ # detect xtools first, bug #868516 ++ elif 'xtools-' in o.split('\n')[0]: ++ xtools = o.split(' ')[0] ++ v = xtools.split('-')[1] ++ linker = AppleDynamicLinker(compiler, for_machine, comp_class.LINKER_PREFIX, override, version=v) + # First might be apple clang, second is for real gcc, the third is icc. + # Note that "ld: unknown option: " sometimes instead is "ld: unknown options:". + elif e.endswith('(use -v to see invocation)\n') or 'macosx_version' in e or 'ld: unknown option' in e: diff --git a/dev-build/meson/meson-1.3.1.ebuild b/dev-build/meson/meson-1.3.1.ebuild new file mode 100644 index 0000000000..0f026f75c3 --- /dev/null +++ b/dev-build/meson/meson-1.3.1.ebuild @@ -0,0 +1,134 @@ +# Copyright 2016-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..12} pypy3 ) +DISTUTILS_USE_PEP517=setuptools + +if [[ ${PV} = *9999* ]]; then + EGIT_REPO_URI="https://github.com/mesonbuild/meson" + inherit git-r3 +else + inherit verify-sig + + MY_PV=${PV/_/} + MY_P=${P/_/} + S=${WORKDIR}/${MY_P} + + SRC_URI=" + https://github.com/mesonbuild/meson/releases/download/${MY_PV}/${MY_P}.tar.gz + verify-sig? ( https://github.com/mesonbuild/meson/releases/download/${MY_PV}/${MY_P}.tar.gz.asc ) + " + BDEPEND="verify-sig? ( sec-keys/openpgp-keys-jpakkane )" + VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/jpakkane.gpg + + if [[ ${PV} != *_rc* ]] ; then + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" + fi +fi + +inherit bash-completion-r1 distutils-r1 toolchain-funcs + +DESCRIPTION="Open source build system" +HOMEPAGE="https://mesonbuild.com/" + +LICENSE="Apache-2.0" +SLOT="0" +IUSE="test" +RESTRICT="!test? ( test )" + +DEPEND=" + test? ( + dev-libs/glib:2 + dev-libs/gobject-introspection + app-alternatives/ninja + dev-vcs/git + sys-libs/zlib[static-libs(+)] + virtual/pkgconfig + ) +" +RDEPEND=" + virtual/pkgconfig +" + +PATCHES=( + "${FILESDIR}"/${PN}-1.2.1-python-path.patch + "${FILESDIR}"/${PN}-1.3.1-xtools-support.patch + + # backport fix for hiding compiler warnings (such as Modern C) in vala and cython + "${FILESDIR}"/0001-ninja-backend-don-t-hide-all-compiler-warnings-for-t.patch + + # backport revert for broken rpath changes: https://github.com/mesonbuild/meson/pull/12672 + "${FILESDIR}"/0001-Revert-clike-Deduplicate-rpath-linker-flags.patch +) + +python_prepare_all() { + local disable_unittests=( + # ASAN and sandbox both want control over LD_PRELOAD + # https://bugs.gentoo.org/673016 + -e 's/test_generate_gir_with_address_sanitizer/_&/' + + # ASAN is unsupported on some targets + # https://bugs.gentoo.org/692822 + -e 's/test_pch_with_address_sanitizer/_&/' + ) + + sed -i "${disable_unittests[@]}" unittests/*.py || die + + # Broken due to python2 script created by python_wrapper_setup + rm -r "test cases/frameworks/1 boost" || die + + distutils-r1_python_prepare_all +} + +src_test() { + tc-export PKG_CONFIG + if ${PKG_CONFIG} --exists Qt5Core && ! ${PKG_CONFIG} --exists Qt5Gui; then + ewarn "Found Qt5Core but not Qt5Gui; skipping tests" + else + distutils-r1_src_test + fi +} + +python_test() { + ( + # remove unwanted python_wrapper_setup contents + # We actually do want to non-error if python2 is installed and tested. + remove="${T}/${EPYTHON}/bin:" + PATH=${PATH/${remove}/} + + # test_meson_installed + unset PYTHONDONTWRITEBYTECODE + + # https://bugs.gentoo.org/687792 + unset PKG_CONFIG + + # test_cross_file_system_paths + unset XDG_DATA_HOME + + # 'test cases/unit/73 summary' expects 80 columns + export COLUMNS=80 + + # If JAVA_HOME is not set, meson looks for javac in PATH. + # If javac is in /usr/bin, meson assumes /usr/include is a valid + # JDK include path. Setting JAVA_HOME works around this broken + # autodetection. If no JDK is installed, we should end up with an empty + # value in JAVA_HOME, and the tests should get skipped. + export JAVA_HOME=$(java-config -O 2>/dev/null) + + ${EPYTHON} -u run_tests.py + ) || die "Testing failed with ${EPYTHON}" +} + +python_install_all() { + distutils-r1_python_install_all + + insinto /usr/share/vim/vimfiles + doins -r data/syntax-highlighting/vim/{ftdetect,indent,syntax} + + insinto /usr/share/zsh/site-functions + doins data/shell-completions/zsh/_meson + + dobashcomp data/shell-completions/bash/meson +} diff --git a/dev-build/meson/metadata.xml b/dev-build/meson/metadata.xml new file mode 100644 index 0000000000..f4b485f0be --- /dev/null +++ b/dev-build/meson/metadata.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>base-system@gentoo.org</email> + </maintainer> + <maintainer type="person" proxied="yes"> + <email>eschwartz93@gmail.com</email> + <name>Eli Schwartz</name> + </maintainer> + <upstream> + <remote-id type="github">mesonbuild/meson</remote-id> + <remote-id type="pypi">meson</remote-id> + </upstream> +</pkgmetadata>