| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- #!/bin/bash -eu
- #
- # Part of the Carbon Language project, under the Apache License v2.0 with LLVM
- # Exceptions. See /LICENSE for license information.
- # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- #
- # Performs a local install. This will replace any previous carbon installs
- # without prompting.
- STANDARD_LIBRARIES=()
- while [[ $# -gt 0 ]]; do
- case "$1" in
- --carbon)
- CARBON="$2"
- shift
- shift
- ;;
- --install_path)
- INSTALL_PATH="$2"
- shift
- shift
- ;;
- *)
- STANDARD_LIBRARIES+=("$1")
- echo $1
- shift
- ;;
- esac
- done
- # If the install path is relative, change it to be based on the working dir.
- if [[ ! "${INSTALL_PATH}" = /* ]]; then
- INSTALL_PATH="${BUILD_WORKING_DIRECTORY}/${INSTALL_PATH}"
- fi
- # Prepare the install script to run.
- SCRIPT=$(cat <<EOF
- # Ensure directories exist.
- mkdir -p "${INSTALL_PATH}/bin"
- mkdir -p "${INSTALL_PATH}/lib/carbon/data"
- # Install files to lib.
- install -m 755 "${CARBON}" "${INSTALL_PATH}/lib/carbon/carbon"
- for f in $(printf " %q" "${STANDARD_LIBRARIES[@]}"); do
- install -m 644 "\${f}" "${INSTALL_PATH}/lib/carbon/data/"
- done
- # Add symlinks in bin.
- ln -fs "../lib/carbon/carbon" \
- "${INSTALL_PATH}/bin/carbon-explorer"
- EOF
- )
- # Only use sudo if the target directory isn't user-owned.
- ACCESS_PATH="${INSTALL_PATH}"
- while [[ ! -e "${ACCESS_PATH}" ]]; do
- ACCESS_PATH="$(dirname "${ACCESS_PATH}")"
- done
- if [[ -O "${ACCESS_PATH}" ]]; then
- echo "Installing files..."
- echo "${SCRIPT}" | /bin/bash -eux -
- else
- echo "Installing files using sudo..."
- echo "${SCRIPT}" | sudo -- /bin/bash -eux -
- fi
- echo "All done."
|