Files
warp/script/linux/install_build_deps
Tautik Agrahari ce89a98b53 fix(bootstrap): warn before sudo and document install steps (#9501)
- new `script/warp_sudo`: echoes each privileged command, prompts
`[y/N]` from `/dev/tty`, shells to real `sudo` on confirm.
`WARP_BOOTSTRAP_YES=1` or non-tty stdin skips.
- `script/bootstrap`: static `--help` install list dropped. `-y`/`--yes`
exports `WARP_BOOTSTRAP_YES=1` for children.
- ten direct `sudo` call-sites in `script/{macos,linux}/bootstrap` +
`script/linux/install_{build,runtime,test}_deps` switched to
`warp_sudo`. windows unchanged.
- `README.md`: short "what `./script/bootstrap` does" subsection
pointing at the platform scripts as the source of truth.

closes #9421.
2026-05-04 16:36:47 -04:00

69 lines
2.4 KiB
Bash
Executable File

#!/usr/bin/env bash
#
# Install all dependencies required to build Warp on Linux.
set -e
. "$PWD/script/warp_sudo"
# Define some control sequences for text formatting.
red="\033[0;31m"
reset="\033[0m"
# Install some development libraries that will be needed in the compilation
# process.
UNAME="$(uname -a)"
if [[ "$(source /etc/os-release; echo $ID $ID_LIKE)" = *"debian"* ]]; then
echo "⬇️ Installing build-time dependencies..."
# Define the packages to install as a bash array so we can include
# comments between lines.
PACKAGES=(
curl
git
# Install various core packages for development work on Linux.
build-essential cmake pkg-config
# Make it so that running `python` runs `python3`.
python-is-python3
# Development headers for various libraries, needed when compiling
# certain Rust crate dependencies.
libssl-dev libfreetype-dev libexpat1-dev libgit2-dev
# libs needed for loading system fonts
libfontconfig1-dev
# Needed in wasm compilation for parsing the version of wasm-bindgen
jq
# Needed for compressing web bundles
brotli
# Needed for voice input
libasound2-dev
# Needed by bindgen (used by minimp4-sys, pulled in by warpui_core's
# integration_tests feature) — pulls in libclang-common-*-dev which
# provides clang's resource-dir builtin headers.
libclang-dev
# Required by script/presubmit's clang-format check on C/C++/Obj-C sources.
clang-format
)
warp_sudo apt-get install -y "${PACKAGES[@]}"
# Install a modern version of protoc. The apt 'protobuf-compiler' package on
# Ubuntu 20.04 ships protoc 3.6.1, which is too old for proto3 'optional'
# fields (requires protoc >= 3.15).
PROTOC_VERSION="25.1"
case "$(uname -m)" in
x86_64) PROTOC_ZIP="protoc-${PROTOC_VERSION}-linux-x86_64.zip" ;;
aarch64) PROTOC_ZIP="protoc-${PROTOC_VERSION}-linux-aarch_64.zip" ;;
*) echo "Unsupported architecture for protoc: $(uname -m)"; exit 1 ;;
esac
curl -fsSL -o /tmp/protoc.zip \
"https://github.com/protocolbuffers/protobuf/releases/download/v${PROTOC_VERSION}/${PROTOC_ZIP}"
warp_sudo unzip -o /tmp/protoc.zip -d /usr/local bin/protoc 'include/*'
rm /tmp/protoc.zip
else
echo -e "⚠️ ${red}Unknown Linux distribution; necessary build dependencies may not be installed!${reset}"
fi
# Install Rust.
"$PWD"/script/install_rust
# Install various build-time dependencies through cargo.
"$PWD"/script/install_cargo_build_deps