diff --git a/14001.patch b/14001.patch new file mode 100644 index 0000000..60f2cbe --- /dev/null +++ b/14001.patch @@ -0,0 +1,51 @@ +From 8679ea9525672d74030303be062d9545c92b5840 Mon Sep 17 00:00:00 2001 +From: solomoncyj +Date: Sun, 15 Dec 2024 21:00:42 +0800 +Subject: [PATCH 1/2] feat: set up dependencies generation for fedora + +--- + data/macros.meson | 5 +++++ + data/mesongenbuildreq.py | 16 ++++++++++++++++ + 2 files changed, 21 insertions(+) + create mode 100644 data/mesongenbuildreq.py + +Index: meson-1.7.0/data/macros.meson +=================================================================== +--- meson-1.7.0.orig/data/macros.meson ++++ meson-1.7.0/data/macros.meson +@@ -47,6 +47,11 @@ + %{?qemu_user_space_build: -t 10} \ + %{nil}} + ++%meson_buildrequires \ ++ %{shrink: python3 %{_rpmconfigdir}/mesongenbuildreq %{__meson} \ ++ %{nil}} ++ ++ + # Declarative buildsystem, requires RPM 4.20+ to work + # https://rpm-software-management.github.io/rpm/manual/buildsystem.html + %buildsystem_meson_conf() %meson %* +Index: meson-1.7.0/data/mesongenbuildreq.py +=================================================================== +--- /dev/null ++++ meson-1.7.0/data/mesongenbuildreq.py +@@ -0,0 +1,19 @@ ++import subprocess ++import json ++import sys ++deps_json = json.loads(subprocess.run([sys.argv[1], "introspect", "--dependencies", "meson.build"], capture_output=True).stdout) ++unsorted_deps = dict(zip([x['name'] for x in deps_json],[x['version'] for x in deps_json])) ++unsorted_deps.pop('', None) ++deps = {} ++for lib in list(unsorted_deps.keys()) : ++ deps[lib] = unsorted_deps[lib] ++for lib, versions in deps.items() : ++ # Prepare version constraint ++ version_str = ' ' + ' '.join(versions) if versions else '' ++ line = [] ++ for prefix in ["cmake", "pkgconfig", "qmake"] : ++ buildreq = (f"{prefix}({lib}){version_str}") ++ if buildreq.split('=')[-1] == '' and '=' in buildreq : ++ buildreq = buildreq.split('=')[0] ++ line.append(buildreq) ++ print(f"({' or '.join(line)})") diff --git a/meson.changes b/meson.changes index ffe9b9b..8895ab8 100644 --- a/meson.changes +++ b/meson.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Thu Jan 30 11:48:21 UTC 2025 - Dominique Leuenberger + +- Add 14001.patch: Add meson BuildRequires generator. + ------------------------------------------------------------------- Mon Jan 27 08:03:56 UTC 2025 - Dominique Leuenberger diff --git a/meson.spec b/meson.spec index fd740dc..01c9b7a 100644 --- a/meson.spec +++ b/meson.spec @@ -48,6 +48,8 @@ Source2: meson.keyring Patch0: meson-test-installed-bin.patch # PATCH-FIX-OPENSUSE give more time to testsuites that run emulated Patch1: extend-test-timeout-on-qemu-builds.patch +# PATCH-FEATURE-UPSTREAM -- based on https://github.com/mesonbuild/meson/pull/14001/commits +Patch2: 14001.patch BuildRequires: %{python_module base >= 3.7} BuildRequires: %{python_module setuptools} @@ -216,6 +218,9 @@ rm -r meson.py mesonbuild install -Dpm 0644 data/macros.meson \ %{buildroot}%{_rpmconfigdir}/macros.d/macros.meson +install -Dpm 0755 data//mesongenbuildreq.py \ + %{buildroot}%{_rpmconfigdir}/mesongenbuildreq + install -Dpm 0644 data/syntax-highlighting/vim/ftdetect/meson.vim \ -t %{buildroot}%{vim_data_dir}/site/ftdetect/ install -Dpm 0644 data/syntax-highlighting/vim/indent/meson.vim \ @@ -263,6 +268,7 @@ export PYTHONDONTWRITEBYTECODE=1 %dir %{_datadir}/polkit-1/actions/ %{_datadir}/polkit-1/actions/com.mesonbuild.install.policy %{_rpmconfigdir}/macros.d/macros.meson +%{_rpmconfigdir}/mesongenbuildreq %{_mandir}/man1/meson.1%{?ext_man} %files vim