Add support for pre-release versions

Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
epel9
Igor Gnatenko 6 years ago
parent 6745bc623a
commit b078c54982
No known key found for this signature in database
GPG Key ID: 695714BD1BBC5F4C

@ -1,7 +1,7 @@
From 0dc9fc182edf0791ca697f587e48dd39948d63c1 Mon Sep 17 00:00:00 2001 From 0dc9fc182edf0791ca697f587e48dd39948d63c1 Mon Sep 17 00:00:00 2001
From: Igor Gnatenko <ignatenkobrain@fedoraproject.org> From: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
Date: Mon, 10 Sep 2018 23:37:40 +0200 Date: Mon, 10 Sep 2018 23:37:40 +0200
Subject: [PATCH 01/13] name spec/patch_file by real crate name Subject: [PATCH 01/14] name spec/patch_file by real crate name
When renaming using patch file, we really want to change file names too. When renaming using patch file, we really want to change file names too.
@ -33,5 +33,5 @@ index dc78828..1575ce6 100644
if args.stdout: if args.stdout:
print("# {}".format(spec_file)) print("# {}".format(spec_file))
-- --
2.20.0.rc2 2.20.1

@ -1,7 +1,7 @@
From 561280a0ea35f226ef243526be2bbb656db44af6 Mon Sep 17 00:00:00 2001 From 561280a0ea35f226ef243526be2bbb656db44af6 Mon Sep 17 00:00:00 2001
From: Igor Gnatenko <ignatenkobrain@fedoraproject.org> From: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
Date: Mon, 10 Sep 2018 23:40:18 +0200 Date: Mon, 10 Sep 2018 23:40:18 +0200
Subject: [PATCH 02/13] generate %doc statements Subject: [PATCH 02/14] generate %doc statements
Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org> Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
--- ---
@ -54,5 +54,5 @@ index 1aeb969..2e9f841 100644
{% endif %} {% endif %}
-- --
2.20.0.rc2 2.20.1

@ -1,7 +1,7 @@
From 2050880140d4953b9ebdc7211e30df3ccf5dd61d Mon Sep 17 00:00:00 2001 From 2050880140d4953b9ebdc7211e30df3ccf5dd61d Mon Sep 17 00:00:00 2001
From: Igor Gnatenko <ignatenkobrain@fedoraproject.org> From: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
Date: Tue, 11 Sep 2018 00:06:50 +0200 Date: Tue, 11 Sep 2018 00:06:50 +0200
Subject: [PATCH 03/13] do better for renamed crates Subject: [PATCH 03/14] do better for renamed crates
Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org> Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
--- ---
@ -86,5 +86,5 @@ index 2e9f841..7dbcc3f 100644
%build %build
-- --
2.20.0.rc2 2.20.1

@ -1,7 +1,7 @@
From e6e9cbbb71199c2773b47fa21f1c917a167c1743 Mon Sep 17 00:00:00 2001 From e6e9cbbb71199c2773b47fa21f1c917a167c1743 Mon Sep 17 00:00:00 2001
From: Igor Gnatenko <ignatenkobrain@fedoraproject.org> From: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
Date: Tue, 11 Sep 2018 10:43:53 +0200 Date: Tue, 11 Sep 2018 10:43:53 +0200
Subject: [PATCH 04/13] remove pre-3.6 leftovers Subject: [PATCH 04/14] remove pre-3.6 leftovers
Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org> Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
--- ---
@ -23,5 +23,5 @@ index f52d968..5adeb65 100644
+ "--manifest-path={}".format(path)]) + "--manifest-path={}".format(path)])
return cls.from_json(json.loads(metadata)) return cls.from_json(json.loads(metadata))
-- --
2.20.0.rc2 2.20.1

@ -1,7 +1,7 @@
From 2f12c83d14afe71e9efed2d1be62e1e610e602e9 Mon Sep 17 00:00:00 2001 From 2f12c83d14afe71e9efed2d1be62e1e610e602e9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl> From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
Date: Fri, 17 Aug 2018 10:03:48 +0200 Date: Fri, 17 Aug 2018 10:03:48 +0200
Subject: [PATCH 05/13] Remove half-downloaded crate on ^C Subject: [PATCH 05/14] Remove half-downloaded crate on ^C
Subsequent invocations would fail with an error about a corrupted file. Subsequent invocations would fail with an error about a corrupted file.
We don't have support for resuming a failed download, so let's remove the We don't have support for resuming a failed download, so let's remove the
@ -40,5 +40,5 @@ index e993e7b..8e6f6eb 100644
total=total, unit="B", unit_scale=True): total=total, unit="B", unit_scale=True):
f.write(chunk) f.write(chunk)
-- --
2.20.0.rc2 2.20.1

@ -1,7 +1,7 @@
From 5a1cde5b8dcaea74ebb2050879036bf46df63adc Mon Sep 17 00:00:00 2001 From 5a1cde5b8dcaea74ebb2050879036bf46df63adc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl> From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
Date: Fri, 17 Aug 2018 10:18:59 +0200 Date: Fri, 17 Aug 2018 10:18:59 +0200
Subject: [PATCH 06/13] Throw an error if -s is used without a crate Subject: [PATCH 06/14] Throw an error if -s is used without a crate
In the future we might want to be smarter and find the crate, but let's at least In the future we might want to be smarter and find the crate, but let's at least
not ignore the option completely. not ignore the option completely.
@ -24,5 +24,5 @@ index 8e6f6eb..f23ebbc 100644
diff = make_patch(toml, enabled=patch, tmpfile=True) diff = make_patch(toml, enabled=patch, tmpfile=True)
metadata = Metadata.from_file(toml) metadata = Metadata.from_file(toml)
-- --
2.20.0.rc2 2.20.1

@ -1,7 +1,7 @@
From 2cac5e5ad5ff5472923ce333bef59679612bbaa2 Mon Sep 17 00:00:00 2001 From 2cac5e5ad5ff5472923ce333bef59679612bbaa2 Mon Sep 17 00:00:00 2001
From: Igor Gnatenko <ignatenkobrain@fedoraproject.org> From: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
Date: Fri, 26 Oct 2018 11:20:13 +0200 Date: Fri, 26 Oct 2018 11:20:13 +0200
Subject: [PATCH 07/13] split features into subpackages Subject: [PATCH 07/14] split features into subpackages
References: https://discussion.fedoraproject.org/t/rfc-new-crates-packaging-design-features-have-their-own-subpackages/563?u=ignatenkobrain References: https://discussion.fedoraproject.org/t/rfc-new-crates-packaging-design-features-have-their-own-subpackages/563?u=ignatenkobrain
Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org> Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
@ -1060,5 +1060,5 @@ index b856fdd..30263b4 100644
- assert [str(x) for x in md.provides] == provides - assert [str(x) for x in md.provides] == provides
- assert [str(x) for x in md.requires] == requires - assert [str(x) for x in md.requires] == requires
-- --
2.20.0.rc2 2.20.1

@ -1,7 +1,7 @@
From a1d3a84645aa7bbe5ca07b60bead1ddf90a21cc1 Mon Sep 17 00:00:00 2001 From a1d3a84645aa7bbe5ca07b60bead1ddf90a21cc1 Mon Sep 17 00:00:00 2001
From: Igor Gnatenko <ignatenkobrain@fedoraproject.org> From: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
Date: Tue, 30 Oct 2018 20:37:38 +0100 Date: Tue, 30 Oct 2018 20:37:38 +0100
Subject: [PATCH 08/13] add support for dependencies with same name Subject: [PATCH 08/14] add support for dependencies with same name
Reported-by: Josh Stone <jistone@redhat.com> Reported-by: Josh Stone <jistone@redhat.com>
References: https://internals.rust-lang.org/t/optional-dependencies-with-same-name/8728 References: https://internals.rust-lang.org/t/optional-dependencies-with-same-name/8728
@ -70,5 +70,5 @@ index 4929cdd..328b67a 100644
if "default" not in deps_by_feature: if "default" not in deps_by_feature:
-- --
2.20.0.rc2 2.20.1

@ -1,7 +1,7 @@
From 197150ee2e862edcd46f7ab02c9e4d17e49ca75d Mon Sep 17 00:00:00 2001 From 197150ee2e862edcd46f7ab02c9e4d17e49ca75d Mon Sep 17 00:00:00 2001
From: Igor Gnatenko <ignatenkobrain@fedoraproject.org> From: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
Date: Wed, 31 Oct 2018 18:03:21 +0100 Date: Wed, 31 Oct 2018 18:03:21 +0100
Subject: [PATCH 09/13] add support for feeding user configuration Subject: [PATCH 09/14] add support for feeding user configuration
Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org> Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
--- ---
@ -144,5 +144,5 @@ index 0d9a80b..d901e6d 100644
%description {{ pkg }} %{_description} %description {{ pkg }} %{_description}
-- --
2.20.0.rc2 2.20.1

@ -1,7 +1,7 @@
From 83ea3796cd28ec7689b39e7dc7a70bd11af1abf1 Mon Sep 17 00:00:00 2001 From 83ea3796cd28ec7689b39e7dc7a70bd11af1abf1 Mon Sep 17 00:00:00 2001
From: Igor Gnatenko <ignatenkobrain@fedoraproject.org> From: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
Date: Wed, 31 Oct 2018 17:00:58 +0100 Date: Wed, 31 Oct 2018 17:00:58 +0100
Subject: [PATCH 10/13] trivial: use f-strings everywhere Subject: [PATCH 10/14] trivial: use f-strings everywhere
Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org> Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
--- ---
@ -90,5 +90,5 @@ index c691274..b60e6c4 100644
else: else:
with open(spec_file, "w") as fobj: with open(spec_file, "w") as fobj:
-- --
2.20.0.rc2 2.20.1

@ -1,7 +1,7 @@
From 294c6f571c0f4f7ed5a4fcb34142b0d332c55f29 Mon Sep 17 00:00:00 2001 From 294c6f571c0f4f7ed5a4fcb34142b0d332c55f29 Mon Sep 17 00:00:00 2001
From: Neal Gompa <ngompa13@gmail.com> From: Neal Gompa <ngompa13@gmail.com>
Date: Sun, 11 Nov 2018 11:06:27 -0500 Date: Sun, 11 Nov 2018 11:06:27 -0500
Subject: [PATCH 11/13] Add option to not generate a default changelog entry Subject: [PATCH 11/14] Add option to not generate a default changelog entry
For Rust packages created through the OBS source service, the For Rust packages created through the OBS source service, the
changelog is managed by an external <pkg>.changes file that is changelog is managed by an external <pkg>.changes file that is
@ -59,5 +59,5 @@ index d901e6d..84bd97d 100644
+ {% include target ~ "-changelog.spec.inc" %} + {% include target ~ "-changelog.spec.inc" %}
+{% endif %} +{% endif %}
-- --
2.20.0.rc2 2.20.1

@ -1,7 +1,7 @@
From b4e25038296cd57eba639a059e8baaf139a5d287 Mon Sep 17 00:00:00 2001 From b4e25038296cd57eba639a059e8baaf139a5d287 Mon Sep 17 00:00:00 2001
From: Josh Stone <jistone@redhat.com> From: Josh Stone <jistone@redhat.com>
Date: Fri, 7 Dec 2018 13:58:41 -0800 Date: Fri, 7 Dec 2018 13:58:41 -0800
Subject: [PATCH 12/13] Set CARGO_HOME to the local .config Subject: [PATCH 12/14] Set CARGO_HOME to the local .config
--- ---
data/macros.cargo | 6 +++++- data/macros.cargo | 6 +++++-
@ -22,5 +22,5 @@ index 7fb025b..e760721 100644
%__cargo_inspector %{_bindir}/cargo-inspector %__cargo_inspector %{_bindir}/cargo-inspector
-- --
2.20.0.rc2 2.20.1

@ -1,7 +1,7 @@
From a04e95bc4f807139bd3c4b75f46fd9a60ec1db8f Mon Sep 17 00:00:00 2001 From a04e95bc4f807139bd3c4b75f46fd9a60ec1db8f Mon Sep 17 00:00:00 2001
From: Josh Stone <jistone@redhat.com> From: Josh Stone <jistone@redhat.com>
Date: Fri, 7 Dec 2018 13:59:03 -0800 Date: Fri, 7 Dec 2018 13:59:03 -0800
Subject: [PATCH 13/13] Set the install root in .cargo/config Subject: [PATCH 13/14] Set the install root in .cargo/config
--- ---
data/macros.cargo | 4 +++- data/macros.cargo | 4 +++-
@ -30,5 +30,5 @@ index e760721..9a9ce6a 100644
%* \ %* \
}\ }\
-- --
2.20.0.rc2 2.20.1

@ -0,0 +1,85 @@
From 29a3c1b84e0971fc0c2edf483ae3b04139c19b32 Mon Sep 17 00:00:00 2001
From: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
Date: Sat, 26 Jan 2019 08:33:37 +0100
Subject: [PATCH 14/14] Add support for prerelease versions
Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
---
rust2rpm/metadata.py | 18 ++++++++++++------
test.py | 8 ++++++++
2 files changed, 20 insertions(+), 6 deletions(-)
diff --git a/rust2rpm/metadata.py b/rust2rpm/metadata.py
index 328b67a..f0718d5 100644
--- a/rust2rpm/metadata.py
+++ b/rust2rpm/metadata.py
@@ -45,11 +45,13 @@ class Dependency:
# Any means any
continue
ver = req.spec
- if ver.prerelease:
- raise NotImplementedError(f"Pre-release requirement is not supported: {ver}")
if req.kind in (req.KIND_NEQ, req.KIND_EMPTY):
raise NotImplementedError(f"'!=' and empty kinds are not supported: {req}")
- coerced = semver.Version.coerce(str(ver))
+ coerced = str(semver.Version.coerce(str(ver)))
+ if ver.prerelease:
+ coerced = coerced.replace("-", "~")
+ # This will advance us to closest stable version (2.0.0-beta.6 → 2.0.0)
+ ver = ver.next_patch()
if req.kind == req.KIND_EQUAL:
req.kind = req.KIND_SHORTEQ
if req.kind in (req.KIND_CARET, req.KIND_COMPATIBLE):
@@ -107,7 +109,11 @@ class Dependency:
class Metadata:
def __init__(self, name, version):
self.name = name
- self.version = version
+ self._version = version
+ version_normalized = Dependency._normalize_req(f"={self._version}")
+ if len(version_normalized) != 1:
+ raise Exception(f"Incorrect version: {self._version}")
+ self.version = version_normalized[0][1]
self.license = None
self.license_file = None
self.readme = None
@@ -187,7 +193,7 @@ class Metadata:
def provides(self, feature=None):
if feature not in self.dependencies:
raise KeyError(f"Feature {feature!r} doesn't exist")
- return Dependency(self.name, f"={self.version}", features={feature})
+ return Dependency(self.name, f"={self._version}", features={feature})
@classmethod
def _resolve(cls, deps_by_feature, feature):
@@ -207,7 +213,7 @@ class Metadata:
return self._resolve(self.dependencies, feature)[1]
else:
features, deps = self.dependencies[feature]
- fdeps = set(Dependency(self.name, f"={self.version}", features={feature})
+ fdeps = set(Dependency(self.name, f"={self._version}", features={feature})
for feature in features)
return fdeps | deps
diff --git a/test.py b/test.py
index 30263b4..035df79 100644
--- a/test.py
+++ b/test.py
@@ -37,6 +37,14 @@ import rust2rpm
"crate(test) = 1.2.3"),
(">= 1.2, < 1.5",
"(crate(test) >= 1.2.0 with crate(test) < 1.5.0)"),
+ ("^2.0.0-alpha.6",
+ "(crate(test) >= 2.0.0~alpha.6 with crate(test) < 3.0.0)"),
+ ("^0.1.0-alpha.6",
+ "(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)"),
+ ("^0.0.0-alpha.6",
+ "(crate(test) >= 0.0.0~alpha.6 with crate(test) < 0.0.1)"),
])
def test_dependency(req, rpmdep):
dep = rust2rpm.Dependency("test", req)
--
2.20.1

@ -5,7 +5,7 @@
Name: rust-packaging Name: rust-packaging
Version: 6 Version: 6
Release: 18%{?dist} Release: 19%{?dist}
Summary: RPM macros for building Rust packages on various architectures Summary: RPM macros for building Rust packages on various architectures
License: MIT License: MIT
@ -24,6 +24,7 @@ Patch0010: 0010-trivial-use-f-strings-everywhere.patch
Patch0011: 0011-Add-option-to-not-generate-a-default-changelog-entry.patch Patch0011: 0011-Add-option-to-not-generate-a-default-changelog-entry.patch
Patch0012: 0012-Set-CARGO_HOME-to-the-local-.config.patch Patch0012: 0012-Set-CARGO_HOME-to-the-local-.config.patch
Patch0013: 0013-Set-the-install-root-in-.cargo-config.patch Patch0013: 0013-Set-the-install-root-in-.cargo-config.patch
Patch0014: 0014-Add-support-for-prerelease-versions.patch
ExclusiveArch: %{rust_arches} ExclusiveArch: %{rust_arches}
@ -84,6 +85,9 @@ py.test-%{python3_version} -vv test.py
%{python3_sitelib}/rust2rpm/ %{python3_sitelib}/rust2rpm/
%changelog %changelog
* Sat Jan 26 2019 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 6-19
- Add support for pre-release versions
* Fri Dec 07 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 6-18 * Fri Dec 07 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 6-18
- Set CARGO_HOME - Set CARGO_HOME

Loading…
Cancel
Save