mirror of
https://github.com/astral-sh/uv.git
synced 2026-05-06 08:56:53 -04:00
40 lines
997 B
Bash
Executable File
40 lines
997 B
Bash
Executable File
#!/usr/bin/env bash
|
|
# Install mold linker and make it the default linker.
|
|
#
|
|
# Retries on transient HTTP errors (e.g., 500) that the `rui314/setup-mold`
|
|
# GitHub Action does not handle.
|
|
|
|
set -euo pipefail
|
|
|
|
MOLD_VERSION="${MOLD_VERSION:-2.40.4}"
|
|
|
|
arch="$(uname -m)"
|
|
url="https://github.com/rui314/mold/releases/download/v${MOLD_VERSION}/mold-${MOLD_VERSION}-${arch}-linux.tar.gz"
|
|
|
|
if [ "$(whoami)" = root ]; then
|
|
SUDO=""
|
|
else
|
|
SUDO="sudo"
|
|
fi
|
|
|
|
echo "Installing mold ${MOLD_VERSION} (${arch})..."
|
|
|
|
wget -O- \
|
|
--timeout=10 \
|
|
--tries=5 \
|
|
--waitretry=3 \
|
|
--retry-connrefused \
|
|
--retry-on-http-error=429,500,502,503,504 \
|
|
--progress=dot:mega \
|
|
"$url" \
|
|
| $SUDO tar -C /usr/local --strip-components=1 --no-overwrite-dir -xzf -
|
|
|
|
# Make mold the default linker
|
|
current_ld="$(realpath /usr/bin/ld)"
|
|
if [ "$current_ld" != /usr/local/bin/mold ]; then
|
|
$SUDO ln -sf /usr/local/bin/mold "$current_ld"
|
|
fi
|
|
|
|
echo "mold ${MOLD_VERSION} installed successfully"
|
|
mold --version
|