Hello community,

here is the log from the commit of package obs-service-tar_scm for 
openSUSE:Factory checked in at 2018-04-27 15:59:50
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/obs-service-tar_scm (Old)
 and      /work/SRC/openSUSE:Factory/.obs-service-tar_scm.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "obs-service-tar_scm"

Fri Apr 27 15:59:50 2018 rev:47 rq:600981 version:0.9.0.1523267117.de861d8

Changes:
--------
--- /work/SRC/openSUSE:Factory/obs-service-tar_scm/obs-service-tar_scm.changes  
2018-04-22 14:30:58.539780282 +0200
+++ 
/work/SRC/openSUSE:Factory/.obs-service-tar_scm.new/obs-service-tar_scm.changes 
    2018-04-27 15:59:57.318911063 +0200
@@ -1,0 +2,10 @@
+Thu Apr 19 09:52:18 UTC 2018 - [email protected]
+
+- Update to version v0.9.0.1523267117.de861d8:
+  * Removing redundant pass statement
+  * fixing indentation warnings from flake8
+  * fixing flake8 warnings, missing imports
+  * missing import for logging functions.
+  * [backend] Adding http proxy support
+
+-------------------------------------------------------------------

Old:
----
  obs-service-tar_scm-0.8.0.1520581079.e26b0ae.tar.gz

New:
----
  obs-service-tar_scm-0.9.0.1523267117.de861d8.tar.gz

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

Other differences:
------------------
++++++ obs-service-tar_scm.spec ++++++
--- /var/tmp/diff_new_pack.bnCgn5/_old  2018-04-27 15:59:58.002885959 +0200
+++ /var/tmp/diff_new_pack.bnCgn5/_new  2018-04-27 15:59:58.006885812 +0200
@@ -19,8 +19,8 @@
 %bcond_without obs_scm_testsuite
 
 Name:           obs-service-tar_scm
-%define version_unconverted 0.8.0.1520581079.e26b0ae
-Version:        0.8.0.1520581079.e26b0ae
+%define version_unconverted 0.9.0.1523267117.de861d8
+Version:        0.9.0.1523267117.de861d8
 Release:        0
 Summary:        An OBS source service: create tar ball from svn/git/hg
 License:        GPL-2.0-or-later
@@ -51,9 +51,9 @@
 BuildRequires:  python-dateutil
 BuildRequires:  python-lxml
 BuildRequires:  python-mock
-BuildRequires:  python-unittest2
 %endif
 BuildRequires:  python >= 2.6
+BuildRequires:  python-unittest2
 Requires:       git-core
 Recommends:     bzr
 Recommends:     mercurial

++++++ _service ++++++
--- /var/tmp/diff_new_pack.bnCgn5/_old  2018-04-27 15:59:58.058883903 +0200
+++ /var/tmp/diff_new_pack.bnCgn5/_new  2018-04-27 15:59:58.062883757 +0200
@@ -4,9 +4,10 @@
     <param name="scm">git</param>
     <param name="exclude">.git</param>
     <param name="version">git-master</param>
-    <param name="versionformat">0.8.0.%ct.%h</param>
+    <param name="versionformat">@PARENT_TAG@.%ct.%h</param>
     <param name="changesgenerate">enable</param>
     <param name="extract">dist/obs-service-tar_scm.spec</param>
+    <param name="versionrewrite-pattern">v(.*)</param>
   </service>
   <service name="recompress" mode="disabled">
     <param name="file">*.tar</param>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.bnCgn5/_old  2018-04-27 15:59:58.086882875 +0200
+++ /var/tmp/diff_new_pack.bnCgn5/_new  2018-04-27 15:59:58.086882875 +0200
@@ -5,4 +5,4 @@
             <param 
name="url">git://github.com/M0ses/obs-service-tar_scm.git</param>
           <param 
name="changesrevision">b742dfc0e12755cf306a95439494b5bdde7c0c61</param></service><service
 name="tar_scm">
                 <param 
name="url">git://github.com/openSUSE/obs-service-tar_scm.git</param>
-              <param 
name="changesrevision">1d2c3354f318bec26ba21df0c6b2218776a9dc05</param></service></servicedata>
\ No newline at end of file
+              <param 
name="changesrevision">092ed79e144abbfee97fef9aebf1e93bc40ab3fa</param></service></servicedata>
\ No newline at end of file

++++++ obs-service-tar_scm-0.8.0.1520581079.e26b0ae.tar.gz -> 
obs-service-tar_scm-0.9.0.1523267117.de861d8.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/obs-service-tar_scm-0.8.0.1520581079.e26b0ae/TarSCM/changes.py 
new/obs-service-tar_scm-0.9.0.1523267117.de861d8/TarSCM/changes.py
--- old/obs-service-tar_scm-0.8.0.1520581079.e26b0ae/TarSCM/changes.py  
2018-03-09 08:37:59.000000000 +0100
+++ new/obs-service-tar_scm-0.9.0.1523267117.de861d8/TarSCM/changes.py  
2018-04-09 11:45:17.000000000 +0200
@@ -202,6 +202,7 @@
         shutil.move(tmp_fp.name, changes_filename)
 
     def get_changesauthor(self, args):
+        changesauthor = None
         # return changesauthor if given as cli option
         if args.changesauthor:
             return args.changesauthor
@@ -211,7 +212,6 @@
             files = [[os.path.join(os.environ['HOME'], '.oscrc'), False]]
             cfg = Config(files)
 
-            changesauthor = None
             section = cfg.get('general', 'apiurl')
             if section:
                 changesauthor = cfg.get(section, 'email')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/obs-service-tar_scm-0.8.0.1520581079.e26b0ae/TarSCM/scm/base.py 
new/obs-service-tar_scm-0.9.0.1523267117.de861d8/TarSCM/scm/base.py
--- old/obs-service-tar_scm-0.8.0.1520581079.e26b0ae/TarSCM/scm/base.py 
2018-03-09 08:37:59.000000000 +0100
+++ new/obs-service-tar_scm-0.9.0.1523267117.de861d8/TarSCM/scm/base.py 
2018-04-09 11:45:17.000000000 +0200
@@ -47,6 +47,12 @@
         self._calc_repocachedir()
         self._final_rename_needed = False
 
+        # proxy support
+        self.httpproxy      = None
+        self.httpsproxy     = None
+        self.noproxy        = None
+        self._calc_proxies()
+
     def check_scm(self):
         '''check version of scm to proof, it is installed and executable'''
         subprocess.Popen(
@@ -150,6 +156,27 @@
             self.repohash = self.get_repocache_hash(self.args.subdir)
             self.repocachedir = os.path.join(repocachedir, self.repohash)
 
+    def _calc_proxies(self):
+        # check for standard http/https proxy variables
+        #   - http_proxy
+        #   - https_proxy
+        #   - no_proxy
+        httpproxy  = os.getenv('http_proxy')
+        httpsproxy  = os.getenv('https_proxy')
+        noproxy  = os.getenv('no_proxy')
+
+        if httpproxy:
+            logging.debug("HTTP proxy found: %s", httpproxy)
+            self.httpproxy = httpproxy
+
+        if httpsproxy:
+            logging.debug("HTTPS proxy found: %s", httpsproxy)
+            self.httpsproxy = httpsproxy
+
+        if noproxy:
+            logging.debug("HTTP no proxy found: %s", noproxy)
+            self.noproxy = noproxy
+
     def prepare_clone_dir(self):
         # special case when using osc and creating an obscpio, use
         # current work directory to allow the developer to work inside
@@ -257,4 +284,4 @@
             self.lock_file = None
 
     def finalize(self):
-        pass
+        self.cleanup()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/obs-service-tar_scm-0.8.0.1520581079.e26b0ae/TarSCM/scm/bzr.py 
new/obs-service-tar_scm-0.9.0.1523267117.de861d8/TarSCM/scm/bzr.py
--- old/obs-service-tar_scm-0.8.0.1520581079.e26b0ae/TarSCM/scm/bzr.py  
2018-03-09 08:37:59.000000000 +0100
+++ new/obs-service-tar_scm-0.9.0.1523267117.de861d8/TarSCM/scm/bzr.py  
2018-04-09 11:45:17.000000000 +0200
@@ -8,9 +8,16 @@
 class Bzr(Scm):
     scm = 'bzr'
 
+    def _get_scm_cmd(self):
+        """Compose a BZR-specific command line using http proxies."""
+        # Bazaar honors the http[s]_proxy variables, no action needed
+        scmcmd = ['bzr']
+
+        return scmcmd
+
     def fetch_upstream_scm(self):
         """SCM specific version of fetch_uptream for bzr."""
-        command = ['bzr', 'checkout', self.url, self.clone_dir]
+        command = self._get_scm_cmd() + ['checkout', self.url, self.clone_dir]
         if self.revision:
             command.insert(3, '-r')
             command.insert(4, self.revision)
@@ -21,7 +28,7 @@
 
     def update_cache(self):
         """Update sources via bzr."""
-        command = ['bzr', 'update']
+        command = self._get_scm_cmd() + ['update']
         if self.revision:
             command.insert(3, '-r')
             command.insert(4, self.revision)
@@ -39,12 +46,13 @@
         if versionformat is None:
             versionformat = '%r'
 
-        version = self.helpers.safe_run(['bzr', 'revno'], self.clone_dir)[1]
+        version = self.helpers.safe_run(self._get_scm_cmd() +
+                                        ['revno'], self.clone_dir)[1]
         return re.sub('%r', version.strip(), versionformat)
 
     def get_timestamp(self):
         log = self.helpers.safe_run(
-            ['bzr', 'log', '--limit=1', '--log-format=long'],
+            self._get_scm_cmd() + ['log', '--limit=1', '--log-format=long'],
             self.clone_dir
         )[1]
         match = re.search(r'timestamp:(.*)', log, re.MULTILINE)
@@ -53,3 +61,7 @@
         tsm = match.group(1).strip()
         timestamp = dateutil.parser.parse(tsm).strftime("%s")
         return int(timestamp)
+
+    # no cleanup is necessary for bzr
+    def cleanup(self):
+        pass
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/obs-service-tar_scm-0.8.0.1520581079.e26b0ae/TarSCM/scm/git.py 
new/obs-service-tar_scm-0.9.0.1523267117.de861d8/TarSCM/scm/git.py
--- old/obs-service-tar_scm-0.8.0.1520581079.e26b0ae/TarSCM/scm/git.py  
2018-03-09 08:37:59.000000000 +0100
+++ new/obs-service-tar_scm-0.9.0.1523267117.de861d8/TarSCM/scm/git.py  
2018-04-09 11:45:17.000000000 +0200
@@ -8,6 +8,21 @@
 class Git(Scm):
     scm = 'git'
 
+    def _get_scm_cmd(self):
+        """Compose a GIT-specific command line using http proxies"""
+        # git should honor the http[s]_proxy variables, but we need to
+        # guarantee this, the variables do not work every time
+        # the no_proxy variable is honored everytime, so no action
+        # is needed here
+        scmcmd = ['git']
+        if self.httpproxy:
+                scmcmd += ['-c', 'http.proxy=' +
+                           self.httpproxy]
+        if self.httpsproxy:
+                scmcmd += ['-c', 'https.proxy=' +
+                           self.httpsproxy]
+        return scmcmd
+
     def switch_revision(self):
         """Switch sources to revision. The git revision may refer to any of the
         following:
@@ -29,19 +44,23 @@
             if self._ref_exists(rev):
                 found_revision = True
                 if os.getenv('OSC_VERSION'):
-                    stash_text = self.helpers.safe_run(['git', 'stash'],
-                                                       cwd=self.clone_dir)[1]
+                    stash_text = self.helpers.safe_run(
+                        self._get_scm_cmd() +
+                        ['stash'],
+                        cwd=self.clone_dir)[1]
                     text = self.helpers.safe_run(
-                        ['git', 'reset', '--hard', rev],
+                        self._get_scm_cmd() + ['reset', '--hard', rev],
                         cwd=self.clone_dir
                     )[1]
                     if stash_text != "No local changes to save\n":
                         logging.debug("[switch_revision] GIT STASHING")
-                        text += self.helpers.safe_run(['git', 'stash', 'pop'],
-                                                      cwd=self.clone_dir)[1]
+                        text += self.helpers.safe_run(
+                            self._get_scm_cmd() +
+                            ['stash', 'pop'],
+                            cwd=self.clone_dir)[1]
                 else:
                     text = self.helpers.safe_run(
-                        ['git', 'reset', '--hard', rev],
+                        self._get_scm_cmd() + ['reset', '--hard', rev],
                         cwd=self.clone_dir
                     )[1]
                 # print (text.rstrip())
@@ -53,14 +72,14 @@
         # only update submodules if they have been enabled
         if os.path.exists(os.path.join(self.clone_dir, '.git', 'modules')):
             self.helpers.safe_run(
-                ['git', 'submodule', 'update', '--recursive'],
+                self._get_scm_cmd() + ['submodule', 'update', '--recursive'],
                 cwd=self.clone_dir
             )
 
     def fetch_upstream_scm(self):
         """SCM specific version of fetch_uptream for git."""
         # clone if no .git dir exists
-        command = ['git', 'clone', self.url, self.clone_dir]
+        command = self._get_scm_cmd() + ['clone', self.url, self.clone_dir]
         if not self.is_sslverify_enabled():
             command += ['--config', 'http.sslverify=false']
         if self.repocachedir:
@@ -75,8 +94,8 @@
         if self.revision and not self._ref_exists(self.revision):
             # fetch reference from url and create locally
             self.helpers.safe_run(
-                ['git', 'fetch', self.url,
-                 self.revision + ':' + self.revision],
+                self._get_scm_cmd() + ['fetch', self.url,
+                                       self.revision + ':' + self.revision],
                 cwd=self.clone_dir, interactive=sys.stdout.isatty()
             )
 
@@ -87,7 +106,8 @@
                 self.args.__dict__['submodules'] == 'enable'
         ):
             self.helpers.safe_run(
-                ['git', 'submodule', 'update', '--init', '--recursive'],
+                self._get_scm_cmd() + ['submodule', 'update', '--init',
+                                       '--recursive'],
                 cwd=self.clone_dir
             )
         elif (
@@ -95,8 +115,8 @@
                 self.args.__dict__['submodules'] == 'master'
         ):
             self.helpers.safe_run(
-                ['git', 'submodule', 'update', '--init', '--recursive',
-                 '--remote'],
+                self._get_scm_cmd() + ['submodule', 'update', '--init',
+                                       '--recursive', '--remote'],
                 cwd=self.clone_dir
             )
 
@@ -104,18 +124,18 @@
         """Update sources via git."""
         # Force origin to the wanted URL in case it switched
         self.helpers.safe_run(
-            ['git', 'config', 'remote.origin.url', self.url],
+            self._get_scm_cmd() + ['config', 'remote.origin.url', self.url],
             cwd=self.clone_dir,
             interactive=sys.stdout.isatty()
         )
 
         self.helpers.safe_run(
-            ['git', 'fetch', '--tags'],
+            self._get_scm_cmd() + ['fetch', '--tags'],
             cwd=self.clone_dir,
             interactive=sys.stdout.isatty()
         )
         self.helpers.safe_run(
-            ['git', 'fetch'],
+            self._get_scm_cmd() + ['fetch'],
             cwd=self.clone_dir,
             interactive=sys.stdout.isatty()
         )
@@ -126,8 +146,8 @@
         """
         Automatic detection of version number for checked-out GIT repository.
         """
-        parent_tag      = args['parent_tag']
-        versionformat   = args['versionformat']
+        parent_tag = args['parent_tag']
+        versionformat = args['versionformat']
         if versionformat is None:
             versionformat = '%ct.%h'
 
@@ -145,15 +165,15 @@
                 versionformat)
 
         version = self.helpers.safe_run(
-            ['git', 'log', '-n1', '--date=short',
-             "--pretty=format:%s" % versionformat],
+            self._get_scm_cmd() + ['log', '-n1', '--date=short',
+                                   "--pretty=format:%s" % versionformat],
             self.clone_dir
         )[1]
         return self.version_iso_cleanup(version)
 
     def _detect_parent_tag(self, args):
         parent_tag = ''
-        cmd = ['git', 'describe', '--tags', '--abbrev=0']
+        cmd = self._get_scm_cmd() + ['describe', '--tags', '--abbrev=0']
         try:
             if args['match_tag']:
                 cmd.append("--match=%s" % args['match_tag'])
@@ -183,7 +203,8 @@
                      "as no parent tag was discovered.\033[0m")
 
         rcode, output = self.helpers.run_cmd(
-            ['git', 'rev-list', '--count', parent_tag + '..HEAD'],
+            self._get_scm_cmd() + ['rev-list', '--count', parent_tag +
+                                   '..HEAD'],
             self.clone_dir
         )
 
@@ -202,12 +223,13 @@
         return int(timestamp)
 
     def get_current_commit(self):
-        return self.helpers.safe_run(['git', 'rev-parse', 'HEAD'],
+        return self.helpers.safe_run(self._get_scm_cmd() + ['rev-parse',
+                                                            'HEAD'],
                                      self.clone_dir)[1]
 
     def _ref_exists(self, rev):
         rcode, _ = self.helpers.run_cmd(
-            ['git', 'rev-parse', '--verify', '--quiet', rev],
+            self._get_scm_cmd() + ['rev-parse', '--verify', '--quiet', rev],
             cwd=self.clone_dir,
             interactive=sys.stdout.isatty()
         )
@@ -215,7 +237,7 @@
 
     def _log_cmd(self, cmd_args, subdir):
         """ Helper function to call 'git log' with args"""
-        cmd = ['git', 'log'] + cmd_args
+        cmd = self._get_scm_cmd() + ['log'] + cmd_args
         if subdir:
             cmd += ['--', subdir]
         return self.helpers.safe_run(cmd, cwd=self.clone_dir)[1]
@@ -256,9 +278,9 @@
 
         # We use a temporary shared clone to avoid race conditions
         # between multiple services
-        org_clone_dir  = self.clone_dir
+        org_clone_dir = self.clone_dir
         self.clone_dir = self.repodir
-        command = ['git', 'clone', '--no-checkout']
+        command = self._get_scm_cmd() + ['clone', '--no-checkout']
         use_reference = True
         try:
             if self.args.package_meta:
@@ -275,3 +297,7 @@
         wdir = os.path.abspath(os.path.join(self.clone_dir, os.pardir))
         self.helpers.safe_run(
             command, cwd=wdir, interactive=sys.stdout.isatty())
+
+    # no cleanup is necessary for git
+    def cleanup(self):
+        pass
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/obs-service-tar_scm-0.8.0.1520581079.e26b0ae/TarSCM/scm/hg.py 
new/obs-service-tar_scm-0.9.0.1523267117.de861d8/TarSCM/scm/hg.py
--- old/obs-service-tar_scm-0.8.0.1520581079.e26b0ae/TarSCM/scm/hg.py   
2018-03-09 08:37:59.000000000 +0100
+++ new/obs-service-tar_scm-0.9.0.1523267117.de861d8/TarSCM/scm/hg.py   
2018-04-09 11:45:17.000000000 +0200
@@ -1,26 +1,62 @@
 import sys
 import re
 import os
+import tempfile
+import shutil
+import logging
 from TarSCM.scm.base import Scm
 
 
 class Hg(Scm):
     scm = 'hg'
 
+    hgtmpdir = tempfile.mkdtemp()
+
+    def _get_scm_cmd(self):
+        """Compose a HG-specific command line using http proxies."""
+        # Mercurial requires declaring proxies via a --config parameter
+        scmcmd = ['hg']
+        if self.httpproxy:
+                logging.debug("using " + self.hgtmpdir)
+                f = open(self.hgtmpdir + "/tempsettings.rc", "wb")
+                f.write('[http_proxy]\n')
+
+                regexp_proxy = re.match('http://(.*):(.*)',
+                                        self.httpproxy,
+                                        re.M | re.I)
+
+                if regexp_proxy.group(1) is not None:
+                        print ('using proxy host: ' + regexp_proxy.group(1))
+                        f.write('host=' + regexp_proxy.group(1))
+                if regexp_proxy.group(2) is not None:
+                        print ('using proxy port: ' + regexp_proxy.group(2))
+                        f.write('port=' + regexp_proxy.group(2))
+                if self.noproxy is not None:
+                        print ('using proxy exceptions: ' +
+                               self.noproxy)
+                        f.write('no=' + self.noproxy)
+                f.close()
+
+                # we just point Mercurial to where the config file is
+                os.environ['HGRCPATH'] = self.hgtmpdir
+
+        return scmcmd
+
     def switch_revision(self):
         """Switch sources to revision."""
         if self.revision is None:
             self.revision = 'tip'
 
-        rcode, _  = self.helpers.run_cmd(['hg', 'update', self.revision],
-                                         cwd=self.clone_dir,
-                                         interactive=sys.stdout.isatty())
+        rcode, _ = self.helpers.run_cmd(self._get_scm_cmd() +
+                                        ['update', self.revision],
+                                        cwd=self.clone_dir,
+                                        interactive=sys.stdout.isatty())
         if rcode:
             sys.exit('%s: No such revision' % self.revision)
 
     def fetch_upstream_scm(self):
         """SCM specific version of fetch_uptream for hg."""
-        command = ['hg', 'clone', self.url, self.clone_dir]
+        command = self._get_scm_cmd() + ['clone', self.url, self.clone_dir]
         if not self.is_sslverify_enabled():
             command += ['--insecure']
         wdir = os.path.abspath(os.path.join(self.clone_dir, os.pardir))
@@ -30,7 +66,8 @@
     def update_cache(self):
         """Update sources via hg."""
         try:
-            self.helpers.safe_run(['hg', 'pull'], cwd=self.clone_dir,
+            self.helpers.safe_run(self._get_scm_cmd() +
+                                  ['pull'], cwd=self.clone_dir,
                                   interactive=sys.stdout.isatty())
         except SystemExit as exc:
             # Contrary to the docs, hg pull returns exit code 1 when
@@ -43,11 +80,12 @@
         """
         Automatic detection of version number for checked-out HG repository.
         """
-        versionformat   = args['versionformat']
+        versionformat = args['versionformat']
         if versionformat is None:
             versionformat = '{rev}'
 
-        version = self.helpers.safe_run(['hg', 'id', '-n'], self.clone_dir)[1]
+        version = self.helpers.safe_run(self._get_scm_cmd() +
+                                        ['id', '-n'], self.clone_dir)[1]
 
         # Mercurial internally stores commit dates in its changelog
         # context objects as (epoch_secs, tz_delta_to_utc) tuples (see
@@ -76,8 +114,8 @@
         # in openSUSE 12.3).
 
         version = self.helpers.safe_run(
+            self._get_scm_cmd() +
             [
-                'hg',
                 'log',
                 '-l1',
                 "-r%s" % version.strip(),
@@ -93,3 +131,10 @@
         timestamp = self.detect_version(data)
         timestamp = re.sub(r'([0-9]+)\..*', r'\1', timestamp)
         return int(timestamp)
+
+    def cleanup(self):
+        try:
+                shutil.rmtree(self.hgtmpdir, ignore_errors=True)
+        except:
+                logging.debug("error on cleanup:", sys.exc_info()[0])
+                raise
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/obs-service-tar_scm-0.8.0.1520581079.e26b0ae/TarSCM/scm/svn.py 
new/obs-service-tar_scm-0.9.0.1523267117.de861d8/TarSCM/scm/svn.py
--- old/obs-service-tar_scm-0.8.0.1520581079.e26b0ae/TarSCM/scm/svn.py  
2018-03-09 08:37:59.000000000 +0100
+++ new/obs-service-tar_scm-0.9.0.1523267117.de861d8/TarSCM/scm/svn.py  
2018-04-09 11:45:17.000000000 +0200
@@ -3,6 +3,8 @@
 import re
 import os
 import logging
+import tempfile
+import shutil
 
 import dateutil.parser
 
@@ -12,10 +14,66 @@
 class Svn(Scm):
     scm = 'svn'
 
+    svntmpdir = tempfile.mkdtemp()
+
+    def _get_scm_cmd(self):
+        """Compose a SVN-specific command line using http proxies."""
+        # Subversion requires declaring proxies in a file, as it does not
+        # support the http[s]_proxy variables. This creates the temporary
+        # config directory that will be added via '--config-dir'
+        scmcmd = ['svn']
+        if self.httpproxy:
+                logging.debug("using " + self.svntmpdir)
+                f = open(self.svntmpdir + "/servers", "wb")
+                f.write('[global]\n')
+
+                regexp_proxy = re.match('http://(.*):(.*)',
+                                        self.httpproxy,
+                                        re.M | re.I)
+
+                if regexp_proxy.group(1) is not None:
+                        logging.debug('using proxy host: ' +
+                                      regexp_proxy.group(1))
+                        f.write('http-proxy-host=' +
+                                regexp_proxy.group(1) + '\n')
+
+                if regexp_proxy.group(2) is not None:
+                        logging.debug('using proxy port: ' +
+                                      regexp_proxy.group(2))
+                        f.write('http-proxy-port=' +
+                                regexp_proxy.group(2) + '\n')
+
+                if self.noproxy is not None:
+                        logging.debug('using proxy exceptions: ' +
+                                      self.noproxy)
+                        no_proxy_domains = []
+                        no_proxy_domains.append(tuple(self.noproxy.split(",")))
+                        no_proxy_string = ""
+
+                # for some odd reason subversion expects the domains
+                # to have an asterisk
+                for i in range(len(no_proxy_domains[0])):
+                        tmpstr = str(no_proxy_domains[0][i]).strip()
+                        if tmpstr.startswith('.'):
+                                no_proxy_string += '*' + tmpstr
+                        else:
+                                no_proxy_string += tmpstr
+
+                        if i < len(no_proxy_domains[0]) - 1:
+                                no_proxy_string += ','
+
+                no_proxy_string += '\n'
+                logging.debug('no_proxy string = ' + no_proxy_string)
+                f.write('http-proxy-exceptions=' + no_proxy_string)
+                f.close()
+                scmcmd += ['--config-dir', self.svntmpdir]
+
+        return scmcmd
+
     def fetch_upstream_scm(self):
         """SCM specific version of fetch_uptream for svn."""
-        command = ['svn', 'checkout', '--non-interactive', self.url,
-                   self.clone_dir]
+        command = self._get_scm_cmd() + ['checkout', '--non-interactive',
+                                         self.url, self.clone_dir]
         if self.revision:
             command.insert(4, '-r%s' % self.revision)
         if not self.is_sslverify_enabled():
@@ -27,7 +85,7 @@
 
     def update_cache(self):
         """Update sources via svn."""
-        command = ['svn', 'update']
+        command = self._get_scm_cmd() + ['update']
         if self.revision:
             command.insert(3, "-r%s" % self.revision)
         self.helpers.safe_run(command, cwd=self.clone_dir,
@@ -41,7 +99,8 @@
         if versionformat is None:
             versionformat = '%r'
 
-        svn_info = self.helpers.safe_run(['svn', 'info'], self.clone_dir)[1]
+        svn_info = self.helpers.safe_run(self._get_scm_cmd() + ['info'],
+                                         self.clone_dir)[1]
 
         version = ''
         match = re.search('Last Changed Rev: (.*)', svn_info, re.MULTILINE)
@@ -50,7 +109,8 @@
         return re.sub('%r', version, versionformat)
 
     def get_timestamp(self):
-        svn_info = self.helpers.safe_run(['svn', 'info', '-rHEAD'],
+        svn_info = self.helpers.safe_run(self._get_scm_cmd() + ['info',
+                                                                '-rHEAD'],
                                          self.clone_dir)[1]
 
         match = re.search('Last Changed Date: (.*)', svn_info, re.MULTILINE)
@@ -102,7 +162,8 @@
         new_lines = []
 
         xml_lines = self.helpers.safe_run(
-            ['svn', 'log', '-r%s:%s' % (revision2, revision1), '--xml'],
+            self._get_scm_cmd() + ['log', '-r%s:%s' % (revision2, revision1),
+                                   '--xml'],
             clone_dir
         )[1]
 
@@ -116,8 +177,8 @@
 
     def _get_rev(self, clone_dir, num_commits):
         revisions = self.helpers.safe_run(
-            ['svn', 'log', '-l%d' % num_commits, '-q',
-             '--incremental'], cwd=clone_dir
+            self._get_scm_cmd() + ['log', '-l%d' % num_commits, '-q',
+                                   '--incremental'], cwd=clone_dir
         )[1].split('\n')
         # remove blank entry on end
         revisions.pop()
@@ -127,3 +188,10 @@
         revision = re.search(r'^r[0-9]*', revision, re.M).group().replace("r",
                                                                           "")
         return revision
+
+    def cleanup(self):
+        try:
+                shutil.rmtree(self.svntmpdir, ignore_errors=True)
+        except:
+                logging.debug("error on cleanup:", sys.exc_info()[0])
+                raise
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/obs-service-tar_scm-0.8.0.1520581079.e26b0ae/TarSCM/scm/tar.py 
new/obs-service-tar_scm-0.9.0.1523267117.de861d8/TarSCM/scm/tar.py
--- old/obs-service-tar_scm-0.8.0.1520581079.e26b0ae/TarSCM/scm/tar.py  
2018-03-09 08:37:59.000000000 +0100
+++ new/obs-service-tar_scm-0.9.0.1523267117.de861d8/TarSCM/scm/tar.py  
2018-04-09 11:45:17.000000000 +0200
@@ -59,3 +59,7 @@
         """Execute final cleanup of workspace"""
         if self._final_rename_needed:
             os.rename(self.clone_dir, self.basename)
+
+    # no cleanup is necessary for tar
+    def cleanup(self):
+        pass
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/obs-service-tar_scm-0.8.0.1520581079.e26b0ae/TarSCM/tasks.py 
new/obs-service-tar_scm-0.9.0.1523267117.de861d8/TarSCM/tasks.py
--- old/obs-service-tar_scm-0.8.0.1520581079.e26b0ae/TarSCM/tasks.py    
2018-03-09 08:37:59.000000000 +0100
+++ new/obs-service-tar_scm-0.9.0.1523267117.de861d8/TarSCM/tasks.py    
2018-04-09 11:45:17.000000000 +0200
@@ -51,6 +51,8 @@
         # gets raised
         if self.scm_object:
             self.scm_object.unlock_cache()
+            # calls the corresponding cleanup routine
+            self.scm_object.cleanup()
 
     def generate_list(self):
         '''


Reply via email to