From d7da5dcd95a5332cb12352d9790317271f298436 Mon Sep 17 00:00:00 2001 From: CDrummond Date: Wed, 24 Sep 2025 22:18:46 +0100 Subject: [PATCH] Use docker for Linxu builds and link to musl --- .github/workflows/build.yml | 56 ++++++------------- docker/Dockerfile_Bookworm_libav | 38 ------------- docker/Dockerfile_Bullseye_static | 36 ------------ docker/Dockerfile_Ubuntu2404_libav | 25 --------- ...e_Bullseye_libav => Dockerfile_arm_ffmpeg} | 12 +--- ...eye_symphonia => Dockerfile_arm_symphonia} | 4 +- docker/Dockerfile_x86_ffmpeg | 20 +++++++ docker/Dockerfile_x86_symphonia | 20 +++++++ ...rm-libav.sh => docker-build-arm-ffmpeg.sh} | 10 ++-- docker/docker-build-arm-staticlibav.sh | 29 ---------- docker/docker-build-arm-symphonia.sh | 10 ++-- docker/docker-build-x86-ffmpeg.sh | 22 ++++++++ docker/docker-build-x86-libav.sh | 18 ------ docker/docker-build-x86-symphonia.sh | 22 ++++++++ 14 files changed, 113 insertions(+), 209 deletions(-) delete mode 100644 docker/Dockerfile_Bookworm_libav delete mode 100644 docker/Dockerfile_Bullseye_static delete mode 100644 docker/Dockerfile_Ubuntu2404_libav rename docker/{Dockerfile_Bullseye_libav => Dockerfile_arm_ffmpeg} (60%) rename docker/{Dockerfile_Bullseye_symphonia => Dockerfile_arm_symphonia} (92%) create mode 100644 docker/Dockerfile_x86_ffmpeg create mode 100644 docker/Dockerfile_x86_symphonia rename docker/{docker-build-arm-libav.sh => docker-build-arm-ffmpeg.sh} (59%) delete mode 100755 docker/docker-build-arm-staticlibav.sh create mode 100755 docker/docker-build-x86-ffmpeg.sh delete mode 100755 docker/docker-build-x86-libav.sh create mode 100755 docker/docker-build-x86-symphonia.sh diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5e331bf..b3fee81 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,20 +12,12 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v1 - - name: Packages - run: sudo apt-get update && sudo apt-get install build-essential yasm -y - - - name: Build + - name: Build x86 run: | - cargo build --release --features=symphonia - 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 + docker build -t bliss-analyser-x86-symphonia - < docker/Dockerfile_x86_symphonia + docker run --rm -v $PWD/target:/build -v $PWD:/src bliss-analyser - name: Upload artifacts uses: actions/upload-artifact@v4 @@ -33,26 +25,17 @@ jobs: name: bliss-analyser-linux-x86-symphonia path: releases/ - Linux_x86_ffmpeg: - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v1 - - name: Packages - run: sudo apt-get update && sudo apt-get install build-essential yasm -y - - - name: Build x86 static-ffmpeg version + - name: Build x86 run: | - cargo build --release --features=libav,staticlibav - 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 + docker build -t bliss-analyser-x86-ffmpeg - < docker/Dockerfile_x86_ffmpeg + docker run --rm -v $PWD/target:/build -v $PWD:/src bliss-analyser - name: Upload artifacts uses: actions/upload-artifact@v4 @@ -60,18 +43,17 @@ jobs: name: bliss-analyser-linux-x86-ffmpeg path: releases/ - Linux_arm_symphonia: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v1 - - name: Build + - name: Build ARM run: | - docker build --pull --no-cache -t bliss-analyser-cross - < docker/Dockerfile_Bullseye_symphonia - docker run --rm -v $PWD/target:/build -v $PWD:/src bliss-analyser-cross + docker build -t bliss-analyser-arm-symphonia - < docker/Dockerfile_arm_symphonia + docker run --rm -v $PWD/target:/build -v $PWD:/src bliss-analyser - name: Upload artifacts uses: actions/upload-artifact@v4 @@ -79,18 +61,17 @@ jobs: name: bliss-analyser-linux-arm-symphonia path: releases/ - Linux_arm_ffmpeg: - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v1 - - name: Build ARM static-ffmpeg on Debian + - name: Build ARM run: | - docker build -t bliss-analyser-cross - < docker/Dockerfile_Bullseye_static - docker run --rm -v $PWD/target:/build -v $PWD:/src bliss-analyser-cross + docker build -t bliss-analyser-arm-ffmpeg - < docker/Dockerfile_arm_ffmpeg + docker run --rm -v $PWD/target:/build -v $PWD:/src bliss-analyser - name: Upload artifacts uses: actions/upload-artifact@v4 @@ -98,7 +79,6 @@ jobs: name: bliss-analyser-linux-arm-ffmpeg path: releases/ - macOS_symphonia: runs-on: macos-13 diff --git a/docker/Dockerfile_Bookworm_libav b/docker/Dockerfile_Bookworm_libav deleted file mode 100644 index ae55f91..0000000 --- a/docker/Dockerfile_Bookworm_libav +++ /dev/null @@ -1,38 +0,0 @@ -# Cross compilation environment for bliss-analyser - -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 \ - libavutil-dev:arm64 libavcodec-dev:arm64 libavformat-dev:arm64 \ - libavfilter-dev:arm64 libavdevice-dev:arm64 libswresample-dev:arm64 libfftw3-dev:arm64 - -RUN apt-get install -y pkg-config:armhf \ - libavutil-dev:armhf libavcodec-dev:armhf libavformat-dev:armhf \ - libavfilter-dev:armhf libavdevice-dev:armhf libswresample-dev:armhf libfftw3-dev: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-libav.sh"] - diff --git a/docker/Dockerfile_Bullseye_static b/docker/Dockerfile_Bullseye_static deleted file mode 100644 index 62ff5c8..0000000 --- a/docker/Dockerfile_Bullseye_static +++ /dev/null @@ -1,36 +0,0 @@ -# Cross compilation environment for bliss-anlyser - -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 apt-get install -y libavutil-dev:arm64 libavcodec-dev:arm64 libavformat-dev:arm64 \ - libavfilter-dev:arm64 libavdevice-dev:arm64 libswresample-dev:arm64 libfftw3-dev:arm64 - -RUN apt-get install -y libavutil-dev:armhf libavcodec-dev:armhf libavformat-dev:armhf \ - libavfilter-dev:armhf libavdevice-dev:armhf libswresample-dev:armhf libfftw3-dev: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-staticlibav.sh"] - diff --git a/docker/Dockerfile_Ubuntu2404_libav b/docker/Dockerfile_Ubuntu2404_libav deleted file mode 100644 index 301784c..0000000 --- a/docker/Dockerfile_Ubuntu2404_libav +++ /dev/null @@ -1,25 +0,0 @@ -# Cross compilation environment for bliss-anlyser - -FROM ubuntu:24.04 - -RUN apt-get update - -RUN apt-get install -y curl git pkg-config -RUN apt-get install -y build-essential yasm clang - -RUN apt-get install -y libavutil-dev libavcodec-dev libavformat-dev \ - libavfilter-dev libavdevice-dev libswresample-dev libfftw3-dev \ - ffmpeg - -RUN curl https://sh.rustup.rs -sSf | sh -s -- -y -ENV PATH="/root/.cargo/bin/:${PATH}" - -RUN mkdir /build -ENV CARGO_TARGET_DIR /build -ENV CARGO_HOME /build/cache - -RUN mkdir /src - -WORKDIR /src -CMD ["/src/docker/docker-build-x86-libav.sh"] - diff --git a/docker/Dockerfile_Bullseye_libav b/docker/Dockerfile_arm_ffmpeg similarity index 60% rename from docker/Dockerfile_Bullseye_libav rename to docker/Dockerfile_arm_ffmpeg index e922cec..b59f612 100644 --- a/docker/Dockerfile_Bullseye_libav +++ b/docker/Dockerfile_arm_ffmpeg @@ -1,6 +1,4 @@ -# Cross compilation environment for bliss-anlyser - -FROM debian:bullseye +FROM debian:bookworm RUN dpkg --add-architecture arm64 && \ dpkg --add-architecture armhf @@ -10,12 +8,6 @@ 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 apt-get install -y libavutil-dev:arm64 libavcodec-dev:arm64 libavformat-dev:arm64 \ - libavfilter-dev:arm64 libavdevice-dev:arm64 libswresample-dev:arm64 libfftw3-dev:arm64 - -RUN apt-get install -y libavutil-dev:armhf libavcodec-dev:armhf libavformat-dev:armhf \ - libavfilter-dev:armhf libavdevice-dev:armhf libswresample-dev:armhf libfftw3-dev: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 && \ @@ -32,5 +24,5 @@ ENV CARGO_HOME /build/cache RUN mkdir /src WORKDIR /src -CMD ["/src/docker/docker-build-arm-libav.sh"] +CMD ["/src/docker/docker-build-arm-ffmpeg.sh"] diff --git a/docker/Dockerfile_Bullseye_symphonia b/docker/Dockerfile_arm_symphonia similarity index 92% rename from docker/Dockerfile_Bullseye_symphonia rename to docker/Dockerfile_arm_symphonia index 3723237..1f3080c 100644 --- a/docker/Dockerfile_Bullseye_symphonia +++ b/docker/Dockerfile_arm_symphonia @@ -1,6 +1,4 @@ -# Cross compilation environment for bliss-anlyser - -FROM debian:bullseye +FROM debian:bookworm RUN dpkg --add-architecture arm64 && \ dpkg --add-architecture armhf diff --git a/docker/Dockerfile_x86_ffmpeg b/docker/Dockerfile_x86_ffmpeg new file mode 100644 index 0000000..addf45f --- /dev/null +++ b/docker/Dockerfile_x86_ffmpeg @@ -0,0 +1,20 @@ +FROM debian:bookworm + +RUN apt-get update + +RUN apt-get install -y curl git pkg-config yasm +RUN apt-get install -y build-essential clang + +RUN curl https://sh.rustup.rs -sSf | sh -s -- -y +ENV PATH="/root/.cargo/bin/:${PATH}" +RUN rustup target add x86_64-unknown-linux-musl + +RUN mkdir /build +ENV CARGO_TARGET_DIR /build +ENV CARGO_HOME /build/cache + +RUN mkdir /src + +WORKDIR /src +CMD ["/src/docker/docker-build-x86-ffmpeg.sh"] + diff --git a/docker/Dockerfile_x86_symphonia b/docker/Dockerfile_x86_symphonia new file mode 100644 index 0000000..1f0342c --- /dev/null +++ b/docker/Dockerfile_x86_symphonia @@ -0,0 +1,20 @@ +FROM debian:bookworm + +RUN apt-get update + +RUN apt-get install -y curl git pkg-config yasm +RUN apt-get install -y build-essential clang + +RUN curl https://sh.rustup.rs -sSf | sh -s -- -y +ENV PATH="/root/.cargo/bin/:${PATH}" +RUN rustup target add x86_64-unknown-linux-musl + +RUN mkdir /build +ENV CARGO_TARGET_DIR /build +ENV CARGO_HOME /build/cache + +RUN mkdir /src + +WORKDIR /src +CMD ["/src/docker/docker-build-x86-symphonia.sh"] + diff --git a/docker/docker-build-arm-libav.sh b/docker/docker-build-arm-ffmpeg.sh similarity index 59% rename from docker/docker-build-arm-libav.sh rename to docker/docker-build-arm-ffmpeg.sh index 343bfb1..6770dd9 100755 --- a/docker/docker-build-arm-libav.sh +++ b/docker/docker-build-arm-ffmpeg.sh @@ -11,13 +11,11 @@ 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 --features=libav --target $1 - fi + if [[ ! -f /build/$1/release/bliss-analyser ]]; then + cargo build --release --features=libav,staticlibav --target $1 + fi - $2 /build/$1/release/bliss-analyser && cp /build/$1/release/bliss-analyser $DESTDIR/$3 + $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 diff --git a/docker/docker-build-arm-staticlibav.sh b/docker/docker-build-arm-staticlibav.sh deleted file mode 100755 index 91956a2..0000000 --- a/docker/docker-build-arm-staticlibav.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/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 --features=libav,staticlibav --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 diff --git a/docker/docker-build-arm-symphonia.sh b/docker/docker-build-arm-symphonia.sh index f422b4d..97c716b 100755 --- a/docker/docker-build-arm-symphonia.sh +++ b/docker/docker-build-arm-symphonia.sh @@ -11,13 +11,11 @@ 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 --features=symphonia --target $1 - fi + if [[ ! -f /build/$1/release/bliss-analyser ]]; then + cargo build --release --features=symphonia --target $1 + fi - $2 /build/$1/release/bliss-analyser && cp /build/$1/release/bliss-analyser $DESTDIR/$3 + $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 diff --git a/docker/docker-build-x86-ffmpeg.sh b/docker/docker-build-x86-ffmpeg.sh new file mode 100755 index 0000000..55eeca3 --- /dev/null +++ b/docker/docker-build-x86-ffmpeg.sh @@ -0,0 +1,22 @@ +#!/bin/bash +## #!/usr/bin/env bash +set -eux + +uname -a +DESTDIR=/src/releases + +function build { + echo Building for $1 to $3... + + if [[ ! -f /build/$1/release/bliss-analyser ]]; then + cargo build --release --features=libav,staticlibav --target $1 + fi + + $2 /build/$1/release/bliss-analyser && cp /build/$1/release/bliss-analyser $DESTDIR/$3 +} + +build x86_64-unknown-linux-musl strip bliss-analyser + +cp UserGuide.md $DESTDIR/README.md +cp LICENSE $DESTDIR/ +cp configs/linux.ini $DESTDIR/config.ini diff --git a/docker/docker-build-x86-libav.sh b/docker/docker-build-x86-libav.sh deleted file mode 100755 index b5f6c57..0000000 --- a/docker/docker-build-x86-libav.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash -## #!/usr/bin/env bash -set -eux - -uname -a -DESTDIR=/src/releases - -mkdir -p $DESTDIR/bin -rm -rf $DESTDIR/bin/* - -export RUST_BACKTRACE=full -cargo build --release --features=libav - -strip /build/release/bliss-analyser && cp /build/release/bliss-analyser $DESTDIR/bliss-analyser - -cp UserGuide.md $DESTDIR/README.md -cp LICENSE $DESTDIR/ -cp configs/linux.ini $DESTDIR/config.ini diff --git a/docker/docker-build-x86-symphonia.sh b/docker/docker-build-x86-symphonia.sh new file mode 100755 index 0000000..4b1422b --- /dev/null +++ b/docker/docker-build-x86-symphonia.sh @@ -0,0 +1,22 @@ +#!/bin/bash +## #!/usr/bin/env bash +set -eux + +uname -a +DESTDIR=/src/releases + +function build { + echo Building for $1 to $3... + + if [[ ! -f /build/$1/release/bliss-analyser ]]; then + cargo build --release --features=symphonia --target $1 + fi + + $2 /build/$1/release/bliss-analyser && cp /build/$1/release/bliss-analyser $DESTDIR/$3 +} + +build x86_64-unknown-linux-musl strip bliss-analyser + +cp UserGuide.md $DESTDIR/README.md +cp LICENSE $DESTDIR/ +cp configs/linux.ini $DESTDIR/config.ini