@@ -3,68 +3,67 @@ ARG BREF_VERSION
3
3
FROM bref/build-php-$PHP_VERSION:$BREF_VERSION AS ext
4
4
ARG PHP_VERSION
5
5
6
+ ENV IMAGICK_VERSION="7.1.1-38"
7
+ ENV AOM_VERSION="3.10.0"
8
+ ENV LIBHEIF_VERSION="1.19.3"
9
+ ENV LIBDE265_VERSION="1.0.15"
10
+ ENV LIBWEBP_VERSION="1.4.0"
11
+ ENV GS_VERSION="9.56.1"
12
+ ENV IMAGICK_EXT_COMMIT="28f27044e435a2b203e32675e942eb8de620ee58"
13
+
6
14
# Prepare environment
7
15
ENV IMAGICK_BUILD_DIR=${BUILD_DIR}/imagick
8
16
RUN mkdir -p ${IMAGICK_BUILD_DIR}
9
- RUN LD_LIBRARY_PATH= yum -y install libpng-devel libjpeg-devel lcms2-devel ImageMagick-devel
17
+ WORKDIR ${IMAGICK_BUILD_DIR}
18
+ RUN LD_LIBRARY_PATH= yum -y install libpng-devel libjpeg-devel lcms2-devel ImageMagick-devel nasm gcc10 gcc10-c++
19
+
20
+ # Use gcc10 as the default compiler, needed for AOM
21
+ ENV CXX="/usr/bin/gcc10-g++"
22
+ ENV CC="/usr/bin/gcc10-gcc"
10
23
11
24
# Compile libwebp since AL2 ships with v0.3, and v0.4 or higher is required to builder the other libs
12
- WORKDIR ${IMAGICK_BUILD_DIR}
13
- RUN curl -Ls -o libwebp.tar.gz https://github.com/webmproject/libwebp/archive/refs/tags/v1.4.0.tar.gz
14
- RUN tar xzf libwebp.tar.gz
15
- WORKDIR ${IMAGICK_BUILD_DIR}/libwebp-1.4.0
16
- RUN autoreconf -i && automake && autoconf
17
- RUN ./configure --prefix ${INSTALL_DIR} --exec-prefix ${INSTALL_DIR}
18
- RUN make -j $(nproc) && make install
25
+ RUN curl -Ls -o libwebp.tar.gz https://github.com/webmproject/libwebp/archive/refs/tags/v${LIBWEBP_VERSION}.tar.gz && tar xzf libwebp.tar.gz && rm libwebp.tar.gz \
26
+ && cd ${IMAGICK_BUILD_DIR}/libwebp-${LIBWEBP_VERSION} \
27
+ && autoreconf -i && automake && autoconf \
28
+ && ./configure --prefix ${INSTALL_DIR} --exec-prefix ${INSTALL_DIR} \
29
+ && make -j $(nproc) && make install && rm -rf ${IMAGICK_BUILD_DIR}/libwebp-${LIBWEBP_VERSION}
30
+
31
+ # Compile AOM (libavif dependency for AVIF support)
32
+ RUN git clone -b v${AOM_VERSION} --depth 1 https://aomedia.googlesource.com/aom \
33
+ && mkdir -p ${IMAGICK_BUILD_DIR}/aom_build && cd ${IMAGICK_BUILD_DIR}/aom_build \
34
+ && cmake ../aom -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} -DBUILD_SHARED_LIBS=1 -DENABLE_DOCS=0 -DENABLE_EXAMPLES=0 -DENABLE_TESTDATA=0 -DENABLE_TESTS=0 -DENABLE_TOOLS=0 \
35
+ && make -j $(nproc) && make install && rm -rf ${IMAGICK_BUILD_DIR}/aom && rm -rf ${IMAGICK_BUILD_DIR}/aom_build
19
36
20
37
# Compile libde265 (libheif dependency)
21
- WORKDIR ${IMAGICK_BUILD_DIR}
22
- RUN curl -Ls -o libde265.tar.gz https://github.com/strukturag/libde265/releases/download/v1.0.15/libde265-1.0.15.tar.gz && tar xzf libde265.tar.gz
23
- WORKDIR ${IMAGICK_BUILD_DIR}/libde265-1.0.15
24
- RUN ./configure --prefix ${INSTALL_DIR} --exec-prefix ${INSTALL_DIR}
25
- RUN make -j $(nproc) && make install
38
+ RUN curl -Ls -o libde265.tar.gz https://github.com/strukturag/libde265/releases/download/v${LIBDE265_VERSION}/libde265-${LIBDE265_VERSION}.tar.gz && tar xzf libde265.tar.gz && rm libde265.tar.gz \
39
+ && cd ${IMAGICK_BUILD_DIR}/libde265-${LIBDE265_VERSION} \
40
+ && ./configure --prefix ${INSTALL_DIR} --exec-prefix ${INSTALL_DIR} \
41
+ && make -j $(nproc) && make install && rm -rf ${IMAGICK_BUILD_DIR}/libde265-${LIBDE265_VERSION}
26
42
27
43
# Compile libheif
28
- WORKDIR ${IMAGICK_BUILD_DIR}
29
- RUN curl -Ls -o libheif.tar.gz https://github.com/strukturag/libheif/releases/download/v1.13.0/libheif-1.13.0.tar.gz && tar xzf libheif.tar.gz
30
- WORKDIR ${IMAGICK_BUILD_DIR}/libheif-1.13.0
31
- RUN ./configure --prefix ${INSTALL_DIR} --exec-prefix ${INSTALL_DIR}
32
- RUN make -j $(nproc) && make install
44
+ RUN curl -Ls -o libheif.tar.gz https://github.com/strukturag/libheif/releases/download/v${LIBHEIF_VERSION}/libheif-${LIBHEIF_VERSION}.tar.gz \
45
+ && tar xzf libheif.tar.gz && rm libheif.tar.gz && mkdir -p ${IMAGICK_BUILD_DIR}/libheif-${LIBHEIF_VERSION}/build && cd ${IMAGICK_BUILD_DIR}/libheif-${LIBHEIF_VERSION}/build \
46
+ && cmake --preset=release-noplugins .. -DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} \
47
+ && make -j $(nproc) && make install && rm -rf ${IMAGICK_BUILD_DIR}/libheif-${LIBHEIF_VERSION}
33
48
34
49
# Compile gs
35
- WORKDIR ${IMAGICK_BUILD_DIR}
36
- RUN curl -Ls -o ghostscript.tar.gz https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs9561/ghostscript-9.56.1.tar.gz && tar xzf ghostscript.tar.gz
37
- WORKDIR ${IMAGICK_BUILD_DIR}/ghostscript-9.56.1
38
- RUN ./configure --prefix ${INSTALL_DIR} --exec-prefix ${INSTALL_DIR} --without-x
39
- RUN make -j $(nproc) && cp bin/gs /tmp/gs
50
+ RUN curl -Ls -o ghostscript.tar.gz https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs9561/ghostscript-${GS_VERSION}.tar.gz && tar xzf ghostscript.tar.gz && rm ghostscript.tar.gz \
51
+ && mkdir -p ${IMAGICK_BUILD_DIR}/ghostscript-${GS_VERSION} && cd ${IMAGICK_BUILD_DIR}/ghostscript-${GS_VERSION} \
52
+ && ./configure --prefix ${INSTALL_DIR} --exec-prefix ${INSTALL_DIR} --without-x \
53
+ && make -j $(nproc) && cp bin/gs /tmp/gs && rm -rf ${IMAGICK_BUILD_DIR}/ghostscript-${GS_VERSION}
40
54
41
55
# Compile the ImageMagick library
42
- WORKDIR ${IMAGICK_BUILD_DIR}
43
- RUN curl -Ls -o ImageMagick.tar.gz https://github.com/ImageMagick/ImageMagick/archive/refs/tags/7.1.1-38.tar.gz && tar xzf ImageMagick.tar.gz
44
- WORKDIR ${IMAGICK_BUILD_DIR}/ImageMagick-7.1.1-38
45
- RUN ./configure --prefix ${INSTALL_DIR} --exec-prefix ${INSTALL_DIR} --with-webp --with-heic --disable-static --with-freetype=yes
46
- RUN make -j $(nproc)
47
- RUN make install
48
-
49
- # Show how ImageMagick is configured. See the "delicate" section
50
- RUN convert -list configure
51
-
52
- # Compile the php imagick extension
53
- WORKDIR ${IMAGICK_BUILD_DIR}
54
- RUN git clone https://github.com/Imagick/imagick
55
- WORKDIR ${IMAGICK_BUILD_DIR}/imagick
56
- # TODO; update the commit hash when there's a new release
57
- RUN git reset --hard 28f27044e435a2b203e32675e942eb8de620ee58
58
- RUN phpize
59
- RUN ./configure --with-imagick=${INSTALL_DIR}
60
- RUN make -j $(nproc)
61
- RUN make install
62
-
63
- RUN cp `php-config --extension-dir`/imagick.so /tmp/imagick.so
64
- RUN strip --strip-debug /tmp/imagick.so
65
- RUN echo 'extension=imagick.so' > /tmp/ext.ini
56
+ RUN curl -Ls -o ImageMagick.tar.gz https://github.com/ImageMagick/ImageMagick/archive/refs/tags/${IMAGICK_VERSION}.tar.gz && tar xzf ImageMagick.tar.gz && rm ImageMagick.tar.gz \
57
+ && cd ${IMAGICK_BUILD_DIR}/ImageMagick-${IMAGICK_VERSION} \
58
+ && ./configure --prefix ${INSTALL_DIR} --exec-prefix ${INSTALL_DIR} --with-webp --with-heic --disable-static --with-freetype=yes \
59
+ && make -j $(nproc) && make install && rm -rf ${IMAGICK_BUILD_DIR}/ImageMagick-${IMAGICK_VERSION} && convert -list configure
66
60
67
- RUN php /bref/lib-copy/copy-dependencies.php /tmp/imagick.so /tmp/extension-libs
61
+ # Compile the php imagick extension and copy the dependencies
62
+ RUN git clone https://github.com/Imagick/imagick && cd imagick \
63
+ &&git reset --hard ${IMAGICK_EXT_COMMIT} \
64
+ && phpize && ./configure --with-imagick=${INSTALL_DIR} \
65
+ && make -j $(nproc) && make install && cp `php-config --extension-dir`/imagick.so /tmp/imagick.so && strip --strip-debug /tmp/imagick.so && echo 'extension=imagick.so' > /tmp/ext.ini \
66
+ && php /bref/lib-copy/copy-dependencies.php /tmp/imagick.so /tmp/extension-libs
68
67
69
68
# Build the final image with just the files we need
70
69
FROM scratch
0 commit comments