osmith has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/osmo-ci/+/34422?usp=email )


Change subject: OBS: fix generating wrong limesuite version
......................................................................

OBS: fix generating wrong limesuite version

Instead of using git-version-gen in all git repositories, only use it
where it is part of the repository. Use git directly to build the
version string otherwise. To fix generating the wrong version string for
limesuite, use "git describe --tags" instead of "git describe" as in
git-version-gen. This is needed because limesuite releases > 20.01 only
have lightweight (non-annotated) tags.

Fix for:
  limesuite: WARNING: version from changelog (22.09.1-1) is higher than
  version based on git tag (20.01.0.182-4828.202309140026), using
  version from changelog (git tag not pushed yet?)

Change-Id: I00d97d5cd12b2938a002d3e5c8ada6503f976e36
---
M scripts/obs/lib/srcpkg.py
1 file changed, 50 insertions(+), 27 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-ci refs/changes/22/34422/1

diff --git a/scripts/obs/lib/srcpkg.py b/scripts/obs/lib/srcpkg.py
index 13404a7..cffb961 100644
--- a/scripts/obs/lib/srcpkg.py
+++ b/scripts/obs/lib/srcpkg.py
@@ -24,38 +24,40 @@
         lib.git.checkout(project, f"origin/{feed}")


-def get_git_version_gen_path(project):
-    # Use git-version-gen in the project's repository if available
-    repo_path = lib.git.get_repo_path(project)
-    ret = f"{repo_path}/git-version-gen"
-    if os.path.exists(ret):
-        return ret
-
-    # Use git-version-gen script from libosmocore.git as fallback
-    print(f"{project}: has no git-version-gen, using the one from libosmocore")
-    repo_path = lib.git.get_repo_path("libosmocore")
-    ret = f"{repo_path}/git-version-gen"
-    if not os.path.exists(ret):
-        lib.git.clone("libosmocore")
-    if os.path.exists(ret):
-        return ret
-
-    print(f"ERROR: {project}.git doesn't have a git-version-gen script and"
-          " couldn't find libosmocore.git's copy of the script here either: "
-          + ret)
-    sys.exit(1)
-
-
 def get_git_version(project):
     """ :returns: the string from git-version-gen, e.g. '1.7.0.10-76bdb' """
     repo_path = lib.git.get_repo_path(project)
-    script_path = get_git_version_gen_path(project)

-    ret = lib.run_cmd([script_path, "."], cwd=repo_path)
-    if not ret.output:
-        lib.exit_error_cmd(ret, "empty output from git-version-gen")
+    # Run git-version-gen if it is in the repository
+    script_path = f"{repo_path}/git-version-gen"
+    if os.path.exists(script_path):
+        ret = lib.run_cmd([script_path, "."], cwd=repo_path).output
+        if not ret:
+            lib.exit_error_cmd(ret, "empty output from git-version-gen")
+        return ret

-    return ret.output
+    # Generate a version string similar to git-version-gen, but run use git
+    # describe --tags, so it works with non-annotated tags as well (needed for
+    # e.g. limesuite's tags).
+    pattern = lib.git.get_latest_tag_pattern(project)
+    pattern = pattern.replace("^", "", 1)
+    pattern = pattern.replace("$", "", -1)
+    ret = lib.run_cmd(["git", "describe",
+                       "--abbrev=4",
+                       "--tags",
+                       f"--match={pattern}",
+                       "HEAD"], cwd=repo_path).output.rstrip()
+
+    # Like git-version-gen:
+    # * Change the first '-' to '.'
+    # * Remove the 'g' in git describe's output string
+    # * Remove the leading 'v'
+    ret = ret.replace("-", ".", 1)
+    ret = ret.replace("-g", "-", 1)
+    if ret.startswith("v"):
+        ret = ret[1:]
+
+    return ret


 def get_version_for_feed(project):

--
To view, visit https://gerrit.osmocom.org/c/osmo-ci/+/34422?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-ci
Gerrit-Branch: master
Gerrit-Change-Id: I00d97d5cd12b2938a002d3e5c8ada6503f976e36
Gerrit-Change-Number: 34422
Gerrit-PatchSet: 1
Gerrit-Owner: osmith <osm...@sysmocom.de>
Gerrit-MessageType: newchange

Reply via email to