mirror of
https://git.asonix.dog/asonix/pict-rs
synced 2024-11-12 23:43:57 +00:00
dev build works with imagemagick
This commit is contained in:
parent
84c10edd0e
commit
0801c1141f
9 changed files with 462 additions and 36 deletions
155
Cargo.lock
generated
155
Cargo.lock
generated
|
@ -444,6 +444,30 @@ version = "0.12.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "53d1ccbaf7d9ec9537465a97bf19edc1a4e158ecb49fc16178202238c569cc42"
|
checksum = "53d1ccbaf7d9ec9537465a97bf19edc1a4e158ecb49fc16178202238c569cc42"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "bindgen"
|
||||||
|
version = "0.53.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c72a978d268b1d70b0e963217e60fdabd9523a941457a6c42a7315d15c7e89e5"
|
||||||
|
dependencies = [
|
||||||
|
"bitflags",
|
||||||
|
"cexpr",
|
||||||
|
"cfg-if",
|
||||||
|
"clang-sys",
|
||||||
|
"clap",
|
||||||
|
"env_logger",
|
||||||
|
"lazy_static",
|
||||||
|
"lazycell",
|
||||||
|
"log",
|
||||||
|
"peeking_take_while",
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"regex",
|
||||||
|
"rustc-hash",
|
||||||
|
"shlex",
|
||||||
|
"which",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bitflags"
|
name = "bitflags"
|
||||||
version = "1.2.1"
|
version = "1.2.1"
|
||||||
|
@ -548,6 +572,15 @@ version = "1.0.54"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "7bbb73db36c1246e9034e307d0fba23f9a2e251faa47ade70c1bd252220c8311"
|
checksum = "7bbb73db36c1246e9034e307d0fba23f9a2e251faa47ade70c1bd252220c8311"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "cexpr"
|
||||||
|
version = "0.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f4aedb84272dbe89af497cf81375129abda4fc0a9e7c5d317498c15cc30c0d27"
|
||||||
|
dependencies = [
|
||||||
|
"nom",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cfg-if"
|
name = "cfg-if"
|
||||||
version = "0.1.10"
|
version = "0.1.10"
|
||||||
|
@ -565,6 +598,17 @@ dependencies = [
|
||||||
"time 0.1.43",
|
"time 0.1.43",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "clang-sys"
|
||||||
|
version = "0.29.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "fe6837df1d5cba2397b835c8530f51723267e16abbf83892e9e5af4f0e5dd10a"
|
||||||
|
dependencies = [
|
||||||
|
"glob",
|
||||||
|
"libc",
|
||||||
|
"libloading",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "clap"
|
name = "clap"
|
||||||
version = "2.33.1"
|
version = "2.33.1"
|
||||||
|
@ -736,6 +780,19 @@ dependencies = [
|
||||||
"syn",
|
"syn",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "env_logger"
|
||||||
|
version = "0.7.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36"
|
||||||
|
dependencies = [
|
||||||
|
"atty",
|
||||||
|
"humantime",
|
||||||
|
"log",
|
||||||
|
"regex",
|
||||||
|
"termcolor",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "fake-simd"
|
name = "fake-simd"
|
||||||
version = "0.1.2"
|
version = "0.1.2"
|
||||||
|
@ -946,6 +1003,12 @@ version = "0.21.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "bcc8e0c9bce37868955864dbecd2b1ab2bdf967e6f28066d65aaac620444b65c"
|
checksum = "bcc8e0c9bce37868955864dbecd2b1ab2bdf967e6f28066d65aaac620444b65c"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "glob"
|
||||||
|
version = "0.3.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "h2"
|
name = "h2"
|
||||||
version = "0.2.5"
|
version = "0.2.5"
|
||||||
|
@ -1011,6 +1074,15 @@ version = "1.3.4"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9"
|
checksum = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "humantime"
|
||||||
|
version = "1.3.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f"
|
||||||
|
dependencies = [
|
||||||
|
"quick-error",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "idna"
|
name = "idna"
|
||||||
version = "0.2.0"
|
version = "0.2.0"
|
||||||
|
@ -1117,12 +1189,28 @@ version = "1.4.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
|
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "lazycell"
|
||||||
|
version = "1.2.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libc"
|
name = "libc"
|
||||||
version = "0.2.71"
|
version = "0.2.71"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9457b06509d27052635f90d6466700c65095fdf75409b3fbdd903e988b886f49"
|
checksum = "9457b06509d27052635f90d6466700c65095fdf75409b3fbdd903e988b886f49"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "libloading"
|
||||||
|
version = "0.5.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f2b111a074963af1d37a139918ac6d49ad1d0d5e47f72fd55388619691a7d753"
|
||||||
|
dependencies = [
|
||||||
|
"cc",
|
||||||
|
"winapi 0.3.8",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "linked-hash-map"
|
name = "linked-hash-map"
|
||||||
version = "0.5.3"
|
version = "0.5.3"
|
||||||
|
@ -1162,6 +1250,17 @@ version = "0.10.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "7d947cbb889ed21c2a84be6ffbaebf5b4e0f4340638cba0444907e38b56be084"
|
checksum = "7d947cbb889ed21c2a84be6ffbaebf5b4e0f4340638cba0444907e38b56be084"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "magick_rust"
|
||||||
|
version = "0.14.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ef1258fe816e2f16c40532a167718321ec78178984a08b62fca6f6a45784bd33"
|
||||||
|
dependencies = [
|
||||||
|
"bindgen",
|
||||||
|
"libc",
|
||||||
|
"pkg-config",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "match_cfg"
|
name = "match_cfg"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
|
@ -1272,6 +1371,16 @@ dependencies = [
|
||||||
"winapi 0.3.8",
|
"winapi 0.3.8",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "nom"
|
||||||
|
version = "5.1.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ffb4262d26ed83a1c0a33a38fe2bb15797329c85770da05e6b828ddb782627af"
|
||||||
|
dependencies = [
|
||||||
|
"memchr",
|
||||||
|
"version_check",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "num-integer"
|
name = "num-integer"
|
||||||
version = "0.1.43"
|
version = "0.1.43"
|
||||||
|
@ -1365,6 +1474,12 @@ dependencies = [
|
||||||
"winapi 0.3.8",
|
"winapi 0.3.8",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "peeking_take_while"
|
||||||
|
version = "0.1.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "percent-encoding"
|
name = "percent-encoding"
|
||||||
version = "2.1.0"
|
version = "2.1.0"
|
||||||
|
@ -1385,6 +1500,7 @@ dependencies = [
|
||||||
"futures",
|
"futures",
|
||||||
"gif",
|
"gif",
|
||||||
"image",
|
"image",
|
||||||
|
"magick_rust",
|
||||||
"mime",
|
"mime",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"rand",
|
"rand",
|
||||||
|
@ -1660,6 +1776,12 @@ version = "0.1.16"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783"
|
checksum = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rustc-hash"
|
||||||
|
version = "1.1.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rustc_version"
|
name = "rustc_version"
|
||||||
version = "0.2.3"
|
version = "0.2.3"
|
||||||
|
@ -1807,6 +1929,12 @@ dependencies = [
|
||||||
"lazy_static",
|
"lazy_static",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "shlex"
|
||||||
|
version = "0.1.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "signal-hook-registry"
|
name = "signal-hook-registry"
|
||||||
version = "1.2.0"
|
version = "1.2.0"
|
||||||
|
@ -1974,6 +2102,15 @@ dependencies = [
|
||||||
"syn",
|
"syn",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "termcolor"
|
||||||
|
version = "1.1.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "bb6bfa289a4d7c5766392812c0a1f4c1ba45afa1ad47803c11e1f407d846d75f"
|
||||||
|
dependencies = [
|
||||||
|
"winapi-util",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "textwrap"
|
name = "textwrap"
|
||||||
version = "0.11.0"
|
version = "0.11.0"
|
||||||
|
@ -2454,6 +2591,15 @@ dependencies = [
|
||||||
"webpki",
|
"webpki",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "which"
|
||||||
|
version = "3.1.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d011071ae14a2f6671d0b74080ae0cd8ebf3a6f8c9589a2cd45f23126fe29724"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "widestring"
|
name = "widestring"
|
||||||
version = "0.4.2"
|
version = "0.4.2"
|
||||||
|
@ -2488,6 +2634,15 @@ version = "0.4.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
|
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "winapi-util"
|
||||||
|
version = "0.1.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
|
||||||
|
dependencies = [
|
||||||
|
"winapi 0.3.8",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "winapi-x86_64-pc-windows-gnu"
|
name = "winapi-x86_64-pc-windows-gnu"
|
||||||
version = "0.4.0"
|
version = "0.4.0"
|
||||||
|
|
|
@ -21,6 +21,7 @@ bytes = "0.5"
|
||||||
futures = "0.3.4"
|
futures = "0.3.4"
|
||||||
gif = "0.10.3"
|
gif = "0.10.3"
|
||||||
image = "0.23.4"
|
image = "0.23.4"
|
||||||
|
magick_rust = "0.14.0"
|
||||||
mime = "0.3.1"
|
mime = "0.3.1"
|
||||||
once_cell = "1.4.0"
|
once_cell = "1.4.0"
|
||||||
rand = "0.7.3"
|
rand = "0.7.3"
|
||||||
|
|
|
@ -4,8 +4,10 @@ ARG UID=1000
|
||||||
ARG GID=1000
|
ARG GID=1000
|
||||||
|
|
||||||
ENV TOOLCHAIN=stable
|
ENV TOOLCHAIN=stable
|
||||||
ENV TARGET=x86_64-unknown-linux-gnu
|
ENV HOST=x86_64-unknown-linux
|
||||||
|
ENV TARGET=$HOST-gnu
|
||||||
ENV TOOL=x86_64-linux-gnu
|
ENV TOOL=x86_64-linux-gnu
|
||||||
|
ENV ARCH=amd64
|
||||||
|
|
||||||
RUN \
|
RUN \
|
||||||
apt-get update && \
|
apt-get update && \
|
||||||
|
@ -40,14 +42,65 @@ FROM x86_64-builder as builder
|
||||||
|
|
||||||
USER root
|
USER root
|
||||||
|
|
||||||
|
ADD https://imagemagick.org/download/ImageMagick.tar.gz ./
|
||||||
|
|
||||||
RUN \
|
RUN \
|
||||||
dpkg --add-architecture amd64 && \
|
dpkg --add-architecture $ARCH && \
|
||||||
apt-get update && \
|
apt-get update && \
|
||||||
apt-get -y install libgexiv2-dev:amd64
|
apt-get -y install \
|
||||||
|
libgexiv2-dev:$ARCH \
|
||||||
|
libltdl-dev:$ARCH \
|
||||||
|
libjpeg-dev:$ARCH \
|
||||||
|
libpng-dev:$ARCH \
|
||||||
|
libwebp-dev:$ARCH \
|
||||||
|
libxml2-dev:$ARCH && \
|
||||||
|
chown build:build ImageMagick.tar.gz
|
||||||
|
|
||||||
|
|
||||||
USER build
|
USER build
|
||||||
ENV USER=build
|
ENV USER=build
|
||||||
|
|
||||||
|
RUN \
|
||||||
|
tar xvzf ImageMagick.tar.gz && \
|
||||||
|
mv ImageMagick-* ImageMagick
|
||||||
|
|
||||||
|
WORKDIR /opt/build/ImageMagick
|
||||||
|
|
||||||
|
RUN \
|
||||||
|
./configure \
|
||||||
|
CC=$TOOL-gcc \
|
||||||
|
CXX=$TOOL-g++ \
|
||||||
|
--prefix=/imagemagick \
|
||||||
|
--with-modules \
|
||||||
|
--enable-shared \
|
||||||
|
--disable-static \
|
||||||
|
--without-perl \
|
||||||
|
--with-xml=yes \
|
||||||
|
--with-png=yes \
|
||||||
|
--with-jpeg=yes \
|
||||||
|
--with-webp=yes \
|
||||||
|
--host=$HOST && \
|
||||||
|
make
|
||||||
|
|
||||||
|
USER root
|
||||||
|
|
||||||
|
RUN \
|
||||||
|
make install && \
|
||||||
|
ldconfig /imagemagick/lib
|
||||||
|
|
||||||
|
ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/imagemagick/lib
|
||||||
|
ENV LD_RUN_PATH=$LD_RUN_PATH:/imagemagick/lib
|
||||||
|
ENV LDFLAGS="$LDFLAGS -L/imagemagick/lib"
|
||||||
|
ENV RUSTFLAGS="-L/usr/lib/$TOOL -C link-arg=-Wl,-rpath-link,/usr/lib/$TOOL"
|
||||||
|
ENV IMAGE_MAGICK_LIB_DIRS=/imagemagick/lib
|
||||||
|
ENV IMAGE_MAGICK_INCLUDE_DIRS=/imagemagick/include/ImageMagick-7
|
||||||
|
ENV PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/lib/$TOOL/pkgconfig:/usr/lib/$PKGCONFIG:/imagemagick/lib/pkgconfig
|
||||||
|
ENV CPPFLAGS="$CPPFLAGS -I/imagemagick/include/ImageMagick-7 -I/usr/lib/llvm-6.0/lib/clang/6.0.0/include"
|
||||||
|
|
||||||
|
USER build
|
||||||
|
|
||||||
|
WORKDIR /opt/build
|
||||||
|
|
||||||
# Cache deps
|
# Cache deps
|
||||||
RUN \
|
RUN \
|
||||||
cargo new repo
|
cargo new repo
|
||||||
|
@ -58,14 +111,22 @@ COPY Cargo.toml Cargo.lock ./
|
||||||
|
|
||||||
USER root
|
USER root
|
||||||
RUN \
|
RUN \
|
||||||
chown -R build:build ./
|
chown -R build:build ./ && \
|
||||||
|
apt-get install -y \
|
||||||
|
llvm-dev:$ARCH \
|
||||||
|
libclang-dev:$ARCH \
|
||||||
|
clang:$ARCH
|
||||||
|
|
||||||
USER build
|
USER build
|
||||||
|
|
||||||
|
RUN \
|
||||||
|
ls /imagemagick/* && \
|
||||||
|
ls /imagemagick/*/*
|
||||||
|
|
||||||
RUN \
|
RUN \
|
||||||
mkdir -p ./src && \
|
mkdir -p ./src && \
|
||||||
echo 'fn main() { println!("Dummy") }' > ./src/main.rs && \
|
echo 'fn main() { println!("Dummy") }' > ./src/main.rs && \
|
||||||
cargo build --release && \
|
cargo build && \
|
||||||
rm -rf ./src
|
rm -rf ./src
|
||||||
|
|
||||||
COPY src ./src/
|
COPY src ./src/
|
||||||
|
@ -73,12 +134,12 @@ COPY src ./src/
|
||||||
USER root
|
USER root
|
||||||
RUN \
|
RUN \
|
||||||
chown -R build:build ./src && \
|
chown -R build:build ./src && \
|
||||||
rm -r ./target/release/deps/pict_rs-*
|
rm -r ./target/debug/deps/pict_rs-*
|
||||||
|
|
||||||
USER build
|
USER build
|
||||||
|
|
||||||
# Build for release
|
# Build
|
||||||
RUN cargo build --frozen --release
|
RUN cargo build --frozen
|
||||||
|
|
||||||
FROM ubuntu:20.04
|
FROM ubuntu:20.04
|
||||||
|
|
||||||
|
@ -86,10 +147,15 @@ ARG UID=1000
|
||||||
ARG GID=1000
|
ARG GID=1000
|
||||||
|
|
||||||
RUN apt-get update \
|
RUN apt-get update \
|
||||||
&& apt-get install -y libgexiv2-2
|
&& apt-get install -y \
|
||||||
|
libgexiv2-2 \
|
||||||
|
libgomp1 \
|
||||||
|
libltdl7
|
||||||
|
|
||||||
|
|
||||||
# Copy resources
|
# Copy resources
|
||||||
COPY --from=builder /opt/build/repo/target/release/pict-rs /usr/bin/pict-rs
|
COPY --from=builder /opt/build/repo/target/debug/pict-rs /usr/bin/pict-rs
|
||||||
|
COPY --from=builder /imagemagick /imagemagick
|
||||||
|
|
||||||
RUN \
|
RUN \
|
||||||
addgroup -gid "${GID}" pictrs && \
|
addgroup -gid "${GID}" pictrs && \
|
||||||
|
|
|
@ -4,8 +4,10 @@ ARG UID=991
|
||||||
ARG GID=991
|
ARG GID=991
|
||||||
|
|
||||||
ENV TOOLCHAIN=stable
|
ENV TOOLCHAIN=stable
|
||||||
ENV TARGET=x86_64-unknown-linux-gnu
|
ENV HOST=x86_64-unknown-linux
|
||||||
|
ENV TARGET=$HOST-gnu
|
||||||
ENV TOOL=x86_64-linux-gnu
|
ENV TOOL=x86_64-linux-gnu
|
||||||
|
ENV ARCH=amd64
|
||||||
|
|
||||||
RUN \
|
RUN \
|
||||||
apt-get update && \
|
apt-get update && \
|
||||||
|
@ -40,10 +42,66 @@ FROM x86_64-builder as builder
|
||||||
|
|
||||||
USER root
|
USER root
|
||||||
|
|
||||||
|
ADD https://imagemagick.org/download/ImageMagick.tar.gz ./
|
||||||
|
|
||||||
RUN \
|
RUN \
|
||||||
dpkg --add-architecture amd64 && \
|
dpkg --add-architecture $ARCH && \
|
||||||
apt-get update && \
|
apt-get update && \
|
||||||
apt-get -y install libgexiv2-dev:amd64
|
apt-get -y install \
|
||||||
|
libgexiv2-dev:$ARCH \
|
||||||
|
libltdl-dev:$ARCH \
|
||||||
|
libjpeg-dev:$ARCH \
|
||||||
|
libpng-dev:$ARCH \
|
||||||
|
libwebp-dev:$ARCH \
|
||||||
|
libxml2-dev:$ARCH \
|
||||||
|
liblzma-dev:$ARCH && \
|
||||||
|
chown build:build ImageMagick.tar.gz
|
||||||
|
|
||||||
|
|
||||||
|
USER build
|
||||||
|
ENV USER=build
|
||||||
|
|
||||||
|
ENV PKG_CONFIG_ALLOW_CROSS=1
|
||||||
|
ENV PKG_CONFIG_PATH=/usr/lib/$TOOL/pkgconfig:/usr/lib/$PKGCONFIG
|
||||||
|
ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/$TOOL
|
||||||
|
ENV LD_RUN_PATH=$LD_RUN_PATH:/usr/lib/$TOOL:/usr/lib
|
||||||
|
ENV LDFLAGS="$LDFLAGS -L/usr/lib/$TOOL -Wl,-rpath-link,/usr/lib/$TOOL"
|
||||||
|
ENV CPPFLAGS="$CPPFLAGS -I/usr/include -I/usr/include/$TOOL"
|
||||||
|
|
||||||
|
RUN \
|
||||||
|
tar xzf ImageMagick.tar.gz && \
|
||||||
|
mv ImageMagick-* ImageMagick
|
||||||
|
|
||||||
|
WORKDIR /opt/build/ImageMagick
|
||||||
|
|
||||||
|
RUN \
|
||||||
|
./configure \
|
||||||
|
CC=$TOOL-gcc \
|
||||||
|
CXX=$TOOL-g++ \
|
||||||
|
--prefix=/imagemagick \
|
||||||
|
--disable-docs \
|
||||||
|
--with-modules \
|
||||||
|
--enable-shared \
|
||||||
|
--disable-static \
|
||||||
|
--without-perl \
|
||||||
|
--with-xml=yes \
|
||||||
|
--with-png=yes \
|
||||||
|
--with-jpeg=yes \
|
||||||
|
--with-webp=yes \
|
||||||
|
--host=$HOST && \
|
||||||
|
make
|
||||||
|
|
||||||
|
USER root
|
||||||
|
|
||||||
|
RUN \
|
||||||
|
make install && \
|
||||||
|
ldconfig /imagemagick/lib
|
||||||
|
|
||||||
|
ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/imagemagick/lib
|
||||||
|
ENV LD_RUN_PATH=$LD_RUN_PATH:/imagemagick/lib
|
||||||
|
ENV LDFLAGS="$LDFLAGS -L/imagemagick/lib"
|
||||||
|
ENV RUSTFLAGS="-L/usr/lib/$TOOL -C link-arg=-Wl,-rpath-link,/usr/lib/$TOOL"
|
||||||
|
ENV IMAGE_MAGICK_DIR=/imagemagick
|
||||||
|
|
||||||
USER build
|
USER build
|
||||||
|
|
||||||
|
@ -51,9 +109,6 @@ ARG TAG=master
|
||||||
ARG REPOSITORY=https://git.asonix.dog/asonix/pict-rs
|
ARG REPOSITORY=https://git.asonix.dog/asonix/pict-rs
|
||||||
ARG BINARY=pict-rs
|
ARG BINARY=pict-rs
|
||||||
|
|
||||||
ENV PKG_CONFIG_ALLOW_CROSS=1
|
|
||||||
ENV PKG_CONFIG_PATH=/usr/lib/$TOOL/pkgconfig:/usr/lib/$PKGCONFIG
|
|
||||||
|
|
||||||
RUN \
|
RUN \
|
||||||
git clone -b $TAG $REPOSITORY repo
|
git clone -b $TAG $REPOSITORY repo
|
||||||
|
|
||||||
|
|
|
@ -4,8 +4,10 @@ ARG UID=991
|
||||||
ARG GID=991
|
ARG GID=991
|
||||||
|
|
||||||
ENV TOOLCHAIN=stable
|
ENV TOOLCHAIN=stable
|
||||||
ENV TARGET=arm-unknown-linux-gnueabihf
|
ENV HOST=arm-unknown-linux
|
||||||
|
ENV TARGET=$HOST-gnueabihf
|
||||||
ENV TOOL=arm-linux-gnueabihf
|
ENV TOOL=arm-linux-gnueabihf
|
||||||
|
ENV ARCH=armhf
|
||||||
|
|
||||||
RUN \
|
RUN \
|
||||||
apt-get update && \
|
apt-get update && \
|
||||||
|
@ -40,10 +42,70 @@ FROM arm32v7-builder as builder
|
||||||
|
|
||||||
USER root
|
USER root
|
||||||
|
|
||||||
|
ADD https://imagemagick.org/download/ImageMagick.tar.gz ./
|
||||||
|
|
||||||
RUN \
|
RUN \
|
||||||
dpkg --add-architecture armhf && \
|
dpkg --add-architecture $ARCH && \
|
||||||
apt-get update && \
|
apt-get update && \
|
||||||
apt-get -y install libgexiv2-dev:armhf
|
apt-get -y install \
|
||||||
|
libgexiv2-dev:$ARCH \
|
||||||
|
libltdl-dev:$ARCH \
|
||||||
|
libjpeg-dev:$ARCH \
|
||||||
|
libpng-dev:$ARCH \
|
||||||
|
libwebp-dev:$ARCH \
|
||||||
|
libxml2-dev:$ARCH \
|
||||||
|
liblzma-dev:$ARCH \
|
||||||
|
libexpat1-dev:$ARCH && \
|
||||||
|
ln -s /usr/lib/$TOOL/libpcre.so /usr/lib/$TOOL/libpcre.so.3 && \
|
||||||
|
ln -s /usr/lib/$TOOL/libz.so /usr/lib/$TOOL/libz.so.1 && \
|
||||||
|
ln -s /usr/lib/$TOOL/libexpatw.so /usr/lib/$TOOL/libexpat.so.1 && \
|
||||||
|
chown build:build ImageMagick.tar.gz
|
||||||
|
|
||||||
|
|
||||||
|
USER build
|
||||||
|
ENV USER=build
|
||||||
|
|
||||||
|
ENV PKG_CONFIG_ALLOW_CROSS=1
|
||||||
|
ENV PKG_CONFIG_PATH=/usr/lib/$TOOL/pkgconfig:/usr/lib/$PKGCONFIG
|
||||||
|
ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/$TOOL
|
||||||
|
ENV LD_RUN_PATH=$LD_RUN_PATH:/usr/lib/$TOOL:/usr/lib
|
||||||
|
ENV LDFLAGS="$LDFLAGS -L/usr/lib/$TOOL -Wl,-rpath-link,/usr/lib/$TOOL"
|
||||||
|
ENV CPPFLAGS="$CPPFLAGS -I/usr/include -I/usr/include/$TOOL"
|
||||||
|
|
||||||
|
RUN \
|
||||||
|
tar xzf ImageMagick.tar.gz && \
|
||||||
|
mv ImageMagick-* ImageMagick
|
||||||
|
|
||||||
|
WORKDIR /opt/build/ImageMagick
|
||||||
|
|
||||||
|
RUN \
|
||||||
|
./configure \
|
||||||
|
CC=$TOOL-gcc \
|
||||||
|
CXX=$TOOL-g++ \
|
||||||
|
--prefix=/imagemagick \
|
||||||
|
--disable-docs \
|
||||||
|
--with-modules \
|
||||||
|
--enable-shared \
|
||||||
|
--disable-static \
|
||||||
|
--without-perl \
|
||||||
|
--with-xml=yes \
|
||||||
|
--with-png=yes \
|
||||||
|
--with-jpeg=yes \
|
||||||
|
--with-webp=yes \
|
||||||
|
--host=$HOST && \
|
||||||
|
make
|
||||||
|
|
||||||
|
USER root
|
||||||
|
|
||||||
|
RUN \
|
||||||
|
make install && \
|
||||||
|
ldconfig /imagemagick/lib
|
||||||
|
|
||||||
|
ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/imagemagick/lib
|
||||||
|
ENV LD_RUN_PATH=$LD_RUN_PATH:/imagemagick/lib
|
||||||
|
ENV LDFLAGS="$LDFLAGS -L/imagemagick/lib"
|
||||||
|
ENV RUSTFLAGS="-L/usr/lib/$TOOL -C link-arg=-Wl,-rpath-link,/usr/lib/$TOOL"
|
||||||
|
ENV IMAGE_MAGICK_DIR=/imagemagick
|
||||||
|
|
||||||
USER build
|
USER build
|
||||||
|
|
||||||
|
@ -51,9 +113,6 @@ ARG TAG=master
|
||||||
ARG REPOSITORY=https://git.asonix.dog/asonix/pict-rs
|
ARG REPOSITORY=https://git.asonix.dog/asonix/pict-rs
|
||||||
ARG BINARY=pict-rs
|
ARG BINARY=pict-rs
|
||||||
|
|
||||||
ENV PKG_CONFIG_ALLOW_CROSS=1
|
|
||||||
ENV PKG_CONFIG_PATH=/usr/lib/$TOOL/pkgconfig:/usr/lib/$PKGCONFIG
|
|
||||||
|
|
||||||
RUN \
|
RUN \
|
||||||
git clone -b $TAG $REPOSITORY repo
|
git clone -b $TAG $REPOSITORY repo
|
||||||
|
|
||||||
|
|
|
@ -4,8 +4,10 @@ ARG UID=991
|
||||||
ARG GID=991
|
ARG GID=991
|
||||||
|
|
||||||
ENV TOOLCHAIN=stable
|
ENV TOOLCHAIN=stable
|
||||||
ENV TARGET=aarch64-unknown-linux-gnu
|
ENV HOST=aarch64-unknown-linux
|
||||||
|
ENV TARGET=$HOST-gnu
|
||||||
ENV TOOL=aarch64-linux-gnu
|
ENV TOOL=aarch64-linux-gnu
|
||||||
|
ENV ARCH=arm64
|
||||||
|
|
||||||
RUN \
|
RUN \
|
||||||
apt-get update && \
|
apt-get update && \
|
||||||
|
@ -40,10 +42,66 @@ FROM aarch64-builder as builder
|
||||||
|
|
||||||
USER root
|
USER root
|
||||||
|
|
||||||
|
ADD https://imagemagick.org/download/ImageMagick.tar.gz ./
|
||||||
|
|
||||||
RUN \
|
RUN \
|
||||||
dpkg --add-architecture arm64 && \
|
dpkg --add-architecture $ARCH && \
|
||||||
apt-get update && \
|
apt-get update && \
|
||||||
apt-get -y install libgexiv2-dev:arm64
|
apt-get -y install \
|
||||||
|
libgexiv2-dev:$ARCH \
|
||||||
|
libltdl-dev:$ARCH \
|
||||||
|
libjpeg-dev:$ARCH \
|
||||||
|
libpng-dev:$ARCH \
|
||||||
|
libwebp-dev:$ARCH \
|
||||||
|
libxml2-dev:$ARCH \
|
||||||
|
liblzma-dev:$ARCH && \
|
||||||
|
chown build:build ImageMagick.tar.gz
|
||||||
|
|
||||||
|
|
||||||
|
USER build
|
||||||
|
ENV USER=build
|
||||||
|
|
||||||
|
ENV PKG_CONFIG_ALLOW_CROSS=1
|
||||||
|
ENV PKG_CONFIG_PATH=/usr/lib/$TOOL/pkgconfig:/usr/lib/$PKGCONFIG
|
||||||
|
ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/$TOOL
|
||||||
|
ENV LD_RUN_PATH=$LD_RUN_PATH:/usr/lib/$TOOL:/usr/lib
|
||||||
|
ENV LDFLAGS="$LDFLAGS -L/usr/lib/$TOOL -Wl,-rpath-link,/usr/lib/$TOOL"
|
||||||
|
ENV CPPFLAGS="$CPPFLAGS -I/usr/include -I/usr/include/$TOOL"
|
||||||
|
|
||||||
|
RUN \
|
||||||
|
tar xzf ImageMagick.tar.gz && \
|
||||||
|
mv ImageMagick-* ImageMagick
|
||||||
|
|
||||||
|
WORKDIR /opt/build/ImageMagick
|
||||||
|
|
||||||
|
RUN \
|
||||||
|
./configure \
|
||||||
|
CC=$TOOL-gcc \
|
||||||
|
CXX=$TOOL-g++ \
|
||||||
|
--prefix=/imagemagick \
|
||||||
|
--disable-docs \
|
||||||
|
--with-modules \
|
||||||
|
--enable-shared \
|
||||||
|
--disable-static \
|
||||||
|
--without-perl \
|
||||||
|
--with-xml=yes \
|
||||||
|
--with-png=yes \
|
||||||
|
--with-jpeg=yes \
|
||||||
|
--with-webp=yes \
|
||||||
|
--host=$HOST && \
|
||||||
|
make
|
||||||
|
|
||||||
|
USER root
|
||||||
|
|
||||||
|
RUN \
|
||||||
|
make install && \
|
||||||
|
ldconfig /imagemagick/lib
|
||||||
|
|
||||||
|
ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/imagemagick/lib
|
||||||
|
ENV LD_RUN_PATH=$LD_RUN_PATH:/imagemagick/lib
|
||||||
|
ENV LDFLAGS="$LDFLAGS -L/imagemagick/lib"
|
||||||
|
ENV RUSTFLAGS="-L/usr/lib/$TOOL -C link-arg=-Wl,-rpath-link,/usr/lib/$TOOL"
|
||||||
|
ENV IMAGE_MAGICK_DIR=/imagemagick
|
||||||
|
|
||||||
USER build
|
USER build
|
||||||
|
|
||||||
|
@ -51,9 +109,6 @@ ARG TAG=master
|
||||||
ARG REPOSITORY=https://git.asonix.dog/asonix/pict-rs
|
ARG REPOSITORY=https://git.asonix.dog/asonix/pict-rs
|
||||||
ARG BINARY=pict-rs
|
ARG BINARY=pict-rs
|
||||||
|
|
||||||
ENV PKG_CONFIG_ALLOW_CROSS=1
|
|
||||||
ENV PKG_CONFIG_PATH=/usr/lib/$TOOL/pkgconfig:/usr/lib/$PKGCONFIG
|
|
||||||
|
|
||||||
RUN \
|
RUN \
|
||||||
git clone -b $TAG $REPOSITORY repo
|
git clone -b $TAG $REPOSITORY repo
|
||||||
|
|
||||||
|
|
36
docker/prod/build-image.sh
Executable file
36
docker/prod/build-image.sh
Executable file
|
@ -0,0 +1,36 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
function require() {
|
||||||
|
if [ "$1" = "" ]; then
|
||||||
|
echo "input '$2' required"
|
||||||
|
print_help
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function print_help() {
|
||||||
|
echo "deploy.sh"
|
||||||
|
echo ""
|
||||||
|
echo "Usage:"
|
||||||
|
echo " deploy.sh [repo] [tag] [arch]"
|
||||||
|
echo ""
|
||||||
|
echo "Args:"
|
||||||
|
echo " repo: The docker repository to publish the image"
|
||||||
|
echo " tag: The tag applied to the docker image"
|
||||||
|
echo " arch: The architecuture of the doker image"
|
||||||
|
}
|
||||||
|
|
||||||
|
REPO=$1
|
||||||
|
TAG=$2
|
||||||
|
ARCH=$3
|
||||||
|
|
||||||
|
require "$REPO" repo
|
||||||
|
require "$TAG" tag
|
||||||
|
require "$ARCH" arch
|
||||||
|
|
||||||
|
docker build \
|
||||||
|
--pull \
|
||||||
|
--build-arg TAG=$TAG \
|
||||||
|
-t $REPO:$ARCH-$TAG \
|
||||||
|
-f Dockerfile.$ARCH \
|
||||||
|
.
|
|
@ -22,13 +22,7 @@ function build_image() {
|
||||||
tag=$1
|
tag=$1
|
||||||
arch=$2
|
arch=$2
|
||||||
|
|
||||||
docker build \
|
./build-image.sh asonix/pictrs $tag $arch
|
||||||
--pull \
|
|
||||||
--build-arg TAG=$tag \
|
|
||||||
-t asonix/pictrs:$arch-$tag \
|
|
||||||
-t asonix/pictrs:$arch-latest \
|
|
||||||
-f Dockerfile.$arch \
|
|
||||||
.
|
|
||||||
|
|
||||||
docker push asonix/pictrs:$arch-$tag
|
docker push asonix/pictrs:$arch-$tag
|
||||||
docker push asonix/pictrs:$arch-latest
|
docker push asonix/pictrs:$arch-latest
|
||||||
|
|
|
@ -9,7 +9,7 @@ use actix_web::{
|
||||||
use futures::stream::{Stream, TryStreamExt};
|
use futures::stream::{Stream, TryStreamExt};
|
||||||
use image::{ImageFormat, ImageOutputFormat};
|
use image::{ImageFormat, ImageOutputFormat};
|
||||||
use once_cell::sync::Lazy;
|
use once_cell::sync::Lazy;
|
||||||
use std::{collections::HashSet, path::PathBuf};
|
use std::{collections::HashSet, path::PathBuf, sync::Once};
|
||||||
use structopt::StructOpt;
|
use structopt::StructOpt;
|
||||||
use tracing::{debug, error, info, instrument, Span};
|
use tracing::{debug, error, info, instrument, Span};
|
||||||
use tracing_subscriber::EnvFilter;
|
use tracing_subscriber::EnvFilter;
|
||||||
|
@ -29,6 +29,7 @@ const MEGABYTES: usize = 1024 * 1024;
|
||||||
const HOURS: u32 = 60 * 60;
|
const HOURS: u32 = 60 * 60;
|
||||||
|
|
||||||
static CONFIG: Lazy<Config> = Lazy::new(|| Config::from_args());
|
static CONFIG: Lazy<Config> = Lazy::new(|| Config::from_args());
|
||||||
|
static MAGICK_INIT: Once = Once::new();
|
||||||
|
|
||||||
// Try writing to a file
|
// Try writing to a file
|
||||||
#[instrument(skip(bytes))]
|
#[instrument(skip(bytes))]
|
||||||
|
@ -298,6 +299,10 @@ struct UrlQuery {
|
||||||
|
|
||||||
#[actix_rt::main]
|
#[actix_rt::main]
|
||||||
async fn main() -> Result<(), anyhow::Error> {
|
async fn main() -> Result<(), anyhow::Error> {
|
||||||
|
MAGICK_INIT.call_once(|| {
|
||||||
|
magick_rust::magick_wand_genesis();
|
||||||
|
});
|
||||||
|
|
||||||
if std::env::var("RUST_LOG").is_err() {
|
if std::env::var("RUST_LOG").is_err() {
|
||||||
std::env::set_var("RUST_LOG", "info");
|
std::env::set_var("RUST_LOG", "info");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue