#!/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="${MOLD_VERSION:-${1:-}}" if [ "$(uname -s)" != "Linux" ]; then echo "Error: This script is intended for Linux systems only." exit 1 elif [ -z "$MOLD_VERSION" ]; then echo "Usage: $0 2.34.0" exit 1 elif [ -e /usr/local/bin/mold ]; then echo "Warning: existing mold found at /usr/local/bin/mold. Skipping installation." exit 0 fi 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.