#!/usr/bin/env python # Copyright 2017 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file.
"""Updates the Fuchsia SDK to the given revision. Should be used in a 'hooks_os'
entry so that it only runs when .gclient's target_os includes 'fuchsia'."""
import argparse import logging import os import re import shutil import subprocess import sys import tarfile
from common import GetHostOsFromPlatform, GetHostArchFromPlatform, \
DIR_SOURCE_ROOT, SDK_ROOT
def ReadFile(filename): with open(os.path.join(os.path.dirname(__file__), filename), 'r') as f: return f.read()
# TODO(crbug.com/1138433): Investigate whether we can deprecate # use of sdk_bucket.txt. def GetOverrideCloudStorageBucket(): """Read bucket entry from sdk_bucket.txt""" return ReadFile('sdk-bucket.txt').strip()
def GetSdkHashList(): """Read filename entries from sdk-hash-files.list (one per line), substitute
{platform} in each entry if present, and read from each filename."""
platform = GetHostOsFromPlatform()
filenames = [
line.strip() for line in ReadFile('sdk-hash-files.list').replace( '{platform}', platform).splitlines()
]
sdk_hashes = [ReadFile(filename).strip() for filename in filenames] return sdk_hashes
# Updates the modification timestamps of |path| and its contents to the # current time. def UpdateTimestampsRecursive(): for root, dirs, files in os.walk(SDK_ROOT): for f in files:
os.utime(os.path.join(root, f), None) for d in dirs:
os.utime(os.path.join(root, d), None)
# Fetches a tarball from GCS and uncompresses it to |output_dir|. def DownloadAndUnpackFromCloudStorage(url, output_dir): # Pass the compressed stream directly to 'tarfile'; don't bother writing it # to disk first.
cmd = [os.path.join(find_depot_tools.DEPOT_TOOLS_PATH, 'gsutil.py'), 'cp', url, '-']
logging.debug('Running "%s"', ' '.join(cmd))
task = subprocess.Popen(cmd, stderr=subprocess.PIPE, stdout=subprocess.PIPE) try:
tarfile.open(mode='r|gz', fileobj=task.stdout).extractall(path=output_dir) except tarfile.ReadError:
task.wait()
stderr = task.stderr.read() raise subprocess.CalledProcessError(task.returncode, cmd, "Failed to read a tarfile from gsutil.py.{}".format(
stderr if stderr else""))
task.wait() if task.returncode: raise subprocess.CalledProcessError(task.returncode, cmd,
task.stderr.read())
def MakeCleanDirectory(directory_name): if (os.path.exists(directory_name)):
shutil.rmtree(directory_name)
os.mkdir(directory_name)
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--verbose', '-v',
action='store_true',
help='Enable debug-level logging.')
parser.add_argument( '--default-bucket',
type=str,
default='fuchsia',
help='The Google Cloud Storage bucket in which the Fuchsia SDK is ' 'stored. Entry in sdk-bucket.txt will override this flag.')
args = parser.parse_args()
logging.basicConfig(level=logging.DEBUG if args.verbose else logging.INFO)
# Quietly exit if there's no SDK support for this platform. try:
GetHostOsFromPlatform() except: return 0
# Use the bucket in sdk-bucket.txt if an entry exists. # Otherwise use the default bucket.
bucket = GetOverrideCloudStorageBucket() or args.default_bucket
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.