Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package obs-service-go_modules for 
openSUSE:Factory checked in at 2022-04-28 23:07:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/obs-service-go_modules (Old)
 and      /work/SRC/openSUSE:Factory/.obs-service-go_modules.new.1538 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "obs-service-go_modules"

Thu Apr 28 23:07:55 2022 rev:2 rq:973508 version:0.4.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/obs-service-go_modules/obs-service-go_modules.changes
    2019-10-16 09:13:11.179792147 +0200
+++ 
/work/SRC/openSUSE:Factory/.obs-service-go_modules.new.1538/obs-service-go_modules.changes
  2022-04-28 23:07:59.680689240 +0200
@@ -1,0 +2,7 @@
+Tue Apr 26 08:53:25 UTC 2022 - dmuel...@suse.com
+
+- Update to version 0.4.0:
+  * don't ignore go mod command errors
+  * allow specifying source / vendor archive compression mode
+
+-------------------------------------------------------------------

Old:
----
  obs-service-go_modules-0.3.0.tar.gz

New:
----
  obs-service-go_modules-0.4.0.tar.gz

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

Other differences:
------------------
++++++ obs-service-go_modules.spec ++++++
--- /var/tmp/diff_new_pack.vh7sP1/_old  2022-04-28 23:08:00.176689780 +0200
+++ /var/tmp/diff_new_pack.vh7sP1/_new  2022-04-28 23:08:00.184689789 +0200
@@ -1,7 +1,7 @@
 #
-# spec file for package obs-service-go_modules
+# spec file
 #
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2022 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -15,13 +15,13 @@
 # Please submit bugfixes or comments via https://bugs.opensuse.org/
 #
 
-# Macros from obs-service_tar_scm
+
+%define service go_modules
 %if 0%{?suse_version} >= 1315 || 0%{?fedora_version} >= 29
 %bcond_without python3
 %else
 %bcond_with    python3
 %endif
-
 # This list probably needs to be extended
 # logic seems to be if python < 2.7 ; then needs_external_argparse ; fi
 %if (0%{?centos_version} == 6) || (0%{?suse_version} && 0%{?suse_version} < 
1315) || (0%{?fedora_version} && 0%{?fedora_version} < 26)
@@ -29,7 +29,6 @@
 %else
 %bcond_with    needs_external_argparse
 %endif
-
 %if %{with python3}
 %define use_python python3
 %define use_test   test3
@@ -37,17 +36,19 @@
 %define use_python python
 %define use_test   test
 %endif
-
-%define service go_modules
-
 Name:           obs-service-%{service}
+Version:        0.4.0
+Release:        0
 Summary:        An OBS source service: Download, verify and vendor Go module 
dependencies
 License:        GPL-2.0-or-later
 Group:          Development/Tools/Building
-Url:            https://github.com/openSUSE/obs-service-%{service}
-Version:        0.3.0
-Release:        0
+URL:            https://github.com/openSUSE/obs-service-%{service}
 Source:         %{name}-%{version}.tar.gz
+BuildRequires:  go-md2man
+Requires:       go >= 1.11
+Requires:       gzip
+Requires:       tar
+BuildArch:      noarch
 %if %{with needs_external_argparse}
 BuildRequires:  %{use_python}-argparse
 %endif
@@ -56,12 +57,6 @@
 # Fix missing Requires in python3-pbr in Leap42.3
 BuildRequires:  %{use_python}-setuptools
 %endif
-BuildRequires:  go-md2man
-Requires:       go >= 1.11
-Requires:       gzip
-Requires:       tar
-BuildRoot:      %{_tmppath}/%{name}-%{version}-build
-BuildArch:      noarch
 
 %description
 An OBS Source Service that will download,
@@ -96,7 +91,6 @@
 rm %{name}.1
 
 %files
-%defattr(-,root,root)
 %doc README.md
 %license LICENSE
 %dir %{_prefix}/lib/obs

++++++ _service ++++++
--- /var/tmp/diff_new_pack.vh7sP1/_old  2022-04-28 23:08:00.220689828 +0200
+++ /var/tmp/diff_new_pack.vh7sP1/_new  2022-04-28 23:08:00.224689832 +0200
@@ -1,9 +1,9 @@
 <services>
   <service name="tar_scm" mode="disabled">
-    <param 
name="url">git://github.com/openSUSE/obs-service-go_modules.git</param>
+    <param 
name="url">https://github.com/openSUSE/obs-service-go_modules</param>
     <param name="scm">git</param>
     <param name="exclude">.git</param>
-    <param name="revision">v0.3.0</param>
+    <param name="revision">v0.4.0</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="changesgenerate">enable</param>
     <param name="versionrewrite-pattern">v(.*)</param>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.vh7sP1/_old  2022-04-28 23:08:00.244689854 +0200
+++ /var/tmp/diff_new_pack.vh7sP1/_new  2022-04-28 23:08:00.244689854 +0200
@@ -1,8 +1,5 @@
 <servicedata>
 <service name="tar_scm">
-                <param 
name="url">git://github.com/openSUSEjfkw/obs-service-go_modules.git</param>
-              <param 
name="changesrevision">861db1a1f880e835fd688477acf0def5930947b1</param></service><service
 name="tar_scm">
-                <param 
name="url">git://github.com/openSUSE/obs-service-go_modules.git</param>
-              <param 
name="changesrevision">01876e4604a337048df00a3617ed1332d6fd7769</param></service></servicedata>
-(No newline at EOF)
+                <param 
name="url">https://github.com/openSUSE/obs-service-go_modules</param>
+              <param 
name="changesrevision">3bb1a375ee40d2c4a074c3c715cf06fdbb195b4b</param></service></servicedata>
 

++++++ obs-service-go_modules-0.3.0.tar.gz -> 
obs-service-go_modules-0.4.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-service-go_modules-0.3.0/.gitmessage 
new/obs-service-go_modules-0.4.0/.gitmessage
--- old/obs-service-go_modules-0.3.0/.gitmessage        2019-08-30 
05:31:18.000000000 +0200
+++ new/obs-service-go_modules-0.4.0/.gitmessage        1970-01-01 
01:00:00.000000000 +0100
@@ -1 +0,0 @@
-Initial import
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-service-go_modules-0.3.0/README.md 
new/obs-service-go_modules-0.4.0/README.md
--- old/obs-service-go_modules-0.3.0/README.md  2019-08-30 05:31:18.000000000 
+0200
+++ new/obs-service-go_modules-0.4.0/README.md  2020-08-20 23:58:12.000000000 
+0200
@@ -18,19 +18,20 @@
 go mod vendor
 ```
 
-`obs-service-go_modules` will create `vendor.tar.gz` containing the
-`vendor/` directory populated by `go mod vendor`. `vendor.tar.gz`
-is generated in the rpm package directory. `vendor.tar.gz` can be
-committed to [OBS](https://build.opensuse.org) to facilitate
-offline Go application package builds for
-[openSUSE](https://www.opensuse.org),
+`obs-service-go_modules` will create a `vendor.tar[.<tar compression>]` archive
+containing the `vendor/` directory populated by `go mod vendor`. The archive
+is generated in the rpm package directory, and can be committed to
+[OBS](https://build.opensuse.org) to facilitate offline Go application package 
builds
+for [openSUSE](https://www.opensuse.org),
 [SUSE](https://www.suse.com), and numerous other distributions.
 
 ## Usage for packagers
 
-Presently it is assumed the Go application is distributed as
-a tarball `app-0.1.0.tar.gz` unpacking to `app-0.1.0/`.
-`obs-service-go_modules` will autodetect tarball archives of the form 
`app-0.1.0.tar.gz`,
+Presently it is assumed the Go application is distributed as a tarball named
+`app-0.1.0.tar[.<tar compression>]`, unpacking to `app-0.1.0/`.
+The `<tar compression>` extension can be specified using the `compression` 
parameter,
+and defaults to `gz`.
+`obs-service-go_modules` will autodetect tarball archives of the form 
`app-0.1.0.tar[.<tar compression>]`,
 where the RPM packaging uses spec file `app.spec`.
 
 Create a `_service` file containing:
@@ -155,7 +156,7 @@
 ## Transition note
 
 Until such time as `obs-service-go_modules` is available on
-[OBS](https://build.opensuse.org), `vendor.tar.gz` should
+[OBS](https://build.opensuse.org), `vendor.tar[.<tar compression>]` should
 be committed along with the Go application release tarball.
 
 ## openSUSE RPM packages built using `obs-service-go_modules`
@@ -168,11 +169,11 @@
 
 ## FAQ
 
-### Q: Does `vendor.tar.gz` need to be committed to OBS package?
+### Q: Does `vendor.tar[.<tar compression>]` need to be committed to OBS 
package?
 
 A: Currently yes.
 As long as  `obs-service-go_modules` is run locally via `osc service 
disabledrun`,
-then `vendor.tar.gz` should be committed and referenced as an additional 
`Source:`.
+then `vendor.tar[.<tar compression>]` should be committed and referenced as an 
additional `Source:`.
 If and when `obs-service-go_modules` is available on
 [OBS](https://build.opensuse.org),
 additional strategies should be possible such as a `vendor.cpio`
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-service-go_modules-0.3.0/go_modules 
new/obs-service-go_modules-0.4.0/go_modules
--- old/obs-service-go_modules-0.3.0/go_modules 2019-08-30 05:31:18.000000000 
+0200
+++ new/obs-service-go_modules-0.4.0/go_modules 2020-08-20 23:58:12.000000000 
+0200
@@ -20,7 +20,8 @@
 go mod verify
 go mod vendor
 
-obs-service-go_modules will create vendor.tar.gz containing the
+obs-service-go_modules will create a vendor tarball, compressed with
+the specified method (default to "gz"), containing the
 vendor/ directory populated by go mod vendor.
 
 See README.md for additional documentation.
@@ -38,27 +39,44 @@
 from subprocess import CalledProcessError
 
 app_name = "obs-service-go_modules"
-vendor_tarname = "vendor.tar.gz"
 
 description = __doc__
 
 logging.basicConfig(level=logging.DEBUG)
 log = logging.getLogger(app_name)
 
+DEFAULT_COMPRESSION = "gz"
+
 parser = argparse.ArgumentParser(
     description=description, 
formatter_class=argparse.RawDescriptionHelpFormatter
 )
 parser.add_argument("--strategy", default="vendor")
 parser.add_argument("--archive")
 parser.add_argument("--outdir")
+parser.add_argument("--compression")
 args = parser.parse_args()
 
 outdir = args.outdir
 
 
+def get_archive_extension():
+    if args.compression not in tarfile.TarFile.OPEN_METH:
+        log.error(f"The specified compression mode is not supported: 
\"{args.compression}\"")
+        exit(1)
+    
+    if args.compression == "tar":
+        return  "tar"
+
+    return "tar." + (args.compression or DEFAULT_COMPRESSION)
+
+
+archive_ext = get_archive_extension()
+vendor_tarname = f"vendor.{archive_ext}"
+
+
 def archive_autodetect():
     """ Find the most likely candidate file that contains go.mod and go.sum.
-        For most go applications this will be app-x.y.z.tar.gz.
+        For most Go applications this will be app-x.y.z.tar[.<tar 
compression>].
         Use the name of the .spec file as the stem for the archive to detect.
         Archive formats supported:
         - .tar.gz
@@ -74,7 +92,7 @@
         spec_dir = spec.parent  # typically the same as cwd
         spec_stem = spec.stem  # stem is app in app.spec
         # highest sorted archive under spec_dir
-        pattern = f"{spec.stem}*.tar.gz"
+        pattern = f"{spec.stem}*.{archive_ext}"
         archive = next(reversed(sorted(Path(spec_dir).glob(pattern))), None)
     if not archive:
         log.error(f"Archive autodetection found no matching archive under 
{cwd}")
@@ -103,11 +121,11 @@
 archive = args.archive or archive_autodetect()
 log.info(f"Using archive {archive}")
 
-basename = archive.replace(".tar.gz", "")  # currently only .tar.gz supported
+basename = archive.replace(f".{archive_ext}", "")
 
 
 def extract(filename, dir):
-    if filename.endswith(".tar.gz"):
+    if filename.endswith(f".{archive_ext}"):
         tar = tarfile.open(filename)
         tar.extractall(path=dir)
         tar.close()
@@ -128,12 +146,11 @@
         output = check_output(["go", "mod", cmd], 
cwd=dir).decode("utf-8").strip()
         if output:
             log.info(output)
-        return True
     except CalledProcessError as e:
         error = e.output.decode("utf-8").strip()
         if error:
             log.info(error)
-        return False
+        raise
 
 
 def main():
@@ -159,7 +176,7 @@
         log.info(f"Vendor go.mod dependencies to {vendor_tarname}")
         vendor_tarfile = os.path.join(outdir, vendor_tarname)
         vendor_dir = os.path.join(go_mod_dir, "vendor")
-        with tarfile.open(vendor_tarfile, "w:gz") as tar:
+        with tarfile.open(vendor_tarfile, "w:" + args.compression) as tar:
             tar.add(vendor_dir, arcname=("vendor"))
 
         # remove extracted Go application source
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/obs-service-go_modules-0.3.0/go_modules.service 
new/obs-service-go_modules-0.4.0/go_modules.service
--- old/obs-service-go_modules-0.3.0/go_modules.service 2019-08-30 
05:31:18.000000000 +0200
+++ new/obs-service-go_modules-0.4.0/go_modules.service 2020-08-20 
23:58:12.000000000 +0200
@@ -3,7 +3,7 @@
   <description>This service extracts a Go application source,
   reads the files go.mod and go.sum,
   downloads and verifies Go module dependencies,
-  and creates a vendor.tar.gz to be committed allowing fully offline
+  and creates a vendor.tar[.<tar compression>] to be committed allowing fully 
offline
   builds of Go applications.</description>
   <parameter name="strategy">
     <description>Choose the strategy this service runs in. Values: vendor. 
Default: vendor</description>
@@ -11,4 +11,7 @@
   <parameter name="archive">
     <description>Specify the Go application source archive that contains 
go.mod and go.sum. Values: app-x.y.z.tar.gz. Default: None, will use 
autodetection</description>
   </parameter>
+  <parameter name="compression">
+    <description>Specify the source / vendor tarballs compression method. When 
using "tar" no compression is applied. Default: "gz".</description>
+  </parameter>
 </service>

Reply via email to