From b50a8ac7c3fa796e3b5412219f87d9aa460fff32 Mon Sep 17 00:00:00 2001 From: aptalca <541623+aptalca@users.noreply.github.com> Date: Mon, 30 Sep 2024 13:20:03 -0400 Subject: [PATCH 1/2] Bump ffmpeg, fribidi and harfbuzz, add support for libvvenc and liblc3 --- .github/workflows/external_trigger.yml | 4 +- .../workflows/package_trigger_scheduler.yml | 2 +- Dockerfile | 39 ++++++++-- Dockerfile.aarch64 | 35 ++++++++- Jenkinsfile | 77 ++++++++----------- README.md | 1 + jenkins-vars.yml | 2 +- readme-vars.yml | 1 + 8 files changed, 105 insertions(+), 56 deletions(-) diff --git a/.github/workflows/external_trigger.yml b/.github/workflows/external_trigger.yml index bff7905..bb17287 100755 --- a/.github/workflows/external_trigger.yml +++ b/.github/workflows/external_trigger.yml @@ -15,7 +15,7 @@ jobs: SKIP_EXTERNAL_TRIGGER: ${{ vars.SKIP_EXTERNAL_TRIGGER }} run: | printf "# External trigger for docker-ffmpeg\n\n" >> $GITHUB_STEP_SUMMARY - if grep -wq "^ffmpeg_master$" <<< "${SKIP_EXTERNAL_TRIGGER}"; then + if grep -q "^ffmpeg_master" <<< "${SKIP_EXTERNAL_TRIGGER}"; then echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` contains \`ffmpeg_master\`; skipping trigger." >> $GITHUB_STEP_SUMMARY exit 0 @@ -23,7 +23,7 @@ jobs: echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY echo "> External trigger running off of master branch. To disable this trigger, add \`ffmpeg_master\` into the Github organizational variable \`SKIP_EXTERNAL_TRIGGER\`." >> $GITHUB_STEP_SUMMARY printf "\n## Retrieving external version\n\n" >> $GITHUB_STEP_SUMMARY - EXT_RELEASE=$(echo 7.0.2-cli) + EXT_RELEASE=$(echo 7.1-cli) echo "Type is \`custom_version_command\`" >> $GITHUB_STEP_SUMMARY if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY diff --git a/.github/workflows/package_trigger_scheduler.yml b/.github/workflows/package_trigger_scheduler.yml index c525efa..1434bca 100755 --- a/.github/workflows/package_trigger_scheduler.yml +++ b/.github/workflows/package_trigger_scheduler.yml @@ -33,7 +33,7 @@ jobs: echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY echo "> Skipping branch ${br} due to \`skip_package_check\` being set in \`jenkins-vars.yml\`." >> $GITHUB_STEP_SUMMARY skipped_branches="${skipped_branches}${br} " - elif grep -wq "^ffmpeg_${br}$" <<< "${SKIP_PACKAGE_TRIGGER}"; then + elif grep -q "^ffmpeg_${br}" <<< "${SKIP_PACKAGE_TRIGGER}"; then echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY echo "> Github organizational variable \`SKIP_PACKAGE_TRIGGER\` contains \`ffmpeg_${br}\`; skipping trigger." >> $GITHUB_STEP_SUMMARY skipped_branches="${skipped_branches}${br} " diff --git a/Dockerfile b/Dockerfile index e6bffea..48a8ae5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,12 +16,12 @@ ENV \ ENV \ AOM=v3.10.0 \ FDKAAC=2.0.3 \ - FFMPEG_HARD=7.0.2 \ + FFMPEG_HARD=7.1 \ FONTCONFIG=2.15.0 \ FREETYPE=2.13.3 \ - FRIBIDI=1.0.15 \ + FRIBIDI=1.0.16 \ GMMLIB=22.3.20 \ - HARFBUZZ=10.0.0 \ + HARFBUZZ=10.0.1 \ IHD=24.2.5 \ KVAZAAR=2.3.1 \ LAME=3.100 \ @@ -30,6 +30,7 @@ ENV \ LIBDOVI=2.1.2 \ LIBDRM=2.4.123 \ LIBGL=1.7.0 \ + LIBLC3=1.1.1 \ LIBMFX=22.5.4 \ LIBPLACEBO=7.349.0 \ LIBPNG=1.6.44 \ @@ -54,6 +55,7 @@ ENV \ VPLGPURT=24.2.5 \ VPX=1.14.1 \ VULKANSDK=vulkan-sdk-1.3.290.0 \ + VVENC=1.12.0 \ WEBP=1.4.0 \ X265=4.0 \ XVID=1.3.7 \ @@ -347,6 +349,19 @@ RUN \ ninja -C build && \ ninja -C build install && \ strip -d /usr/local/lib/x86_64-linux-gnu/libdrm*.so +RUN \ + echo "**** grabbing liblc3 ****" && \ + mkdir -p /tmp/liblc3 && \ + git clone \ + --branch v${LIBLC3} \ + --depth 1 \ + https://github.com/google/liblc3.git \ + /tmp/liblc3 +RUN \ + echo "**** compiling liblc3 ****" && \ + cd /tmp/liblc3 && \ + meson setup build && \ + meson install -C build --strip RUN \ echo "**** grabbing libva ****" && \ mkdir -p /tmp/libva && \ @@ -384,14 +399,14 @@ RUN \ build && \ ninja -C build install && \ strip -d /usr/local/lib/libvdpau.so - RUN \ +RUN \ echo "**** grabbing shaderc ****" && \ mkdir -p /tmp/shaderc && \ git clone \ --branch ${SHADERC} \ --depth 1 https://github.com/google/shaderc.git \ /tmp/shaderc - RUN \ +RUN \ echo "**** compiling shaderc ****" && \ cd /tmp/shaderc && \ ./utils/git-sync-deps && \ @@ -772,6 +787,18 @@ RUN \ .. && \ make && \ make install +RUN \ + echo "**** grabbing vvenc ****" && \ + mkdir -p /tmp/vvenc && \ + git clone \ + --branch v${VVENC} \ + --depth 1 https://github.com/fraunhoferhhi/vvenc.git \ + /tmp/vvenc +RUN \ + echo "**** compiling vvenc ****" && \ + cd /tmp/vvenc && \ + make install install-prefix=/usr/local && \ + strip -d /usr/local/lib/libvvenc.so RUN \ echo "**** grabbing webp ****" && \ mkdir -p /tmp/webp && \ @@ -892,6 +919,7 @@ RUN \ --enable-libfribidi \ --enable-libharfbuzz \ --enable-libkvazaar \ + --enable-liblc3 \ --enable-libmp3lame \ --enable-libopencore-amrnb \ --enable-libopencore-amrwb \ @@ -910,6 +938,7 @@ RUN \ --enable-libvorbis \ --enable-libvpl \ --enable-libvpx \ + --enable-libvvenc \ --enable-libwebp \ --enable-libx264 \ --enable-libx265 \ diff --git a/Dockerfile.aarch64 b/Dockerfile.aarch64 index b453b35..b6aa7d1 100644 --- a/Dockerfile.aarch64 +++ b/Dockerfile.aarch64 @@ -16,15 +16,16 @@ ENV \ ENV \ AOM=v3.10.0 \ FDKAAC=2.0.3 \ - FFMPEG_HARD=7.0.2 \ + FFMPEG_HARD=7.1 \ FONTCONFIG=2.15.0 \ FREETYPE=2.13.3 \ - FRIBIDI=1.0.15 \ - HARFBUZZ=10.0.0 \ + FRIBIDI=1.0.16 \ + HARFBUZZ=10.0.1 \ KVAZAAR=2.3.1 \ LAME=3.100 \ LIBASS=0.17.3 \ LIBDAV1D=1.4.3 \ + LIBLC3=1.1.1 \ LIBPNG=1.6.44 \ LIBVA=2.22.0 \ LIBVDPAU=1.5 \ @@ -42,6 +43,7 @@ ENV \ THEORA=1.1.1 \ VORBIS=1.3.7 \ VPX=1.14.1 \ + VVENC=1.12.0 \ WEBP=1.4.0 \ X265=4.0 \ XVID=1.3.7 \ @@ -273,6 +275,19 @@ RUN \ cd /tmp/libdav1d/build && \ meson setup .. && \ ninja install +RUN \ + echo "**** grabbing liblc3 ****" && \ + mkdir -p /tmp/liblc3 && \ + git clone \ + --branch v${LIBLC3} \ + --depth 1 \ + https://github.com/google/liblc3.git \ + /tmp/liblc3 +RUN \ + echo "**** compiling liblc3 ****" && \ + cd /tmp/liblc3 && \ + meson setup build && \ + meson install -C build --strip RUN \ echo "**** grabbing vmaf ****" && \ mkdir -p /tmp/vmaf && \ @@ -487,6 +502,18 @@ RUN \ --enable-vp9-highbitdepth && \ make && \ make install +RUN \ + echo "**** grabbing vvenc ****" && \ + mkdir -p /tmp/vvenc && \ + git clone \ + --branch v${VVENC} \ + --depth 1 https://github.com/fraunhoferhhi/vvenc.git \ + /tmp/vvenc +RUN \ + echo "**** compiling vvenc ****" && \ + cd /tmp/vvenc && \ + make install install-prefix=/usr/local && \ + strip -d /usr/local/lib/libvvenc.so RUN \ echo "**** grabbing webp ****" && \ mkdir -p /tmp/webp && \ @@ -609,6 +636,7 @@ RUN \ --enable-libfribidi \ --enable-libharfbuzz \ --enable-libkvazaar \ + --enable-liblc3 \ --enable-libmp3lame \ --enable-libopencore-amrnb \ --enable-libopencore-amrwb \ @@ -624,6 +652,7 @@ RUN \ --enable-libvmaf \ --enable-libvorbis \ --enable-libvpx \ + --enable-libvvenc \ --enable-libwebp \ --enable-libx264 \ --enable-libx265 \ diff --git a/Jenkinsfile b/Jenkinsfile index 0485755..4775e91 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -124,7 +124,7 @@ pipeline { steps{ script{ env.EXT_RELEASE = sh( - script: ''' echo 7.0.2-cli ''', + script: ''' echo 7.1-cli ''', returnStdout: true).trim() env.RELEASE_LINK = 'custom_command' } @@ -980,52 +980,41 @@ EOF returnStdout: true).trim() if (env.EXIT_STATUS == "ABORTED"){ sh 'echo "build aborted"' - } - else if (currentBuild.currentResult == "SUCCESS"){ - if (env.GITHUBIMAGE =~ /lspipepr/){ - sh ''' curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/jenkins-avatar.png","embeds": [{"color": 3957028,\ - "footer": {"text" : "PR Build"},\ - "timestamp": "'${JOB_DATE}'",\ - "description": "**Build:** '${BUILD_NUMBER}'\\n**CI Results:** '${CI_URL}'\\n**ShellCheck Results:** '${SHELLCHECK_URL}'\\n**Status:** Success\\n**Job:** '${RUN_DISPLAY_URL}'\\n**Change:** '${CODE_URL}'\\n**External Release:**: '${RELEASE_LINK}'\\n**DockerHub:** '${DOCKERHUB_LINK}'\\n"}],\ - "username": "Jenkins"}' ${BUILDS_DISCORD} ''' - } - else if (env.GITHUBIMAGE =~ /lsiodev/){ - sh ''' curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/jenkins-avatar.png","embeds": [{"color": 3957028,\ - "footer": {"text" : "Dev Build"},\ - "timestamp": "'${JOB_DATE}'",\ - "description": "**Build:** '${BUILD_NUMBER}'\\n**CI Results:** '${CI_URL}'\\n**ShellCheck Results:** '${SHELLCHECK_URL}'\\n**Status:** Success\\n**Job:** '${RUN_DISPLAY_URL}'\\n**Change:** '${CODE_URL}'\\n**External Release:**: '${RELEASE_LINK}'\\n**DockerHub:** '${DOCKERHUB_LINK}'\\n"}],\ - "username": "Jenkins"}' ${BUILDS_DISCORD} ''' - } - else{ - sh ''' curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/jenkins-avatar.png","embeds": [{"color": 1681177,\ - "footer": {"text" : "Live Build"},\ - "timestamp": "'${JOB_DATE}'",\ - "description": "**Build:** '${BUILD_NUMBER}'\\n**CI Results:** '${CI_URL}'\\n**ShellCheck Results:** '${SHELLCHECK_URL}'\\n**Status:** Success\\n**Job:** '${RUN_DISPLAY_URL}'\\n**Change:** '${CODE_URL}'\\n**External Release:**: '${RELEASE_LINK}'\\n**DockerHub:** '${DOCKERHUB_LINK}'\\n"}],\ - "username": "Jenkins"}' ${BUILDS_DISCORD} ''' - } - } - else { - if (env.GITHUBIMAGE =~ /lspipepr/){ - sh ''' curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/jenkins-avatar.png","embeds": [{"color": 12669523,\ - "footer": {"text" : "PR Build"},\ - "timestamp": "'${JOB_DATE}'",\ - "description": "**Build:** '${BUILD_NUMBER}'\\n**CI Results:** '${CI_URL}'\\n**ShellCheck Results:** '${SHELLCHECK_URL}'\\n**Status:** Success\\n**Job:** '${RUN_DISPLAY_URL}'\\n**Change:** '${CODE_URL}'\\n**External Release:**: '${RELEASE_LINK}'\\n**DockerHub:** '${DOCKERHUB_LINK}'\\n"}],\ - "username": "Jenkins"}' ${BUILDS_DISCORD} ''' - } - else if (env.GITHUBIMAGE =~ /lsiodev/){ - sh ''' curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/jenkins-avatar.png","embeds": [{"color": 12669523,\ - "footer": {"text" : "Dev Build"},\ - "timestamp": "'${JOB_DATE}'",\ - "description": "**Build:** '${BUILD_NUMBER}'\\n**CI Results:** '${CI_URL}'\\n**ShellCheck Results:** '${SHELLCHECK_URL}'\\n**Status:** Success\\n**Job:** '${RUN_DISPLAY_URL}'\\n**Change:** '${CODE_URL}'\\n**External Release:**: '${RELEASE_LINK}'\\n**DockerHub:** '${DOCKERHUB_LINK}'\\n"}],\ - "username": "Jenkins"}' ${BUILDS_DISCORD} ''' + }else{ + if (currentBuild.currentResult == "SUCCESS"){ + if (env.GITHUBIMAGE =~ /lspipepr/){ + env.JOB_WEBHOOK_STATUS='Success' + env.JOB_WEBHOOK_COLOUR=3957028 + env.JOB_WEBHOOK_FOOTER='PR Build' + }else if (env.GITHUBIMAGE =~ /lsiodev/){ + env.JOB_WEBHOOK_STATUS='Success' + env.JOB_WEBHOOK_COLOUR=3957028 + env.JOB_WEBHOOK_FOOTER='Dev Build' + }else{ + env.JOB_WEBHOOK_STATUS='Success' + env.JOB_WEBHOOK_COLOUR=1681177 + env.JOB_WEBHOOK_FOOTER='Live Build' + } + }else{ + if (env.GITHUBIMAGE =~ /lspipepr/){ + env.JOB_WEBHOOK_STATUS='Failure' + env.JOB_WEBHOOK_COLOUR=12669523 + env.JOB_WEBHOOK_FOOTER='PR Build' + }else if (env.GITHUBIMAGE =~ /lsiodev/){ + env.JOB_WEBHOOK_STATUS='Failure' + env.JOB_WEBHOOK_COLOUR=12669523 + env.JOB_WEBHOOK_FOOTER='Dev Build' + }else{ + env.JOB_WEBHOOK_STATUS='Failure' + env.JOB_WEBHOOK_COLOUR=16711680 + env.JOB_WEBHOOK_FOOTER='Live Build' + } } - else{ - sh ''' curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/jenkins-avatar.png","embeds": [{"color": 16711680,\ - "footer": {"text" : "Live Build"},\ + sh ''' curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/jenkins-avatar.png","embeds": [{"'color'": '${JOB_WEBHOOK_COLOUR}',\ + "footer": {"text" : "'"${JOB_WEBHOOK_FOOTER}"'"},\ "timestamp": "'${JOB_DATE}'",\ - "description": "**Build:** '${BUILD_NUMBER}'\\n**CI Results:** '${CI_URL}'\\n**ShellCheck Results:** '${SHELLCHECK_URL}'\\n**Status:** failure\\n**Job:** '${RUN_DISPLAY_URL}'\\n**Change:** '${CODE_URL}'\\n**External Release:**: '${RELEASE_LINK}'\\n**DockerHub:** '${DOCKERHUB_LINK}'\\n"}],\ + "description": "**Build:** '${BUILD_NUMBER}'\\n**CI Results:** '${CI_URL}'\\n**ShellCheck Results:** '${SHELLCHECK_URL}'\\n**Status:** '${JOB_WEBHOOK_STATUS}'\\n**Job:** '${RUN_DISPLAY_URL}'\\n**Change:** '${CODE_URL}'\\n**External Release:**: '${RELEASE_LINK}'\\n**DockerHub:** '${DOCKERHUB_LINK}'\\n"}],\ "username": "Jenkins"}' ${BUILDS_DISCORD} ''' - } } } } diff --git a/README.md b/README.md index 1a9626a..37b32ee 100644 --- a/README.md +++ b/README.md @@ -174,6 +174,7 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64 ## Versions +* **30.09.24:** - Bump ffmpeg for 7.1. Add support for libvvenc and liblc3. Bump libfribidi and libharfbuzz. * **24.09.24:** - Let ffmpeg terminate gracefully on docker stop/restart. Bump libharfbuzz, libpng, mesa, shaderc and libx265. * **09.09.24:** - Add libzmq. * **31.08.24:** - Bump libaom, libdrm, libvpl, mesa and svtav1. Enable nvdec/nvenc on arm64 (untested). diff --git a/jenkins-vars.yml b/jenkins-vars.yml index 34cafd3..44e59c2 100644 --- a/jenkins-vars.yml +++ b/jenkins-vars.yml @@ -3,7 +3,7 @@ # jenkins variables project_name: docker-ffmpeg external_type: na -custom_version_command: "echo 7.0.2-cli" +custom_version_command: "echo 7.1-cli" release_type: stable release_tag: latest ls_branch: master diff --git a/readme-vars.yml b/readme-vars.yml index ccfc5d1..233aa6e 100644 --- a/readme-vars.yml +++ b/readme-vars.yml @@ -178,6 +178,7 @@ full_custom_readme: | ## Versions + * **30.09.24:** - Bump ffmpeg for 7.1. Add support for libvvenc and liblc3. Bump libfribidi and libharfbuzz. * **24.09.24:** - Let ffmpeg terminate gracefully on docker stop/restart. Bump libharfbuzz, libpng, mesa, shaderc and libx265. * **09.09.24:** - Add libzmq. * **31.08.24:** - Bump libaom, libdrm, libvpl, mesa and svtav1. Enable nvdec/nvenc on arm64 (untested). From 6ada8e17a0bebff3f65dc95a7d35795e3032dffc Mon Sep 17 00:00:00 2001 From: aptalca <541623+aptalca@users.noreply.github.com> Date: Mon, 30 Sep 2024 15:43:47 -0400 Subject: [PATCH 2/2] vvenc doesn't build on arm --- Dockerfile.aarch64 | 13 ------------- README.md | 2 +- readme-vars.yml | 2 +- 3 files changed, 2 insertions(+), 15 deletions(-) diff --git a/Dockerfile.aarch64 b/Dockerfile.aarch64 index b6aa7d1..2b85933 100644 --- a/Dockerfile.aarch64 +++ b/Dockerfile.aarch64 @@ -502,18 +502,6 @@ RUN \ --enable-vp9-highbitdepth && \ make && \ make install -RUN \ - echo "**** grabbing vvenc ****" && \ - mkdir -p /tmp/vvenc && \ - git clone \ - --branch v${VVENC} \ - --depth 1 https://github.com/fraunhoferhhi/vvenc.git \ - /tmp/vvenc -RUN \ - echo "**** compiling vvenc ****" && \ - cd /tmp/vvenc && \ - make install install-prefix=/usr/local && \ - strip -d /usr/local/lib/libvvenc.so RUN \ echo "**** grabbing webp ****" && \ mkdir -p /tmp/webp && \ @@ -652,7 +640,6 @@ RUN \ --enable-libvmaf \ --enable-libvorbis \ --enable-libvpx \ - --enable-libvvenc \ --enable-libwebp \ --enable-libx264 \ --enable-libx265 \ diff --git a/README.md b/README.md index 37b32ee..e84c341 100644 --- a/README.md +++ b/README.md @@ -174,7 +174,7 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64 ## Versions -* **30.09.24:** - Bump ffmpeg for 7.1. Add support for libvvenc and liblc3. Bump libfribidi and libharfbuzz. +* **30.09.24:** - Bump ffmpeg for 7.1. Add support for libvvenc (amd64 only) and liblc3. Bump libfribidi and libharfbuzz. * **24.09.24:** - Let ffmpeg terminate gracefully on docker stop/restart. Bump libharfbuzz, libpng, mesa, shaderc and libx265. * **09.09.24:** - Add libzmq. * **31.08.24:** - Bump libaom, libdrm, libvpl, mesa and svtav1. Enable nvdec/nvenc on arm64 (untested). diff --git a/readme-vars.yml b/readme-vars.yml index 233aa6e..da9149e 100644 --- a/readme-vars.yml +++ b/readme-vars.yml @@ -178,7 +178,7 @@ full_custom_readme: | ## Versions - * **30.09.24:** - Bump ffmpeg for 7.1. Add support for libvvenc and liblc3. Bump libfribidi and libharfbuzz. + * **30.09.24:** - Bump ffmpeg for 7.1. Add support for libvvenc (amd64 only) and liblc3. Bump libfribidi and libharfbuzz. * **24.09.24:** - Let ffmpeg terminate gracefully on docker stop/restart. Bump libharfbuzz, libpng, mesa, shaderc and libx265. * **09.09.24:** - Add libzmq. * **31.08.24:** - Bump libaom, libdrm, libvpl, mesa and svtav1. Enable nvdec/nvenc on arm64 (untested).