Verified Commit 010b9344 authored by Sebastian Schüpbach's avatar Sebastian Schüpbach
Browse files

generate Dockerfile in CI process

parent 3f974506
Pipeline #33651 failed with stages
in 2 minutes and 36 seconds
target/
Dockerfile
......@@ -15,200 +15,315 @@ include:
name: gcr.io/kaniko-project/executor:debug
entrypoint: [""]
script:
- ./generate-dockerfile $BUILD_WITH
- mkdir -p /kaniko/.docker
- echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
- /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/$DOCKERFILE --destination $IMAGE_TAG --build-arg BUILD_WITH="$BUILD_WITH"
- /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/$DOCKERFILE --destination $IMAGE_TAG
retry:
max: 2
when:
- script_failure
build-latest:
build-latest-all-kakadu:
extends: .build-image
variables:
IMAGE_TAG: "$CI_REGISTRY_IMAGE:latest"
IMAGE_TAG: "$CI_REGISTRY_IMAGE:latest-all-kakadu"
DOCKERFILE: "Dockerfile"
BUILD_WITH: "kakadu graphicsmagick ffmpeg"
BUILD_WITH: "--kakadu --turbojpeg --ffmpeg"
only:
- master
build-latest-vanilla:
build-latest-all-openjpeg:
extends: .build-image
variables:
IMAGE_TAG: "$CI_REGISTRY_IMAGE:latest-vanilla"
IMAGE_TAG: "$CI_REGISTRY_IMAGE:latest-all-openjpeg"
DOCKERFILE: "Dockerfile"
BUILD_WITH: ""
BUILD_WITH: "--openjpeg --turbojpeg --ffmpeg"
only:
- master
build-latest-jp2:
build-latest-all-grok:
extends: .build-image
variables:
IMAGE_TAG: "$CI_REGISTRY_IMAGE:latest-jp2"
IMAGE_TAG: "$CI_REGISTRY_IMAGE:latest-all-grok"
DOCKERFILE: "Dockerfile"
BUILD_WITH: "kakadu"
BUILD_WITH: "--grok --turbojpeg --ffmpeg"
only:
- master
build-latest-jp2-free:
build-latest-kakadu-ffmpeg:
extends: .build-image
variables:
IMAGE_TAG: "$CI_REGISTRY_IMAGE:latest-jp2-free"
IMAGE_TAG: "$CI_REGISTRY_IMAGE:latest-kakadu-ffmpeg"
DOCKERFILE: "Dockerfile"
BUILD_WITH: "openjpeg"
BUILD_WITH: "--kakadu --ffmpeg"
only:
- master
build-latest-video:
build-latest-kakadu-turbojpeg:
extends: .build-image
variables:
IMAGE_TAG: "$CI_REGISTRY_IMAGE:latest-video"
IMAGE_TAG: "$CI_REGISTRY_IMAGE:latest-kakadu-turbojpeg"
DOCKERFILE: "Dockerfile"
BUILD_WITH: "ffmpeg"
BUILD_WITH: "--kakadu --turbojpeg"
only:
- master
build-latest-images:
build-latest-kakadu:
extends: .build-image
variables:
IMAGE_TAG: "$CI_REGISTRY_IMAGE:latest-images"
IMAGE_TAG: "$CI_REGISTRY_IMAGE:latest-kakadu"
DOCKERFILE: "Dockerfile"
BUILD_WITH: "graphicsmagick"
BUILD_WITH: "--kakadu"
only:
- master
build-latest-images-jp2:
build-latest-openjpeg-ffmpeg:
extends: .build-image
variables:
IMAGE_TAG: "$CI_REGISTRY_IMAGE:latest-images-jp2"
IMAGE_TAG: "$CI_REGISTRY_IMAGE:latest-openjpeg-ffmpeg"
DOCKERFILE: "Dockerfile"
BUILD_WITH: "graphicsmagick kakadu"
BUILD_WITH: "--openjpeg --ffmpeg"
only:
- master
build-latest-images-jp2-free:
build-latest-openjpeg-turbojpeg:
extends: .build-image
variables:
IMAGE_TAG: "$CI_REGISTRY_IMAGE:latest-images-jp2-free"
IMAGE_TAG: "$CI_REGISTRY_IMAGE:latest-openjpeg-turbojpeg"
DOCKERFILE: "Dockerfile"
BUILD_WITH: "graphicsmagick openjpeg"
BUILD_WITH: "--openjpeg --turbojpeg"
only:
- master
build-latest-all:
build-latest-openjpeg:
extends: .build-image
variables:
IMAGE_TAG: "$CI_REGISTRY_IMAGE:latest-all"
IMAGE_TAG: "$CI_REGISTRY_IMAGE:latest-openjpeg"
DOCKERFILE: "Dockerfile"
BUILD_WITH: "kakadu graphicsmagick ffmpeg"
BUILD_WITH: "--openjpeg"
only:
- master
build-latest-all-free:
build-latest-grok-ffmpeg:
extends: .build-image
variables:
IMAGE_TAG: "$CI_REGISTRY_IMAGE:latest-all-free"
IMAGE_TAG: "$CI_REGISTRY_IMAGE:latest-grok-ffmpeg"
DOCKERFILE: "Dockerfile"
BUILD_WITH: "openjpeg graphicsmagick ffmpeg"
BUILD_WITH: "--grok --ffmpeg"
only:
- master
build-version:
build-latest-grok-turbojpeg:
extends: .build-image
variables:
IMAGE_TAG: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME"
IMAGE_TAG: "$CI_REGISTRY_IMAGE:latest-grok-turbojpeg"
DOCKERFILE: "Dockerfile"
BUILD_WITH: "kakadu graphicsmagick ffmpeg"
BUILD_WITH: "--grok --turbojpeg"
only:
- master
build-latest-grok:
extends: .build-image
variables:
IMAGE_TAG: "$CI_REGISTRY_IMAGE:latest-grok"
DOCKERFILE: "Dockerfile"
BUILD_WITH: "--grok"
only:
- master
build-latest-turbojpeg-ffmpeg:
extends: .build-image
variables:
IMAGE_TAG: "$CI_REGISTRY_IMAGE:latest-turbojpeg-ffmpeg"
DOCKERFILE: "Dockerfile"
BUILD_WITH: "--turbojpeg --ffmpeg"
only:
- master
build-latest-turbojpeg:
extends: .build-image
variables:
IMAGE_TAG: "$CI_REGISTRY_IMAGE:latest-turbojpeg"
DOCKERFILE: "Dockerfile"
BUILD_WITH: "--turbojpeg"
only:
- master
build-latest-ffmpeg:
extends: .build-image
variables:
IMAGE_TAG: "$CI_REGISTRY_IMAGE:latest-ffmpeg"
DOCKERFILE: "Dockerfile"
BUILD_WITH: "--ffmpeg"
only:
- master
build-latest-no-deps:
extends: .build-image
variables:
IMAGE_TAG: "$CI_REGISTRY_IMAGE:latest-no-deps"
DOCKERFILE: "Dockerfile"
BUILD_WITH: ""
only:
- master
build-version-all-kakadu:
extends: .build-image
variables:
IMAGE_TAG: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME-all-kakadu"
DOCKERFILE: "Dockerfile"
BUILD_WITH: "--kakadu --turbojpeg --ffmpeg"
except:
- master
- tags
build-version-vanilla:
build-version-all-openjpeg:
extends: .build-image
variables:
IMAGE_TAG: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME-vanilla"
IMAGE_TAG: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME-all-openjpeg"
DOCKERFILE: "Dockerfile"
BUILD_WITH: ""
BUILD_WITH: "--openjpeg --turbojpeg --ffmpeg"
except:
- master
- tags
build-version-all-grok:
extends: .build-image
variables:
IMAGE_TAG: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME-all-grok"
DOCKERFILE: "Dockerfile"
BUILD_WITH: "--grok --turbojpeg --ffmpeg"
except:
- master
- tags
build-version-jp2:
build-version-kakadu-ffmpeg:
extends: .build-image
variables:
IMAGE_TAG: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME-jp2"
IMAGE_TAG: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME-kakadu-ffmpeg"
DOCKERFILE: "Dockerfile"
BUILD_WITH: "kakadu"
BUILD_WITH: "--kakadu --ffmpeg"
except:
- master
- tags
build-version-jp2-free:
build-version-kakadu-turbojpeg:
extends: .build-image
variables:
IMAGE_TAG: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME-jp2-free"
IMAGE_TAG: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME-kakadu-turbojpeg"
DOCKERFILE: "Dockerfile"
BUILD_WITH: "openjpeg"
BUILD_WITH: "--kakadu --turbojpeg"
except:
- master
- tags
build-version-video:
build-version-kakadu:
extends: .build-image
variables:
IMAGE_TAG: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME-video"
IMAGE_TAG: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME-kakadu"
DOCKERFILE: "Dockerfile"
BUILD_WITH: "ffmpeg"
BUILD_WITH: "--kakadu"
except:
- master
- tags
build-version-images:
build-version-openjpeg-ffmpeg:
extends: .build-image
variables:
IMAGE_TAG: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME-images"
IMAGE_TAG: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME-openjpeg-ffmpeg"
DOCKERFILE: "Dockerfile"
BUILD_WITH: "graphicsmagick"
BUILD_WITH: "--openjpeg --ffmpeg"
except:
- master
- tags
build-version-images-jp2:
build-version-openjpeg-turbojpeg:
extends: .build-image
variables:
IMAGE_TAG: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME-images-jp2"
IMAGE_TAG: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME-openjpeg-turbojpeg"
DOCKERFILE: "Dockerfile"
BUILD_WITH: "graphicsmagick kakadu"
BUILD_WITH: "--openjpeg --turbojpeg"
except:
- master
- tags
build-version-images-jp2-free:
build-version-openjpeg:
extends: .build-image
variables:
IMAGE_TAG: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME-images-jp2-free"
IMAGE_TAG: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME-openjpeg"
DOCKERFILE: "Dockerfile"
BUILD_WITH: "graphicsmagick openjpeg"
BUILD_WITH: "--openjpeg"
except:
- master
- tags
build-version-all:
build-version-grok-ffmpeg:
extends: .build-image
variables:
IMAGE_TAG: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME-all"
IMAGE_TAG: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME-grok-ffmpeg"
DOCKERFILE: "Dockerfile"
BUILD_WITH: "kakadu graphicsmagick ffmpeg"
BUILD_WITH: "--grok --ffmpeg"
except:
- master
- tags
build-version-all-free:
build-version-grok-turbojpeg:
extends: .build-image
variables:
IMAGE_TAG: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME-all-free"
IMAGE_TAG: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME-grok-turbojpeg"
DOCKERFILE: "Dockerfile"
BUILD_WITH: "openjpeg graphicsmagick ffmpeg"
BUILD_WITH: "--grok --turbojpeg"
except:
- master
- tags
build-version-grok:
extends: .build-image
variables:
IMAGE_TAG: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME-grok"
DOCKERFILE: "Dockerfile"
BUILD_WITH: "--grok"
except:
- master
- tags
build-version-turbojpeg-ffmpeg:
extends: .build-image
variables:
IMAGE_TAG: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME-turbojpeg-ffmpeg"
DOCKERFILE: "Dockerfile"
BUILD_WITH: "--turbojpeg --ffmpeg"
except:
- master
- tags
build-version-turbojpeg:
extends: .build-image
variables:
IMAGE_TAG: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME-turbojpeg"
DOCKERFILE: "Dockerfile"
BUILD_WITH: "--turbojpeg"
except:
- master
- tags
build-version-ffmpeg:
extends: .build-image
variables:
IMAGE_TAG: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME-ffmpeg"
DOCKERFILE: "Dockerfile"
BUILD_WITH: "--ffmpeg"
except:
- master
- tags
build-version-no-deps:
extends: .build-image
variables:
IMAGE_TAG: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME-no-deps"
DOCKERFILE: "Dockerfile"
BUILD_WITH: ""
except:
- master
- tags
FROM debian:buster-slim AS build
# Change the VERSION envvar according to the cantaloupe version. Don't forget to change the argument in the ENTRYPOINT command below as well
ARG VERSION=5.0.4
ARG BUILD_WITH=""
FROM debian:buster-slim AS build
WORKDIR /
RUN apt-get -qq update && \
apt-get -qq install wget unzip && \
......@@ -9,32 +8,68 @@ RUN apt-get -qq update && \
RUN wget -q https://github.com/cantaloupe-project/cantaloupe/releases/download/v${VERSION}/cantaloupe-${VERSION}.zip -O temp.zip && \
unzip temp.zip && \
mv cantaloupe-${VERSION} cantaloupe && \
{%- if kakadu %}
mkdir /kakadu && \
if [ "$BUILD_WITH" != "${BUILD_WITH%"kakadu"*}" ]; then mv cantaloupe/deps/Linux-x86-64/lib/* /kakadu; fi && \
mv cantaloupe/deps/Linux-x86-64/lib/* /kakadu && \
{% endif -%}
rm -r cantaloupe/deps && \
rm cantaloupe/cantaloupe.properties.sample
ADD ./cantaloupe.properties /cantaloupe/cantaloupe.properties
FROM openjdk:16-slim-buster
# Change the version argument according to the cantaloupe version
ENTRYPOINT ["/home/cantaloupe/run.sh", "5.0.3"]
# This variable assignment is mandatory to use the value in ENTRYPOINT
ENV VERSION=${VERSION}
ENTRYPOINT ["/home/cantaloupe/run.sh", "$VERSION"]
CMD ["-Dcantaloupe.config=/home/cantaloupe/app/cantaloupe.properties"]
ARG HTTP_PORT=8182
ARG BUILD_WITH=""
HEALTHCHECK --start-period=30s CMD curl -sf 0.0.0.0:${HTTP_PORT} -o /dev/null || exit 1
RUN useradd cantaloupe && mkdir -p /home/cantaloupe/.cache/cantaloupe && chown -R cantaloupe: /home/cantaloupe/.cache
COPY --chown=cantaloupe --from=build /cantaloupe/ /home/cantaloupe/app/
COPY --from=build /kakadu /usr/lib/
ADD --chown=cantaloupe ./run.sh /home/cantaloupe/run.sh
ADD --chown=cantaloupe ./delegates.rb /home/cantaloupe/app/delegates.rb
RUN apt-get -qq update && \
apt-get -qq install curl fontconfig libfreetype6 && \
if [ "$BUILD_WITH" != "${BUILD_WITH%"ffmpeg"*}" ]; then apt-get -qq install --no-install-recommends ffmpeg; fi && \
if [ "$BUILD_WITH" != "${BUILD_WITH%"graphicsmagick"*}" ]; then apt-get -qq install --no-install-recommends graphicsmagick; fi && \
if [ "$BUILD_WITH" != "${BUILD_WITH%"imagemagick"*}" ]; then apt-get -qq install --no-install-recommends imagemagick; fi && \
if [ "$BUILD_WITH" != "${BUILD_WITH%"openjpeg"*}" ]; then apt-get -qq install libopenjp2-tools; fi && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
{%- if kakadu %}
COPY --from=build /kakadu /usr/lib/
{% endif -%}
{%- if ffmpeg or turbojpeg or openjpeg or grok %}
RUN apt-get -qq update
{% endif -%}
{%- if ffmpeg %}
RUN apt-get -qq install --no-install-recommends ffmpeg
{% endif -%}
{%- if turbojpeg %}
RUN mkdir -p /opt/libjpeg-turbo/lib
COPY libs /opt/libjpeg-turbo/lib
{% endif -%}
{%- if openjpeg %}
RUN apt-get -qq install --no-install-recommends libopenjp2-tools
{% endif -%}
{%- if grok %}
RUN apt-get -qq install wget \
liblcms2-dev \
libpng-dev \
libzstd-dev \
libtiff-dev \
libjpeg-dev \
zlib1g-dev \
libwebp-dev \
libimage-exiftool-perl
RUN wget -q https://github.com/GrokImageCompression/grok/releases/download/v7.6.5/libgrokj2k1_7.6.5-1_amd64.deb \
&& wget -q https://github.com/GrokImageCompression/grok/releases/download/v7.6.5/grokj2k-tools_7.6.5-1_amd64.deb \
&& dpkg -i ./libgrokj2k1_7.6.5-1_amd64.deb \
&& dpkg -i --ignore-depends=libjpeg62-turbo ./grokj2k-tools_7.6.5-1_amd64.deb \
# Install OpenJDK
&& wget -q https://github.com/AdoptOpenJDK/openjdk16-binaries/releases/download/jdk-16.0.1%2B9/OpenJDK16U-jdk_x64_linux_hotspot_16.0.1_9.tar.gz \
&& tar xfz OpenJDK16U-jdk_x64_linux_hotspot_16.0.1_9.tar.gz \
&& mv jdk-16.0.1+9 /opt/jdk \
# Install Maven (the one in apt is too old for JDK16 as of 2020-05-14)
&& wget -q https://mirrors.ocf.berkeley.edu/apache/maven/maven-3/3.8.1/binaries/apache-maven-3.8.1-bin.tar.gz \
&& tar xfz apache-maven-3.8.1-bin.tar.gz \
&& mv apache-maven-3.8.1 /opt/maven \
&& rm apache-maven-3.8.1-bin.tar.gz
{% endif -%}
{%- if ffmpeg or turbojpeg or openjpeg or grok %}
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
{% endif -%}
USER cantaloupe
WORKDIR /home/cantaloupe
VOLUME ["/home/cantaloupe/images"]
......@@ -39,26 +39,32 @@ Duly updated, the branches use the latest minor versions of the respective
major version of Cantaloupe:
- `4.x` -> `4.1.9`
- `5.x.` -> `5.0.3`
- `5.x.` -> `5.0.4`
### Processor versions
Available processors are `ffmpeg` (for video), `kakadu` and
`openjpeg` for JPEG2000 (the former proprietary, the latter free software) and
`graphicsmagick`. If you need another combination or replace `graphicsmagick`
with `imagemagick` see below.
Readily available flavors:
- `<version>-all`: `ffmpeg`, `kakadu`, `graphicsmagick`
- `<version>-all-free`: `ffmpeg`, `kakadu`, `graphicsmagick`
- `<version>-images`: `graphicsmagick`
- `<version>-images-jp2`: `kakadu`, `graphicsmagick`
- `<version>-images-jp2-free`: `openjpeg`, `graphicsmagick`
- `<version>-jp2`: `kakadu`
- `<version>-jp2-free`: `openjpeg`
- `<version>-vanilla`: no additional processors
- `<version>-video`: `ffmpeg`
Available processors are `ffmpeg` (for video), `kakadu`, `grok` and `openjpeg`
for JPEG2000 (the former proprietary, the latters free software) and
`turbojpeg`. Readily available flavors:
| name | ffmpeg | turbojpeg | grok | kakadu | openjpeg |
| --- | :---: | :---: | :---: | :---: | :---: |
| `<version>-all-kakadu` | &#10003; | &#10003; | &#215; | &#10003; | &#215; |
| `<version>-all-openjpeg` | &#10003; | &#10003; | &#215; | &#215; | &#10003; |
| `<version>-all-grok` | &#10003; | &#10003; | &#10003; | &#215; | &#215; |
| `<version>-kakadu-ffmpeg` | &#10003; | &#215; | &#215; | &#10003; | &#215; |
| `<version>-kakadu-turbojpeg` | &#215; | &#10003; | &#215; | &#10003; | &#215; |
| `<version>-kakadu` | &#215; | &#215; | &#215; | &#10003; | &#215; |
| `<version>-openjpeg-ffmpeg` | &#10003; | &#215; | &#215; | &#215; | &#10003; |
| `<version>-openjpeg-turbojpeg` | &#215; | &#10003; | &#215; | &#215; | &#10003; |
| `<version>-openjpeg` | &#215; | &#215; | &#215; | &#215; | &#10003; |
| `<version>-grok-ffmpeg` | &#10003; | &#215; | &#10003; | &#215; | &#215; |
| `<version>-grok-turbojpeg` | &#215; | &#10003; | &#10003; | &#215; | &#215; |
| `<version>-grok` | &#215; | &#215; | &#10003; | &#215; | &#215; |
| `<version>-turbojpeg-ffmpeg` | &#10003; | &#10003; | &#215; | &#215; | &#215; |
| `<version>-turbojpeg` | &#215; | &#10003; | &#215; | &#215; | &#215; |
| `<version>-ffmpeg` | &#10003; | &#215; | &#215; | &#215; | &#215; |
| `<version>-no-deps` | &#215; | &#215; | &#215; | &#215; | &#215; |
## Configuration
......@@ -77,26 +83,6 @@ Notice that some changes can affect the overall working of the container
uppercase letters, `.` being replaced by `_` (e.g. `https.key_store_path` ->
`HTTPS_KEY_STORE_PATH`).
### Reconfigure Processor support
Cantaloupe supports different backends for processing media resources.
To keep the image small, none of these processors is enabled in the image per
default. However you can build the image with the required processor backends
by providing one or several keys in the build arg `BUILD_WITH` (example
see below):
- [`ffmpeg`](https://ffmpeg.org/): Used for video processing
- [`graphicsmagick`](http://www.graphicsmagick.org/): Used for general
image processing
- [`imagemagick`](https://www.imagemagick.org/): More or less like GraphicsMagick
- [`kakadu`](https://kakadusoftware.com/): Fast processor for JPEG2000,
proprietary
- [`openjpeg`](http://www.openjpeg.org/): Like kakadu, but open source software
```sh
docker run --name cantaloupe --rm -d -p8182:8182 -v<path_to_host_image_folder>:/home/cantaloupe/images -e BUILD_WITH="ffmpeg imagemagick" cantaloupe:<tag>
```
### Use with Redis
Cantaloupe supports [Redis](https://redis.io) as an external key-value store for caching.
......
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "aho-corasick"
version = "0.7.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f"
dependencies = [
"memchr",
]
[[package]]
name = "bitflags"
version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "block-buffer"
version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b"
dependencies = [
"block-padding",
"byte-tools",
"byteorder",
"generic-array",
]
[[package]]
name = "block-padding"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5"
dependencies = [
"byte-tools",
]
[[package]]
name = "bstr"
version = "0.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223"
dependencies = [
"memchr",
]
[[package]]
name = "byte-tools"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7"
[[package]]
name = "byteorder"
version = "1.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
[[package]]
name = "cfg-if"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "crossbeam-utils"
version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d82cfc11ce7f2c3faef78d8a684447b40d503d9681acebed6cb728d45940c4db"
dependencies = [
"cfg-if",
"lazy_static",
]