From: Markus Lehtonen Date: Wed, 25 Feb 2015 11:50:45 +0000 (+0200) Subject: Universal configurable base tmpdir for all gbp tools X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=942c0dcfe124306d8f22cdcf88ffd32fc5cba5ae;p=tools%2Fgit-buildpackage.git Universal configurable base tmpdir for all gbp tools Adds support for a configurable tmpdir under which all gbp tools now create their temporary directories and files. NOTE: an exception is git-import-dscs which doesn't use the common configuration system. Signed-off-by: Markus Lehtonen --- diff --git a/gbp/config.py b/gbp/config.py index e9382e71..e3349a34 100644 --- a/gbp/config.py +++ b/gbp/config.py @@ -170,6 +170,7 @@ class GbpOptionParser(OptionParser): 'purge': 'True', 'drop': 'False', 'commit': 'False', + 'tmp-dir' : '/var/tmp/gbp/', } help = { 'debian-branch': @@ -321,6 +322,9 @@ class GbpOptionParser(OptionParser): "after export. Default is '%(drop)s'"), 'commit': "commit changes after export, Default is '%(commit)s'", + 'tmp-dir': + ("Base directory under which temporary directories are " + "created, default is '%(tmp-dir)s'"), } def_config_files = [ '/etc/git-buildpackage/gbp.conf', @@ -596,7 +600,6 @@ class GbpOptionParserRpm(GbpOptionParser): """ defaults = dict(GbpOptionParser.defaults) defaults.update({ - 'tmp-dir' : '/var/tmp/gbp/', 'vendor' : 'Downstream', 'packaging-branch' : 'master', 'packaging-dir' : '', @@ -616,9 +619,6 @@ class GbpOptionParserRpm(GbpOptionParser): help = dict(GbpOptionParser.help) help.update({ - 'tmp-dir': - "Base directory under which temporary directories are " - "created, default is '%(tmp-dir)s'", 'vendor': "Distribution vendor name, default is '%(vendor)s'", 'packaging-branch': diff --git a/gbp/scripts/buildpackage.py b/gbp/scripts/buildpackage.py index 699f79fd..c3ec90fe 100755 --- a/gbp/scripts/buildpackage.py +++ b/gbp/scripts/buildpackage.py @@ -40,6 +40,7 @@ from gbp.scripts.common.buildpackage import (index_name, wc_names, git_archive_single, dump_tree, write_wc, drop_index) from gbp.pkg import compressor_opts, compressor_aliases, parse_archive_filename +from gbp.tmpfile import init_tmpdir, del_tmpdir def git_archive(repo, cp, output_dir, treeish, comp_type, comp_level, with_submodules): "create a compressed orig tarball in output_dir using git_archive" @@ -407,6 +408,7 @@ def build_parser(name, prefix=None, git_treeish=None): parser.add_config_file_option(option_name="color-scheme", dest="color_scheme") parser.add_config_file_option(option_name="notify", dest="notify", type='tristate') + parser.add_config_file_option(option_name="tmp-dir", dest="tmp_dir") tag_group.add_option("--git-tag", action="store_true", dest="tag", default=False, help="create a tag after a successful build") tag_group.add_option("--git-tag-only", action="store_true", dest="tag_only", default=False, @@ -544,6 +546,8 @@ def main(argv): options, gbp_args, builder_args = parse_args(argv, prefix, tree) try: + init_tmpdir(options.tmp_dir, prefix='buildpackage_') + Command(options.cleaner, shell=True)() if not options.ignore_new: (ret, out) = repo.is_clean(options.ignore_untracked) @@ -661,6 +665,7 @@ def main(argv): retval = 1 finally: drop_index(repo) + del_tmpdir() if not options.tag_only: if options.export_dir and options.purge and not retval: diff --git a/gbp/scripts/common/import_orig.py b/gbp/scripts/common/import_orig.py index 2e1b3eaa..a4e30560 100644 --- a/gbp/scripts/common/import_orig.py +++ b/gbp/scripts/common/import_orig.py @@ -36,14 +36,6 @@ except ImportError: pass -def cleanup_tmp_tree(tree): - """remove a tree of temporary files""" - try: - gbpc.RemoveTree(tree)() - except gbpc.CommandExecFailed: - gbp.log.err("Removal of tmptree %s failed." % tree) - - def ask_package_name(default, name_validator_func, err_msg): """ Ask the user for the source package name. diff --git a/gbp/scripts/import_dsc.py b/gbp/scripts/import_dsc.py index 38cf9995..43ac30ab 100644 --- a/gbp/scripts/import_dsc.py +++ b/gbp/scripts/import_dsc.py @@ -21,7 +21,6 @@ import sys import re import os import shutil -import tempfile import glob import pipes import time @@ -35,6 +34,7 @@ from gbp.git.modifier import GitModifier from gbp.config import (GbpOptionParserDebian, GbpOptionGroup, no_upstream_branch_msg) from gbp.errors import GbpError +from gbp.tmpfile import init_tmpdir, del_tmpdir, tempfile import gbp.log class SkipImport(Exception): @@ -227,6 +227,7 @@ def build_parser(name): parser.add_config_file_option(option_name="color", dest="color", type='tristate') parser.add_config_file_option(option_name="color-scheme", dest="color_scheme") + parser.add_config_file_option(option_name="tmp-dir", dest="tmp_dir") parser.add_option("--download", action="store_true", dest="download", default=False, help="download source package") branch_group.add_config_file_option(option_name="debian-branch", @@ -288,6 +289,8 @@ def main(argv): return 1 try: + init_tmpdir(options.tmp_dir, prefix='import-dsc_') + if len(args) != 1: gbp.log.err("Need to give exactly one package to import. Try --help.") raise GbpError @@ -328,7 +331,7 @@ def main(argv): if repo.bare: set_bare_repo_options(options) - dirs['tmp'] = os.path.abspath(tempfile.mkdtemp(dir='..')) + dirs['tmp'] = os.path.abspath(tempfile.mkdtemp()) upstream = DebianUpstreamSource(src.tgz) upstream = upstream.unpack(dirs['tmp'], options.filters) @@ -411,6 +414,7 @@ def main(argv): skipped = True finally: os.chdir(dirs['top']) + del_tmpdir() for d in [ 'tmp', 'download' ]: if d in dirs: diff --git a/gbp/scripts/import_orig.py b/gbp/scripts/import_orig.py index ab3bd39d..3be04157 100644 --- a/gbp/scripts/import_orig.py +++ b/gbp/scripts/import_orig.py @@ -20,7 +20,6 @@ from six.moves import configparser import os import sys -import tempfile import gbp.command_wrappers as gbpc from gbp.deb import (DebianPkgPolicy, parse_changelog_repo) from gbp.deb.upstreamsource import DebianUpstreamSource @@ -32,9 +31,10 @@ from gbp.errors import GbpError from gbp.format import format_str import gbp.log from gbp.pkg import compressor_opts -from gbp.scripts.common.import_orig import (cleanup_tmp_tree, ask_package_name, +from gbp.scripts.common.import_orig import (ask_package_name, ask_package_version, download_orig, prepare_sources) +from gbp.tmpfile import init_tmpdir, del_tmpdir, tempfile def upstream_import_commit_msg(options, version): @@ -200,6 +200,7 @@ def build_parser(name): parser.add_config_file_option(option_name="color", dest="color", type='tristate') parser.add_config_file_option(option_name="color-scheme", dest="color_scheme") + parser.add_config_file_option(option_name="tmp-dir", dest="tmp_dir") # Accepted for compatibility parser.add_option("--no-dch", dest='no_dch', action="store_true", @@ -248,7 +249,6 @@ def parse_args(argv): def main(argv): ret = 0 - tmpdir = tempfile.mkdtemp(dir='../') gbp.log.initialize() @@ -257,6 +257,9 @@ def main(argv): return 1 try: + init_tmpdir(options.tmp_dir, prefix='import-orig_') + tmpdir = tempfile.mkdtemp() + if options.download: source = download_orig(args[0]) else: @@ -383,9 +386,8 @@ def main(argv): if len(err.__str__()): gbp.log.err(err) ret = 1 - - if tmpdir: - cleanup_tmp_tree(tmpdir) + finally: + del_tmpdir() if not ret: gbp.log.info("Successfully imported version %s of %s" % (version, source.path)) diff --git a/gbp/scripts/pq.py b/gbp/scripts/pq.py index 14e93ddd..02ec5148 100755 --- a/gbp/scripts/pq.py +++ b/gbp/scripts/pq.py @@ -22,7 +22,6 @@ import errno import os import shutil import sys -import tempfile import re from gbp.config import GbpOptionParserDebian from gbp.git import (GitRepositoryError, GitRepository) @@ -36,6 +35,7 @@ from gbp.scripts.common.pq import (is_pq_branch, pq_branch_name, pq_branch_base, apply_and_commit_patch, switch_pq, drop_pq, get_maintainer_from_control) from gbp.dch import extract_bts_cmds +from gbp.tmpfile import init_tmpdir, del_tmpdir, tempfile PATCH_DIR = "debian/patches/" SERIES_FILE = os.path.join(PATCH_DIR,"series") @@ -395,6 +395,7 @@ def main(argv): os.chdir(repo.path) try: + init_tmpdir(options.tmp_dir, prefix='pq_') current = repo.get_branch() if action == "export": export_patches(repo, current, options) @@ -421,6 +422,8 @@ def main(argv): if len(err.__str__()): gbp.log.err(err) retval = 1 + finally: + del_tmpdir() return retval