Hello community,

here is the log from the commit of package obs-service-set_version for 
openSUSE:Factory checked in at 2017-03-12 20:04:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/obs-service-set_version (Old)
 and      /work/SRC/openSUSE:Factory/.obs-service-set_version.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "obs-service-set_version"

Sun Mar 12 20:04:34 2017 rev:25 rq:477941 version:0.5.5

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/obs-service-set_version/obs-service-set_version.changes
  2017-01-17 14:35:34.484149142 +0100
+++ 
/work/SRC/openSUSE:Factory/.obs-service-set_version.new/obs-service-set_version.changes
     2017-03-12 20:04:35.292762983 +0100
@@ -1,0 +2,7 @@
+Thu Mar 02 09:23:45 UTC 2017 - [email protected]
+
+- Update to version 0.5.5:
+  * read version from .obsinfo file if available
+  * Add support for Collax build recipes
+
+-------------------------------------------------------------------

Old:
----
  obs-service-set_version-0.5.4.tar.gz

New:
----
  obs-service-set_version-0.5.5.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ obs-service-set_version.spec ++++++
--- /var/tmp/diff_new_pack.yayhx2/_old  2017-03-12 20:04:36.124645269 +0100
+++ /var/tmp/diff_new_pack.yayhx2/_new  2017-03-12 20:04:36.128644704 +0100
@@ -19,7 +19,7 @@
 %define service set_version
 
 Name:           obs-service-%{service}
-Version:        0.5.4
+Version:        0.5.5
 Release:        0
 Summary:        An OBS source service: Update spec file version
 License:        GPL-2.0+

++++++ PKGBUILD ++++++
--- /var/tmp/diff_new_pack.yayhx2/_old  2017-03-12 20:04:36.168639044 +0100
+++ /var/tmp/diff_new_pack.yayhx2/_new  2017-03-12 20:04:36.168639044 +0100
@@ -1,5 +1,5 @@
 pkgname=obs-service-set_version
-pkgver=0.5.4
+pkgver=0.5.5
 pkgrel=0
 pkgdesc="An OBS source service: Update spec file version"
 arch=('i686' 'x86_64')

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.yayhx2/_old  2017-03-12 20:04:36.204633951 +0100
+++ /var/tmp/diff_new_pack.yayhx2/_new  2017-03-12 20:04:36.204633951 +0100
@@ -1,5 +1,5 @@
 <servicedata>
   <service name="tar_scm">
     <param 
name="url">[email protected]:openSUSE/obs-service-set_version.git</param>
-  <param 
name="changesrevision">a9f6aef3babe79ba47cf1d032ca0a5f04803f3e5</param></service>
+  <param 
name="changesrevision">d2e983f302f6c5396cc84a53413d648305cba35d</param></service>
 </servicedata>
\ No newline at end of file

++++++ debian.dsc ++++++
--- /var/tmp/diff_new_pack.yayhx2/_old  2017-03-12 20:04:36.224631121 +0100
+++ /var/tmp/diff_new_pack.yayhx2/_new  2017-03-12 20:04:36.224631121 +0100
@@ -1,6 +1,6 @@
 Format: 1.0
 Source: obs-service-set_version
-Version: 0.5.4
+Version: 0.5.5
 Binary: obs-service-set_version
 Provides: obs-service-set_version
 Maintainer: Adrian Schroeter <[email protected]>

++++++ obs-service-set_version-0.5.4.tar.gz -> 
obs-service-set_version-0.5.5.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-service-set_version-0.5.4/set_version 
new/obs-service-set_version-0.5.5/set_version
--- old/obs-service-set_version-0.5.4/set_version       2017-01-13 
14:04:50.000000000 +0100
+++ new/obs-service-set_version-0.5.5/set_version       2017-03-02 
09:46:00.000000000 +0100
@@ -35,7 +35,8 @@
 
 
 outdir = None
-suffixes = ('obscpio', 'tar', 'tar.gz', 'tgz', 'tar.bz2', 'tbz2', 'tar.xz', 
'zip')
+suffixes = ('obscpio', 'tar', 'tar.gz', 'tgz', 'tar.bz2', 'tbz2', 'tar.xz',
+            'zip')
 suffixes_re = "|".join(map(lambda x: re.escape(x), suffixes))
 
 
@@ -50,9 +51,12 @@
 class VersionDetector(object):
     @staticmethod
     def _autodetect(files, basename):
-        version = VersionDetector._get_version_via_archive_dirname(
+        version = VersionDetector._get_version_via_obsinfo(
             files, basename)
         if not version:
+            version = VersionDetector._get_version_via_archive_dirname(
+                files, basename)
+        if not version:
             version = VersionDetector._get_version_via_filename(
                 files, basename)
         if not version:
@@ -102,6 +106,18 @@
         return None
 
     @staticmethod
+    def _get_version_via_obsinfo(files, basename):
+        join_suffix = basename + ".obsinfo"
+        for filename in filter(lambda x: x.endswith(join_suffix), files):
+            if os.path.exists(filename):
+                with open(filename, "r") as fp:
+                    for line in fp:
+                        if line.startswith("version: "):
+                            return line[9:]
+        # Nothing found
+        return None
+
+    @staticmethod
     def _get_version_via_debian_changelog(filename):
         # from http://anonscm.debian.org/cgit/pkg-python-debian/\
             # python-debian.git/tree/lib/debian/changelog.py
@@ -196,7 +212,7 @@
     with open(filename, 'r+') as f:
         contents = f.read()
         f.seek(0)
-        if filename.endswith("PKGBUILD"):
+        if filename.endswith("PKGBUILD") or filename.endswith("build.collax"):
             contents_new, subs = re.subn(
                 r"^{tag}=.*".format(tag=tag),
                 r"{tag}={string}".format(tag=tag, string=string), contents,
@@ -302,6 +318,7 @@
         version = VersionDetector._autodetect(files_local, args["basename"])
 
     if not version:
+        print("unable to detect the version")
         sys.exit(-1)
 
     # if no files explicitly specified process whole directory
@@ -338,6 +355,13 @@
         shutil.copyfile(f, filename)
         _replace_debian_changelog_version(filename, version + "-0")
 
+    # handle build.collax recipes
+    for f in filter(lambda x: x.endswith(("build.collax")), files):
+        filename = outdir + "/" + f
+        shutil.copyfile(f, filename)
+        _replace_tag(filename, "version", version)
+        _replace_tag(filename, "build", "0")
+
     # handle arch linux PKGBUILD files
     # TODO: Handle the md5sums generation!
     for f in filter(lambda x: x.endswith(("PKGBUILD")), files):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-service-set_version-0.5.4/tests/test_rpmspec.py 
new/obs-service-set_version-0.5.5/tests/test_rpmspec.py
--- old/obs-service-set_version-0.5.4/tests/test_rpmspec.py     2017-01-13 
14:04:50.000000000 +0100
+++ new/obs-service-set_version-0.5.5/tests/test_rpmspec.py     2017-03-02 
09:46:00.000000000 +0100
@@ -26,6 +26,19 @@
 class SetVersionSpecfile(SetVersionBaseTest):
     """Test set_version service for .spec files"""
 
+    def _write_obsinfo(self, filename, version):
+        # debian changelogs can't be created with empty versions
+        if not version.strip():
+            version = "0~0"
+        obsinfo_file = open(filename, "w")
+        obsinfo_file.write("name: my_base_name\n")
+        obsinfo_file.write("version: %s\n" % version)
+        obsinfo_file.write("mtime: 1463080107\n")
+        obsinfo_file.write("commit: "
+                           "01fcec0959b42a163a7b0a943933488a217f2c9a\n")
+        obsinfo_file.close()
+        return os.path.join(self._tmpdir, filename)
+
     def _write_specfile(self, spec_name, spec_tags, custom=[]):
         """write a given filename with the given rpm tags and custom
         strings (i.e. '%define foo bar')"""
@@ -84,6 +97,19 @@
         self._run_set_version()
         self._check_file_assert_contains(spec_path, expected_version)
         self._check_file_assert_contains(spec_path, "Name: foo")
+        self._check_file_assert_contains(spec_path, "Group: AnyGroup")
+
+    @file_data("data_test_from_tarball_with_single_file.json")
+    def test_from_obsinfo(self, data):
+        tarball_name, tarball_dirs, old_version, expected_version = data
+        self._write_obsinfo("test.obsinfo", expected_version)
+        spec_path = self._write_specfile("test.spec",
+                                         {"Name": "foo",
+                                          "Version": old_version,
+                                          "Group": "AnyGroup"})
+        self._run_set_version()
+        self._check_file_assert_contains(spec_path, expected_version)
+        self._check_file_assert_contains(spec_path, "Name: foo")
         self._check_file_assert_contains(spec_path, "Group: AnyGroup")
 
     @file_data("data_test_from_tarball_with_basename_with_multiple_files.json")


Reply via email to