Lightningbeam/packaging/Containerfile

63 lines
1.5 KiB
Docker

FROM ubuntu:24.04
# Avoid interactive prompts
ENV DEBIAN_FRONTEND=noninteractive
# Build essentials + Rust build deps
RUN apt-get update && apt-get install -y \
build-essential \
pkg-config \
clang \
nasm \
curl \
git \
rsync \
wget \
file \
squashfs-tools \
# ALSA (cpal)
libasound2-dev \
# Wayland (winit/eframe)
libwayland-dev \
libwayland-cursor0 \
# X11 (winit/eframe)
libx11-dev \
libxkbcommon-dev \
libxcb-shape0-dev \
libxcb-xfixes0-dev \
# Clipboard (arboard)
libxdo-dev \
# GLib (rfd/muda/gio)
libglib2.0-dev \
libgtk-3-dev \
# Vulkan headers (wgpu)
libvulkan-dev \
# FFmpeg build-from-source deps (ffmpeg-sys-next build feature)
yasm \
libx264-dev \
libx265-dev \
libvpx-dev \
libmp3lame-dev \
libopus-dev \
# PulseAudio (cpal optional backend)
libpulse-dev \
# Packaging tools
dpkg \
rpm \
&& rm -rf /var/lib/apt/lists/*
# Install Rust
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain stable
ENV PATH="/root/.cargo/bin:${PATH}"
# Install cargo packaging tools
RUN cargo install cargo-deb cargo-generate-rpm
# Download AppImage runtime for building AppImages
RUN wget "https://github.com/AppImage/AppImageKit/releases/download/continuous/runtime-x86_64" \
-O /opt/appimage-runtime && \
chmod +x /opt/appimage-runtime && \
echo "Runtime size: $(wc -c < /opt/appimage-runtime) bytes"
WORKDIR /build