joeylib2/installer/components/furnace.sh

55 lines
1.9 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
#
# Furnace, tildearrow's open-source multi-system chiptune tracker (GPLv2 or
# later), the recommended tool for JoeyLib's chip-tracker music
# (docs/Assets.adoc, "Content Creation Tools"): write the song for the TI
# SN76489 (or the AY-3-8910 / YM2149), export it as VGM, and
# tools/vgm2song turns that into a .song for tools/songbake. Its own Linux
# x86_64 release, unpacked into toolchains/opt/furnace. Nothing builds with
# it, so no group installs it: ./install.sh install furnace.
# scripts/check-vgm.sh exports the SN76489 and AY demo songs it comes with
# through it when it is installed.
#
# Furnace keeps its settings in ~/.config/furnace; the gates run it with HOME
# pointed at their work folder so they leave none.
compDescription="content: Furnace 0.6.8.3 chiptune tracker (optional; chip-tracker music, docs/Assets.adoc)"
compGroups="optional"
compRequires="host"
compHostDeps="gl-dev asound-dev x11-dev"
compUrl="https://github.com/tildearrow/furnace/releases/download/v0.6.8.3/furnace-0.6.8.3-linux-x86_64.tar.gz"
compSha256="298a4e30bbdfe5ad88ed7f3bd90bd657a3f0b2e6e7dfc2091663dda71424d555"
compPin="$compSha256"
compInstall() {
local archive
archive="$(fetchFile "$compUrl" "$compSha256")"
rm -rf "$compDir"
extractArchive "$archive" "$compDir" 1
}
compInstalled() {
[ -x "$compDir/furnace" ] && [ -d "$compDir/demos" ]
}
# It starts and knows VGM export (its settings go to a scratch home).
compVerify() {
local tmp
local usage
tmp="$(mktemp -d)"
usage="$(HOME="$tmp" "$compDir/furnace" -help 2>&1 || true)"
rm -rf "$tmp"
[[ "$usage" == *"-vgmout"* ]]
}
compEnv() {
envVar FURNACE "$compDir/furnace"
envVar FURNACE_DEMOS "$compDir/demos"
}