joeylib2/installer/components/hatari.sh

63 lines
2 KiB
Bash

# shellcheck shell=bash
# Part of JoeyLib, Copyright (c) 2026 Scott Duensing, under the MIT License.
# See LICENSE.md for license information.
# SPDX-License-Identifier: MIT
#
# Hatari 2.4.1: the Atari ST emulator. The ST gates parse its trace and
# debugger output as Hatari 2.4 prints them. Debian and Ubuntu package
# 2.4.1; Fedora ships a different version, so on dnf systems 2.4.1 is built
# from source into toolchains/opt/hatari.
compDescription="emulator: Hatari 2.4.1 (Atari ST; distribution package, source build on dnf)"
compGroups="emulator:atarist"
compRequires="host"
compUrl="https://framagit.org/hatari/hatari.git"
compCommit="4371dcd647fc85d31c0629400adaeaa4212040d9"
if [ "$(distroFamily)" = "dnf" ]; then
hatariBin="$compDir/bin/hatari"
compHostDeps="build-tools make cmake git sdl2-dev zlib-dev png-dev readline-dev"
compPin="$compCommit"
else
hatariBin="$(command -v hatari || true)"
compHostDeps="hatari"
compPin="distro"
fi
compInstall() {
local src
if [ "$compPin" = "distro" ]; then
[ -n "$hatariBin" ] || die "hatari is not on PATH after installing host packages"
return 0
fi
src="$(freshBuildDir "$compId")"
gitFetchCommit "$compUrl" "$compCommit" "$src"
cmake -S "$src" -B "$src/build" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$compDir"
cmake --build "$src/build" -j"$JOEY_JOBS"
rm -rf "$compDir"
cmake --install "$src/build"
dropBuildDir "$compId"
}
compInstalled() {
[ -n "$hatariBin" ] && [ -x "$hatariBin" ]
}
compVerify() {
local version
# It prints a blank line first and exits 1, so match anywhere.
version="$("$hatariBin" --version 2>&1 || true)"
[[ "$version" == *"Hatari v"* ]] || return 1
# Another version still runs programs; only the gates may disagree.
if [[ "$version" != *"Hatari v2.4"* ]]; then
version="${version#$'\n'}"
warn "found '${version%%$'\n'*}'; the ST gates were written against Hatari 2.4.x"
fi
}
compEnv() {
envVar HATARI "$hatariBin"
}