mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-13 05:15:45 +00:00
Bug 1502531: [mozharness] Move abs_upload_dir
code to openh264_build script; r=Callek
That variable, and the function that references it is only used by the openh264 code, so move it there. Differential Revision: https://phabricator.services.mozilla.com/D9967 --HG-- extra : moz-landing-system : lando
This commit is contained in:
parent
8626b0ef89
commit
a8d5331c0b
@ -2137,7 +2137,6 @@ class BaseScript(ScriptMixin, LogMixin, object):
|
||||
dirs = {}
|
||||
dirs['base_work_dir'] = c['base_work_dir']
|
||||
dirs['abs_work_dir'] = os.path.join(c['base_work_dir'], c['work_dir'])
|
||||
dirs['abs_upload_dir'] = os.path.join(dirs['abs_work_dir'], 'upload')
|
||||
dirs['abs_log_dir'] = os.path.join(c['base_work_dir'], c.get('log_dir', 'logs'))
|
||||
self.abs_dirs = dirs
|
||||
return self.abs_dirs
|
||||
@ -2220,75 +2219,6 @@ class BaseScript(ScriptMixin, LogMixin, object):
|
||||
self.add_summary(message % (success_count, total_count),
|
||||
level=level)
|
||||
|
||||
def copy_to_upload_dir(self, target, dest=None, short_desc="unknown",
|
||||
long_desc="unknown", log_level=DEBUG,
|
||||
error_level=ERROR, max_backups=None,
|
||||
compress=False, upload_dir=None):
|
||||
"""Copy target file to upload_dir/dest.
|
||||
|
||||
Potentially update a manifest in the future if we go that route.
|
||||
|
||||
Currently only copies a single file; would be nice to allow for
|
||||
recursive copying; that would probably done by creating a helper
|
||||
_copy_file_to_upload_dir().
|
||||
|
||||
short_desc and long_desc are placeholders for if/when we add
|
||||
upload_dir manifests.
|
||||
"""
|
||||
dest_filename_given = dest is not None
|
||||
if upload_dir is None:
|
||||
upload_dir = self.query_abs_dirs()['abs_upload_dir']
|
||||
if dest is None:
|
||||
dest = os.path.basename(target)
|
||||
if dest.endswith('/'):
|
||||
dest_file = os.path.basename(target)
|
||||
dest_dir = os.path.join(upload_dir, dest)
|
||||
dest_filename_given = False
|
||||
else:
|
||||
dest_file = os.path.basename(dest)
|
||||
dest_dir = os.path.join(upload_dir, os.path.dirname(dest))
|
||||
if compress and not dest_filename_given:
|
||||
dest_file += ".gz"
|
||||
dest = os.path.join(dest_dir, dest_file)
|
||||
if not os.path.exists(target):
|
||||
self.log("%s doesn't exist!" % target, level=error_level)
|
||||
return None
|
||||
self.mkdir_p(dest_dir)
|
||||
if os.path.exists(dest):
|
||||
if os.path.isdir(dest):
|
||||
self.log("%s exists and is a directory!" % dest, level=error_level)
|
||||
return -1
|
||||
if max_backups:
|
||||
# Probably a better way to do this
|
||||
oldest_backup = 0
|
||||
backup_regex = re.compile("^%s\.(\d+)$" % dest_file)
|
||||
for filename in os.listdir(dest_dir):
|
||||
r = backup_regex.match(filename)
|
||||
if r and int(r.groups()[0]) > oldest_backup:
|
||||
oldest_backup = int(r.groups()[0])
|
||||
for backup_num in range(oldest_backup, 0, -1):
|
||||
# TODO more error checking?
|
||||
if backup_num >= max_backups:
|
||||
self.rmtree(os.path.join(dest_dir, "%s.%d" % (dest_file, backup_num)),
|
||||
log_level=log_level)
|
||||
else:
|
||||
self.move(os.path.join(dest_dir, "%s.%d" % (dest_file, backup_num)),
|
||||
os.path.join(dest_dir, "%s.%d" % (dest_file, backup_num + 1)),
|
||||
log_level=log_level)
|
||||
if self.move(dest, "%s.1" % dest, log_level=log_level):
|
||||
self.log("Unable to move %s!" % dest, level=error_level)
|
||||
return -1
|
||||
else:
|
||||
if self.rmtree(dest, log_level=log_level):
|
||||
self.log("Unable to remove %s!" % dest, level=error_level)
|
||||
return -1
|
||||
self.copyfile(target, dest, log_level=log_level, compress=compress)
|
||||
if os.path.exists(dest):
|
||||
return dest
|
||||
else:
|
||||
self.log("%s doesn't exist after copy!" % dest, level=error_level)
|
||||
return None
|
||||
|
||||
def get_hash_for_file(self, file_path, hash_type="sha512"):
|
||||
bs = 65536
|
||||
hasher = hashlib.new(hash_type)
|
||||
|
@ -15,7 +15,7 @@ sys.path.insert(1, os.path.dirname(sys.path[0]))
|
||||
# import the guts
|
||||
import mozharness
|
||||
from mozharness.base.vcs.vcsbase import VCSScript
|
||||
from mozharness.base.log import ERROR
|
||||
from mozharness.base.log import ERROR, DEBUG
|
||||
from mozharness.base.transfer import TransferMixin
|
||||
from mozharness.mozilla.tooltool import TooltoolMixin
|
||||
|
||||
@ -110,6 +110,14 @@ class OpenH264Build(TransferMixin, VCSScript, TooltoolMixin):
|
||||
default_actions=default_actions,
|
||||
)
|
||||
|
||||
def query_abs_dirs(self):
|
||||
if self.abs_dirs:
|
||||
return self.abs_dirs
|
||||
dirs = super(OpenH264Build, self).query_abs_dirs()
|
||||
dirs['abs_upload_dir'] = os.path.join(dirs['abs_work_dir'], 'upload')
|
||||
self.abs_dirs = dirs
|
||||
return self.abs_dirs
|
||||
|
||||
def get_tooltool(self):
|
||||
c = self.config
|
||||
if not c.get('tooltool_manifest_file'):
|
||||
@ -315,6 +323,75 @@ class OpenH264Build(TransferMixin, VCSScript, TooltoolMixin):
|
||||
if retval != 0:
|
||||
self.fatal("test failures")
|
||||
|
||||
def copy_to_upload_dir(self, target, dest=None, short_desc="unknown",
|
||||
long_desc="unknown", log_level=DEBUG,
|
||||
error_level=ERROR, max_backups=None,
|
||||
compress=False, upload_dir=None):
|
||||
"""Copy target file to upload_dir/dest.
|
||||
|
||||
Potentially update a manifest in the future if we go that route.
|
||||
|
||||
Currently only copies a single file; would be nice to allow for
|
||||
recursive copying; that would probably done by creating a helper
|
||||
_copy_file_to_upload_dir().
|
||||
|
||||
short_desc and long_desc are placeholders for if/when we add
|
||||
upload_dir manifests.
|
||||
"""
|
||||
dest_filename_given = dest is not None
|
||||
if upload_dir is None:
|
||||
upload_dir = self.query_abs_dirs()['abs_upload_dir']
|
||||
if dest is None:
|
||||
dest = os.path.basename(target)
|
||||
if dest.endswith('/'):
|
||||
dest_file = os.path.basename(target)
|
||||
dest_dir = os.path.join(upload_dir, dest)
|
||||
dest_filename_given = False
|
||||
else:
|
||||
dest_file = os.path.basename(dest)
|
||||
dest_dir = os.path.join(upload_dir, os.path.dirname(dest))
|
||||
if compress and not dest_filename_given:
|
||||
dest_file += ".gz"
|
||||
dest = os.path.join(dest_dir, dest_file)
|
||||
if not os.path.exists(target):
|
||||
self.log("%s doesn't exist!" % target, level=error_level)
|
||||
return None
|
||||
self.mkdir_p(dest_dir)
|
||||
if os.path.exists(dest):
|
||||
if os.path.isdir(dest):
|
||||
self.log("%s exists and is a directory!" % dest, level=error_level)
|
||||
return -1
|
||||
if max_backups:
|
||||
# Probably a better way to do this
|
||||
oldest_backup = 0
|
||||
backup_regex = re.compile("^%s\.(\d+)$" % dest_file)
|
||||
for filename in os.listdir(dest_dir):
|
||||
r = backup_regex.match(filename)
|
||||
if r and int(r.groups()[0]) > oldest_backup:
|
||||
oldest_backup = int(r.groups()[0])
|
||||
for backup_num in range(oldest_backup, 0, -1):
|
||||
# TODO more error checking?
|
||||
if backup_num >= max_backups:
|
||||
self.rmtree(os.path.join(dest_dir, "%s.%d" % (dest_file, backup_num)),
|
||||
log_level=log_level)
|
||||
else:
|
||||
self.move(os.path.join(dest_dir, "%s.%d" % (dest_file, backup_num)),
|
||||
os.path.join(dest_dir, "%s.%d" % (dest_file, backup_num + 1)),
|
||||
log_level=log_level)
|
||||
if self.move(dest, "%s.1" % dest, log_level=log_level):
|
||||
self.log("Unable to move %s!" % dest, level=error_level)
|
||||
return -1
|
||||
else:
|
||||
if self.rmtree(dest, log_level=log_level):
|
||||
self.log("Unable to remove %s!" % dest, level=error_level)
|
||||
return -1
|
||||
self.copyfile(target, dest, log_level=log_level, compress=compress)
|
||||
if os.path.exists(dest):
|
||||
return dest
|
||||
else:
|
||||
self.log("%s doesn't exist after copy!" % dest, level=error_level)
|
||||
return None
|
||||
|
||||
|
||||
# main {{{1
|
||||
if __name__ == '__main__':
|
||||
|
@ -28,8 +28,7 @@ class LocalesTest(locales.LocalesMixin, script.BaseScript):
|
||||
self.log_obj = None
|
||||
|
||||
class TestLocalesMixin(unittest.TestCase):
|
||||
BASE_ABS_DIRS = ['abs_log_dir',
|
||||
'abs_upload_dir', 'abs_work_dir', 'base_work_dir']
|
||||
BASE_ABS_DIRS = ['abs_log_dir', 'abs_work_dir', 'base_work_dir']
|
||||
def setUp(self):
|
||||
cleanup()
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user