in build/get_syzygy_binaries.py [0:0]
def main():
options = _ParseCommandLine()
if options.dry_run:
_LOGGER.debug('Performing a dry-run.')
# We only care about Windows platforms, as the Syzygy binaries aren't used
# elsewhere. However, there was a short period of time where this script
# wasn't gated on OS types, and those OSes downloaded and installed binaries.
# This will cleanup orphaned files on those operating systems.
if sys.platform not in ('win32', 'cygwin'):
if options.no_cleanup:
_LOGGER.debug('Skipping usual cleanup for non-Windows platforms.')
else:
return _RemoveOrphanedFiles(options)
# Load the current installation state, and validate it against the
# requested installation.
state, is_consistent = _GetCurrentState(options.revision, options.output_dir)
# Decide whether or not an install is necessary.
if options.force:
_LOGGER.debug('Forcing reinstall of binaries.')
elif is_consistent:
# Avoid doing any work if the contents of the directory are consistent.
_LOGGER.debug('State unchanged, no reinstall necessary.')
return
# Under normal logging this is the only only message that will be reported.
_LOGGER.info('Installing revision %s Syzygy binaries.',
options.revision[0:12])
# Clean up the old state to begin with.
deleted = []
if options.overwrite:
if os.path.exists(options.output_dir):
# If overwrite was specified then take a heavy-handed approach.
_LOGGER.debug('Deleting entire installation directory.')
if not options.dry_run:
_RmTree(options.output_dir)
else:
# Otherwise only delete things that the previous installation put in place,
# and take care to preserve any local changes.
deleted = _CleanState(options.output_dir, state, options.dry_run)
# Install the new binaries. In a dry-run this will actually download the
# archives, but it won't write anything to disk.
state = _InstallBinaries(options, deleted)
# Build and save the state for the directory.
_SaveState(options.output_dir, state, options.dry_run)