| #!/bin/bash |
| # Copyright 2021 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # See the help string below. |
| |
| # The input ebuild (must be a cros-rust ebuild). sync was chosen because it is |
| # a first party crate that sets CROS_WORKON_OUTOFTREE_BUILD so unpack is fast. |
| : "${CATEGORY:="dev-rust"}" |
| : "${PN:="sync"}" |
| : "${PVR:="9999"}" |
| |
| : "${CARGO_HOME:="${HOME}/.cargo"}" |
| : "${CARGO_HOME_BACKUP:="${HOME}/cargo.backup"}" |
| |
| # Help string. |
| read -r -d '' HELP_STRING <<EOF |
| Copy the cargo_home used by cros-rust.eclass to \$CARGO_HOME, by unpacking: |
| ${CATEGORY}/${PN}-${PVR} (\${CATEGORY}/\${PN}-\${PVR}) |
| and copying its cargo_home to: |
| ${CARGO_HOME} |
| If the above directory already exists it will be moved to (\$CARGO_HOME_BACKUP): |
| ${CARGO_HOME_BACKUP} |
| replacing any previous copy. |
| |
| NOTE: If the BOARD environment variable is set, its registry will be used. |
| Otherwise, the cros_rust_registry from the host is used. Currently, |
| BOARD="${BOARD}" |
| Also, stale Cargo.lock files will need to be deleted for local builds to work |
| properly. |
| |
| If any arguments are set, this help string is displayed. |
| EOF |
| |
| if [[ "$#" -gt 0 ]]; then |
| echo "${HELP_STRING}" |
| exit 1 |
| fi |
| |
| set -x |
| set -e |
| |
| SRC_PATH="/mnt/host/source" |
| |
| |
| PF="${PN}-${PVR}" |
| |
| |
| if [[ -z "${BOARD}" ]]; then |
| # pkg_setup needs root. |
| EBUILD=( "sudo" "ebuild" ) |
| NEW_CARGO_HOME="/var/tmp/portage/${CATEGORY}/${PF}/work/cargo_home" |
| else |
| EBUILD=( "ebuild-${BOARD}" ) |
| NEW_CARGO_HOME="/build/${BOARD}/tmp/portage/${CATEGORY}/${PF}/work/cargo_home" |
| fi |
| |
| "${EBUILD[@]}" "${SRC_PATH}/src/third_party/chromiumos-overlay/${CATEGORY}/${PN}/${PF}.ebuild" clean unpack || die |
| |
| if [[ ! -d "${NEW_CARGO_HOME}" ]]; then |
| echo "Failed to generate new cargo home: '${NEW_CARGO_HOME}'" >&2 |
| exit 1 |
| fi |
| |
| rm -rf "${CARGO_HOME_BACKUP}" |
| if [[ -e "${CARGO_HOME}" ]]; then |
| mv "${CARGO_HOME}" "${CARGO_HOME_BACKUP}" |
| fi |
| |
| mv "${NEW_CARGO_HOME}" "${CARGO_HOME}" |
| |
| echo "done" |