VideoTools/scripts/install-deps-linux.sh
2026-01-22 09:37:59 -05:00

250 lines
6.5 KiB
Bash
Executable File

#!/bin/bash
# VideoTools Dependency Installer for Linux
# Installs all required build and runtime dependencies
set -e
echo "════════════════════════════════════════════════════════════════"
echo " VideoTools Linux Installation"
echo "════════════════════════════════════════════════════════════════"
echo ""
# Detect Linux distribution
if [ -f /etc/os-release ]; then
. /etc/os-release
DISTRO=$ID
else
echo "❌ Cannot detect Linux distribution"
exit 1
fi
echo "📦 Detected distribution: $DISTRO"
echo ""
# Function to install on Fedora/RHEL/CentOS
install_fedora() {
echo "Installing dependencies for Fedora/RHEL..."
local packages=(
gcc
pkg-config
libX11-devel
libXcursor-devel
libXrandr-devel
libXinerama-devel
libXi-devel
libXxf86vm-devel
mesa-libGL-devel
alsa-lib-devel
gstreamer1
gstreamer1-plugins-base
gstreamer1-plugins-good
gstreamer1-plugins-bad-free
gstreamer1-plugins-ugly-free
gstreamer1-libav
gstreamer1-devel
gstreamer1-plugins-base-devel
ffmpeg-free
)
if ! command -v go &> /dev/null; then
packages+=(golang)
fi
if ! command -v pip3 &> /dev/null && ! command -v pip &> /dev/null; then
packages+=(python3-pip)
fi
sudo dnf install -y \
"${packages[@]}"
echo "✓ Fedora dependencies installed"
}
# Function to install on Ubuntu/Debian
install_ubuntu() {
echo "Installing dependencies for Ubuntu/Debian..."
sudo apt-get update
local packages=(
gcc
pkg-config
libgl1-mesa-dev
libx11-dev
libxcursor-dev
libxrandr-dev
libxinerama-dev
libxi-dev
libxxf86vm-dev
libasound2-dev
gstreamer1.0-tools
gstreamer1.0-plugins-base
gstreamer1.0-plugins-good
gstreamer1.0-plugins-bad
gstreamer1.0-plugins-ugly
gstreamer1.0-libav
libgstreamer1.0-dev
libgstreamer-plugins-base1.0-dev
ffmpeg
)
if ! command -v go &> /dev/null; then
packages+=(golang-go)
fi
if ! command -v pip3 &> /dev/null && ! command -v pip &> /dev/null; then
packages+=(python3-pip)
fi
sudo apt-get install -y \
"${packages[@]}"
echo "✓ Ubuntu/Debian dependencies installed"
}
# Function to install on Arch Linux
install_arch() {
echo "Installing dependencies for Arch Linux..."
local packages=(
gcc
pkgconf
mesa
libx11
libxcursor
libxrandr
libxinerama
libxi
libxxf86vm
alsa-lib
gstreamer
gst-plugins-base
gst-plugins-good
gst-plugins-bad
gst-plugins-ugly
gst-libav
ffmpeg
)
if ! command -v go &> /dev/null; then
packages+=(go)
fi
if ! command -v pip3 &> /dev/null && ! command -v pip &> /dev/null; then
packages+=(python-pip)
fi
sudo pacman -S --needed --noconfirm \
"${packages[@]}"
echo "✓ Arch Linux dependencies installed"
}
# Function to install on openSUSE
install_opensuse() {
echo "Installing dependencies for openSUSE..."
local packages=(
gcc
pkg-config
Mesa-libGL-devel
libX11-devel
libXcursor-devel
libXrandr-devel
libXinerama-devel
libXi-devel
libXxf86vm-devel
alsa-devel
gstreamer
gstreamer-plugins-base
gstreamer-plugins-good
gstreamer-plugins-bad
gstreamer-plugins-ugly
gstreamer-plugins-libav
gstreamer-devel
ffmpeg
)
if ! command -v go &> /dev/null; then
packages+=(go)
fi
if ! command -v pip3 &> /dev/null && ! command -v pip &> /dev/null; then
packages+=(python3-pip)
fi
sudo zypper install -y \
"${packages[@]}"
echo "✓ openSUSE dependencies installed"
}
# Install based on distribution
case "$DISTRO" in
fedora|rhel|centos)
install_fedora
;;
ubuntu|debian|pop|linuxmint)
install_ubuntu
;;
arch|manjaro|endeavouros)
install_arch
;;
opensuse*|sles)
install_opensuse
;;
*)
echo "❌ Unsupported distribution: $DISTRO"
echo ""
echo "Please install these packages manually:"
echo " - gcc"
echo " - pkg-config"
echo " - OpenGL development libraries"
echo " - X11 development libraries (libX11, libXcursor, libXrandr, libXinerama, libXi, libXxf86vm)"
echo " - ALSA development libraries"
echo " - GStreamer runtime + dev headers"
echo " - ffmpeg"
echo " - Go 1.21 or later"
exit 1
;;
esac
echo ""
echo "════════════════════════════════════════════════════════════════"
echo "✅ DEPENDENCIES INSTALLED"
echo "════════════════════════════════════════════════════════════════"
echo ""
# Verify installations
echo "Verifying installations..."
echo ""
# Check Go
if command -v go &> /dev/null; then
echo "✓ Go: $(go version)"
else
echo "⚠️ Go not found in PATH"
fi
# Check GCC
if command -v gcc &> /dev/null; then
echo "✓ GCC: $(gcc --version | head -1)"
else
echo "⚠️ GCC not found"
fi
# Check ffmpeg
if command -v ffmpeg &> /dev/null; then
echo "✓ ffmpeg: $(ffmpeg -version | head -1)"
else
echo "⚠️ ffmpeg not found in PATH"
fi
# Check GStreamer
if command -v gst-launch-1.0 &> /dev/null; then
echo "✓ gstreamer: $(gst-launch-1.0 --version | head -1)"
else
echo "⚠️ gstreamer not found in PATH"
fi
# Check pkg-config
if command -v pkg-config &> /dev/null; then
echo "✓ pkg-config: $(pkg-config --version)"
else
echo "⚠️ pkg-config not found"
fi
# Check pip
if command -v pip3 &> /dev/null; then
echo "✓ pip: $(pip3 --version)"
elif command -v pip &> /dev/null; then
echo "✓ pip: $(pip --version)"
else
echo "⚠️ pip not found in PATH"
fi
echo ""
echo "Dependencies ready! You can now run:"
echo " ./scripts/build.sh"
echo ""