From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from pigeon.gentoo.org ([208.92.234.80] helo=lists.gentoo.org) by finch.gentoo.org with esmtp (Exim 4.60) (envelope-from ) id 1Qpz1e-0003kk-Lp for garchives@archives.gentoo.org; Sun, 07 Aug 2011 08:48:02 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 6601E21C0C8; Sun, 7 Aug 2011 08:47:54 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id 2685921C0C8 for ; Sun, 7 Aug 2011 08:47:53 +0000 (UTC) Received: from pelican.gentoo.org (unknown [66.219.59.40]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 6F7181B4042 for ; Sun, 7 Aug 2011 08:47:53 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by pelican.gentoo.org (Postfix) with ESMTP id CA6DC80040 for ; Sun, 7 Aug 2011 08:47:52 +0000 (UTC) From: "Brian Dolbec" To: gentoo-commits@lists.gentoo.org Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Brian Dolbec" Message-ID: Subject: [gentoo-commits] proj/layman:master commit in: layman/overlays/ X-VCS-Repository: proj/layman X-VCS-Files: layman/overlays/source.py layman/overlays/svn.py X-VCS-Directories: layman/overlays/ X-VCS-Committer: dol-sen X-VCS-Committer-Name: Brian Dolbec X-VCS-Revision: acc9c9163a0ff4fe3e19e4cb49228b93f1c5999e Date: Sun, 7 Aug 2011 08:47:52 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: quoted-printable X-Archives-Salt: X-Archives-Hash: 04573f3eb360f530234e009ab0df38f2 commit: acc9c9163a0ff4fe3e19e4cb49228b93f1c5999e Author: dol-sen gmail com> AuthorDate: Sun Aug 7 08:38:34 2011 +0000 Commit: Brian Dolbec gmail com> CommitDate: Sun Aug 7 08:47:00 2011 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/layman.git;a=3D= commit;h=3Dacc9c916 run "svn cleanup..." for keyboard interrupts, bug 377035 --- layman/overlays/source.py | 9 +++++++++ layman/overlays/svn.py | 22 ++++++++++++++++------ 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/layman/overlays/source.py b/layman/overlays/source.py index a57baf4..71e75fc 100644 --- a/layman/overlays/source.py +++ b/layman/overlays/source.py @@ -126,10 +126,12 @@ class OverlaySource(object): return self.config['%s_command' % self.__class__.type_key] =20 def run_command(self, command, args, **kwargs): + self.output.debug("OverlaySource.run_command(): " + command, 6) file_to_run =3D _resolve_command(command, self.output.error)[1] args =3D [file_to_run] + args assert('pwd' not in kwargs) # Bug detector =20 + self.output.debug("OverlaySource.run_command(): cleared 'assert'= ", 7) cwd =3D kwargs.get('cwd', None) env =3D None env_updates =3D None @@ -172,6 +174,8 @@ class OverlaySource(object): result =3D proc.wait() except KeyboardInterrupt: self.output.info('Interrupted manually', 2) + self.output.warn("Checking for cleanup actions to perform", = 4) + self.cleanup() result =3D 1 except Exception as err: self.output.error( @@ -207,3 +211,8 @@ class OverlaySource(object): =20 def to_xml_hook(self, repo_elem): pass + + def cleanup(self): + '''cleanup a failed/interrupted process + overridden in subclass if it is needed.''' + pass diff --git a/layman/overlays/svn.py b/layman/overlays/svn.py index 97f03d6..b9a5a34 100644 --- a/layman/overlays/svn.py +++ b/layman/overlays/svn.py @@ -55,7 +55,7 @@ class SvnOverlay(OverlaySource): super(SvnOverlay, self).add(base) =20 cfg_opts =3D self.config["svn_addopts"] - target =3D path([base, self.parent.name]) + self.target =3D path([base, self.parent.name]) =20 args =3D ['co'] if quiet: @@ -63,11 +63,11 @@ class SvnOverlay(OverlaySource): if len(cfg_opts): args.append(cfg_opts) args.append(self.src + '/@') - args.append(target) + args.append(self.target) =20 return self.postsync( self.run_command(self.command(), args, cmd=3Dself.type), - cwd=3Dtarget) + cwd=3Dself.target) =20 def sync(self, base, quiet =3D False): '''Sync overlay.''' @@ -84,7 +84,7 @@ class SvnOverlay(OverlaySource): return path([base, repo_part]) =20 cfg_opts =3D self.config["svn_syncopts"] - target =3D checkout_location() + self.target =3D checkout_location() =20 # svn up [-q] TARGET args =3D ['up'] @@ -92,11 +92,11 @@ class SvnOverlay(OverlaySource): args.append('-q') if len(cfg_opts): args.append(cfg_opts) - args.append(target) + args.append(self.target) =20 return self.postsync( self.run_command(self.command(), args, cmd=3Dself.type), - cwd=3Dtarget) + cwd=3Dself.target) =20 def supported(self): '''Overlay type supported?''' @@ -104,3 +104,13 @@ class SvnOverlay(OverlaySource): return require_supported( [(self.command(), 'svn','dev-vcs/subversion'),], self.output.warn) + + def cleanup(self): + '''Code to run in the event of a keyboard interrupt. + runs svn cleanup + ''' + self.output.warn("SVN: preparing to run cleanup()", 2) + args =3D ["cleanup"] + args.append(self.target) + cleanup =3D self.run_command(self.command(), args, cmd=3D"svn cl= eanup") + return