Skip to content

Commit

Permalink
Use proper temp dirs for releasing.
Browse files Browse the repository at this point in the history
  • Loading branch information
dgoodwin committed Dec 22, 2011
1 parent 4f7287d commit 193d057
Showing 1 changed file with 32 additions and 41 deletions.
73 changes: 32 additions & 41 deletions src/tito/release.py
Expand Up @@ -63,12 +63,11 @@ def __init__(self, name=None, version=None, tag=None, build_dir=None,
# TODO: if it looks like we need custom CVSROOT's for different users,
# allow setting of a property to lookup in ~/.spacewalk-build-rc to
# use instead. (if defined)
self.cvs_workdir = os.path.join(self.builder.rpmbuild_basedir,
self.working_dir = os.path.join(self.builder.rpmbuild_basedir,
DEFAULT_CVS_BUILD_DIR)
debug("cvs_workdir = %s" % self.cvs_workdir)

self.cvs_package_workdir = os.path.join(self.cvs_workdir,
self.project_name)
self.working_dir = mkdtemp(dir=self.builder.rpmbuild_basedir,
prefix="release-%s" % self.builder.project_name_and_sha1)
print("Working in: %s" % self.working_dir)

# When syncing files with CVS, only copy files with these extensions:
self.cvs_copy_extensions = (".spec", ".patch")
Expand Down Expand Up @@ -133,10 +132,10 @@ def release(self, dry_run=False):

def cleanup(self):
if not self.no_cleanup:
debug("Cleaning up [%s]" % self.cvs_package_workdir)
run_command("rm -rf %s" % self.cvs_package_workdir)
debug("Cleaning up [%s]" % self.working_dir)
run_command("rm -rf %s" % self.working_dir)
else:
print("WARNING: leaving %s (--no-cleanup)" % self.cvs_package_workdir)
print("WARNING: leaving %s (--no-cleanup)" % self.working_dir)

def _list_files_to_copy(self):
"""
Expand Down Expand Up @@ -352,26 +351,22 @@ def __init__(self, name=None, version=None, tag=None, build_dir=None,

self.git_branches = \
self.releaser_config.get(self.target, "branches").split(" ")
self.package_workdir = os.path.join(self.working_dir,
self.project_name)


def release(self, dry_run=False):
self.dry_run = dry_run
self._git_release()

def cleanup(self):
if not self.no_cleanup:
debug("Cleaning up [%s]" % self.cvs_package_workdir)
run_command("rm -rf %s" % self.cvs_package_workdir)
else:
print("WARNING: leaving %s (--no-cleanup)" % self.cvs_package_workdir)

def _git_release(self):

commands.getoutput("mkdir -p %s" % self.cvs_workdir)
os.chdir(self.cvs_workdir)
commands.getoutput("mkdir -p %s" % self.working_dir)
os.chdir(self.working_dir)
user = fedora_cert.read_user_cert()
run_command("%s clone %s" % (self.cli_tool, self.project_name))

project_checkout = os.path.join(self.cvs_workdir, self.project_name)
project_checkout = os.path.join(self.working_dir, self.project_name)
os.chdir(project_checkout)
run_command("%s switch-branch %s" % (self.cli_tool, self.git_branches[0]))

Expand Down Expand Up @@ -416,7 +411,7 @@ def _git_user_confirm_commit(self, project_checkout):
self.project_name, self.builder.build_version)
debug("git commit command: %s" % cmd)
print
os.chdir(self.cvs_package_workdir)
os.chdir(self.package_workdir)
output = run_command(cmd)

cmd = "%s push" % self.cli_tool
Expand Down Expand Up @@ -536,6 +531,9 @@ def __init__(self, name=None, version=None, tag=None, build_dir=None,
Releaser.__init__(self, name, version, tag, build_dir, pkg_config,
global_config, user_config, target, releaser_config, no_cleanup)

self.package_workdir = os.path.join(self.working_dir,
self.project_name)

# Configure CVS variables if possible. Will check later that
# they're actually defined if the user requested CVS work be done.
if self.releaser_config.has_option(target, "cvsroot"):
Expand All @@ -550,13 +548,6 @@ def release(self, dry_run=False):

self._cvs_release()

def cleanup(self):
if not self.no_cleanup:
debug("Cleaning up [%s]" % self.cvs_package_workdir)
run_command("rm -rf %s" % self.cvs_package_workdir)
else:
print("WARNING: leaving %s (--no-cleanup)" % self.cvs_package_workdir)

def _cvs_release(self):
"""
Sync spec file/patches with CVS, create tags, and submit to brew/koji.
Expand All @@ -565,7 +556,7 @@ def _cvs_release(self):
self._verify_cvs_module_not_already_checked_out()

print("Building release in CVS...")
commands.getoutput("mkdir -p %s" % self.cvs_workdir)
commands.getoutput("mkdir -p %s" % self.working_dir)
debug("cvs_branches = %s" % self.cvs_branches)

self.cvs_checkout_module()
Expand All @@ -589,28 +580,28 @@ def _cvs_release(self):
def _verify_cvs_module_not_already_checked_out(self):
""" Exit if CVS module appears to already be checked out. """
# Make sure the cvs checkout directory doesn't already exist:
cvs_co_dir = os.path.join(self.cvs_workdir, self.project_name)
cvs_co_dir = os.path.join(self.working_dir, self.project_name)
if os.path.exists(cvs_co_dir):
error_out("CVS workdir exists, please remove and try again: %s"
% cvs_co_dir)

def cvs_checkout_module(self):
print("Checking out cvs module [%s]" % self.project_name)
os.chdir(self.cvs_workdir)
os.chdir(self.working_dir)
run_command("cvs -d %s co %s" % (self.cvs_root, self.project_name))
for i in range(0, len(self.cvs_branches)):
if self.cvs_branches[i].find('/') > -1:
debug("Checking out zstream branch %s" % self.cvs_branches[i])
(base, zstream) = self.cvs_branches[i].split('/')
run_command("make -C %s zstreams" %
(os.path.join(self.cvs_package_workdir, base)))
(os.path.join(self.package_workdir, base)))
self.cvs_branches[i] = zstream

def cvs_verify_branches_exist(self):
""" Check that CVS checkout contains the branches we expect. """
os.chdir(self.cvs_package_workdir)
os.chdir(self.package_workdir)
for branch in self.cvs_branches:
if not os.path.exists(os.path.join(self.cvs_workdir,
if not os.path.exists(os.path.join(self.working_dir,
self.project_name, branch)):
error_out("%s CVS checkout is missing branch: %s" %
(self.project_name, branch))
Expand All @@ -631,7 +622,7 @@ def cvs_sync_files(self):

for branch in self.cvs_branches:
print("Syncing files with CVS branch [%s]" % branch)
branch_dir = os.path.join(self.cvs_workdir, self.project_name,
branch_dir = os.path.join(self.working_dir, self.project_name,
branch)

new, copied, old = \
Expand Down Expand Up @@ -659,7 +650,7 @@ def cvs_upload_sources(self):

print("Uploading sources to dist-cvs lookaside:")
for branch in self.cvs_branches:
branch_dir = os.path.join(self.cvs_workdir, self.project_name,
branch_dir = os.path.join(self.working_dir, self.project_name,
branch)
os.chdir(branch_dir)
cmd = 'make new-sources FILES="%s"' % (" ".join(self.builder.sources))
Expand All @@ -674,13 +665,13 @@ def cvs_upload_sources(self):
def _cvs_user_confirm_commit(self):
""" Prompt user if they wish to proceed with commit. """
print("")
text = "Running 'cvs diff -u' in: %s" % self.cvs_package_workdir
text = "Running 'cvs diff -u' in: %s" % self.package_workdir
print("#" * len(text))
print(text)
print("#" * len(text))
print("")

os.chdir(self.cvs_package_workdir)
os.chdir(self.package_workdir)
(status, diff_output) = commands.getstatusoutput("cvs diff -u")
print(diff_output)

Expand Down Expand Up @@ -731,21 +722,21 @@ def _cvs_user_confirm_commit_msg(self, diff_output):
self.print_dry_run_warning(cmd)
else:
print("Proceeding with commit.")
os.chdir(self.cvs_package_workdir)
os.chdir(self.package_workdir)
output = run_command(cmd)

os.unlink(name)

def _cvs_make_tag(self):
""" Create a CVS tag based on what we just committed. """
os.chdir(self.cvs_package_workdir)
os.chdir(self.package_workdir)
cmd = "make tag"
if self.dry_run:
self.print_dry_run_warning(cmd)
return
print("Creating CVS tags...")
for branch in self.cvs_branches:
branch_dir = os.path.join(self.cvs_workdir, self.project_name,
branch_dir = os.path.join(self.working_dir, self.project_name,
branch)
os.chdir(branch_dir)
(status, output) = commands.getstatusoutput(cmd)
Expand All @@ -760,10 +751,10 @@ def _cvs_make_build(self):
if self.dry_run:
self.print_dry_run_warning(cmd)
return
os.chdir(self.cvs_package_workdir)
os.chdir(self.package_workdir)
print("Submitting CVS builds...")
for branch in self.cvs_branches:
branch_dir = os.path.join(self.cvs_workdir, self.project_name,
branch_dir = os.path.join(self.working_dir, self.project_name,
branch)
os.chdir(branch_dir)
output = run_command(cmd)
Expand Down

0 comments on commit 193d057

Please sign in to comment.