rpm: add version parsing functions to pkg policy
authorMarkus Lehtonen <markus.lehtonen@linux.intel.com>
Mon, 23 Apr 2012 09:51:08 +0000 (12:51 +0300)
committerJun Wang <junbill.wang@samsung.com>
Wed, 27 Jan 2016 13:42:09 +0000 (21:42 +0800)
Adds functions for version string generation and parsing. These are
intended for parsing version strings taken e.g. from rpm filename or
changelogs.

Also, take these new version parsing functions into use in the rpm gbp
scripts.

Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
Signed-off-by: Ed Bartosh <eduard.bartosh@intel.com>
Conflicts:
gbp/rpm/policy.py
gbp/scripts/buildpackage_rpm.py
gbp/scripts/import_orig_rpm.py
gbp/scripts/pq_rpm.py

gbp/scripts/buildpackage_rpm.py
gbp/scripts/import_orig_rpm.py
gbp/scripts/pq_rpm.py

index dcfa3acec2bb72a01e0dcf69e5c5accf98285b41..cb3c34376e8f851c51db47e43e7eecb7d8fb8929 100755 (executable)
@@ -655,9 +655,14 @@ def main(argv):
 
         # Tag (note: tags the exported version)
         if options.tag or options.tag_only:
+<<<<<<< HEAD
             gbp.log.info("Tagging %s" % RpmPkgPolicy.compose_full_version(spec.version))
             commit_info = repo.get_commit_info(tree)
             tag = packaging_tag_name(repo, spec, commit_info, options)
+=======
+            gbp.log.info("Tagging %s" % spec.version)
+            tag = repo.version_to_tag(options.packaging_tag, dict(upstreamversion=spec.version), options.vendor)
+>>>>>>> 96a8aae... rpm: add version parsing functions to pkg policy
             if options.retag and repo.has_tag(tag):
                 repo.delete_tag(tag)
             create_packaging_tag(repo, tag, commit=tree, version=spec.version,
@@ -698,8 +703,13 @@ def main(argv):
     if not options.tag_only:
         if spec and options.notify:
             summary = "Gbp-rpm %s" % ["failed", "successful"][not retval]
+            pkg_evr = {'upstreamversion': spec.version}
             message = ("Build of %s %s %s" % (spec.name,
+<<<<<<< HEAD
                             RpmPkgPolicy.compose_full_version(spec.version),
+=======
+                            RpmPkgPolicy.compose_full_version(pkg_evr),
+>>>>>>> 96a8aae... rpm: add version parsing functions to pkg policy
                             ["failed", "succeeded"][not retval]))
             if not gbp.notifications.notify(summary, message, options.notify):
                 gbp.log.err("Failed to send notification")
index 0dd7c0130e3a70d2550eb1be37fbd6510dbfdd93..b1247f1e783289ed92199673af1a15d927456f66 100755 (executable)
@@ -299,12 +299,8 @@ def main(argv):
                 gbp.log.info("Pristine-tar: commiting %s" % pristine_orig)
                 repo.pristine_tar.commit(pristine_orig, options.upstream_branch)
 
-<<<<<<< HEAD
             tag_str_fields = dict(upstreamversion=version, vendor="Upstream")
             tag = repo.version_to_tag(options.upstream_tag, tag_str_fields)
-=======
-            tag = repo.version_to_tag(options.upstream_tag, version, vendor="Upstream")
->>>>>>> 1a96ba7... rpm: add 'vendor' config option
             repo.create_tag(name=tag,
                             msg="Upstream version %s" % version,
                             commit=commit,
index 958185fbeb3d041b398f51c1fc89f8e88588a3ed..19050dacb2c867e191133f6e8bdf5d3f1b91aa82 100755 (executable)
@@ -242,6 +242,7 @@ def parse_spec(options, repo, treeish=None):
             else:
                 spec = spec_from_repo(repo, treeish, options.spec_file)
         else:
+<<<<<<< HEAD
             preferred_name = os.path.basename(repo.path) + '.spec'
             if not treeish:
                 spec = guess_spec(options.packaging_dir, True, preferred_name)
@@ -261,6 +262,17 @@ def find_upstream_commit(repo, spec, upstream_tag):
     tag_str_fields = {'upstreamversion': spec.upstreamversion,
                       'vendor': 'Upstream'}
     upstream_commit = repo.find_version(upstream_tag, tag_str_fields)
+=======
+            specfilename = guess_spec(options.packaging_dir,
+                                      True,
+                                      os.path.basename(repo.path) + '.spec')
+        spec = SpecFile(specfilename)
+    except KeyError:
+        raise GbpError, "Can't parse spec"
+
+    # Find upstream version
+    upstream_commit = repo.find_version(options.upstream_tag, dict(upstreamversion=spec.version), "Upstream")
+>>>>>>> 96a8aae... rpm: add version parsing functions to pkg policy
     if not upstream_commit:
         raise GbpError("Couldn't find upstream version %s" %
                        spec.upstreamversion)
@@ -404,10 +416,26 @@ def import_spec_patches(repo, options):
         if repo.get_branch() == pq_branch:
             repo.force_head(upstream_commit, hard=True)
         else:
+<<<<<<< HEAD
             repo.create_branch(pq_branch, upstream_commit, force=True)
     except GitRepositoryError as err:
         raise GbpError("Cannot create patch-queue branch '%s': %s" %
                         (pq_branch, err))
+=======
+            specfilename = guess_spec(options.packaging_dir,
+                                      True,
+                                      os.path.basename(repo.path) + '.spec')
+        spec = SpecFile(specfilename)
+    except KeyError:
+        raise GbpError, "Can't parse spec"
+
+    # Find upstream version
+    commit = repo.find_version(options.upstream_tag, dict(upstreamversion=spec.version), "Upstream")
+    if commit:
+        commits=[commit]
+    else:
+        raise GbpError, ("Couldn't find upstream version %s. Don't know on what base to import." % spec.version)
+>>>>>>> 96a8aae... rpm: add version parsing functions to pkg policy
 
     # Put patches in a safe place
     if spec_treeish:
@@ -440,6 +468,7 @@ def import_spec_patches(repo, options):
                                                               pq_branch))
 
 
+<<<<<<< HEAD
 def rebase_pq(repo, options):
     """Rebase pq branch on the correct upstream version (from spec file)."""
     current = repo.get_branch()
@@ -450,6 +479,35 @@ def rebase_pq(repo, options):
         base = current
         spec = parse_spec(options, repo)
     upstream_commit = find_upstream_commit(repo, spec, options.upstream_tag)
+=======
+    return os.path.basename(spec.specfile)
+
+
+def rebase_pq(repo, branch, options):
+    if is_pq_branch(branch, options):
+        base = pq_branch_base(branch, options)
+        gbp.log.info("On '%s', switching to '%s'" % (branch, base))
+        branch = base
+        repo.set_branch(branch)
+
+    # Find and parse .spec file
+    try:
+        if options.spec_file != 'auto':
+            specfilename = options.spec_file
+            options.packaging_dir = os.path.dirname(specfilename)
+        else:
+            specfilename = guess_spec(options.packaging_dir,
+                                      True,
+                                      os.path.basename(repo.path) + '.spec')
+        spec = SpecFile(specfilename)
+    except KeyError:
+        raise GbpError, "Can't parse spec"
+
+    # Find upstream version
+    upstream_commit = repo.find_version(options.upstream_tag, dict(upstreamversion=spec.version), "Upstream")
+    if not upstream_commit:
+        raise GbpError, ("Couldn't find upstream version %s. Don't know on what base to import." % spec.version)
+>>>>>>> 96a8aae... rpm: add version parsing functions to pkg policy
 
     switch_to_pq_branch(repo, base, options)
     GitCommand("rebase")([upstream_commit])