#!/usr/bin/env bash # MAX25-Stack — FreeBSD full build + install (daemon, bcpr, terminal, CRDOP, web) set -euo pipefail ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" PREFIX="${PREFIX:-/usr/local}" ETC="${ETC:-${PREFIX}/etc/max25}" INSTALL_DEPS=0 BUILD_ONLY=0 BUILD_DIR="${BUILD_DIR:-build}" usage() { cat <&2; usage; exit 1 ;; esac done if [[ "$(uname -s)" != "FreeBSD" ]]; then echo "install-freebsd.sh: FreeBSD only" >&2 exit 1 fi echo "== MAX25 install: $(uname -s) $(uname -m) → ${PREFIX} ==" if [[ "$INSTALL_DEPS" -eq 1 ]]; then pkgs=(cmake python3 ncurses sox git gmake pkgconf) echo "Installing packages: ${pkgs[*]}" pkg install -y "${pkgs[@]}" fi BUILD_DIR="${BUILD_DIR}" "${ROOT}/scripts/build-freebsd.sh" if [[ "$BUILD_ONLY" -eq 1 ]]; then echo "== build done (no install) ==" exit 0 fi echo "-- install to ${PREFIX}" if [[ "$(id -u)" -eq 0 ]]; then cmake --install "${ROOT}/${BUILD_DIR}" --prefix "${PREFIX}" else sudo cmake --install "${ROOT}/${BUILD_DIR}" --prefix "${PREFIX}" fi _install_ini() { local src="$1" dst="$2" if [[ ! -f "$dst" ]] && [[ -f "$src" ]]; then mkdir -p "$(dirname "$dst")" if [[ "$(id -u)" -eq 0 ]]; then cp "$src" "$dst" else sudo cp "$src" "$dst" fi echo " installed $dst (from example)" fi } if [[ "$(id -u)" -eq 0 ]] || sudo -n true 2>/dev/null; then _install_ini "${ROOT}/share/max25-bcpr/max25-bcpr.freebsd.ini.example" "${ETC}/max25-bcpr.ini" _install_ini "${ROOT}/share/max25/max25d.freebsd.bcpr.ini.example" "${ETC}/max25d.ini" _install_ini "${ROOT}/stacks/web/share/web-proxy.ini.example" "${ETC}/web-proxy.ini" _install_ini "${ROOT}/stacks/web/share/web-terminal.ini.example" "${ETC}/web-terminal.ini" fi echo "" echo "== MAX25 installed to ${PREFIX} ==" echo " max25d, max25-terminal, max25-ws-proxy → ${PREFIX}/bin" echo " max25-bcpr-ctl, max25-bcprd-init → ${PREFIX}/sbin" echo " examples → ${PREFIX}/share/max25/ · web UI → ${PREFIX}/share/max25/reverse-proxy/" echo "" echo "Next steps (PC-COM / ExSys cuau2 — edit INI before live RF):" echo " pw groupmod dialer -m \$USER" echo " sudo mkdir -p /var/run/max25 ${ETC}" echo " sudo chown \$USER:dialer /var/run/max25" echo " # ${ETC}/max25-bcpr.ini: serial=/dev/cuau2 iobase=0xd090 irq=36" echo " # ${ETC}/max25d.ini: [daemon] user=… group=dialer" echo " sudo max25-bcpr-ctl start --ini ${ETC}/max25-bcpr.ini" echo " sudo ${ROOT}/scripts/run-max25d.sh ${ETC}/max25d.ini" echo " max25-terminal -H 127.0.0.1 -p 7325 -d max25e0" echo " MAX25_WEB_TERMINAL_INI=${ETC}/web-terminal.ini max25-ws-proxy -c ${ETC}/web-proxy.ini" echo "" echo "Optional: tmodem/c1224 → ${PREFIX}/share/max25/max25d.freebsd.tmodem.ini.example" echo "Optional: CRDOP/OSS → ${PREFIX}/share/crdop/crdop.freebsd.ini.example" echo ""