1- # syntax=docker/dockerfile-upstream:master-labs
1+ # syntax=docker/dockerfile:1.10@sha256:865e5dd094beca432e8c0a1d5e1c465db5f998dca4e439981029b3b81fb39ed5
2+
3+ # Every input is pinned (image digests, git commits, tarball checksums) so a
4+ # release can't change underneath us. The comments name the pinned versions.
25
36# Base emsdk image with environment variables.
4- FROM emscripten/emsdk:6.0.10 AS emsdk-base
7+ FROM emscripten/emsdk:6.0.10@sha256:e077d54e2b8970575ebc4f185ac1de0b95c05f2b266134d4ba27449af7aebf65 AS emsdk-base
58ARG EXTRA_CFLAGS
69ARG EXTRA_LDFLAGS
710ENV INSTALL_DIR=/opt
8- ENV FFMPEG_VERSION=n9.0.2
911# FFmpeg's command line tools need threads since 6.1, so everything is built with pthreads.
1012ENV CFLAGS="-I$INSTALL_DIR/include -pthread $EXTRA_CFLAGS"
1113ENV CXXFLAGS="$CFLAGS"
@@ -19,38 +21,44 @@ COPY build/meson-cross.ini /meson-cross.ini
1921
2022# Build x264
2123FROM emsdk-base AS x264-builder
24+ # stable branch
2225ADD https://code.videolan.org/videolan/x264.git#b35605ace3ddf7c1a5d67a2eb553f034aef41d55 /src
2326COPY build/x264.sh /src/build.sh
2427RUN bash -x /src/build.sh
2528
2629# Build x265
2730FROM emsdk-base AS x265-builder
28- ADD https://bitbucket.org/multicoreware/x265_git.git#4.2 /src
31+ # 4.2
32+ ADD https://bitbucket.org/multicoreware/x265_git.git#e444744c03978c1fb4e037168967020cf2648427 /src
2933COPY build/x265.sh /src/build.sh
3034RUN bash -x /src/build.sh
3135
3236# Build libvpx
3337FROM emsdk-base AS libvpx-builder
34- ADD https://github.com/webmproject/libvpx.git#v1.17.0 /src
38+ # v1.17.0
39+ ADD https://github.com/webmproject/libvpx.git#6df3ec34557879fff673706f4a1d9fbd0f3a6f0e /src
3540COPY build/libvpx.sh /src/build.sh
3641RUN bash -x /src/build.sh
3742
3843# Build lame (3.100, the latest release; there is no upstream git repository)
3944FROM emsdk-base AS lame-builder
40- ADD https://github.com/ffmpegwasm/lame.git#master /src
45+ # 3.100
46+ ADD https://github.com/ffmpegwasm/lame.git#2badea1974ae36cb8312afe99cff1e6b3b5decee /src
4147COPY build/lame.sh /src/build.sh
4248RUN bash -x /src/build.sh
4349
4450# Build ogg
4551FROM emsdk-base AS ogg-builder
46- ADD https://github.com/xiph/ogg.git#v1.3.6 /src
52+ # v1.3.6
53+ ADD https://github.com/xiph/ogg.git#be05b13e98b048f0b5a0f5fa8ce514d56db5f822 /src
4754COPY build/ogg.sh /src/build.sh
4855RUN bash -x /src/build.sh
4956
5057# Build theora
5158FROM emsdk-base AS theora-builder
5259COPY --from=ogg-builder $INSTALL_DIR $INSTALL_DIR
53- ADD https://github.com/xiph/theora.git#v1.2.0 /src
60+ # v1.2.0
61+ ADD https://github.com/xiph/theora.git#8e4808736e9c181b971306cc3f05df9e61354004 /src
5462COPY build/theora.sh /src/build.sh
5563RUN bash -x /src/build.sh
5664
@@ -66,39 +74,45 @@ RUN bash -x /src/build.sh
6674# Build vorbis
6775FROM emsdk-base AS vorbis-builder
6876COPY --from=ogg-builder $INSTALL_DIR $INSTALL_DIR
69- ADD https://github.com/xiph/vorbis.git#v1.3.7 /src
77+ # v1.3.7
78+ ADD https://github.com/xiph/vorbis.git#0657aee69dec8508a0011f47f3b69d7538e9d262 /src
7079COPY build/vorbis.sh /src/build.sh
7180RUN bash -x /src/build.sh
7281
7382# Build zlib
7483FROM emsdk-base AS zlib-builder
75- ADD https://github.com/madler/zlib.git#v1.3.2 /src
84+ # v1.3.2
85+ ADD https://github.com/madler/zlib.git#da607da739fa6047df13e66a2af6b8bec7c2a498 /src
7686COPY build/zlib.sh /src/build.sh
7787RUN bash -x /src/build.sh
7888
7989# Build libwebp
8090FROM emsdk-base AS libwebp-builder
8191COPY --from=zlib-builder $INSTALL_DIR $INSTALL_DIR
82- ADD https://github.com/webmproject/libwebp.git#v1.6.0 /src
92+ # v1.6.0
93+ ADD https://github.com/webmproject/libwebp.git#4fa21912338357f89e4fd51cf2368325b59e9bd9 /src
8394COPY build/libwebp.sh /src/build.sh
8495RUN bash -x /src/build.sh
8596
8697# Build freetype2
8798FROM emsdk-base AS freetype2-builder
88- ADD https://github.com/freetype/freetype.git#VER-2-14-3 /src
99+ # VER-2-14-3
100+ ADD https://github.com/freetype/freetype.git#0a0221a1347e2f1e07c395263540026e9a0aa7c7 /src
89101COPY build/freetype2.sh /src/build.sh
90102RUN bash -x /src/build.sh
91103
92104# Build fribidi
93105FROM emsdk-base AS fribidi-builder
94- ADD https://github.com/fribidi/fribidi.git#v1.0.17 /src
106+ # v1.0.17
107+ ADD https://github.com/fribidi/fribidi.git#b93119f5fdc7ea47672cc304c1455ffa6dfe7536 /src
95108COPY build/fribidi.sh /src/build.sh
96109RUN bash -x /src/build.sh
97110
98111# Build harfbuzz (with FreeType, for FFmpeg's drawtext)
99112FROM emsdk-base AS harfbuzz-builder
100113COPY --from=freetype2-builder $INSTALL_DIR $INSTALL_DIR
101- ADD https://github.com/harfbuzz/harfbuzz.git#14.5.0 /src
114+ # 14.5.0
115+ ADD https://github.com/harfbuzz/harfbuzz.git#863d3f7787c6df18d20e4535c5906bf3eb803bd5 /src
102116COPY build/harfbuzz.sh /src/build.sh
103117RUN bash -x /src/build.sh
104118
@@ -107,19 +121,22 @@ FROM emsdk-base AS libass-builder
107121COPY --from=freetype2-builder $INSTALL_DIR $INSTALL_DIR
108122COPY --from=fribidi-builder $INSTALL_DIR $INSTALL_DIR
109123COPY --from=harfbuzz-builder $INSTALL_DIR $INSTALL_DIR
110- ADD https://github.com/libass/libass.git#0.17.5 /src
124+ # 0.17.5
125+ ADD https://github.com/libass/libass.git#4a05d8127f525943ebf45fdc6497c9e665947f0d /src
111126COPY build/libass.sh /src/build.sh
112127RUN bash -x /src/build.sh
113128
114129# Build zimg
115130FROM emsdk-base AS zimg-builder
116- ADD https://github.com/sekrit-twc/zimg.git#release-3.0.6 /src
131+ # release-3.0.6
132+ ADD https://github.com/sekrit-twc/zimg.git#f819b14e8f39d1282400b0d9543e8ef73c1b2bbd /src
117133COPY build/zimg.sh /src/build.sh
118134RUN bash -x /src/build.sh
119135
120136# Base ffmpeg image with dependencies and source code populated.
121137FROM emsdk-base AS ffmpeg-base
122- ADD https://github.com/FFmpeg/FFmpeg.git#$FFMPEG_VERSION /src
138+ # n9.0.2
139+ ADD https://github.com/FFmpeg/FFmpeg.git#946fcce07b6dcd0331c8cc609192aeff5e1924f8 /src
123140COPY --from=x264-builder $INSTALL_DIR $INSTALL_DIR
124141COPY --from=x265-builder $INSTALL_DIR $INSTALL_DIR
125142COPY --from=libvpx-builder $INSTALL_DIR $INSTALL_DIR
0 commit comments