Build libav and ffmpeg variants

This commit is contained in:
CDrummond 2025-03-03 18:29:06 +00:00
parent 55f944fbdd
commit 9321be0ad5
10 changed files with 170 additions and 17 deletions

@ -7,7 +7,34 @@ env:
CARGO_TERM_COLOR: always
jobs:
Linux_ffmpeg4:
Linux_ffmpeg:
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Packages
run: sudo apt-get update && sudo apt-get install build-essential yasm -y
- name: Build ffmpeg version
run: |
cargo build --release
strip target/release/bliss-analyser
mkdir releases
cp target/release/bliss-analyser releases/bliss-analyser
cp UserGuide.md releases/README.md
cp LICENSE releases/
cp configs/linux.ini releases/config.ini
- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: bliss-analyser-linux-x86-libav4
path: releases/
Linux_libav4:
runs-on: ubuntu-20.04
steps:
@ -17,7 +44,7 @@ jobs:
- name: Packages
run: sudo apt-get update && sudo apt-get install build-essential yasm libavutil-dev libavcodec-dev libavformat-dev libavfilter-dev libavdevice-dev libswresample-dev libfftw3-dev ffmpeg -y
- name: Build
- name: Build libav4 version
run: |
cargo build --release --features=libav
strip target/release/bliss-analyser
@ -30,57 +57,89 @@ jobs:
- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: bliss-analyser-linux-x86-ffmpeg4
name: bliss-analyser-linux-x86-libav4
path: releases/
Linux_ffmpeg5:
Linux_libav5:
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Build ffmpeg5 version with Docker
- name: Build libav5 version with Docker
run: |
docker build -t bliss-analyser-linux-x86-ffmpeg5 - < docker/Dockerfile_Ubuntu
docker build -t bliss-analyser-linux-x86-ffmpeg5 - < docker/Dockerfile_Ubuntu2404_libav
docker run --rm -v $PWD/target:/build -v $PWD:/src bliss-analyser-linux-x86-ffmpeg5
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: bliss-analyser-linux-x86-ffmpeg5
name: bliss-analyser-linux-x86-libav5
path: releases/
Linux_ARM:
Linux_ARM_ffmpeg:
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Build ARM on Bullseye
- name: Build ARM ffmpeg on Bullseye
run: |
docker build -t bliss-analyser-cross - < docker/Dockerfile_Bullseye
docker build -t bliss-analyser-cross - < docker/Dockerfile_Bullseye_ffmpeg
docker run --rm -v $PWD/target:/build -v $PWD:/src bliss-analyser-cross
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: bliss-analyser-linux-arm-bullseye
name: bliss-analyser-linux-ffmpeg-arm-bullseye
path: releases/
- name: Build ARM on Bookworm
- name: Build ARM ffmpeg on Bookworm
run : |
docker build -t bliss-analyser-cross - < docker/Dockerfile_Bookworm
docker build -t bliss-analyser-cross - < docker/Dockerfile_Bookworm_ffmpeg
docker run --rm -v $PWD/target:/build -v $PWD:/src bliss-analyser-cross
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: bliss-analyser-linux-arm-bookworm
name: bliss-analyser-linux-ffmpeg-arm-bookworm
path: releases/
Linux_ARM_libav:
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Build ARM libav on Bullseye
run: |
docker build -t bliss-analyser-cross - < docker/Dockerfile_Bullseye_libav
docker run --rm -v $PWD/target:/build -v $PWD:/src bliss-analyser-cross
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: bliss-analyser-linux-libav-arm-bullseye
path: releases/
- name: Build ARM libav on Bookworm
run : |
docker build -t bliss-analyser-cross - < docker/Dockerfile_Bookworm_libav
docker run --rm -v $PWD/target:/build -v $PWD:/src bliss-analyser-cross
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: bliss-analyser-linux-libav-arm-bookworm
path: releases/
macOS:
runs-on: macos-11.0
@ -109,6 +168,7 @@ jobs:
name: bliss-analyser-mac
path: releases/
Windows:
runs-on: windows-2019

@ -0,0 +1,34 @@
# Cross compilation environment for bliss-mixer
FROM debian:bookworm
RUN dpkg --add-architecture arm64 && \
dpkg --add-architecture armhf
RUN apt-get update
RUN apt-get install -y curl git yasm
RUN apt-get install -y build-essential clang
RUN apt-get install -y crossbuild-essential-armhf crossbuild-essential-arm64
RUN apt-get install -y pkg-config:arm64
RUN apt-get install -y pkg-config:armhf
RUN curl https://sh.rustup.rs -sSf | sh -s -- -y
ENV PATH="/root/.cargo/bin/:${PATH}"
RUN rustup target add aarch64-unknown-linux-gnu && \
rustup target add arm-unknown-linux-gnueabihf
RUN mkdir /.cargo && \
echo '[target.aarch64-unknown-linux-gnu]\nlinker = "aarch64-linux-gnu-gcc"' > /.cargo/config && \
echo '[target.arm-unknown-linux-gnueabihf]\nlinker = "arm-linux-gnueabihf-gcc"' >> /.cargo/config
RUN mkdir /build
ENV CARGO_TARGET_DIR /build
ENV CARGO_HOME /build/cache
RUN mkdir /src
WORKDIR /src
CMD ["/src/docker/docker-build-arm-ffmpeg.sh"]

@ -34,5 +34,5 @@ ENV CARGO_HOME /build/cache
RUN mkdir /src
WORKDIR /src
CMD ["/src/docker/docker-build-arm.sh"]
CMD ["/src/docker/docker-build-arm-libav.sh"]

@ -0,0 +1,30 @@
# Cross compilation environment for bliss-mixer
FROM debian:bullseye
RUN dpkg --add-architecture arm64 && \
dpkg --add-architecture armhf
RUN apt-get update
RUN apt-get install -y curl git pkg-config yasm
RUN apt-get install -y build-essential clang
RUN apt-get install -y crossbuild-essential-armhf crossbuild-essential-arm64
RUN curl https://sh.rustup.rs -sSf | sh -s -- -y
ENV PATH="/root/.cargo/bin/:${PATH}"
RUN rustup target add aarch64-unknown-linux-gnu && \
rustup target add arm-unknown-linux-gnueabihf
RUN mkdir /.cargo && \
echo '[target.aarch64-unknown-linux-gnu]\nlinker = "aarch64-linux-gnu-gcc"' > /.cargo/config && \
echo '[target.arm-unknown-linux-gnueabihf]\nlinker = "arm-linux-gnueabihf-gcc"' >> /.cargo/config
RUN mkdir /build
ENV CARGO_TARGET_DIR /build
ENV CARGO_HOME /build/cache
RUN mkdir /src
WORKDIR /src
CMD ["/src/docker/docker-build-arm-ffmpeg.sh"]

@ -32,5 +32,5 @@ ENV CARGO_HOME /build/cache
RUN mkdir /src
WORKDIR /src
CMD ["/src/docker/docker-build-arm.sh"]
CMD ["/src/docker/docker-build-arm-libav.sh"]

@ -21,5 +21,5 @@ ENV CARGO_HOME /build/cache
RUN mkdir /src
WORKDIR /src
CMD ["/src/docker/docker-build-x86.sh"]
CMD ["/src/docker/docker-build-x86i-libav.sh"]

@ -0,0 +1,29 @@
#!/bin/bash
## #!/usr/bin/env bash
set -eux
uname -a
DESTDIR=/src/releases
mkdir -p $DESTDIR/bin
rm -rf $DESTDIR/bin/*
function build {
echo Building for $1 to $3...
if [[ ! -f /build/$1/release/bliss-analyser ]]; then
export RUST_BACKTRACE=full
export PKG_CONFIG=${1//unknown-/}-pkg-config
BINDGEN_EXTRA_CLANG_ARGS="--sysroot /usr/${1//unknown-/}" cargo build --release --target $1
fi
$2 /build/$1/release/bliss-analyser && cp /build/$1/release/bliss-analyser $DESTDIR/$3
}
build arm-unknown-linux-gnueabihf arm-linux-gnueabihf-strip bin/bliss-analyser-armhf
build aarch64-unknown-linux-gnu aarch64-linux-gnu-strip bin/bliss-analyser-aarch64
cp UserGuide.md $DESTDIR/README.md
cp LICENSE $DESTDIR/
cp configs/linux.ini $DESTDIR/config.ini
cp scripts/bliss-analyser-arm $DESTDIR/bliss-analyser

Binary file not shown.