From 7ff498f234bbfe1ae4bdc55e616ac8ce01342874 Mon Sep 17 00:00:00 2001 From: Funda Wang Date: Fri, 10 Mar 2023 09:12:34 +0800 Subject: [PATCH] 24 --- ...gs-to-allow-the-new-implementation-u.patch | 26 --- ...conditionally-building-with-frame-po.patch | 24 --- 09a496c.patch | 45 ----- 1869f5a.patch | 39 ----- 3dec94d.patch | 55 ------ 6a5931b.patch | 41 ----- b5c64f5.patch | 48 ------ d9aa58b.patch | 162 ------------------ rust-packaging-24.tar.gz | Bin 0 -> 6171 bytes rust-packaging.spec | 126 ++++---------- rust2rpm-v23.tar.gz | Bin 50114 -> 0 bytes 11 files changed, 38 insertions(+), 528 deletions(-) delete mode 100644 0001-Adjust-build-flags-to-allow-the-new-implementation-u.patch delete mode 100644 0002-Add-support-for-conditionally-building-with-frame-po.patch delete mode 100644 09a496c.patch delete mode 100644 1869f5a.patch delete mode 100644 3dec94d.patch delete mode 100644 6a5931b.patch delete mode 100644 b5c64f5.patch delete mode 100644 d9aa58b.patch create mode 100644 rust-packaging-24.tar.gz delete mode 100644 rust2rpm-v23.tar.gz diff --git a/0001-Adjust-build-flags-to-allow-the-new-implementation-u.patch b/0001-Adjust-build-flags-to-allow-the-new-implementation-u.patch deleted file mode 100644 index b907252..0000000 --- a/0001-Adjust-build-flags-to-allow-the-new-implementation-u.patch +++ /dev/null @@ -1,26 +0,0 @@ -From cbf80996c70475088be9613778ea7cb282e3a8c3 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= -Date: Mon, 8 Aug 2022 17:43:46 +0200 -Subject: [PATCH] Adjust build flags to allow the new implementation using - --package-metadata - -C.f. https://src.fedoraproject.org/rpms/package-notes/pull-request/4. -This version should be compatible with both the old and new definitions -in package-notes-srpm-macros. ---- - data/macros.rust | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/data/macros.rust b/data/macros.rust -index efa46a3212..b8ea742ec0 100644 ---- a/data/macros.rust -+++ b/data/macros.rust -@@ -12,7 +12,7 @@ - -Ccodegen-units=%rustflags_codegen_units - -Clink-arg=-Wl,-z,relro - -Clink-arg=-Wl,-z,now -- %{?_package_note_file:-Clink-arg=-Wl,-dT,%{_package_note_file}} -+ %[0%{?_package_note_status} ? "-Clink-arg=%_package_note_flags" : ""] - --cap-lints=warn - } - diff --git a/0002-Add-support-for-conditionally-building-with-frame-po.patch b/0002-Add-support-for-conditionally-building-with-frame-po.patch deleted file mode 100644 index 4d5cbb2..0000000 --- a/0002-Add-support-for-conditionally-building-with-frame-po.patch +++ /dev/null @@ -1,24 +0,0 @@ -From c28d5efbbf674b0abd3a000cb67363969541ab05 Mon Sep 17 00:00:00 2001 -From: Fabio Valentini -Date: Thu, 26 Jan 2023 23:22:23 +0100 -Subject: [PATCH] Add support for conditionally building with frame pointers - ---- - data/macros.rust | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/data/macros.rust b/data/macros.rust -index b8ea742..e573772 100644 ---- a/data/macros.rust -+++ b/data/macros.rust -@@ -10,6 +10,7 @@ - -Copt-level=%rustflags_opt_level - -Cdebuginfo=%rustflags_debuginfo - -Ccodegen-units=%rustflags_codegen_units -+ %{expr:0%{?_include_frame_pointers} && ("%{_arch}" != "ppc64le" && "%{_arch}" != "s390x" && "%{_arch}" != "i386") ? "-Cforce-frame-pointers=yes" : ""} - -Clink-arg=-Wl,-z,relro - -Clink-arg=-Wl,-z,now - %[0%{?_package_note_status} ? "-Clink-arg=%_package_note_flags" : ""] --- -2.39.1 - diff --git a/09a496c.patch b/09a496c.patch deleted file mode 100644 index f4872ef..0000000 --- a/09a496c.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 09a496c65e5f91767336daddd0c9aa13d22160d5 Mon Sep 17 00:00:00 2001 -From: Fabio Valentini -Date: Oct 31 2022 14:26:11 +0000 -Subject: rust2rpm: fix crash in sorting of binary targets - - -The "sort" Jinja2 filter doesn't work because the bins are objects, -not strings. This commit changes the sorting to happen correctly, -before binary targets are passed to the template for rendering. - ---- - -diff --git a/rust2rpm/generator.py b/rust2rpm/generator.py -index e01c1b5..76875f7 100644 ---- a/rust2rpm/generator.py -+++ b/rust2rpm/generator.py -@@ -1,3 +1,4 @@ -+import operator - import time - - import jinja2 -@@ -52,6 +53,9 @@ def spec_file_render( - is_bin = len(bins) > 0 - is_lib = len(libs) > 0 - -+ # sort binaries by name for consistent ordering -+ bins.sort(key=operator.attrgetter("name")) -+ - kwargs = { - "generator_version": __version__, - "target": args.target, -diff --git a/rust2rpm/templates/main.spec b/rust2rpm/templates/main.spec -index b39df3b..13b9bfd 100644 ---- a/rust2rpm/templates/main.spec -+++ b/rust2rpm/templates/main.spec -@@ -124,7 +124,7 @@ Requires: {{ req }} - {% for file in doc_files %} - %doc {{ file }} - {% endfor %} -- {% for bin in bins | sort %} -+ {% for bin in bins %} - %{_bindir}/{{ bin.name }} - {% endfor %} - {% if not only_main %} - diff --git a/1869f5a.patch b/1869f5a.patch deleted file mode 100644 index 89ce690..0000000 --- a/1869f5a.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 1869f5a7e078491263d4260883832e081c207b85 Mon Sep 17 00:00:00 2001 -From: Michel Alexandre Salim -Date: Oct 31 2022 17:53:38 +0000 -Subject: Add tests for CargoSemVer.eval_ - - -There are logic errors in `KIND_GTE` and `KIND_LTE`, surface them with -the new test - -Signed-off-by: Michel Alexandre Salim - ---- - -diff --git a/rust2rpm/tests/test_version.py b/rust2rpm/tests/test_version.py -index 58648db..746d9e0 100644 ---- a/rust2rpm/tests/test_version.py -+++ b/rust2rpm/tests/test_version.py -@@ -146,6 +146,20 @@ def test_coerce(version, coerced_version): - - - @pytest.mark.parametrize( -+ "v1, op, v2, expected", -+ [ -+ (Version(0, 2, 2, None, None), CargoSemVer.KIND_GT, Version(0, 3, 5, None, None), False), -+ (Version(0, 2, 2, None, None), CargoSemVer.KIND_GTE, Version(0, 3, 5, None, None), False), -+ (Version(0, 3, 5, None, None), CargoSemVer.KIND_LT, Version(0, 2, 2, None, None), False), -+ (Version(0, 3, 5, None, None), CargoSemVer.KIND_LTE, Version(0, 2, 2, None, None), False), -+ ], -+) -+def test_eval(v1, op, v2, expected): -+ result = CargoSemVer.eval_(v1, op, v2) -+ assert result == expected -+ -+ -+@pytest.mark.parametrize( - "version, next_version", - [ - ((0, None, None, None, None), (1, 0, 0, None, None)), - diff --git a/3dec94d.patch b/3dec94d.patch deleted file mode 100644 index b5db593..0000000 --- a/3dec94d.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 3dec94dc859b2288e3d55603b1c1e79f5290e0cd Mon Sep 17 00:00:00 2001 -From: Fabio Valentini -Date: Nov 03 2022 20:40:20 +0000 -Subject: add more tests for version comparisons and reformat with black - - ---- - -diff --git a/rust2rpm/core/metadata.py b/rust2rpm/core/metadata.py -index 7f2bb1f..4ec0895 100644 ---- a/rust2rpm/core/metadata.py -+++ b/rust2rpm/core/metadata.py -@@ -165,10 +165,7 @@ class CargoSemVer: - or (v1.major == v2.major and v1.minor == v2.minor and v1.patch > v2.patch) - ) - elif op == CargoSemVer.KIND_GTE: -- return ( -- CargoSemVer.eval_(v1, CargoSemVer.KIND_GT, v2) -- or CargoSemVer.eval_(v1, CargoSemVer.KIND_SHORTEQ, v2) -- ) -+ return CargoSemVer.eval_(v1, CargoSemVer.KIND_GT, v2) or CargoSemVer.eval_(v1, CargoSemVer.KIND_SHORTEQ, v2) - elif op == CargoSemVer.KIND_LT: - return ( - (v1.major < v2.major) -@@ -176,10 +173,7 @@ class CargoSemVer: - or (v1.major == v2.major and v1.minor == v2.minor and v1.patch < v2.patch) - ) - elif op == CargoSemVer.KIND_LTE: -- return ( -- CargoSemVer.eval_(v1, CargoSemVer.KIND_LT, v2) -- or CargoSemVer.eval_(v1, CargoSemVer.KIND_SHORTEQ, v2) -- ) -+ return CargoSemVer.eval_(v1, CargoSemVer.KIND_LT, v2) or CargoSemVer.eval_(v1, CargoSemVer.KIND_SHORTEQ, v2) - else: - raise ValueError(f"Cannot evaluate operator: {op}") - -diff --git a/rust2rpm/tests/test_version.py b/rust2rpm/tests/test_version.py -index 746d9e0..4a338c0 100644 ---- a/rust2rpm/tests/test_version.py -+++ b/rust2rpm/tests/test_version.py -@@ -149,9 +149,13 @@ def test_coerce(version, coerced_version): - "v1, op, v2, expected", - [ - (Version(0, 2, 2, None, None), CargoSemVer.KIND_GT, Version(0, 3, 5, None, None), False), -+ (Version(0, 2, 2, None, None), CargoSemVer.KIND_LT, Version(0, 3, 5, None, None), True), - (Version(0, 2, 2, None, None), CargoSemVer.KIND_GTE, Version(0, 3, 5, None, None), False), -+ (Version(0, 2, 2, None, None), CargoSemVer.KIND_LTE, Version(0, 3, 5, None, None), True), - (Version(0, 3, 5, None, None), CargoSemVer.KIND_LT, Version(0, 2, 2, None, None), False), -+ (Version(0, 3, 5, None, None), CargoSemVer.KIND_GT, Version(0, 2, 2, None, None), True), - (Version(0, 3, 5, None, None), CargoSemVer.KIND_LTE, Version(0, 2, 2, None, None), False), -+ (Version(0, 3, 5, None, None), CargoSemVer.KIND_GTE, Version(0, 2, 2, None, None), True), - ], - ) - def test_eval(v1, op, v2, expected): - diff --git a/6a5931b.patch b/6a5931b.patch deleted file mode 100644 index 5626a1f..0000000 --- a/6a5931b.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 6a5931b7dd97ff556c484ccdc7354063b2ad13f5 Mon Sep 17 00:00:00 2001 -From: Michel Alexandre Salim -Date: Oct 31 2022 17:54:37 +0000 -Subject: Fix CargoSemVer.eval_ KIND_GTE and KIND_LTE comparisons - - -Just make use of KIND_GT/KIND_LT and KIND_SHORTEQ - -Signed-off-by: Michel Alexandre Salim - ---- - -diff --git a/rust2rpm/core/metadata.py b/rust2rpm/core/metadata.py -index 6d740d0..7f2bb1f 100644 ---- a/rust2rpm/core/metadata.py -+++ b/rust2rpm/core/metadata.py -@@ -166,9 +166,8 @@ class CargoSemVer: - ) - elif op == CargoSemVer.KIND_GTE: - return ( -- (v1.major >= v2.major) -- or (v1.major == v2.major and v1.minor >= v2.minor) -- or (v1.major == v2.major and v1.minor == v2.minor and v1.patch >= v2.patch) -+ CargoSemVer.eval_(v1, CargoSemVer.KIND_GT, v2) -+ or CargoSemVer.eval_(v1, CargoSemVer.KIND_SHORTEQ, v2) - ) - elif op == CargoSemVer.KIND_LT: - return ( -@@ -178,9 +177,8 @@ class CargoSemVer: - ) - elif op == CargoSemVer.KIND_LTE: - return ( -- (v1.major <= v2.major) -- or (v1.major == v2.major and v1.minor <= v2.minor) -- or (v1.major == v2.major and v1.minor == v2.minor and v1.patch <= v2.patch) -+ CargoSemVer.eval_(v1, CargoSemVer.KIND_LT, v2) -+ or CargoSemVer.eval_(v1, CargoSemVer.KIND_SHORTEQ, v2) - ) - else: - raise ValueError(f"Cannot evaluate operator: {op}") - diff --git a/b5c64f5.patch b/b5c64f5.patch deleted file mode 100644 index 2bc8e87..0000000 --- a/b5c64f5.patch +++ /dev/null @@ -1,48 +0,0 @@ -From b5c64f585ed4ba6b259cfb6f7ed85caaf5d9e159 Mon Sep 17 00:00:00 2001 -From: Fabio Valentini -Date: Jan 05 2023 16:49:57 +0000 -Subject: rust2rpm: update test fixtures for 2023 - - ---- - -diff --git a/rust2rpm/tests/samples/cxx-build-1.0.71.opensuse.spec b/rust2rpm/tests/samples/cxx-build-1.0.71.opensuse.spec -index ffcb40b..e6223db 100644 ---- a/rust2rpm/tests/samples/cxx-build-1.0.71.opensuse.spec -+++ b/rust2rpm/tests/samples/cxx-build-1.0.71.opensuse.spec -@@ -1,7 +1,7 @@ - # - # spec file for package rust-cxx-build - # --# Copyright (c) 2022 Jane Jane . -+# Copyright (c) 2023 Jane Jane . - # - # All modifications and additions to the file contributed by third parties - # remain the property of their copyright owners, unless otherwise agreed -diff --git a/rust2rpm/tests/samples/nix-0.24.1.opensuse.spec b/rust2rpm/tests/samples/nix-0.24.1.opensuse.spec -index a9046e6..8673887 100644 ---- a/rust2rpm/tests/samples/nix-0.24.1.opensuse.spec -+++ b/rust2rpm/tests/samples/nix-0.24.1.opensuse.spec -@@ -1,7 +1,7 @@ - # - # spec file for package rust-nix - # --# Copyright (c) 2022 Jane Jane . -+# Copyright (c) 2023 Jane Jane . - # - # All modifications and additions to the file contributed by third parties - # remain the property of their copyright owners, unless otherwise agreed -diff --git a/rust2rpm/tests/samples/tokio-1.19.2.opensuse.spec b/rust2rpm/tests/samples/tokio-1.19.2.opensuse.spec -index e19c1c1..f64b1b7 100644 ---- a/rust2rpm/tests/samples/tokio-1.19.2.opensuse.spec -+++ b/rust2rpm/tests/samples/tokio-1.19.2.opensuse.spec -@@ -1,7 +1,7 @@ - # - # spec file for package rust-tokio - # --# Copyright (c) 2022 Jane Jane . -+# Copyright (c) 2023 Jane Jane . - # - # All modifications and additions to the file contributed by third parties - # remain the property of their copyright owners, unless otherwise agreed - diff --git a/d9aa58b.patch b/d9aa58b.patch deleted file mode 100644 index cad9ff7..0000000 --- a/d9aa58b.patch +++ /dev/null @@ -1,162 +0,0 @@ -From d9aa58b6cba7add64b575f2fcb3dd386a741ad4b Mon Sep 17 00:00:00 2001 -From: Fabio Valentini -Date: Nov 07 2022 19:57:50 +0000 -Subject: rust2rpm: fix edge cases in cfg-expression evaluation - - -Some cfg-expressions evaluated to "False" because all target_arch -checks were evaluated as "True", but that broke in situations where -the cfg-expression checked for the *absence* of a match for a specific -target_arch. - -With this change, cfg-expressions are now evaluated once for every -supported target_arch, and they evaluate to "True" if the expression -evaluated to "True" for *any* value of target_arch. - ---- - -diff --git a/rust2rpm/__init__.py b/rust2rpm/__init__.py -index 1d8d5c3..5fd02bd 100644 ---- a/rust2rpm/__init__.py -+++ b/rust2rpm/__init__.py -@@ -1,3 +1,12 @@ - from . import licensing - - __version__ = "23" -+ -+TARGET_ARCHES = [ -+ "x86_64", -+ "x86", -+ "aarch64", -+ "arm", -+ "powerpc64", -+ "s390x", -+] -diff --git a/rust2rpm/cfg.py b/rust2rpm/cfg.py -index f167064..55e853e 100644 ---- a/rust2rpm/cfg.py -+++ b/rust2rpm/cfg.py -@@ -5,6 +5,7 @@ import pyparsing as pp - from pyparsing import ParseException - - from . import log -+from . import TARGET_ARCHES - - pp.ParserElement.enablePackrat() - -@@ -60,7 +61,7 @@ def cfg_grammar(): - - - @functools.cache --def evaluate_predicate(name: str, value: str) -> bool: -+def evaluate_predicate(name: str, value: str, target_arch: str) -> bool: - # based on: https://doc.rust-lang.org/reference/conditional-compilation.html - - match name: -@@ -68,7 +69,7 @@ def evaluate_predicate(name: str, value: str) -> bool: - # Needs to be ignored, as we cannot generate patches that are - # different depending on the host architecture - except if the - # target architecture is "wasm32", which we don't support. -- return value not in ["wasm32", "wasm64"] -+ return value == target_arch - - case "target_feature": - # The "target_feature" predicate can be ignored as well, since the -@@ -114,30 +115,32 @@ def evaluate_atom(name: str) -> bool: - return True - case "windows": - return False -+ case "miri": -+ return False - case _: - log.warn( - f"Ignoring unknown identifier {name!r} in cfg-expression. " -- + 'Only "unix" and "windows" are standard identifiers, ' -- + 'any non-standard "--cfg" flags are not supported.' -+ + 'only "unix", "windows", and "miri" are standard identifiers; ' -+ + 'any non-standard "--cfg" flags are ignored.' - ) - return False - - --def evaluate(expr, nested=False) -> bool: -+def evaluate(expr, target_arch: str, nested: bool = False) -> bool: - if hasattr(expr, "asList"): - expr = expr.asList() # compat with pyparsing 2.7.x - match expr: - case ["cfg", subexpr] if not nested: -- return evaluate(subexpr, True) -+ return evaluate(subexpr, target_arch, True) - case ["not", subexpr] if nested: -- return not evaluate(subexpr, True) -+ return not evaluate(subexpr, target_arch, True) - case ["all", *args] if nested: -- return all(evaluate(arg, True) for arg in args) -+ return all(evaluate(arg, target_arch, True) for arg in args) - case ["any", *args] if nested: -- return any(evaluate(arg, True) for arg in args) -+ return any(evaluate(arg, target_arch, True) for arg in args) - case [variable, value] if nested: - v = ast.literal_eval(value) -- return evaluate_predicate(variable, v) -+ return evaluate_predicate(variable, v, target_arch) - case [variable] if nested: - return evaluate_atom(variable) - case _: -@@ -145,5 +148,8 @@ def evaluate(expr, nested=False) -> bool: - - - def parse_and_evaluate(expr): -- parsed = cfg_grammar().parseString(expr) -- return evaluate(parsed[0]) -+ parsed = cfg_grammar().parseString(expr)[0] -+ -+ # evaluate cfg-expression for all supported target_arch values -+ # returns True if it evaluates to True for any supported architecture -+ return any(evaluate(parsed, target_arch) for target_arch in TARGET_ARCHES) -diff --git a/rust2rpm/tests/test_cfg.py b/rust2rpm/tests/test_cfg.py -index 5a2b314..6f14bbc 100644 ---- a/rust2rpm/tests/test_cfg.py -+++ b/rust2rpm/tests/test_cfg.py -@@ -26,6 +26,7 @@ def test_pyparsing_run_tests(): - ("cfg(unix)", True), - ("cfg(not(unix))", False), - ("cfg(windows)", False), -+ ("cfg(miri)", False), - ("cfg(linux)", False), # not defined - ("cfg(not(windows))", True), - ("cfg(any(unix, windows))", True), -@@ -36,6 +37,32 @@ def test_pyparsing_run_tests(): - ('cfg(all(target_os = "linux"))', True), - ('cfg(any(target_os = "linux", target_os = "macos"))', True), - ('cfg(any(target_pointer_width = "16", target_pointer_width = "32", target_pointer_width = "64"))', True), -+ # from rustix 0.35.12 -+ ('cfg(any(target_os = "android", target_os = "linux"))', True), -+ ( -+ 'cfg(all(not(rustix_use_libc), not(miri), target_os = "linux", ' -+ 'any(target_arch = "x86", all(target_arch = "x86_64", target_pointer_width = "64"), ' -+ 'all(target_endian = "little", any(target_arch = "arm", ' -+ 'all(target_arch = "aarch64", target_pointer_width = "64"), ' -+ 'target_arch = "powerpc64", target_arch = "riscv64", target_arch = "mips", target_arch = "mips64")))))', -+ True, -+ ), -+ ( -+ 'cfg(any(rustix_use_libc, miri, not(all(target_os = "linux", ' -+ 'any(target_arch = "x86", all(target_arch = "x86_64", target_pointer_width = "64"), ' -+ 'all(target_endian = "little", any(target_arch = "arm", ' -+ 'all(target_arch = "aarch64", target_pointer_width = "64"), ' -+ 'target_arch = "powerpc64", target_arch = "riscv64", target_arch = "mips", target_arch = "mips64")))))))', -+ True, -+ ), -+ ('cfg(not(target_os = "emscripten"))', True), -+ # from tokio 1.21.2 -+ ('cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), not(target_os = "wasi")))', False), -+ ("cfg(loom)", False), -+ ('cfg(not(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown")))', True), -+ ('cfg(not(any(target_arch = "wasm32", target_arch = "wasm64")))', True), -+ ('cfg(target_os = "freebsd")', False), -+ ("cfg(tokio_unstable)", False), - ], - ) - def test_expressions(expr, expected): - diff --git a/rust-packaging-24.tar.gz b/rust-packaging-24.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..11ffd83a7f14b61c2559b5f2248e56be897d10da GIT binary patch literal 6171 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 literal 0 HcmV?d00001 diff --git a/rust-packaging.spec b/rust-packaging.spec index 811c199..31ccf05 100644 --- a/rust-packaging.spec +++ b/rust-packaging.spec @@ -1,119 +1,69 @@ %define anolis_release 1 -%bcond_without check -# https://pagure.io/koji/issue/659 -%global debug_package %{nil} - Name: rust-packaging -Version: 23 +Version: 24 Release: %{anolis_release}%{?dist} -Summary: RPM macros for building Rust packages +Summary: RPM macros and generators for building Rust packages License: MIT -URL: https://pagure.io/fedora-rust/rust2rpm -Source: %{url}/archive/v%{version}/rust2rpm-v%{version}.tar.gz - -# https://pagure.io/fedora-rust/rust2rpm/pull-request/221 -Patch: 0001-Adjust-build-flags-to-allow-the-new-implementation-u.patch - -# patches for backporting upstream bug fixes -Patch: https://pagure.io/fedora-rust/rust2rpm/c/09a496c.patch -Patch: https://pagure.io/fedora-rust/rust2rpm/c/1869f5a.patch -Patch: https://pagure.io/fedora-rust/rust2rpm/c/6a5931b.patch -Patch: https://pagure.io/fedora-rust/rust2rpm/c/3dec94d.patch -Patch: https://pagure.io/fedora-rust/rust2rpm/c/d9aa58b.patch -Patch: https://pagure.io/fedora-rust/rust2rpm/c/b5c64f5.patch - -# upstream patch to add support for building with frame pointers: -# https://pagure.io/fedora-rust/rust2rpm/c/c2176f2 -# https://pagure.io/fedora-rust/rust2rpm/c/3443c98 -Patch: 0002-Add-support-for-conditionally-building-with-frame-po.patch - -ExclusiveArch: %{rust_arches} - -BuildRequires: python3-devel +URL: https://pagure.io/fedora-rust/rust-packaging +Source: %{url}/archive/%{version}/rust-packaging-%{version}.tar.gz -%if %{with check} -BuildRequires: cargo -%endif - -Requires: python3-rust2rpm-core = %{EVR} -Requires: rust-srpm-macros = %{version} - -Requires: rust -Requires: cargo >= 1.41 - -# gawk is needed for stripping dev-deps in macro -Requires: gawk +BuildArch: noarch %description -The package provides RPM macros for building Rust projects. +%{summary}. -Note that rust-srpm-macros is a seperate arch-independent package that -is also required to build Rust packages. +%package -n rust-srpm-macros +Summary: RPM macros for building Rust projects -%package -n python3-rust2rpm -Summary: Generate RPM spec files for Rust packages -Requires: cargo -Requires: python3-rust2rpm-core = %{EVR} -Provides: rust2rpm = %{version}-%{release} +%description -n rust-srpm-macros +RPM macros for building source packages for Rust projects. + +%package -n cargo-rpm-macros +Summary: RPM macros for building projects with cargo -%description -n python3-rust2rpm -rust2rpm is a tool that automates the generation of RPM spec files for -Rust crates. +# obsolete + provide rust-packaging +Obsoletes: rust-packaging < 24 +Provides: rust-packaging = %{version}-%{release} -%package -n python3-rust2rpm-core -Summary: Generate RPM spec files for Rust packages (core functionality) Requires: cargo -Provides: cargo-inspector = %{version}-%{release} +Requires: cargo2rpm >= 0.1.0 +Requires: gawk -%description -n python3-rust2rpm-core -rust2rpm is a tool that automates the generation of RPM spec files for -Rust crates. +Requires: rust-srpm-macros = %{version}-%{release} -This package contains the core functionality which doesn't depend on -any third-party python packages. +%description -n cargo-rpm-macros +RPM macros for building projects with cargo. %prep -%autosetup -n rust2rpm-v%{version} -p1 - -%generate_buildrequires -%pyproject_buildrequires -t +%autosetup -p1 %build -%pyproject_wheel +# nothing to do %install -%pyproject_install - -install -D -p -m 0644 -t %{buildroot}%{_rpmmacrodir} data/macros.rust data/macros.cargo -install -D -p -m 0644 -t %{buildroot}%{_fileattrsdir} data/cargo.attr +install -D -p -m 0644 -t %{buildroot}/%{_rpmmacrodir} macros.d/macros.cargo +install -D -p -m 0644 -t %{buildroot}/%{_rpmmacrodir} macros.d/macros.rust +install -D -p -m 0644 -t %{buildroot}/%{_rpmmacrodir} macros.d/macros.rust-srpm +install -D -p -m 0644 -t %{buildroot}/%{_fileattrsdir} fileattrs/cargo.attr -%if %{with check} -%check -%tox -%endif - -%files +%files -n rust-srpm-macros +%license LICENSE %{_rpmmacrodir}/macros.rust -%{_rpmmacrodir}/macros.cargo -%{_fileattrsdir}/cargo.attr - -%files -n python3-rust2rpm -%{_bindir}/rust2rpm -%{python3_sitelib}/rust2rpm-*.dist-info/ -%{python3_sitelib}/rust2rpm/ -%exclude %{python3_sitelib}/rust2rpm/core/ +%{_rpmmacrodir}/macros.rust-srpm -%files -n python3-rust2rpm-core +%files -n cargo-rpm-macros %license LICENSE -%doc README.md NEWS -%{_bindir}/cargo-inspector -%{python3_sitelib}/rust2rpm/core/ +%{_rpmmacrodir}/macros.cargo +%{_fileattrsdir}/cargo.attr %changelog -* Tue Feb 14 2023 Funda Wang - 1:23-1 +* Fri Mar 10 2023 Funda Wang - 24-1 +- New version 24 + +* Tue Feb 14 2023 Funda Wang - 23-1 - New version 23 -* Wed Apr 20 2022 happy_orange - 1:21-1 +* Wed Apr 20 2022 happy_orange - 21-1 - Init package from upstream diff --git a/rust2rpm-v23.tar.gz b/rust2rpm-v23.tar.gz deleted file mode 100644 index 4f267ba6f65fdbde58f6811eaa23b17ccc521d87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50114 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 g