65816-llvm-mos/scripts/installCalypsi.sh
Scott Duensing 873eab4922 Checkpoint.
2026-04-25 17:07:28 -05:00

50 lines
1.7 KiB
Bash
Executable file

#!/usr/bin/env bash
# Install Calypsi 65C816 toolchain as the output-quality benchmark.
# Self-contained: extract .deb payload into tools/calypsi rather than
# dpkg-install system-wide.
set -euo pipefail
source "$(dirname "$0")/common.sh"
CALYPSI_VERSION="5.16"
CALYPSI_DIR="$TOOLS_DIR/calypsi"
CALYPSI_DEB_URL="https://github.com/hth313/Calypsi-tool-chains/releases/download/${CALYPSI_VERSION}/calypsi-65816-${CALYPSI_VERSION}.deb"
if [ -x "$CALYPSI_DIR/usr/local/calypsi-65816/bin/cc65816" ] \
|| [ -x "$CALYPSI_DIR/opt/calypsi-65816/bin/cc65816" ] \
|| find "$CALYPSI_DIR" -maxdepth 6 -type f -name 'cc65816' 2>/dev/null | grep -q .; then
log "calypsi already installed under $CALYPSI_DIR"
exit 0
fi
deb="$(fetchCached "$CALYPSI_DEB_URL" "calypsi-65816-${CALYPSI_VERSION}.deb")"
log "extracting calypsi .deb payload"
install -d "$CALYPSI_DIR"
tmp="$(mktemp -d)"
trap 'rm -rf "$tmp"' EXIT
( cd "$tmp" && ar x "$deb" )
payload=""
for cand in data.tar.xz data.tar.zst data.tar.gz data.tar.bz2; do
if [ -f "$tmp/$cand" ]; then
payload="$tmp/$cand"
break
fi
done
[ -n "$payload" ] || die "could not find data.tar.* inside $deb"
tar -xf "$payload" -C "$CALYPSI_DIR"
# Locate the bin directory. Calypsi puts tools under /opt or /usr/local
# depending on package revision; find it and symlink into tools/calypsi/bin
# for a stable path.
ccBin="$(find "$CALYPSI_DIR" -maxdepth 6 -type f -name 'cc65816' -executable 2>/dev/null | head -1 || true)"
[ -n "$ccBin" ] || die "calypsi cc65816 not found after extract (inspect $CALYPSI_DIR)"
binDir="$(dirname "$ccBin")"
ln -sfn "$binDir" "$CALYPSI_DIR/bin"
log "calypsi install done"
log " version: $CALYPSI_VERSION"
log " root: $CALYPSI_DIR"
log " binaries: $CALYPSI_DIR/bin -> $binDir"