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 - fschreiner@suse.de + +- 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): '''