Blob Blame History Raw
From 617d4b9140b35f4f74def98b87a69a84943a33de Mon Sep 17 00:00:00 2001
From: Igor Raits <igor.raits@gmail.com>
Date: Mon, 28 Dec 2020 12:44:52 +0100
Subject: [PATCH] Always require upper-bound dependency with ~ sign

Proper fix is quite complex and given we do not package pre-release
versions very often (and esp. not multiple versions of them), this is
good enough (not nice though).

References: https://pagure.io/fedora-rust/rust2rpm/issue/70
Signed-off-by: Igor Raits <igor.raits@gmail.com>
---
 rust2rpm/metadata.py |  2 +-
 test.py              | 40 ++++++++++++++++++++--------------------
 2 files changed, 21 insertions(+), 21 deletions(-)

diff --git a/rust2rpm/metadata.py b/rust2rpm/metadata.py
index b29e7b5..4636cc5 100644
--- a/rust2rpm/metadata.py
+++ b/rust2rpm/metadata.py
@@ -197,7 +197,7 @@ class Dependency:
         if not reqs:
             return cap
         deps = ' with '.join(
-            f'{cap} {op} {CargoSemVer.unparse_version(version, sep="~")}'
+            f'{cap} {op} {CargoSemVer.unparse_version(version, sep="~")}{"~" if op == CargoSemVer.KIND_LT else ""}'
             for op, version in reqs)
         if len(reqs) > 1:
             return f"({deps})"
diff --git a/test.py b/test.py
index ccda3b5..7623be0 100644
--- a/test.py
+++ b/test.py
@@ -6,53 +6,53 @@ from rust2rpm.metadata import Version
 
 @pytest.mark.parametrize("req, rpmdep", [
     ("^1.2.3",
-     "(crate(test) >= 1.2.3 with crate(test) < 2.0.0)"),
+     "(crate(test) >= 1.2.3 with crate(test) < 2.0.0~)"),
     ("^1.2",
-     "(crate(test) >= 1.2.0 with crate(test) < 2.0.0)"),
+     "(crate(test) >= 1.2.0 with crate(test) < 2.0.0~)"),
     ("^1",
-     "(crate(test) >= 1.0.0 with crate(test) < 2.0.0)"),
+     "(crate(test) >= 1.0.0 with crate(test) < 2.0.0~)"),
     ("^0.2.3",
-     "(crate(test) >= 0.2.3 with crate(test) < 0.3.0)"),
+     "(crate(test) >= 0.2.3 with crate(test) < 0.3.0~)"),
     ("^0.2",
-     "(crate(test) >= 0.2.0 with crate(test) < 0.3.0)"),
+     "(crate(test) >= 0.2.0 with crate(test) < 0.3.0~)"),
     ("^0.0.3",
-     "(crate(test) >= 0.0.3 with crate(test) < 0.0.4)"),
+     "(crate(test) >= 0.0.3 with crate(test) < 0.0.4~)"),
     ("^0.0",
-     "(crate(test) >= 0.0.0 with crate(test) < 0.1.0)"),
+     "(crate(test) >= 0.0.0 with crate(test) < 0.1.0~)"),
     ("^0",
-     "(crate(test) >= 0.0.0 with crate(test) < 1.0.0)"),
+     "(crate(test) >= 0.0.0 with crate(test) < 1.0.0~)"),
     ("~1.2.3",
-     "(crate(test) >= 1.2.3 with crate(test) < 1.3.0)"),
+     "(crate(test) >= 1.2.3 with crate(test) < 1.3.0~)"),
     ("~1.2",
-     "(crate(test) >= 1.2.0 with crate(test) < 1.3.0)"),
+     "(crate(test) >= 1.2.0 with crate(test) < 1.3.0~)"),
     ("~1",
-     "(crate(test) >= 1.0.0 with crate(test) < 2.0.0)"),
+     "(crate(test) >= 1.0.0 with crate(test) < 2.0.0~)"),
     ("*",
      "crate(test) >= 0.0.0"),
     ("1.*",
-     "(crate(test) >= 1.0.0 with crate(test) < 2.0.0)"),
+     "(crate(test) >= 1.0.0 with crate(test) < 2.0.0~)"),
     ("1.2.*",
-     "(crate(test) >= 1.2.0 with crate(test) < 1.3.0)"),
+     "(crate(test) >= 1.2.0 with crate(test) < 1.3.0~)"),
     ("1.*.*",
-     "(crate(test) >= 1.0.0 with crate(test) < 2.0.0)"),
+     "(crate(test) >= 1.0.0 with crate(test) < 2.0.0~)"),
     (">= 1.2.0",
      "crate(test) >= 1.2.0"),
     ("> 1",
      "crate(test) > 1.0.0"),
     ("< 2",
-     "crate(test) < 2.0.0"),
+     "crate(test) < 2.0.0~"),
     ("= 1.2.3",
      "crate(test) = 1.2.3"),
     (">= 1.2, < 1.5",
-     "(crate(test) >= 1.2.0 with crate(test) < 1.5.0)"),
+     "(crate(test) >= 1.2.0 with crate(test) < 1.5.0~)"),
     ("^1.0.0-alpha.6",
-     "(crate(test) >= 1.0.0~alpha.6 with crate(test) < 2.0.0)"),
+     "(crate(test) >= 1.0.0~alpha.6 with crate(test) < 2.0.0~)"),
     ("^0.1.0-alpha.6",
-     "(crate(test) >= 0.1.0~alpha.6 with crate(test) < 0.2.0)"),
+     "(crate(test) >= 0.1.0~alpha.6 with crate(test) < 0.2.0~)"),
     ("^0.0.1-alpha.6",
-     "(crate(test) >= 0.0.1~alpha.6 with crate(test) < 0.0.2)"),
+     "(crate(test) >= 0.0.1~alpha.6 with crate(test) < 0.0.2~)"),
     ("^0.0.0-alpha.6",
-     "(crate(test) >= 0.0.0~alpha.6 with crate(test) < 0.0.1)"),
+     "(crate(test) >= 0.0.0~alpha.6 with crate(test) < 0.0.1~)"),
 ])
 def test_dependency(req, rpmdep):
     dep = rust2rpm.Dependency("test", req)
-- 
2.30.0.rc2