Commit 6dfdc77e authored by Joshua Pawlicki's avatar Joshua Pawlicki Committed by Commit Bot

Updater: Make build deterministic.

Bug: 1071965
Change-Id: I68ab432d4a0835e15cbca2467c507316ce4dcdf0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2154740
Auto-Submit: Joshua Pawlicki <waffles@chromium.org>
Commit-Queue: Sorin Jianu <sorin@chromium.org>
Reviewed-by: default avatarSorin Jianu <sorin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#760189}
parent f6bb6b2b
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
# Use of this source code is governed by a BSD-style license that can be # Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file. # found in the LICENSE file.
import("//build/timestamp.gni")
import("//chrome/process_version_rc_template.gni") import("//chrome/process_version_rc_template.gni")
import("//testing/test.gni") import("//testing/test.gni")
...@@ -76,6 +77,8 @@ template("generate_installer") { ...@@ -76,6 +77,8 @@ template("generate_installer") {
"--setup_runtime_deps", "--setup_runtime_deps",
rebase_path(updater_runtime_deps, root_build_dir), rebase_path(updater_runtime_deps, root_build_dir),
"--output_name=updater", "--output_name=updater",
"--timestamp",
build_timestamp,
# Optional argument for verbose archiving output. # Optional argument for verbose archiving output.
#"--verbose", #"--verbose",
......
...@@ -52,13 +52,15 @@ def CompressUsingLZMA(build_dir, compressed_file, input_file, verbose): ...@@ -52,13 +52,15 @@ def CompressUsingLZMA(build_dir, compressed_file, input_file, verbose):
RunSystemCommand(cmd, verbose) RunSystemCommand(cmd, verbose)
def CopyAllFilesToStagingDir(config, staging_dir, build_dir): def CopyAllFilesToStagingDir(config, staging_dir, build_dir, timestamp):
"""Copies the files required for installer archive. """Copies the files required for installer archive.
""" """
CopySectionFilesToStagingDir(config, 'GENERAL', staging_dir, build_dir) CopySectionFilesToStagingDir(config, 'GENERAL', staging_dir, build_dir,
timestamp)
def CopySectionFilesToStagingDir(config, section, staging_dir, src_dir): def CopySectionFilesToStagingDir(config, section, staging_dir, src_dir,
timestamp):
"""Copies installer archive files specified in section from src_dir to """Copies installer archive files specified in section from src_dir to
staging_dir. This method reads section from config and copies all the staging_dir. This method reads section from config and copies all the
files specified from src_dir to staging dir. files specified from src_dir to staging dir.
...@@ -75,6 +77,8 @@ def CopySectionFilesToStagingDir(config, section, staging_dir, src_dir): ...@@ -75,6 +77,8 @@ def CopySectionFilesToStagingDir(config, section, staging_dir, src_dir):
if not os.path.exists(dst_path): if not os.path.exists(dst_path):
g_archive_inputs.append(src_path) g_archive_inputs.append(src_path)
shutil.copy(src_path, dst_dir) shutil.copy(src_path, dst_dir)
os.utime(dst_path, (os.stat(dst_path).st_atime, timestamp))
os.utime(dst_dir, (os.stat(dst_dir).st_atime, timestamp))
def GetLZMAExec(build_dir): def GetLZMAExec(build_dir):
if sys.platform == 'win32': if sys.platform == 'win32':
...@@ -123,7 +127,7 @@ def RunSystemCommand(cmd, verbose): ...@@ -123,7 +127,7 @@ def RunSystemCommand(cmd, verbose):
"Command output:\n%s" % "Command output:\n%s" %
(e.cmd, e.returncode, e.output)) (e.cmd, e.returncode, e.output))
def CreateArchiveFile(options, staging_dir): def CreateArchiveFile(options, staging_dir, timestamp):
"""Creates a new installer archive file after deleting any existing old file. """Creates a new installer archive file after deleting any existing old file.
""" """
# First create an uncompressed archive file for the current build (updater.7z) # First create an uncompressed archive file for the current build (updater.7z)
...@@ -199,6 +203,7 @@ def CreateArchiveFile(options, staging_dir): ...@@ -199,6 +203,7 @@ def CreateArchiveFile(options, staging_dir):
compressed_archive_file = options.output_name + COMPRESSED_ARCHIVE_SUFFIX compressed_archive_file = options.output_name + COMPRESSED_ARCHIVE_SUFFIX
compressed_archive_file_path = os.path.join(options.output_dir, compressed_archive_file_path = os.path.join(options.output_dir,
compressed_archive_file) compressed_archive_file)
os.utime(archive_file, (os.stat(archive_file).st_atime, timestamp))
CompressUsingLZMA(options.build_dir, compressed_archive_file_path, CompressUsingLZMA(options.build_dir, compressed_archive_file_path,
archive_file, options.verbose) archive_file, options.verbose)
...@@ -265,14 +270,15 @@ def main(options): ...@@ -265,14 +270,15 @@ def main(options):
staging_dir = MakeStagingDirectory(options.staging_dir) staging_dir = MakeStagingDirectory(options.staging_dir)
# Copy the files from the build dir. # Copy the files from the build dir.
CopyAllFilesToStagingDir(config, staging_dir, options.build_dir) CopyAllFilesToStagingDir(config, staging_dir, options.build_dir,
options.timestamp)
if options.component_build == '1': if options.component_build == '1':
DoComponentBuildTasks(staging_dir, options.build_dir, DoComponentBuildTasks(staging_dir, options.build_dir,
options.setup_runtime_deps) options.setup_runtime_deps)
# Name of the archive file built (for example - updater.7z) # Name of the archive file built (for example - updater.7z)
archive_file = CreateArchiveFile(options, staging_dir) archive_file = CreateArchiveFile(options, staging_dir, options.timestamp)
CreateResourceInputFile(options.output_dir, CreateResourceInputFile(options.output_dir,
archive_file, options.resource_file_path, archive_file, options.resource_file_path,
options.component_build == '1', staging_dir) options.component_build == '1', staging_dir)
...@@ -309,6 +315,10 @@ def _ParseOptions(): ...@@ -309,6 +315,10 @@ def _ParseOptions():
'used to get a list of DLLs to archive in a component build.') 'used to get a list of DLLs to archive in a component build.')
parser.add_option('-v', '--verbose', action='store_true', dest='verbose', parser.add_option('-v', '--verbose', action='store_true', dest='verbose',
default=False) default=False)
parser.add_option(
'--timestamp',
type='int',
help='Timestamp to set archive entry modified times to.')
options, _ = parser.parse_args() options, _ = parser.parse_args()
if not options.build_dir: if not options.build_dir:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment