| #!/bin/bash | |
| # Copyright 2017 The Fuchsia Authors. All rights reserved. | |
| # Use of this source code is governed by a BSD-style license that can be | |
| # found in the LICENSE file. | |
| ### configure jiri to manage a specific fuchsia layer cake | |
| ## usage: fx set-layer garnet|peridot|topaz | |
| ## Configures jiri to fetch the source code for the given layer and its | |
| ## dependencies. | |
| set -e | |
| source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"/lib/vars.sh | |
| if [[ "$#" -ne 1 ]]; then | |
| fx-command-help | |
| fi | |
| layer="$1" | |
| if [[ "${layer}" == "zircon" ]]; then | |
| fx-command-help | |
| echo >&2 "error: Switching to the Zircon layer is not supported." | |
| exit 1 | |
| fi | |
| if [[ "${layer}" != "garnet" ]] && | |
| [[ "${layer}" != "peridot" ]] && | |
| [[ "${layer}" != "topaz" ]]; then | |
| fx-command-help | |
| exit 1 | |
| fi | |
| # If jiri is not found which will return an err which will cause bash to exit. | |
| # "|| echo" catches that. | |
| jiri=$(which jiri || echo) | |
| if [[ -z ${jiri} ]]; then | |
| jiri="${FUCHSIA_DIR}/.jiri_root/bin/jiri" | |
| if [[ ! -f ${jiri} ]]; then | |
| echo >&2 "error: Cannot find \"jiri\" in your PATH nor at ${jiri}." | |
| exit 1 | |
| fi | |
| fi | |
| cd "${FUCHSIA_DIR}" | |
| function remove-import { | |
| local -r name=$1 | |
| local -r manifest=$2 | |
| ${jiri} -q import -delete=true -name="${name}" "${manifest}" | |
| } | |
| remove-import zircon manifest | |
| remove-import garnet manifest/garnet | |
| remove-import peridot manifest/peridot | |
| remove-import topaz manifest/topaz | |
| # TODO(abarth): Remove this step eventually once everyone has had a change to | |
| # remove this import from their manifest. | |
| remove-import manifest fuchsia | |
| ${jiri} import -name="${layer}" "manifest/${layer}" "https://fuchsia.googlesource.com/${layer}" | |
| cat <<END | |
| Configured jiri for ${layer}. Run these commands to update your build: | |
| * jiri update -gc # Updates your source tree to contain ${layer} and | |
| # removes unneeded repositories. | |
| * fx set x86-64 # Updates your build directory to build ${layer}. | |
| * fx full-build # Actually builds ${layer}. | |
| END |