summaryrefslogtreecommitdiff
path: root/dev-util/meson
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2023-10-03 23:49:50 +0100
committerV3n3RiX <venerix@koprulu.sector>2023-10-03 23:49:50 +0100
commitc410d7a91a496a4fbbca686c80f7446305222d55 (patch)
tree8ba974498cd1061dd4e883a34bd5e9be93a95214 /dev-util/meson
parentc99c2410831577bef101e22948e954f85f56cba1 (diff)
gentoo auto-resync : 03:10:2023 - 23:49:49
Diffstat (limited to 'dev-util/meson')
-rw-r--r--dev-util/meson/Manifest8
-rw-r--r--dev-util/meson/files/1.2.2/0001-python-dependency-ensure-that-setuptools-doesn-t-inj.patch39
-rw-r--r--dev-util/meson/files/1.2.2/0002-python-module-stop-using-distutils-schemes-on-suffic.patch72
-rw-r--r--dev-util/meson/files/1.2.2/0003-python-module-refactor-pypy-detection-into-a-consist.patch36
-rw-r--r--dev-util/meson/files/1.2.2/0004-python-module-stop-using-distutils-link-to-libpython.patch72
-rw-r--r--dev-util/meson/files/1.2.2/0005-tests-fix-test-case-to-not-import-distutils-on-pytho.patch31
-rw-r--r--dev-util/meson/files/1.2.2/0006-mark-the-PyPI-metadata-as-supporting-python-3.12.patch25
-rw-r--r--dev-util/meson/files/1.2.2/0007-Revert-rust-apply-global-project-and-environment-C-a.patch141
-rw-r--r--dev-util/meson/meson-1.2.2-r1.ebuild122
9 files changed, 546 insertions, 0 deletions
diff --git a/dev-util/meson/Manifest b/dev-util/meson/Manifest
index 6ffd3c846f39..ee57c92e5bb6 100644
--- a/dev-util/meson/Manifest
+++ b/dev-util/meson/Manifest
@@ -1,3 +1,10 @@
+AUX 1.2.2/0001-python-dependency-ensure-that-setuptools-doesn-t-inj.patch 1547 BLAKE2B 4a61642466aa4ed4eee39fce2e796832b8325938f8ca15ea86a5d4f255dbe65be837ccbcf82ebb1a766d0ff5e7d8a69e93b7676f3af421bbc6907fec0e6ca231 SHA512 efdd2b0cb9fac0188b5c21cb3f98152d488c5299820a055031f2f75598bc0a8811988511091dfc7f99440b48defdf7e80a783cb7c374ccbba2a1e4d20a9065e3
+AUX 1.2.2/0002-python-module-stop-using-distutils-schemes-on-suffic.patch 2799 BLAKE2B 1806655c247c4f009b41062e5ae5c90cb7ea3150c311bbdbc768e37a1d6e4a4599568584c1cd00a06315159422150ea953cda2325e97aae761bf6c7fb8b4b89e SHA512 3654092cd93f54af7ec7ea89f396c0e947d00b6a626037b827be589926502f37ecf3795c01d514b97a9990d95c6b5050f1304ba1de2ae867a86b3ca73a163893
+AUX 1.2.2/0003-python-module-refactor-pypy-detection-into-a-consist.patch 1295 BLAKE2B 5422ac19ec0e44e2f773851895e0fee95d71a8c2c76b904779af04d36f1e59b457f7378a2898496b24873be2262cb24a17216d1d3bbd13ced864b55047ca16e6 SHA512 5c2e389dc313fb0ac7d2a717eeda602839c610120e1251b110201e75fdd2b1e65a1870229fb327c5947ccb5ebc9f6165bb301ab6c20468943ba91dc5e6a6b36c
+AUX 1.2.2/0004-python-module-stop-using-distutils-link-to-libpython.patch 3030 BLAKE2B f0e8e914799e2cc1ddd76ba70acbbaf3d6de113a8259c2910cd2fd2fe73d2c4f003314bffffd1db3ccb6338faa9a932bed43fa26b60b48d6dde89d6bbd3e2111 SHA512 97ebb84f2b76a0b08b1fafd4e7e537960d3f2c547eb03389b83f35f27f82135ae3fdba0002ae9871c0ca0b90afbea42ebb7e3a4947500d51af74536aa7acaa7e
+AUX 1.2.2/0005-tests-fix-test-case-to-not-import-distutils-on-pytho.patch 1313 BLAKE2B d1555c748afcc9a77252ce72e3fe95311584f8c33802a203cbe3b5777bda03a282afcf24a45cb8ec977a99bbcdad4538a124443f8ff837a2f47d3ee6da31a5c3 SHA512 3f25299c21ab967d860a3845a75d77fc032ee5b63ce6de14cec5fb21dbc826f27923409a02d685d73a9b04ac6ab74b1b92caab7f064087bc809fc93de9609a5e
+AUX 1.2.2/0006-mark-the-PyPI-metadata-as-supporting-python-3.12.patch 1092 BLAKE2B 21fd1a0edec2de670d58eab734bf5d86159c73df3016baa7c2c863a5a65b312129aaa90b26e9c64943fba5798ab87090076426f1feb4e67b590a4ed66fca8b6d SHA512 f0f56ce827ced24135d1b571cc0e28a26a21826f3a964ec59fecc16495d9fe69d7f104e53ab05c8555e6d4fc249f4c5c09e9404784aff65a0015c8ea863a74a4
+AUX 1.2.2/0007-Revert-rust-apply-global-project-and-environment-C-a.patch 4822 BLAKE2B 4746bbb6ddc587df50f1fdff039115aab0715dac5413af495fc4ccf0dc98f4d87e5eb79349ad9b26a365794ea0532f8fdd5bdb3a13257417038f7127a64c3b0b SHA512 03394dab9ca6e777cc7d41cc339da6857bf7728b8c503522948a3c67c257353063159f2bf12d652ace90761d8bae3edeaac5b1c6b125ff4781b6a99fe1a75d79
AUX meson-0.63-xtools-support.patch 1136 BLAKE2B 7600b29f1c4accbf33ca587b848566d4f9d30e26695b125aa895ec8a48ee0f7355c7692845c0d9bbb59eb452fc0cd8b634bd2a90d8918efa0b65ef4759b56d8e SHA512 725b193afe229690b6ef0d7a2a832695b7c09ca3376512097baec597a84df6e8e18791e9f29221e8a4a3537ad2371672e74041aa05ec6a218ed9b6218ea2ab61
AUX meson-1.2.1-llvm-17.patch 1658 BLAKE2B d111537d4b9befbb848a7da9ffc72f5cebf8caa80f2ab95f5dc3caa30481f3f055dd415e101438cb2f2b4ca8650b3c32a99dfde7029096e05d3cf9bb9ddc1828 SHA512 bc6b2bc1d60343502bf43beb655642bde3d04c10b7c068dba4bae1acec09e7907a9c09ceeacd2e82b35434c2e4f6090cc7df96130650787d4057a46d58b24ea3
AUX meson-1.2.1-python-path.patch 1233 BLAKE2B 0e40fae6cbb9a66929d7f8d5d4e73f6e0105730722ec8db0236fc5376ad58fb4ef961531bf459d69eb4521efa3d26d74332a97fa0012b6107a49b20a86667c33 SHA512 0f072ff2eb310c9884db2fa255a6b7634d69e28f3a1e9ec3782fe63aeec1b544ff0208c5c087bb29ce08dc28a998482a5d3854bcaac372e958b483830d3c8c08
@@ -7,6 +14,7 @@ DIST meson-1.2.2.tar.gz 2190455 BLAKE2B b355c8e5ab7508fca51dbe5c95eea68f91b995a6
EBUILD meson-1.1.1.ebuild 2938 BLAKE2B 1896e10e1d442716eaf50b776bdb52c6d438c9a3a6f2e3b5125f4de2f5bd01932dbd12a6e69016032defafd7a62068f810090342b766a8b14928bc38f3e72946 SHA512 3038284a26a397055050c8236b6c13f7a7b01ce94faa5f299dbf180366aed166bc3a22443febb5c9c32e966f789dec63b8e5ea293a976c871d86647afe529249
EBUILD meson-1.2.1-r1.ebuild 2929 BLAKE2B 7aa73d3b5686c6bff2d58e3509c7b95e2fc24ceb80b0ea537d9fd8a15d32cb5a831e2c1dd15a4166016f3b01abbdaec2b8714e1520906370d676b98e013be69b SHA512 cf4d5fdb53cfce0bc3d6d8444144caea4d1f036d3ecb51c097b069b381c9fb34bec5096633cc55f315a0ff23a1e58177de86f88ffe3036eb97065233d9086dc4
EBUILD meson-1.2.1-r2.ebuild 2971 BLAKE2B a5bb18feae89e623c6631edb1abc93e0a1bd90465fa44f1bdccebf8fdb0007c064ce20a1d2dbbb3579be98170d4acec6367efb851db6207068f6bfd21c9b4a59 SHA512 9c43bf123f882a1678c27485d91f5e5be441235886ba85567bc5b955703c12f6eeb366f303821d370011475ac22a6157ec7caf7cccc5dba2c2012ab43f657b3b
+EBUILD meson-1.2.2-r1.ebuild 2965 BLAKE2B bc2763679dd6434347c4ee75a8ebfe25afe7f603ef6ab2c0225d8ac38689c55e3f6c1a16ff70a79c11b9d62c7d9fd3f9f3df32c1ac4a2cedbb2f38c712bdd426 SHA512 4333232907351921b5ca0dbc5c1e91273c5dc79d9a08e77e6273b3cfe1ff99f51419b1c62d3392b5bc5e96b7e2c00aec3fd4b6863ecea1dade0e473fa50d4981
EBUILD meson-1.2.2.ebuild 2944 BLAKE2B 230bbf1cd033c90abadb8ba0301087a49a5c0c2f5374758d094a7c39e050041d9a9e1c2f4152f8de569b0dae0a3b1701f291d0eba584dc9b0fba13609da4542b SHA512 3cd303a67f560f260fad17983a6398594abf5d0eb3c1767d011bcbd73b394c3186b34ce5c4cb61cd8a7cec1264b29b149e00e343fc87beb4a4e0e0bb1d4c6590
EBUILD meson-9999.ebuild 2886 BLAKE2B 3cc344e676d5c260f20942469e01da9bd6be5578cde92be8c91d55b80d3b18c018e16497b6f1015427fc65d712d5520db598d35f53e2035911718cc8ed27c588 SHA512 22ccf7c0a146e90e69eea1a821fdeeed0f240b6b6e071782a877ffad04038dae09cfa1370fb438036cd3cb04dd0889a477c1cdfe94f9e578cdec81a85a6036c2
MISC metadata.xml 348 BLAKE2B 101a8ed796dd4fe7bc790c1f4d1f693948c80ff57ceae9500d8034b007cb067e3e0277f1f6423d92b847da07a96a4a4bf405a2e0d0dfa8c07846aac195c26012 SHA512 8ffe88b93e7f0bbfa4fbd9b3b7e318b2df1da076b0e7ee47f4f520c44207f2f507efc7b1cbc9b6f8d432938a805e4ceb922a6f477836f64ea8a12d9e0d361740
diff --git a/dev-util/meson/files/1.2.2/0001-python-dependency-ensure-that-setuptools-doesn-t-inj.patch b/dev-util/meson/files/1.2.2/0001-python-dependency-ensure-that-setuptools-doesn-t-inj.patch
new file mode 100644
index 000000000000..c552831cfd6b
--- /dev/null
+++ b/dev-util/meson/files/1.2.2/0001-python-dependency-ensure-that-setuptools-doesn-t-inj.patch
@@ -0,0 +1,39 @@
+From 5f96e35b873d6230970fd63ba2e706bbd3f4e26f Mon Sep 17 00:00:00 2001
+From: Eli Schwartz <eschwartz93@gmail.com>
+Date: Fri, 8 Sep 2023 16:54:48 -0400
+Subject: [PATCH 1/7] python dependency: ensure that setuptools doesn't inject
+ itself into distutils
+
+We do not use setuptools for anything, and only lightly use distutils.
+Unpredictable issues can occur due to setuptools monkey-patching, which
+interferes with our intended use. Tell setuptools to simply never get
+involved.
+
+Note: while it's otherwise possible to check if the probe is run using
+sys.executable and avoid forking, setuptools unconditionally injects
+itself at startup in a way that requires subprocess isolation to
+disable.
+
+(cherry picked from commit 9f610ad5b72ea91de2d7aeb6f3266d0a7477062e)
+---
+ mesonbuild/dependencies/python.py | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/mesonbuild/dependencies/python.py b/mesonbuild/dependencies/python.py
+index 160772888..f04494674 100644
+--- a/mesonbuild/dependencies/python.py
++++ b/mesonbuild/dependencies/python.py
+@@ -113,7 +113,9 @@ class BasicPythonExternalProgram(ExternalProgram):
+
+ with importlib.resources.path('mesonbuild.scripts', 'python_info.py') as f:
+ cmd = self.get_command() + [str(f)]
+- p, stdout, stderr = mesonlib.Popen_safe(cmd)
++ env = os.environ.copy()
++ env['SETUPTOOLS_USE_DISTUTILS'] = 'stdlib'
++ p, stdout, stderr = mesonlib.Popen_safe(cmd, env=env)
+
+ try:
+ info = json.loads(stdout)
+--
+2.42.0
+
diff --git a/dev-util/meson/files/1.2.2/0002-python-module-stop-using-distutils-schemes-on-suffic.patch b/dev-util/meson/files/1.2.2/0002-python-module-stop-using-distutils-schemes-on-suffic.patch
new file mode 100644
index 000000000000..51c13d6926ff
--- /dev/null
+++ b/dev-util/meson/files/1.2.2/0002-python-module-stop-using-distutils-schemes-on-suffic.patch
@@ -0,0 +1,72 @@
+From cb4e62a8c55118988babac8b8254e0af1dc9698b Mon Sep 17 00:00:00 2001
+From: Eli Schwartz <eschwartz@archlinux.org>
+Date: Mon, 21 Nov 2022 20:47:14 -0500
+Subject: [PATCH 2/7] python module: stop using distutils schemes on
+ sufficiently new Debian
+
+Since 3.10.3, Debian finally started patching sysconfig with custom
+paths, instead of just distutils. This means we can now go use that
+instead. It reduces our reliance on the deprecated distutils module.
+
+Partial fix for #7702
+
+(cherry picked from commit 40f897fa92f7d3cc43788d3000733310ce77cf0c)
+---
+ mesonbuild/scripts/python_info.py | 32 +++++++++++++++++++++++--------
+ 1 file changed, 24 insertions(+), 8 deletions(-)
+
+diff --git a/mesonbuild/scripts/python_info.py b/mesonbuild/scripts/python_info.py
+index 9c3a0791a..65597b121 100755
+--- a/mesonbuild/scripts/python_info.py
++++ b/mesonbuild/scripts/python_info.py
+@@ -13,7 +13,6 @@ if sys.path[0].endswith('scripts'):
+ del sys.path[0]
+
+ import json, os, sysconfig
+-import distutils.command.install
+
+ def get_distutils_paths(scheme=None, prefix=None):
+ import distutils.dist
+@@ -37,15 +36,32 @@ def get_distutils_paths(scheme=None, prefix=None):
+ # default scheme to a custom one pointing to /usr/local and replacing
+ # site-packages with dist-packages.
+ # See https://github.com/mesonbuild/meson/issues/8739.
+-# XXX: We should be using sysconfig, but Debian only patches distutils.
++#
++# We should be using sysconfig, but before 3.10.3, Debian only patches distutils.
++# So we may end up falling back.
+
+-if 'deb_system' in distutils.command.install.INSTALL_SCHEMES:
+- paths = get_distutils_paths(scheme='deb_system')
+- install_paths = get_distutils_paths(scheme='deb_system', prefix='')
+-else:
+- paths = sysconfig.get_paths()
++def get_install_paths():
++ if sys.version_info >= (3, 10):
++ scheme = sysconfig.get_default_scheme()
++ else:
++ scheme = sysconfig._get_default_scheme()
++
++ if sys.version_info >= (3, 10, 3):
++ if 'deb_system' in sysconfig.get_scheme_names():
++ scheme = 'deb_system'
++ else:
++ import distutils.command.install
++ if 'deb_system' in distutils.command.install.INSTALL_SCHEMES:
++ paths = get_distutils_paths(scheme='deb_system')
++ install_paths = get_distutils_paths(scheme='deb_system', prefix='')
++ return paths, install_paths
++
++ paths = sysconfig.get_paths(scheme=scheme)
+ empty_vars = {'base': '', 'platbase': '', 'installed_base': ''}
+- install_paths = sysconfig.get_paths(vars=empty_vars)
++ install_paths = sysconfig.get_paths(scheme=scheme, vars=empty_vars)
++ return paths, install_paths
++
++paths, install_paths = get_install_paths()
+
+ def links_against_libpython():
+ from distutils.core import Distribution, Extension
+--
+2.42.0
+
diff --git a/dev-util/meson/files/1.2.2/0003-python-module-refactor-pypy-detection-into-a-consist.patch b/dev-util/meson/files/1.2.2/0003-python-module-refactor-pypy-detection-into-a-consist.patch
new file mode 100644
index 000000000000..484e967c8328
--- /dev/null
+++ b/dev-util/meson/files/1.2.2/0003-python-module-refactor-pypy-detection-into-a-consist.patch
@@ -0,0 +1,36 @@
+From c179c18765514d5c37737dec996b4c91cb31477f Mon Sep 17 00:00:00 2001
+From: Eli Schwartz <eschwartz93@gmail.com>
+Date: Mon, 2 Oct 2023 16:40:15 -0400
+Subject: [PATCH 3/7] python module: refactor pypy detection into a consistent
+ variable
+
+(cherry picked from commit 3d3a10ef022284c8377bd9f8e1b1adec73c50d95)
+---
+ mesonbuild/scripts/python_info.py | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/mesonbuild/scripts/python_info.py b/mesonbuild/scripts/python_info.py
+index 65597b121..d17b3a376 100755
+--- a/mesonbuild/scripts/python_info.py
++++ b/mesonbuild/scripts/python_info.py
+@@ -72,6 +72,8 @@ def links_against_libpython():
+ variables = sysconfig.get_config_vars()
+ variables.update({'base_prefix': getattr(sys, 'base_prefix', sys.prefix)})
+
++is_pypy = '__pypy__' in sys.builtin_module_names
++
+ if sys.version_info < (3, 0):
+ suffix = variables.get('SO')
+ elif sys.version_info < (3, 8, 7):
+@@ -88,7 +90,7 @@ print(json.dumps({
+ 'install_paths': install_paths,
+ 'version': sysconfig.get_python_version(),
+ 'platform': sysconfig.get_platform(),
+- 'is_pypy': '__pypy__' in sys.builtin_module_names,
++ 'is_pypy': is_pypy,
+ 'is_venv': sys.prefix != variables['base_prefix'],
+ 'link_libpython': links_against_libpython(),
+ 'suffix': suffix,
+--
+2.42.0
+
diff --git a/dev-util/meson/files/1.2.2/0004-python-module-stop-using-distutils-link-to-libpython.patch b/dev-util/meson/files/1.2.2/0004-python-module-stop-using-distutils-link-to-libpython.patch
new file mode 100644
index 000000000000..2ebdbcc2b30f
--- /dev/null
+++ b/dev-util/meson/files/1.2.2/0004-python-module-stop-using-distutils-link-to-libpython.patch
@@ -0,0 +1,72 @@
+From 3c493dae4bd8410bfb09e8f654605f65e15d8e66 Mon Sep 17 00:00:00 2001
+From: Eli Schwartz <eschwartz@archlinux.org>
+Date: Tue, 22 Nov 2022 22:56:10 -0500
+Subject: [PATCH 4/7] python module: stop using distutils "link to libpython"
+ probe on recent python
+
+On python >=3.8, this information is expected to be encoded in the
+sysconfig vars.
+
+In distutils, it is always necessary to link to libpython on Windows;
+for posix platforms, it depends on the value of LIBPYTHON (which is the
+library to link to, possibly the empty string) as generated by
+configure.ac and embedded into python.pc and python-config.sh, and then
+coded a second time in the distutils python sources.
+
+There are a couple of caveats which have ramifications for Cygwin and
+Android:
+
+- python.pc and python-config.sh disagree with distutils when python is
+ not built shared. In that case, the former act the same as a shared
+ build, while the latter *never* links to libpython
+
+- python.pc disagrees with python-config.sh and distutils when python is
+ built shared. The former never links to libpython, while the latter do
+
+The disagreement is resolved in favor of distutils' behavior in all
+cases, and python.pc is correct for our purposes on python 3.12; see:
+https://github.com/python/cpython/pull/100356
+https://github.com/python/cpython/pull/100967
+
+Although it was not backported to older releases, Cygwin at least has
+always patched in a fix for python.pc, which behavior is now declared
+canonical. We can reliably assume it is always correct.
+
+This is the other half of the fix for #7702
+
+(cherry picked from commit 2d6c10908b3771216e7ce086af1ee4dc77e698c2)
+---
+ mesonbuild/scripts/python_info.py | 17 +++++++++++++----
+ 1 file changed, 13 insertions(+), 4 deletions(-)
+
+diff --git a/mesonbuild/scripts/python_info.py b/mesonbuild/scripts/python_info.py
+index d17b3a376..a3f3d3535 100755
+--- a/mesonbuild/scripts/python_info.py
++++ b/mesonbuild/scripts/python_info.py
+@@ -64,10 +64,19 @@ def get_install_paths():
+ paths, install_paths = get_install_paths()
+
+ def links_against_libpython():
+- from distutils.core import Distribution, Extension
+- cmd = Distribution().get_command_obj('build_ext')
+- cmd.ensure_finalized()
+- return bool(cmd.get_libraries(Extension('dummy', [])))
++ # on versions supporting python-embed.pc, this is the non-embed lib
++ #
++ # PyPy is not yet up to 3.12 and work is still pending to export the
++ # relevant information (it doesn't automatically provide arbitrary
++ # Makefile vars)
++ if sys.version_info >= (3, 8) and not is_pypy:
++ variables = sysconfig.get_config_vars()
++ return bool(variables.get('LIBPYTHON', 'yes'))
++ else:
++ from distutils.core import Distribution, Extension
++ cmd = Distribution().get_command_obj('build_ext')
++ cmd.ensure_finalized()
++ return bool(cmd.get_libraries(Extension('dummy', [])))
+
+ variables = sysconfig.get_config_vars()
+ variables.update({'base_prefix': getattr(sys, 'base_prefix', sys.prefix)})
+--
+2.42.0
+
diff --git a/dev-util/meson/files/1.2.2/0005-tests-fix-test-case-to-not-import-distutils-on-pytho.patch b/dev-util/meson/files/1.2.2/0005-tests-fix-test-case-to-not-import-distutils-on-pytho.patch
new file mode 100644
index 000000000000..078e9035e228
--- /dev/null
+++ b/dev-util/meson/files/1.2.2/0005-tests-fix-test-case-to-not-import-distutils-on-pytho.patch
@@ -0,0 +1,31 @@
+From ae44d9a379faca6274db819be44ffca3e0159f56 Mon Sep 17 00:00:00 2001
+From: Eli Schwartz <eschwartz93@gmail.com>
+Date: Mon, 2 Oct 2023 23:51:57 -0400
+Subject: [PATCH 5/7] tests: fix test case to not import distutils on python
+ 3.12
+
+Testing the correctness of the `modules: ` kwarg can be done with other
+guaranteed stdlib modules that are even more guaranteed since they
+didn't get deprecated for removal.
+
+(cherry picked from commit ecf261330c498783760cbde00b613b7469f8d3c0)
+---
+ test cases/python/5 modules kwarg/meson.build | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/test cases/python/5 modules kwarg/meson.build b/test cases/python/5 modules kwarg/meson.build
+index 9751adaab..41a9a4fae 100644
+--- a/test cases/python/5 modules kwarg/meson.build
++++ b/test cases/python/5 modules kwarg/meson.build
+@@ -1,7 +1,7 @@
+ project('python kwarg')
+
+ py = import('python')
+-prog_python = py.find_installation('python3', modules : ['distutils'])
++prog_python = py.find_installation('python3', modules : ['os', 'sys', 're'])
+ assert(prog_python.found() == true, 'python not found when should be')
+ prog_python = py.find_installation('python3', modules : ['thisbetternotexistmod'], required : false)
+ assert(prog_python.found() == false, 'python not found but reported as found')
+--
+2.42.0
+
diff --git a/dev-util/meson/files/1.2.2/0006-mark-the-PyPI-metadata-as-supporting-python-3.12.patch b/dev-util/meson/files/1.2.2/0006-mark-the-PyPI-metadata-as-supporting-python-3.12.patch
new file mode 100644
index 000000000000..0e1f167b32fb
--- /dev/null
+++ b/dev-util/meson/files/1.2.2/0006-mark-the-PyPI-metadata-as-supporting-python-3.12.patch
@@ -0,0 +1,25 @@
+From d9abf4a97dc182b3c57204a792000d620f9f941e Mon Sep 17 00:00:00 2001
+From: Eli Schwartz <eschwartz93@gmail.com>
+Date: Tue, 3 Oct 2023 00:22:25 -0400
+Subject: [PATCH 6/7] mark the PyPI metadata as supporting python 3.12
+
+meson itself runs okay on 3.12, and the last issue for *probing* against
+3.12 is solved. Tests pass here locally.
+
+(cherry picked from commit 880f21281ee359e01de659fe7d45549d19e6b84d)
+---
+ setup.cfg | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/setup.cfg b/setup.cfg
+index dfaba76dd..2f2962eed 100644
+--- a/setup.cfg
++++ b/setup.cfg
+@@ -30,6 +30,7 @@ classifiers =
+ Programming Language :: Python :: 3.9
+ Programming Language :: Python :: 3.10
+ Programming Language :: Python :: 3.11
++ Programming Language :: Python :: 3.12
+ Topic :: Software Development :: Build Tools
+ long_description = Meson is a cross-platform build system designed to be both as fast and as user friendly as possible. It supports many languages and compilers, including GCC, Clang, PGI, Intel, and Visual Studio. Its build definitions are written in a simple non-Turing complete DSL.
+
diff --git a/dev-util/meson/files/1.2.2/0007-Revert-rust-apply-global-project-and-environment-C-a.patch b/dev-util/meson/files/1.2.2/0007-Revert-rust-apply-global-project-and-environment-C-a.patch
new file mode 100644
index 000000000000..4ada76ae909b
--- /dev/null
+++ b/dev-util/meson/files/1.2.2/0007-Revert-rust-apply-global-project-and-environment-C-a.patch
@@ -0,0 +1,141 @@
+From 9d1d4ae746ce39d1916dfe71fd6dcc5fce27e828 Mon Sep 17 00:00:00 2001
+From: Sam James <sam@gentoo.org>
+Date: Tue, 3 Oct 2023 16:52:56 +0100
+Subject: [PATCH 7/7] Revert "rust: apply global, project, and environment C
+ args to bindgen"
+
+This reverts commit 36210f64f22dc10d324db76bb1a7988c9cd5b14e.
+
+This ended up not doing what was intended - see https://github.com/mesonbuild/meson/issues/12065#issuecomment-1742263677.
+
+Bug: https://bugs.gentoo.org/914989
+Bug: https://bugs.gentoo.org/915014
+Signed-off-by: Sam James <sam@gentoo.org>
+---
+ mesonbuild/modules/rust.py | 6 ------
+ test cases/rust/12 bindgen/meson.build | 18 ------------------
+ .../rust/12 bindgen/src/global-project.h | 10 ----------
+ test cases/rust/12 bindgen/src/global.c | 5 -----
+ test cases/rust/12 bindgen/src/global.rs | 14 --------------
+ test cases/rust/12 bindgen/test.json | 5 +----
+ 6 files changed, 1 insertion(+), 57 deletions(-)
+ delete mode 100644 test cases/rust/12 bindgen/src/global-project.h
+ delete mode 100644 test cases/rust/12 bindgen/src/global.c
+ delete mode 100644 test cases/rust/12 bindgen/src/global.rs
+
+diff --git a/mesonbuild/modules/rust.py b/mesonbuild/modules/rust.py
+index e6e5c633f..3514412e6 100644
+--- a/mesonbuild/modules/rust.py
++++ b/mesonbuild/modules/rust.py
+@@ -232,12 +232,6 @@ class RustModule(ExtensionModule):
+ elif isinstance(s, CustomTarget):
+ depends.append(s)
+
+- clang_args.extend(state.global_args.get('c', []))
+- clang_args.extend(state.project_args.get('c', []))
+- cargs = state.get_option('args', state.subproject, lang='c')
+- assert isinstance(cargs, list), 'for mypy'
+- clang_args.extend(cargs)
+-
+ if self._bindgen_bin is None:
+ self._bindgen_bin = state.find_program('bindgen')
+
+diff --git a/test cases/rust/12 bindgen/meson.build b/test cases/rust/12 bindgen/meson.build
+index e7cb5f3db..c05cc0631 100644
+--- a/test cases/rust/12 bindgen/meson.build
++++ b/test cases/rust/12 bindgen/meson.build
+@@ -8,9 +8,6 @@ if not prog_bindgen.found()
+ error('MESON_SKIP_TEST bindgen not found')
+ endif
+
+-add_project_arguments('-DPROJECT_ARG', language : 'c')
+-add_global_arguments('-DGLOBAL_ARG', language : 'c')
+-
+ # This seems to happen on windows when libclang.dll is not in path or is not
+ # valid. We must try to process a header file for this to work.
+ #
+@@ -84,18 +81,3 @@ test('generated header', rust_bin2)
+
+ subdir('sub')
+ subdir('dependencies')
+-
+-gp = rust.bindgen(
+- input : 'src/global-project.h',
+- output : 'global-project.rs',
+-)
+-
+-gp_lib = static_library('gp_lib', 'src/global.c')
+-
+-gp_exe = executable(
+- 'gp_exe',
+- structured_sources(['src/global.rs', gp]),
+- link_with : gp_lib,
+-)
+-
+-test('global and project arguments', gp_exe)
+diff --git a/test cases/rust/12 bindgen/src/global-project.h b/test cases/rust/12 bindgen/src/global-project.h
+deleted file mode 100644
+index 6084e8ed6..000000000
+--- a/test cases/rust/12 bindgen/src/global-project.h
++++ /dev/null
+@@ -1,10 +0,0 @@
+-#ifndef GLOBAL_ARG
+-char * success(void);
+-#endif
+-#ifndef PROJECT_ARG
+-char * success(void);
+-#endif
+-#ifndef CMD_ARG
+-char * success(void);
+-#endif
+-int success(void);
+diff --git a/test cases/rust/12 bindgen/src/global.c b/test cases/rust/12 bindgen/src/global.c
+deleted file mode 100644
+index 10f6676f7..000000000
+--- a/test cases/rust/12 bindgen/src/global.c
++++ /dev/null
+@@ -1,5 +0,0 @@
+-#include "src/global-project.h"
+-
+-int success(void) {
+- return 0;
+-}
+diff --git a/test cases/rust/12 bindgen/src/global.rs b/test cases/rust/12 bindgen/src/global.rs
+deleted file mode 100644
+index 4b70b1ecc..000000000
+--- a/test cases/rust/12 bindgen/src/global.rs
++++ /dev/null
+@@ -1,14 +0,0 @@
+-// SPDX-license-identifer: Apache-2.0
+-// Copyright © 2023 Intel Corporation
+-
+-#![allow(non_upper_case_globals)]
+-#![allow(non_camel_case_types)]
+-#![allow(non_snake_case)]
+-
+-include!("global-project.rs");
+-
+-fn main() {
+- unsafe {
+- std::process::exit(success());
+- };
+-}
+diff --git a/test cases/rust/12 bindgen/test.json b/test cases/rust/12 bindgen/test.json
+index b3a758562..f94ee85f9 100644
+--- a/test cases/rust/12 bindgen/test.json
++++ b/test cases/rust/12 bindgen/test.json
+@@ -1,10 +1,7 @@
+ {
+- "env": {
+- "CFLAGS": "-DCMD_ARG"
+- },
+ "stdout": [
+ {
+- "line": "test cases/rust/12 bindgen/meson.build:30: WARNING: Project targets '>= 0.63' but uses feature introduced in '1.0.0': \"rust.bindgen\" keyword argument \"include_directories\" of type array[str]."
++ "line": "test cases/rust/12 bindgen/meson.build:27: WARNING: Project targets '>= 0.63' but uses feature introduced in '1.0.0': \"rust.bindgen\" keyword argument \"include_directories\" of type array[str]."
+ }
+ ]
+ }
+--
+2.42.0
+
diff --git a/dev-util/meson/meson-1.2.2-r1.ebuild b/dev-util/meson/meson-1.2.2-r1.ebuild
new file mode 100644
index 000000000000..300aa26142b1
--- /dev/null
+++ b/dev-util/meson/meson-1.2.2-r1.ebuild
@@ -0,0 +1,122 @@
+# Copyright 2016-2023 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 pypi
+
+ MY_P=${P/_/}
+ S=${WORKDIR}/${MY_P}
+
+ 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
+ dev-util/ninja
+ dev-vcs/git
+ sys-libs/zlib[static-libs(+)]
+ virtual/pkgconfig
+ )
+"
+RDEPEND="
+ virtual/pkgconfig
+"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-1.2.1-python-path.patch
+ "${FILESDIR}"/1.2.2
+)
+
+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/_&/'
+
+ # https://github.com/mesonbuild/meson/issues/7203
+ -e 's/test_templates/_&/'
+
+ # Broken due to python2 wrapper
+ -e 's/test_python_module/_&/'
+ )
+
+ 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() {
+ (
+ # 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)
+
+ # Call python3 instead of EPYTHON to satisfy test_meson_uninstalled.
+ python3 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
+}