mirror of
https://github.com/CCExtractor/ccextractor.git
synced 2026-04-05 21:51:23 +00:00
* fix: flush pending EIT sections in EPG_free() before freeing buffers * ci: add dual build artifacts to compare C vs Rust code paths Add -min-rust flag to linux/build that passes -DDISABLE_RUST to gcc, causing switchable modules (DTVCC, demuxer, AVC, networking, hex utils) to use their C implementations instead of Rust. The Rust library still compiles since many modules are Rust-only. The Linux CI now produces two artifacts: - "CCExtractor Linux build" — min Rust (C paths where available) - "CCExtractor Linux build (with migrations)" — max Rust Both should produce identical output on the sample platform. If they diverge, it means a Rust port introduced a behavioral difference. The sample platform will need a corresponding update to recognize and test the new "with migrations" artifact. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Varadraj75 <agrawalvaradraj2007@gmail.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
144 lines
4.7 KiB
YAML
144 lines
4.7 KiB
YAML
name: Build CCExtractor on Linux
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
push:
|
|
paths:
|
|
- '.github/workflows/build_linux.yml'
|
|
- '**.c'
|
|
- '**.h'
|
|
- '**CMakeLists.txt'
|
|
- '**.cmake'
|
|
- '**Makefile**'
|
|
- 'linux/**'
|
|
- 'package_creators/**'
|
|
- 'src/rust/**'
|
|
pull_request:
|
|
types: [opened, synchronize, reopened]
|
|
paths:
|
|
- '.github/workflows/build_linux.yml'
|
|
- '**.c'
|
|
- '**.h'
|
|
- '**CMakeLists.txt'
|
|
- '**.cmake'
|
|
- '**Makefile**'
|
|
- 'linux/**'
|
|
- 'package_creators/**'
|
|
- 'src/rust/**'
|
|
jobs:
|
|
build_shell:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Install dependencies
|
|
run: sudo apt update && sudo apt-get install libgpac-dev libtesseract-dev libavcodec-dev libavdevice-dev libx11-dev libxcb1-dev libxcb-shm0-dev
|
|
- uses: actions/checkout@v6
|
|
- name: build
|
|
run: ./build -hardsubx -min-rust
|
|
working-directory: ./linux
|
|
- name: Display version information
|
|
run: ./ccextractor --version
|
|
working-directory: ./linux
|
|
- name: Prepare artifacts
|
|
run: mkdir ./linux/artifacts
|
|
- name: Copy release artifact
|
|
run: cp ./linux/ccextractor ./linux/artifacts/
|
|
# NOTE: The sample-platform test runner (CCExtractor/sample-platform)
|
|
# matches artifact names exactly. Update Artifact_names in
|
|
# mod_ci/controllers.py there if you rename this artifact.
|
|
- uses: actions/upload-artifact@v7
|
|
with:
|
|
name: CCExtractor Linux build
|
|
path: ./linux/artifacts
|
|
build_shell_migrations:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Install dependencies
|
|
run: sudo apt update && sudo apt-get install libgpac-dev libtesseract-dev libavcodec-dev libavdevice-dev libx11-dev libxcb1-dev libxcb-shm0-dev
|
|
- uses: actions/checkout@v6
|
|
- name: build
|
|
run: ./build -hardsubx
|
|
working-directory: ./linux
|
|
- name: Display version information
|
|
run: ./ccextractor --version
|
|
working-directory: ./linux
|
|
- name: Prepare artifacts
|
|
run: mkdir ./linux/artifacts
|
|
- name: Copy release artifact
|
|
run: cp ./linux/ccextractor ./linux/artifacts/
|
|
# NOTE: The sample-platform test runner (CCExtractor/sample-platform)
|
|
# matches artifact names exactly. Update Artifact_names in
|
|
# mod_ci/controllers.py there if you rename this artifact.
|
|
- uses: actions/upload-artifact@v7
|
|
with:
|
|
name: CCExtractor Linux build (with migrations)
|
|
path: ./linux/artifacts
|
|
build_autoconf:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Install dependencies
|
|
run: sudo apt update && sudo apt-get install libgpac-dev libavcodec-dev libavformat-dev libavutil-dev libswresample-dev libswscale-dev
|
|
- uses: actions/checkout@v6
|
|
- name: run autogen
|
|
run: ./autogen.sh
|
|
working-directory: ./linux
|
|
- name: configure
|
|
run: ./configure --enable-debug
|
|
working-directory: ./linux
|
|
- name: make
|
|
run: make
|
|
working-directory: ./linux
|
|
- name: Display version information
|
|
run: ./ccextractor --version
|
|
working-directory: ./linux
|
|
cmake:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Install dependencies
|
|
run: sudo apt update && sudo apt-get install libgpac-dev libavcodec-dev libavformat-dev libavutil-dev libswresample-dev libswscale-dev
|
|
- uses: actions/checkout@v6
|
|
- name: cmake
|
|
run: mkdir build && cd build && cmake ../src
|
|
- name: build
|
|
run: make -j$(nproc)
|
|
working-directory: build
|
|
- name: Display version information
|
|
run: ./build/ccextractor --version
|
|
cmake_ocr_hardsubx:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- name: Install dependencies
|
|
run: sudo apt update && sudo apt install libgpac-dev libtesseract-dev libavformat-dev libavdevice-dev libswscale-dev yasm
|
|
- name: cmake
|
|
run: |
|
|
mkdir build && cd build
|
|
cmake -DWITH_OCR=ON -DWITH_HARDSUBX=ON ../src
|
|
- name: build
|
|
run: |
|
|
make -j$(nproc)
|
|
working-directory: build
|
|
- name: Display version information
|
|
run: ./build/ccextractor --version
|
|
build_rust:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Install dependencies
|
|
run: sudo apt update && sudo apt-get install libgpac-dev libavcodec-dev libavformat-dev libavutil-dev libswresample-dev libswscale-dev
|
|
- uses: actions/checkout@v6
|
|
- name: cache
|
|
uses: actions/cache@v5
|
|
with:
|
|
path: |
|
|
src/rust/.cargo/registry
|
|
src/rust/.cargo/git
|
|
src/rust/target
|
|
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
|
|
restore-keys: ${{ runner.os }}-cargo-
|
|
- uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: stable
|
|
override: true
|
|
- name: build
|
|
run: cargo build
|
|
working-directory: ./src/rust
|