mirror of
https://github.com/CCExtractor/ccextractor.git
synced 2026-02-15 21:23:10 +00:00
The -system-libs mode was overwriting BLD_LINKER and losing the FFmpeg libraries that -hardsubx adds. This fix preserves the FFmpeg libraries when both flags are used together. Also add permissions: contents: write to the workflow to allow uploading assets to releases. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
155 lines
4.9 KiB
YAML
155 lines
4.9 KiB
YAML
name: Build Linux (System Libs)
|
|
|
|
on:
|
|
# Build on releases
|
|
release:
|
|
types: [published]
|
|
# Allow manual trigger
|
|
workflow_dispatch:
|
|
inputs:
|
|
build_type:
|
|
description: 'Build type (all, basic, hardsubx)'
|
|
required: false
|
|
default: 'all'
|
|
# Build on pushes to workflow file for testing
|
|
push:
|
|
paths:
|
|
- '.github/workflows/build_linux_systemlibs.yml'
|
|
- 'linux/build'
|
|
|
|
permissions:
|
|
contents: write
|
|
|
|
jobs:
|
|
build-systemlibs:
|
|
runs-on: ubuntu-22.04
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
build_type: [basic, hardsubx]
|
|
|
|
steps:
|
|
- name: Check if should build this variant
|
|
id: should_build
|
|
run: |
|
|
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
|
|
INPUT_TYPE="${{ github.event.inputs.build_type }}"
|
|
if [ "$INPUT_TYPE" = "all" ] || [ "$INPUT_TYPE" = "${{ matrix.build_type }}" ]; then
|
|
echo "should_build=true" >> $GITHUB_OUTPUT
|
|
else
|
|
echo "should_build=false" >> $GITHUB_OUTPUT
|
|
fi
|
|
else
|
|
echo "should_build=true" >> $GITHUB_OUTPUT
|
|
fi
|
|
|
|
- name: Checkout repository
|
|
if: steps.should_build.outputs.should_build == 'true'
|
|
uses: actions/checkout@v6
|
|
|
|
- name: Install base dependencies
|
|
if: steps.should_build.outputs.should_build == 'true'
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y --no-install-recommends \
|
|
build-essential \
|
|
pkg-config \
|
|
zlib1g-dev \
|
|
libpng-dev \
|
|
libfreetype-dev \
|
|
libutf8proc-dev \
|
|
libgpac-dev \
|
|
libtesseract-dev \
|
|
libleptonica-dev \
|
|
tesseract-ocr-eng \
|
|
clang \
|
|
libclang-dev
|
|
|
|
- name: Install FFmpeg dependencies (HardSubX)
|
|
if: steps.should_build.outputs.should_build == 'true' && matrix.build_type == 'hardsubx'
|
|
run: |
|
|
sudo apt-get install -y --no-install-recommends \
|
|
libavcodec-dev \
|
|
libavformat-dev \
|
|
libavutil-dev \
|
|
libswscale-dev \
|
|
libswresample-dev \
|
|
libavfilter-dev \
|
|
libavdevice-dev \
|
|
libxcb1-dev \
|
|
libxcb-shm0-dev \
|
|
libx11-dev \
|
|
liblzma-dev
|
|
|
|
- name: Install Rust toolchain
|
|
if: steps.should_build.outputs.should_build == 'true'
|
|
uses: dtolnay/rust-toolchain@stable
|
|
|
|
- name: Build with system libraries
|
|
if: steps.should_build.outputs.should_build == 'true'
|
|
run: |
|
|
cd linux
|
|
if [ "${{ matrix.build_type }}" = "hardsubx" ]; then
|
|
./build -system-libs -hardsubx
|
|
else
|
|
./build -system-libs
|
|
fi
|
|
|
|
- name: Verify build
|
|
if: steps.should_build.outputs.should_build == 'true'
|
|
run: |
|
|
./linux/ccextractor --version
|
|
echo "=== Library dependencies ==="
|
|
ldd ./linux/ccextractor | grep -E 'freetype|png|utf8proc|tesseract|leptonica' || true
|
|
|
|
- name: Get output name
|
|
if: steps.should_build.outputs.should_build == 'true'
|
|
id: output_name
|
|
run: |
|
|
case "${{ matrix.build_type }}" in
|
|
basic)
|
|
echo "name=ccextractor-linux-systemlibs-x86_64" >> $GITHUB_OUTPUT
|
|
;;
|
|
hardsubx)
|
|
echo "name=ccextractor-linux-systemlibs-hardsubx-x86_64" >> $GITHUB_OUTPUT
|
|
;;
|
|
esac
|
|
|
|
- name: Package binary
|
|
if: steps.should_build.outputs.should_build == 'true'
|
|
run: |
|
|
mkdir -p package
|
|
cp linux/ccextractor package/
|
|
# Create a simple README for the package
|
|
cat > package/README.txt << 'EOF'
|
|
CCExtractor - System Libraries Build
|
|
=====================================
|
|
|
|
This build uses system libraries (dynamic linking).
|
|
|
|
Required system packages (Debian/Ubuntu):
|
|
sudo apt install libgpac12 libtesseract5 libleptonica6 \
|
|
libpng16-16 libfreetype6 libutf8proc3
|
|
|
|
For HardSubX builds, also install:
|
|
sudo apt install libavcodec60 libavformat60 libswscale7 libavfilter9
|
|
|
|
Run with: ./ccextractor --help
|
|
EOF
|
|
tar -czvf ${{ steps.output_name.outputs.name }}.tar.gz -C package .
|
|
|
|
- name: Upload artifact
|
|
if: steps.should_build.outputs.should_build == 'true'
|
|
uses: actions/upload-artifact@v6
|
|
with:
|
|
name: ${{ steps.output_name.outputs.name }}
|
|
path: ${{ steps.output_name.outputs.name }}.tar.gz
|
|
|
|
- name: Upload to Release
|
|
if: steps.should_build.outputs.should_build == 'true' && github.event_name == 'release'
|
|
uses: softprops/action-gh-release@v2
|
|
with:
|
|
files: ${{ steps.output_name.outputs.name }}.tar.gz
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|