Browse Source
Merge pull request #2397 from BlackDex/fix-mimalloc-build
Fix building mimalloc on armv6
pull/2400/head
Daniel García
3 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with
20 additions and
21 deletions
-
docker/Dockerfile.j2
-
docker/amd64/Dockerfile.alpine
-
docker/amd64/Dockerfile.buildx.alpine
-
docker/arm64/Dockerfile.alpine
-
docker/arm64/Dockerfile.buildx.alpine
-
docker/armv6/Dockerfile.alpine
-
docker/armv6/Dockerfile.buildx.alpine
-
docker/armv7/Dockerfile.alpine
-
docker/armv7/Dockerfile.buildx.alpine
|
|
@ -105,10 +105,9 @@ RUN {{ mount_rust_cache -}} mkdir -pv "${CARGO_HOME}" \ |
|
|
|
&& rustup set profile minimal |
|
|
|
|
|
|
|
{% if "alpine" in target_file %} |
|
|
|
ENV RUSTFLAGS='-C link-arg=-s' |
|
|
|
{% if "armv7" in target_file %} |
|
|
|
{#- https://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html -#} |
|
|
|
ENV CFLAGS_armv7_unknown_linux_musleabihf="-mfpu=vfpv3-d16" |
|
|
|
{% if "armv6" in target_file %} |
|
|
|
# To be able to build the armv6 image with mimalloc we need to specifically specify the libatomic.a file location |
|
|
|
ENV RUSTFLAGS='-Clink-arg=/usr/local/musl/{{ package_arch_target }}/lib/libatomic.a' |
|
|
|
{% endif %} |
|
|
|
{% elif "arm" in target_file %} |
|
|
|
# |
|
|
@ -163,7 +162,7 @@ RUN {{ mount_rust_cache -}} rustup target add {{ package_arch_target }} |
|
|
|
{% endif %} |
|
|
|
|
|
|
|
# Configure the DB ARG as late as possible to not invalidate the cached layers above |
|
|
|
{% if "alpine" in target_file and "amd64" in target_file %} |
|
|
|
{% if "alpine" in target_file %} |
|
|
|
# Enable MiMalloc to improve performance on Alpine builds |
|
|
|
ARG DB=sqlite,mysql,postgresql,enable_mimalloc |
|
|
|
{% else %} |
|
|
|
|
|
@ -44,7 +44,6 @@ ENV DEBIAN_FRONTEND=noninteractive \ |
|
|
|
RUN mkdir -pv "${CARGO_HOME}" \ |
|
|
|
&& rustup set profile minimal |
|
|
|
|
|
|
|
ENV RUSTFLAGS='-C link-arg=-s' |
|
|
|
|
|
|
|
# Creates a dummy project used to grab dependencies |
|
|
|
RUN USER=root cargo new --bin /app |
|
|
|
|
|
@ -44,7 +44,6 @@ ENV DEBIAN_FRONTEND=noninteractive \ |
|
|
|
RUN --mount=type=cache,target=/root/.cargo/git --mount=type=cache,target=/root/.cargo/registry mkdir -pv "${CARGO_HOME}" \ |
|
|
|
&& rustup set profile minimal |
|
|
|
|
|
|
|
ENV RUSTFLAGS='-C link-arg=-s' |
|
|
|
|
|
|
|
# Creates a dummy project used to grab dependencies |
|
|
|
RUN USER=root cargo new --bin /app |
|
|
|
|
|
@ -44,7 +44,6 @@ ENV DEBIAN_FRONTEND=noninteractive \ |
|
|
|
RUN mkdir -pv "${CARGO_HOME}" \ |
|
|
|
&& rustup set profile minimal |
|
|
|
|
|
|
|
ENV RUSTFLAGS='-C link-arg=-s' |
|
|
|
|
|
|
|
# Creates a dummy project used to grab dependencies |
|
|
|
RUN USER=root cargo new --bin /app |
|
|
@ -58,7 +57,8 @@ COPY ./build.rs ./build.rs |
|
|
|
RUN rustup target add aarch64-unknown-linux-musl |
|
|
|
|
|
|
|
# Configure the DB ARG as late as possible to not invalidate the cached layers above |
|
|
|
ARG DB=sqlite,mysql,postgresql |
|
|
|
# Enable MiMalloc to improve performance on Alpine builds |
|
|
|
ARG DB=sqlite,mysql,postgresql,enable_mimalloc |
|
|
|
|
|
|
|
# Builds your dependencies and removes the |
|
|
|
# dummy project, except the target folder |
|
|
|
|
|
@ -44,7 +44,6 @@ ENV DEBIAN_FRONTEND=noninteractive \ |
|
|
|
RUN --mount=type=cache,target=/root/.cargo/git --mount=type=cache,target=/root/.cargo/registry mkdir -pv "${CARGO_HOME}" \ |
|
|
|
&& rustup set profile minimal |
|
|
|
|
|
|
|
ENV RUSTFLAGS='-C link-arg=-s' |
|
|
|
|
|
|
|
# Creates a dummy project used to grab dependencies |
|
|
|
RUN USER=root cargo new --bin /app |
|
|
@ -58,7 +57,8 @@ COPY ./build.rs ./build.rs |
|
|
|
RUN --mount=type=cache,target=/root/.cargo/git --mount=type=cache,target=/root/.cargo/registry rustup target add aarch64-unknown-linux-musl |
|
|
|
|
|
|
|
# Configure the DB ARG as late as possible to not invalidate the cached layers above |
|
|
|
ARG DB=sqlite,mysql,postgresql |
|
|
|
# Enable MiMalloc to improve performance on Alpine builds |
|
|
|
ARG DB=sqlite,mysql,postgresql,enable_mimalloc |
|
|
|
|
|
|
|
# Builds your dependencies and removes the |
|
|
|
# dummy project, except the target folder |
|
|
|
|
|
@ -44,7 +44,8 @@ ENV DEBIAN_FRONTEND=noninteractive \ |
|
|
|
RUN mkdir -pv "${CARGO_HOME}" \ |
|
|
|
&& rustup set profile minimal |
|
|
|
|
|
|
|
ENV RUSTFLAGS='-C link-arg=-s' |
|
|
|
# To be able to build the armv6 image with mimalloc we need to specifically specify the libatomic.a file location |
|
|
|
ENV RUSTFLAGS='-Clink-arg=/usr/local/musl/arm-unknown-linux-musleabi/lib/libatomic.a' |
|
|
|
|
|
|
|
# Creates a dummy project used to grab dependencies |
|
|
|
RUN USER=root cargo new --bin /app |
|
|
@ -58,7 +59,8 @@ COPY ./build.rs ./build.rs |
|
|
|
RUN rustup target add arm-unknown-linux-musleabi |
|
|
|
|
|
|
|
# Configure the DB ARG as late as possible to not invalidate the cached layers above |
|
|
|
ARG DB=sqlite,mysql,postgresql |
|
|
|
# Enable MiMalloc to improve performance on Alpine builds |
|
|
|
ARG DB=sqlite,mysql,postgresql,enable_mimalloc |
|
|
|
|
|
|
|
# Builds your dependencies and removes the |
|
|
|
# dummy project, except the target folder |
|
|
|
|
|
@ -44,7 +44,8 @@ ENV DEBIAN_FRONTEND=noninteractive \ |
|
|
|
RUN --mount=type=cache,target=/root/.cargo/git --mount=type=cache,target=/root/.cargo/registry mkdir -pv "${CARGO_HOME}" \ |
|
|
|
&& rustup set profile minimal |
|
|
|
|
|
|
|
ENV RUSTFLAGS='-C link-arg=-s' |
|
|
|
# To be able to build the armv6 image with mimalloc we need to specifically specify the libatomic.a file location |
|
|
|
ENV RUSTFLAGS='-Clink-arg=/usr/local/musl/arm-unknown-linux-musleabi/lib/libatomic.a' |
|
|
|
|
|
|
|
# Creates a dummy project used to grab dependencies |
|
|
|
RUN USER=root cargo new --bin /app |
|
|
@ -58,7 +59,8 @@ COPY ./build.rs ./build.rs |
|
|
|
RUN --mount=type=cache,target=/root/.cargo/git --mount=type=cache,target=/root/.cargo/registry rustup target add arm-unknown-linux-musleabi |
|
|
|
|
|
|
|
# Configure the DB ARG as late as possible to not invalidate the cached layers above |
|
|
|
ARG DB=sqlite,mysql,postgresql |
|
|
|
# Enable MiMalloc to improve performance on Alpine builds |
|
|
|
ARG DB=sqlite,mysql,postgresql,enable_mimalloc |
|
|
|
|
|
|
|
# Builds your dependencies and removes the |
|
|
|
# dummy project, except the target folder |
|
|
|
|
|
@ -44,8 +44,6 @@ ENV DEBIAN_FRONTEND=noninteractive \ |
|
|
|
RUN mkdir -pv "${CARGO_HOME}" \ |
|
|
|
&& rustup set profile minimal |
|
|
|
|
|
|
|
ENV RUSTFLAGS='-C link-arg=-s' |
|
|
|
ENV CFLAGS_armv7_unknown_linux_musleabihf="-mfpu=vfpv3-d16" |
|
|
|
|
|
|
|
# Creates a dummy project used to grab dependencies |
|
|
|
RUN USER=root cargo new --bin /app |
|
|
@ -59,7 +57,8 @@ COPY ./build.rs ./build.rs |
|
|
|
RUN rustup target add armv7-unknown-linux-musleabihf |
|
|
|
|
|
|
|
# Configure the DB ARG as late as possible to not invalidate the cached layers above |
|
|
|
ARG DB=sqlite,mysql,postgresql |
|
|
|
# Enable MiMalloc to improve performance on Alpine builds |
|
|
|
ARG DB=sqlite,mysql,postgresql,enable_mimalloc |
|
|
|
|
|
|
|
# Builds your dependencies and removes the |
|
|
|
# dummy project, except the target folder |
|
|
|
|
|
@ -44,8 +44,6 @@ ENV DEBIAN_FRONTEND=noninteractive \ |
|
|
|
RUN --mount=type=cache,target=/root/.cargo/git --mount=type=cache,target=/root/.cargo/registry mkdir -pv "${CARGO_HOME}" \ |
|
|
|
&& rustup set profile minimal |
|
|
|
|
|
|
|
ENV RUSTFLAGS='-C link-arg=-s' |
|
|
|
ENV CFLAGS_armv7_unknown_linux_musleabihf="-mfpu=vfpv3-d16" |
|
|
|
|
|
|
|
# Creates a dummy project used to grab dependencies |
|
|
|
RUN USER=root cargo new --bin /app |
|
|
@ -59,7 +57,8 @@ COPY ./build.rs ./build.rs |
|
|
|
RUN --mount=type=cache,target=/root/.cargo/git --mount=type=cache,target=/root/.cargo/registry rustup target add armv7-unknown-linux-musleabihf |
|
|
|
|
|
|
|
# Configure the DB ARG as late as possible to not invalidate the cached layers above |
|
|
|
ARG DB=sqlite,mysql,postgresql |
|
|
|
# Enable MiMalloc to improve performance on Alpine builds |
|
|
|
ARG DB=sqlite,mysql,postgresql,enable_mimalloc |
|
|
|
|
|
|
|
# Builds your dependencies and removes the |
|
|
|
# dummy project, except the target folder |
|
|
|