forked from pool/meson
- Add 14001.patch: Add meson BuildRequires generator. OBS-URL: https://build.opensuse.org/request/show/1246700 OBS-URL: https://build.opensuse.org/package/show/devel:tools:building/meson?expand=0&rev=312
52 lines
1.9 KiB
Diff
52 lines
1.9 KiB
Diff
From 8679ea9525672d74030303be062d9545c92b5840 Mon Sep 17 00:00:00 2001
|
|
From: solomoncyj <solomoncyj@gmail.com>
|
|
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)})")
|