50 lines
1.7 KiB
Bash
Executable file
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"
|