From a4f63294de1442db1b817660783e4eeea588896b Mon Sep 17 00:00:00 2001 From: Dessalines Date: Tue, 29 Oct 2024 11:01:58 -0400 Subject: [PATCH] Compress binary with upx. (#5140) * Compress binary with upx. * Changing opt-level from z to 3 * Changing lto from thin to fat for release. --- Cargo.toml | 7 ++++--- docker/Dockerfile | 13 ++++++++++++- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index fc22d0d53..5523dcfd6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -26,9 +26,10 @@ workspace = true [profile.release] debug = 0 -lto = "thin" -strip = true # Automatically strip symbols from the binary. -opt-level = "z" # Optimize for size. +lto = "fat" +strip = true # Automatically strip symbols from the binary. +opt-level = 3 # Optimize for speed, not size. +codegen-units = 1 # Reduce parallel code generation. # This profile significantly speeds up build time. If debug info is needed you can comment the line # out temporarily, but make sure to leave this in the main branch. diff --git a/docker/Dockerfile b/docker/Dockerfile index 4503dd402..9701b4ad6 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -38,6 +38,12 @@ RUN --mount=type=cache,target=/lemmy/target set -ex; \ cargo clean --release; \ cargo build --features "${CARGO_BUILD_FEATURES}" --release; \ mv target/"${RUST_RELEASE_MODE}"/lemmy_server ./lemmy_server; \ + # + # Compress the binary with upx + wget https://github.com/upx/upx/releases/download/v4.2.4/upx-4.2.4-amd64_linux.tar.xz; \ + tar -xvf upx-4.2.4-amd64_linux.tar.xz; \ + cp upx-4.2.4-amd64_linux/upx /usr/bin; \ + upx --best --lzma lemmy_server; \ fi # ARM64 builder @@ -71,9 +77,14 @@ RUN --mount=type=cache,target=./target,uid=10001,gid=10001 set -ex; \ cargo clean --release; \ cargo build --features "${CARGO_BUILD_FEATURES}" --release; \ mv "./target/$CARGO_BUILD_TARGET/$RUST_RELEASE_MODE/lemmy_server" /home/lemmy/lemmy_server; \ + # + # Compress the binary with upx + wget https://github.com/upx/upx/releases/download/v4.2.4/upx-4.2.4-arm64_linux.tar.xz; \ + tar -xvf upx-4.2.4-arm64_linux.tar.xz; \ + cp upx-4.2.4-arm64_linux/upx /usr/bin; \ + upx --best --lzma /home/lemmy/lemmy_server; \ fi - # amd64 base runner FROM ${AMD_RUNNER_IMAGE} AS runner-linux-amd64