45 lines · 1.4 KB · Text
RawDownload
#!/usr/bin/env bash # Install `mold` official binaries from GitHub Releases.## Adapted from the official rui314/setup-mold@v1 action to:# * use environment variables instead of action inputs# * remove make-default support# * use curl instead of wget# * support doas for sudo# * support redhat systems# See: https://github.com/rui314/setup-mold/blob/main/action.yml set -euo pipefail MOLD_VERSION="2.34.0" if [ "$(uname -s)" != "Linux" ]; then    echo "Error: This script is intended for Linux systems only."    exit 1elif [ -e /usr/local/bin/mold ]; then    echo "Warning: existing mold found at /usr/local/bin/mold. Skipping installation."    exit 0fi if [ "$(whoami)" = root ]; then SUDO=; else SUDO="$(command -v sudo || command -v doas || true)"; fi MOLD_REPO="${MOLD_REPO:-https://github.com/rui314/mold}"MOLD_URL="${MOLD_URL:-$MOLD_REPO}/releases/download/v$MOLD_VERSION/mold-$MOLD_VERSION-$(uname -m)-linux.tar.gz" echo "Downloading from $MOLD_URL"curl -fsSL --output - "$MOLD_URL" \    | $SUDO tar -C /usr/local --strip-components=1 --no-overwrite-dir -xzf - # Note this binary depends on the system libatomic.so.1 which is usually# provided as a dependency of gcc so it should be available on most systems. cat <<EOFMold is installed to /usr/local/bin/mold To make it your default, add or merge these lines into your ~/.cargo/config.toml: [target.'cfg(target_os = "linux")']linker = "clang"rustflags = ["-C", "link-arg=-fuse-ld=mold"]EOF