# Copyright 2018 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.
"""Functions used to provision Fuchsia boot images."""
import common import logging import os import subprocess import tempfile import time import uuid
_SSH_CONFIG_TEMPLATE = """
Host *
CheckHostIP no
StrictHostKeyChecking no
ForwardAgent no
ForwardX11 no
User fuchsia
IdentitiesOnly yes
IdentityFile {identity}
ServerAliveInterval 2
ServerAliveCountMax 5
ControlMaster auto
ControlPersist 1m
ControlPath /tmp/ssh-%r@%h:%p
ConnectTimeout 5 """
# Specifies boot files intended for use by an emulator.
TARGET_TYPE_QEMU = 'qemu'
# Specifies boot files intended for use by anything (incl. physical devices).
TARGET_TYPE_GENERIC = 'generic'
# Defaults used by Fuchsia SDK
_SSH_DIR = os.path.expanduser('~/.ssh')
_SSH_CONFIG_DIR = os.path.expanduser('~/.fuchsia')
def _GetPubKeyPath(): """Returns a path to the generated SSH public key."""
ifnot os.path.isfile(fuchsia_authorized_keys_path):
result = subprocess.check_output(['ssh-keygen', '-y', '-f', id_key_path]) with open(fuchsia_authorized_keys_path, 'w') as out:
out.write(result.decode('utf-8'))
ifnot os.path.exists(_SSH_CONFIG_DIR):
os.mkdir(_SSH_CONFIG_DIR) elifnot os.path.isdir(_SSH_CONFIG_DIR): raise Exception(_SSH_CONFIG_DIR + ' is not a directory.')
ssh_config_path = os.path.join(_SSH_CONFIG_DIR, 'ssh_config') with open(ssh_config_path, "w") as ssh_config:
ssh_config.write(
_SSH_CONFIG_TEMPLATE.format(identity=id_key_path))
def GetTargetFile(filename, target_arch, target_type): """Computes a path to |filename| in the Fuchsia boot image directory specific
to |target_type| and |target_arch|."""
assert target_type == TARGET_TYPE_QEMU or target_type == TARGET_TYPE_GENERIC
def AssertBootImagesExist(arch, platform): assert os.path.exists(GetTargetFile('zircon-a.zbi', arch, platform)), \ 'This checkout is missing the files necessary for\n' \ 'booting this configuration of Fuchsia.\n' \ 'To check out the files, add this entry to the "custom_vars"\n' \ 'section of your .gclient file:\n\n' \ ' "checkout_fuchsia_boot_images": "%s.%s"\n\n' % \
(platform, arch)
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.