22# Runs linting, building, and testing on all supported platforms
33#
44# Platforms:
5- # - Linux x64 glibc (Rocky Linux 8 container)
6- # - Linux x64 musl (Alpine 3.20 container)
5+ # - Linux x64 glibc (Rocky Linux 9 container - FFmpeg 6+, glibc 2.34 )
6+ # - Linux x64 musl (Alpine 3.20 container - FFmpeg 6+, musl libc )
77# - macOS ARM64 (macos-14 runner)
88# - macOS x64 (macos-13 runner)
99#
@@ -62,22 +62,20 @@ jobs:
6262 build-linux-glibc :
6363 name : Linux glibc (Node ${{ matrix.node }})
6464 runs-on : ubuntu-24.04
65- container : rockylinux:8
65+ container : rockylinux:9
6666 strategy :
6767 matrix :
6868 node : [20, 22]
6969 steps :
7070 - name : Install system dependencies
7171 run : |
72- # Enable EPEL and CRB (PowerTools) repositories
72+ # Enable EPEL and CRB repositories for FFmpeg
7373 dnf install -y epel-release
74- dnf config-manager --set-enabled powertools || dnf config-manager --set-enabled crb || true
75- # Install GCC Toolset 12 for C++20 support (Rocky 8 default GCC is 8.x)
76- dnf install -y gcc-toolset-12 make python39 git pkgconfig
77- alternatives --set python3 /usr/bin/python3.9 || true
78- # Install FFmpeg via RPMFusion (EPEL doesn't have ffmpeg-devel for Rocky 8)
79- dnf install -y https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm || true
80- dnf install -y ffmpeg-devel || true
74+ dnf config-manager --set-enabled crb
75+ # Install RPMFusion for FFmpeg 6+ (EPEL has ffmpeg-free but missing some libs)
76+ dnf install -y https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-9.noarch.rpm
77+ # Install build tools and FFmpeg
78+ dnf install -y gcc-c++ make python3 git pkgconfig ffmpeg-devel
8179
8280 - name : Checkout
8381 uses : actions/checkout@v4
9189 run : npm install --omit=optional
9290
9391 - name : Build
94- run : |
95- # Enable GCC Toolset 12 for C++20 support
96- source /opt/rh/gcc-toolset-12/enable
97- npm run build
92+ run : npm run build
9893
9994 - name : Test
10095 run : npm test
@@ -110,21 +105,12 @@ jobs:
110105 - name : Install system dependencies
111106 run : |
112107 # Install build tools and Node.js
113- apk add --no-cache build-base python3 pkgconfig git nodejs npm
114- # Install FFmpeg and all transitive dependencies required by pkg-config
115- # Alpine's FFmpeg is compiled with many optional features, all need their dev packages
116- apk add --no-cache \
117- ffmpeg-dev ffmpeg-libs \
118- x264-dev x265-dev libvpx-dev opus-dev libvorbis-dev lame-dev \
119- dav1d-dev aom-dev libtheora-dev libwebp-dev svt-av1-dev rav1e-dev \
120- libjxl-dev libogg-dev \
121- harfbuzz-dev fribidi-dev fontconfig-dev freetype-dev libass-dev \
122- zlib-dev bzip2-dev openssl-dev libxml2-dev \
123- soxr-dev libdrm-dev \
124- lilv-dev libplacebo-dev vidstab-dev zeromq-dev zimg-dev \
125- libva-dev vdpau-dev libX11-dev \
126- librist-dev srt-dev libssh-dev libbluray-dev openmpt-dev \
127- onevpl-dev || true
108+ apk add --no-cache build-base python3 pkgconf git nodejs npm
109+ # Install FFmpeg development files - Alpine uses split packages
110+ # ffmpeg-dev pulls in the core libs, ffmpeg-libavcodec etc for runtime
111+ apk add --no-cache ffmpeg-dev
112+ # Verify pkg-config can find FFmpeg
113+ pkg-config --exists libavcodec libavformat libavutil libswscale libswresample libavfilter
128114
129115 - name : Checkout
130116 uses : actions/checkout@v4
0 commit comments