#!/usr/bin/env bash # ───────────────────────────────────────────────────────────────────────────── # install-lnx.sh – Linux build deps for packages/media/cpp (media-img) and related tools # # Tested on: Ubuntu 20.04+ / Debian 11+ # Usage: sudo bash install-lnx.sh # ───────────────────────────────────────────────────────────────────────────── #set -euo pipefail echo "── media-img (C++) Linux dependency installer ──" # ── 1. System packages (apt) ───────────────────────────────────────────────── echo "" echo "[1/3] Installing system packages via apt …" apt-get update -qq apt-get install -y --no-install-recommends \ build-essential \ gcc \ g++ \ git \ libssl-dev \ libvips-dev \ pkg-config \ snapd # ── 2. CMake ≥ 3.20 via snap ──────────────────────────────────────────────── # The project requires cmake_minimum_required(VERSION 3.20). # Ubuntu 20.04 ships cmake 3.16, so we use the snap package instead. echo "" echo "[2/3] Installing CMake via snap (≥ 3.20 required) …" if command -v /snap/bin/cmake &>/dev/null; then echo " cmake snap already installed: $(/snap/bin/cmake --version | head -1)" else snap install cmake --classic echo " Installed: $(/snap/bin/cmake --version | head -1)" fi # ── 3. Node.js (for npm run build:linux) ────────────────────────────────────── echo "" echo "[3/3] Checking for Node.js / npm …" if command -v node &>/dev/null; then echo " node $(node --version) already installed" else echo " Node.js not found. Install via nvm or nodesource, e.g.:" echo " curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -" echo " sudo apt-get install -y nodejs" fi # ── Summary ────────────────────────────────────────────────────────────────── echo "" echo "── Done! ──" echo "" echo "CMake FetchContent pulls CLI11, Asio, httplib, nlohmann/json, dotenv, and p-ranav/glob." echo "libvips is required at link time (libvips-dev above)." echo "" echo "To build:" echo " cd $(dirname "$0")" echo " cmake --preset release && cmake --build --preset release" echo "" echo "The binary will be placed in: dist/media-img"