From e28ea0740a7b4eb2ef4c1bd3079d77a40c6072b8 Mon Sep 17 00:00:00 2001 From: Guido Günther Date: Sun, 30 Oct 2011 20:03:33 +0100 Subject: Get rid of the symlink by moving the commands to gbp/scripts/ --- git-import-dscs | 157 -------------------------------------------------------- 1 file changed, 157 deletions(-) delete mode 100755 git-import-dscs (limited to 'git-import-dscs') diff --git a/git-import-dscs b/git-import-dscs deleted file mode 100755 index 41dc223..0000000 --- a/git-import-dscs +++ /dev/null @@ -1,157 +0,0 @@ -#!/usr/bin/python -u -# vim: set fileencoding=utf-8 : -# -# (C) 2008, 2009, 2010 Guido Guenther -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -"""Import multiple dsc files in one go""" - -import glob -import os -import sys -import tempfile -import gbp.command_wrappers as gbpc -from gbp.deb import parse_dsc, DscFile, DpkgCompareVersions -from gbp.errors import GbpError -from gbp.git import GitRepository, GitRepositoryError -import gbp.log - -class DscCompareVersions(DpkgCompareVersions): - def __init__(self): - DpkgCompareVersions.__init__(self) - - def __call__(self, dsc1, dsc2): - return DpkgCompareVersions.__call__(self, dsc1.version, dsc2.version) - - -class GitImportDsc(gbpc.Command): - # git-import-dsc should reside in the same directory as git-import-dscs - # so we can reuse the full path from the later - cmd = os.path.abspath(__file__[:-1]) - def __init__(self, args): - if not os.access(self.cmd, os.X_OK): - raise GbpError, "%s not found - can't import packages" % self.cmd - gbpc.Command.__init__(self, self.cmd, args) - - def importdsc(self, dsc): - gbpc.Command.__call__(self, [dsc.dscfile]) - - -def fetch_snapshots(pkg, downloaddir): - "Fetch snapshots using debsnap von snapshots.debian.org" - dscs = None - - gbp.log.info("Downloading snapshots of '%s' to '%s'..." % (pkg, downloaddir)) - debsnap = gbpc.Command("debsnap", [ '--force', '--destdir=%s' % (downloaddir), pkg]) - try: - debsnap() - except gbpc.CommandExecFailed: - if debsnap.retcode == 2: - gbp.log.warn("Some packages failed to download. Continuing.") - pass - else: - raise - - dscs = glob.glob(os.path.join(downloaddir, '*.dsc')) - if not dscs: - raise GbpError, 'No package downloaded' - - return [os.path.join(downloaddir, dsc) for dsc in dscs] - - -def print_help(): - print """Usage: - git-import-dscs [git-import-dsc options] /path/to/dsc1 [/path/to/dsc2] ... -or - git-import-dscs --debsnap [git-import-dsc options] package -""" - - -def main(argv): - dirs = dict(top=os.path.abspath(os.curdir)) - dscs = [] - ret = 0 - verbose = False - dsc_cmp = DscCompareVersions() - use_debsnap = False - - try: - import_args = argv[1:] - - if '--verbose' in import_args: - verbose = True - gbp.log.setup(False, verbose) - - # Not using Configparser since we want to pass all unknown options - # unaltered to git-import-dsc - if '--debsnap' in import_args: - use_debsnap = True - import_args.remove('--debsnap') - if import_args == []: - print_help() - raise GbpError - pkg = import_args[-1] - import_args = import_args[:-1] - else: - for arg in argv[::-1]: - if arg.endswith('.dsc'): - dscs.append(parse_dsc(arg)) - import_args.remove(arg) - - if not use_debsnap and not dscs: - print_help() - raise GbpError - - if use_debsnap: - dirs['tmp'] = os.path.abspath(tempfile.mkdtemp()) - dscs = [ parse_dsc(f) for f in fetch_snapshots(pkg, dirs['tmp']) ] - - dscs.sort(cmp=dsc_cmp) - importer = GitImportDsc(import_args) - - try: - repo = GitRepository('.') - (clean, out) = repo.is_clean() - if not clean: - gbp.log.err("Repository has uncommitted changes, commit these first: ") - raise GbpError, out - else: - dirs['pkg'] = dirs['top'] - except GitRepositoryError: - # no git repository there yet - dirs['pkg'] = os.path.join(dirs['top'], dscs[0].pkg) - - importer.importdsc(dscs[0]) - os.chdir(dirs['pkg']) - - for dsc in dscs[1:]: - importer.importdsc(dsc) - - except (GbpError, gbpc.CommandExecFailed), err: - if len(err.__str__()): - gbp.log.err(err) - ret = 1 - finally: - if dirs.has_key('tmp'): - gbpc.RemoveTree(dirs['tmp'])() - os.chdir(dirs['top']) - - if not ret: - gbp.log.info('Everything imported under %s' % dirs['pkg']) - return ret - -if __name__ == '__main__': - sys.exit(main(sys.argv)) - -# vim:et:ts=4:sw=4:et:sts=4:ai:set list listchars=tab\:»·,trail\:·: -- cgit v1.2.3