librsvg source for verification 2026-05-22
This commit is contained in:
66
ci/check_public_crate_version.py
Normal file
66
ci/check_public_crate_version.py
Normal file
@@ -0,0 +1,66 @@
|
||||
# Checks that the version of the librsvg public crate matches the version for the GNOME library.
|
||||
#
|
||||
# For stable releases:
|
||||
# - GNOME: 2.57.2
|
||||
# - crate: 2.57.2
|
||||
#
|
||||
# For development relases, .9x vs. -beta.x
|
||||
# - GNOME: 2.57.90
|
||||
# - crate: 2.58.0-beta.0
|
||||
|
||||
import semver
|
||||
import sys
|
||||
import toml
|
||||
|
||||
from utils import get_project_version_str
|
||||
|
||||
def gen_crate_version_from_project_version(v):
|
||||
if v.patch < 90:
|
||||
# stable release, just return it
|
||||
return v
|
||||
elif v.patch >= 90 and v.patch < 99:
|
||||
# development release, mangle it for semver
|
||||
patch_level = v.patch - 90
|
||||
beta = f'beta.{patch_level}'
|
||||
return v.bump_minor().replace(prerelease = beta)
|
||||
else:
|
||||
raise Exception("don't know what to do with patch versions larger than 99")
|
||||
|
||||
def check_crate_version(project_version_str, crate_version_str):
|
||||
# GNOME only likes x.y.z versions
|
||||
main_version = semver.Version.parse(project_version_str)
|
||||
assert main_version.major is not None
|
||||
assert main_version.minor is not None
|
||||
assert main_version.patch is not None
|
||||
assert main_version.prerelease is None
|
||||
assert main_version.build is None
|
||||
|
||||
crate_version = semver.Version.parse(crate_version_str)
|
||||
|
||||
if gen_crate_version_from_project_version(main_version) != crate_version:
|
||||
raise Exception(
|
||||
f'meson.build version {main_version} does not match rsvg crate version {crate_version}'
|
||||
)
|
||||
|
||||
def test_stable():
|
||||
a = semver.Version.parse('2.56.3')
|
||||
assert gen_crate_version_from_project_version(a) == a
|
||||
|
||||
def test_development():
|
||||
a = semver.Version.parse('2.56.90')
|
||||
assert gen_crate_version_from_project_version(a) == semver.Version.parse('2.57.0-beta.0')
|
||||
|
||||
a = semver.Version.parse('2.57.93')
|
||||
assert gen_crate_version_from_project_version(a) == semver.Version.parse('2.58.0-beta.3')
|
||||
|
||||
def main():
|
||||
project_version_str = get_project_version_str()
|
||||
|
||||
doc = toml.load('rsvg/Cargo.toml')
|
||||
crate_version_str = doc['package']['version']
|
||||
|
||||
check_crate_version(project_version_str, crate_version_str)
|
||||
print('Versions number match. All good!', file=sys.stderr)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user