#!/bin/bash
# Download proprietary NPU engines + xclbins from the matching FastFlowLM
# GitHub release. OBS does not host those binaries (not Open Source).
set -euo pipefail

VERSION="${FASTFLOWLM_VERSION:-@VERSION@}"
DEB_URL="${FASTFLOWLM_KERNEL_URL:-https://github.com/ROCm/FastFlowLM/releases/download/v${VERSION}/fastflowlm_${VERSION}_ubuntu24.04_amd64.deb}"
LIBDIR="${FASTFLOWLM_LIBDIR:-/usr/lib64/flm}"
SHAREDIR="${FASTFLOWLM_SHAREDIR:-/usr/share/flm}"
MARKER="${LIBDIR}/libllama_npu.so"

if [[ "${1:-}" == "--status" ]]; then
    if [[ -e "$MARKER" && -d "$SHAREDIR/xclbins" ]]; then
        echo "NPU kernels installed in $LIBDIR and $SHAREDIR"
        exit 0
    fi
    echo "NPU kernels not installed. Run: sudo fastflowlm-fetch-kernels"
    exit 1
fi

if [[ "$(id -u)" -ne 0 ]]; then
    echo "fastflowlm-fetch-kernels: must run as root" >&2
    exit 1
fi

tmpdir=$(mktemp -d)
trap 'rm -rf "$tmpdir"' EXIT

echo "Downloading FastFlowLM ${VERSION} NPU kernels..."
curl -fL --retry 3 -o "$tmpdir/flm.deb" "$DEB_URL"

cd "$tmpdir"
ar x flm.deb
data=$(ls data.tar.* | head -1)
case "$data" in
    *.zst) tar --zstd -xf "$data" ;;
    *.xz)  tar -xJf "$data" ;;
    *.gz)  tar -xzf "$data" ;;
    *)     tar -xf "$data" ;;
esac

install -d "$LIBDIR" "$SHAREDIR"
# Engine .so only — never the Ubuntu-linked flm binary.
find opt/fastflowlm/lib -maxdepth 1 -type f -name 'lib*.so' -exec \
    install -m 0755 {} "$LIBDIR/" \;
cp -a opt/fastflowlm/share/flm/. "$SHAREDIR/"

echo "Installed NPU kernels to $LIBDIR and $SHAREDIR"
echo "See /usr/share/licenses/fastflowlm/TERMS.md for kernel license terms."
