Enable tito release --test for git releasers

* Store the --test flag on the releaser and pass it to the builder
* With --test in effect, have the builder update the spec file
* When the builder does so it also updates the build_version to include git hash
This commit is contained in:
Luke Meyer 2013-04-19 16:31:03 -04:00
parent 60d3f577c0
commit df27d8bb11
3 changed files with 19 additions and 13 deletions

View file

@ -404,6 +404,7 @@ class Builder(ConfigObject):
self.tgz_filename,
)
run_command(cmd)
self.build_version += ".git." + str(self.commit_count) + "." + str(self.git_commit_id[:7])
self.ran_setup_test_specfile = True
def _get_rpmbuild_dir_options(self):

View file

@ -622,7 +622,8 @@ class ReleaseModule(BaseCliModule):
user_config=self.user_config,
target=target,
releaser_config=releaser_config,
no_cleanup=self.options.no_cleanup)
no_cleanup=self.options.no_cleanup,
test=self.options.test)
releaser.release(dry_run=self.options.dry_run,
no_build=self.options.no_build,
scratch=self.options.scratch)

View file

@ -50,9 +50,11 @@ class Releaser(object):
def __init__(self, name=None, version=None, tag=None, build_dir=None,
pkg_config=None, global_config=None, user_config=None,
target=None, releaser_config=None, no_cleanup=False):
target=None, releaser_config=None, no_cleanup=False, test=False):
self.builder_args = self._parse_builder_args(releaser_config, target)
if test:
self.builder_args['test'] = True # builder must know to build from HEAD
# While we create a builder here, we don't actually call run on it
# unless the releaser needs to:
@ -80,7 +82,7 @@ class Releaser(object):
self.target = target
self.dry_run = False
self.test = test # releaser must know to use builder designation rather than tag
self.no_cleanup = no_cleanup
self._check_releaser_config()
@ -261,10 +263,10 @@ class RsyncReleaser(Releaser):
def __init__(self, name=None, version=None, tag=None, build_dir=None,
pkg_config=None, global_config=None, user_config=None,
target=None, releaser_config=None, no_cleanup=False,
target=None, releaser_config=None, no_cleanup=False, test=False,
prefix="temp_dir="):
Releaser.__init__(self, name, version, tag, build_dir, pkg_config,
global_config, user_config, target, releaser_config, no_cleanup)
global_config, user_config, target, releaser_config, no_cleanup, test)
self.build_dir = build_dir
self.prefix = prefix
@ -374,9 +376,9 @@ class YumRepoReleaser(RsyncReleaser):
def __init__(self, name=None, version=None, tag=None, build_dir=None,
pkg_config=None, global_config=None, user_config=None,
target=None, releaser_config=None, no_cleanup=False):
target=None, releaser_config=None, no_cleanup=False, test=False):
RsyncReleaser.__init__(self, name, version, tag, build_dir, pkg_config,
global_config, user_config, target, releaser_config, no_cleanup,
global_config, user_config, target, releaser_config, no_cleanup, test,
prefix="yumrepo-")
def _read_rpm_header(self, ts, new_rpm_path):
@ -442,9 +444,9 @@ class FedoraGitReleaser(Releaser):
def __init__(self, name=None, version=None, tag=None, build_dir=None,
pkg_config=None, global_config=None, user_config=None,
target=None, releaser_config=None, no_cleanup=False):
target=None, releaser_config=None, no_cleanup=False, test=False):
Releaser.__init__(self, name, version, tag, build_dir, pkg_config,
global_config, user_config, target, releaser_config, no_cleanup)
global_config, user_config, target, releaser_config, no_cleanup, test)
self.git_branches = \
self.releaser_config.get(self.target, "branches").split(" ")
@ -477,6 +479,8 @@ class FedoraGitReleaser(Releaser):
run_command("%s switch-branch %s" % (self.cli_tool, self.git_branches[0]))
self.builder.tgz()
if self.test:
self.builder._setup_test_specfile()
self._git_sync_files(project_checkout)
self._git_upload_sources(project_checkout)
@ -708,9 +712,9 @@ class CvsReleaser(Releaser):
def __init__(self, name=None, version=None, tag=None, build_dir=None,
pkg_config=None, global_config=None, user_config=None,
target=None, releaser_config=None, no_cleanup=False):
target=None, releaser_config=None, no_cleanup=False, test=False):
Releaser.__init__(self, name, version, tag, build_dir, pkg_config,
global_config, user_config, target, releaser_config, no_cleanup)
global_config, user_config, target, releaser_config, no_cleanup, test)
self.package_workdir = os.path.join(self.working_dir,
self.project_name)
@ -954,9 +958,9 @@ class KojiReleaser(Releaser):
def __init__(self, name=None, version=None, tag=None, build_dir=None,
pkg_config=None, global_config=None, user_config=None,
target=None, releaser_config=None, no_cleanup=False):
target=None, releaser_config=None, no_cleanup=False, test=False):
Releaser.__init__(self, name, version, tag, build_dir, pkg_config,
global_config, user_config, target, releaser_config, no_cleanup)
global_config, user_config, target, releaser_config, no_cleanup, test)
self.only_tags = []
if 'ONLY_TAGS' in os.environ: