diff --git a/.github/workflows/lambda-ffmpeg.yml b/.github/workflows/lambda-ffmpeg.yml index 75087abd65..00c0ce4edc 100644 --- a/.github/workflows/lambda-ffmpeg.yml +++ b/.github/workflows/lambda-ffmpeg.yml @@ -8,7 +8,7 @@ permissions: on: pull_request: paths: - - "packages/aws-lambda/ffmpeg/**" + - "packages/aws-lambda/image/**" - ".github/workflows/lambda-ffmpeg.yml" workflow_dispatch: @@ -29,7 +29,7 @@ jobs: - name: Build and check run: >- docker buildx build --progress=plain --platform linux/arm64 --target artifact - --output type=local,dest=out packages/aws-lambda/ffmpeg + --output type=local,dest=out packages/aws-lambda/image - run: cat out/hf-media-check.txt && sha256sum out/*.tar.gz - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 with: diff --git a/packages/aws-lambda/ffmpeg/Dockerfile b/packages/aws-lambda/image/Dockerfile similarity index 85% rename from packages/aws-lambda/ffmpeg/Dockerfile rename to packages/aws-lambda/image/Dockerfile index 7a1d2d03a9..1cc7b124ba 100644 --- a/packages/aws-lambda/ffmpeg/Dockerfile +++ b/packages/aws-lambda/image/Dockerfile @@ -1,5 +1,5 @@ -# Native ffmpeg for the Lambda video function, built on the Lambda Node 22 base it runs on: -# docker buildx build --platform linux/arm64 --target artifact --output type=local,dest=out packages/aws-lambda/ffmpeg +# The arm64 Lambda video function's native ffmpeg, built on the Lambda Node 22 base it runs on: +# docker buildx build --platform linux/arm64 --target artifact --output type=local,dest=out packages/aws-lambda/image # The artifact stage depends on the check stage, so no tarball comes out of a build whose codecs fail. ARG BASE=public.ecr.aws/lambda/nodejs:22@sha256:d138eff445f6ea04c51091d8e6cbb064d5663e850cddfa62396061586f98b126 @@ -10,8 +10,8 @@ RUN rpm -qa --qf '%{NAME}\n' | sort >/build-base-rpms.txt && \ gcc gcc-c++ make cmake meson ninja-build autoconf automake libtool pkgconf-pkg-config diffutils \ git xz bzip2 tar gzip which patchelf gnutls-devel zlib-devel $([ "$(uname -m)" = x86_64 ] && echo nasm) && \ microdnf clean all && mkdir /build && mv /build-base-rpms.txt /build/base-rpms.txt -COPY sources.txt build.sh /build/ -RUN bash /build/build.sh +COPY sources.txt build-ffmpeg.sh /build/ +RUN bash /build/build-ffmpeg.sh FROM ${BASE} AS certs # certtool, not openssl: the base's openssl-libs cannot run the repo's openssl CLI. @@ -26,8 +26,8 @@ RUN microdnf install -y --nodocs --releasever=2023.12.20260914 gnutls-utils && m FROM ${BASE} AS check COPY --from=build /opt/hf-media /opt/hf-media COPY --from=certs /certs /certs -COPY check.sh /check.sh -RUN cp /certs/ca.crt /etc/pki/ca-trust/source/anchors/ && update-ca-trust && bash /check.sh >/check.txt +COPY check-ffmpeg.sh /check-ffmpeg.sh +RUN cp /certs/ca.crt /etc/pki/ca-trust/source/anchors/ && update-ca-trust && bash /check-ffmpeg.sh >/check.txt FROM scratch AS artifact COPY --from=build /out/ / diff --git a/packages/aws-lambda/ffmpeg/build.sh b/packages/aws-lambda/image/build-ffmpeg.sh similarity index 92% rename from packages/aws-lambda/ffmpeg/build.sh rename to packages/aws-lambda/image/build-ffmpeg.sh index 495ac0a7e9..34922eb19a 100755 --- a/packages/aws-lambda/ffmpeg/build.sh +++ b/packages/aws-lambda/image/build-ffmpeg.sh @@ -58,8 +58,10 @@ ninja -C "$SRC/dav1d-build" install license dav1d "$SRC/dav1d-1.5.1/COPYING" fetch ffmpeg-7.0.2.tar.xz -(cd "$SRC/ffmpeg-7.0.2" && ./configure --prefix="$PREFIX" --pkg-config-flags=--static \ - --extra-cflags="-I$DEPS/include" --extra-ldflags="-L$DEPS/lib" --extra-libs="-lstdc++ -lpthread -lm" \ +# No --static pkg-config: gnutls.pc then names a libgmp.a from its own RPM build tree. The deps above +# exist only as .a, so they link statically anyway; --extra-libs carries their private libraries. +(cd "$SRC/ffmpeg-7.0.2" && ./configure --prefix="$PREFIX" \ + --extra-cflags="-I$DEPS/include" --extra-ldflags="-L$DEPS/lib" --extra-libs="-lstdc++ -lpthread -lm -ldl" \ --enable-gpl --enable-version3 --disable-debug --disable-doc --disable-ffplay --disable-autodetect \ --enable-gnutls --enable-zlib --enable-libx264 --enable-libx265 --enable-libvpx --enable-libopus \ --enable-libzimg --enable-libdav1d && make -j"$JOBS" && make install) diff --git a/packages/aws-lambda/ffmpeg/check.sh b/packages/aws-lambda/image/check-ffmpeg.sh similarity index 100% rename from packages/aws-lambda/ffmpeg/check.sh rename to packages/aws-lambda/image/check-ffmpeg.sh diff --git a/packages/aws-lambda/ffmpeg/sources.txt b/packages/aws-lambda/image/sources.txt similarity index 100% rename from packages/aws-lambda/ffmpeg/sources.txt rename to packages/aws-lambda/image/sources.txt