From 1575dadacaaa4cd19ac9fc46bddfba86b1d1b53b Mon Sep 17 00:00:00 2001 From: Para Dox Date: Sun, 25 May 2025 15:14:53 +0700 Subject: [PATCH] done --- ...eum-mainnet-reth-minimal-trace--nimbus.yml | 2 ++ reth.Dockerfile | 31 ++++++++----------- 2 files changed, 15 insertions(+), 18 deletions(-) diff --git a/ethereum/reth/ethereum-mainnet-reth-minimal-trace--nimbus.yml b/ethereum/reth/ethereum-mainnet-reth-minimal-trace--nimbus.yml index 650e8156..1922261e 100644 --- a/ethereum/reth/ethereum-mainnet-reth-minimal-trace--nimbus.yml +++ b/ethereum/reth/ethereum-mainnet-reth-minimal-trace--nimbus.yml @@ -39,6 +39,8 @@ services: context: ./ dockerfile: reth.Dockerfile args: + LLVM_IMAGE: ${LLVM_IMAGE:-snowstep/llvm} + LLVM_VERSION: ${LLVM_VERSION:-20250514100911} RETH_VERSION: ${ETHEREUM_MAINNET_RETH_VERSION:-v1.4.3} RETH_REPO: ${ETHEREUM_MAINNET_RETH_REPO:-https://github.com/paradigmxyz/reth} ARCH_TARGET: ${ARCH_TARGET:-native} diff --git a/reth.Dockerfile b/reth.Dockerfile index 659d3d83..fb5e0c63 100644 --- a/reth.Dockerfile +++ b/reth.Dockerfile @@ -1,30 +1,24 @@ # Multi-stage build for reth with architecture-specific optimizations -FROM rust:1.83-bookworm as builder +ARG LLVM_IMAGE=snowstep/llvm +ARG LLVM_VERSION=20250514100911 +FROM ${LLVM_IMAGE}:${LLVM_VERSION} as builder -# Install nightly toolchain for advanced optimizations +# Install Rust and nightly toolchain for advanced optimizations +RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain stable --profile minimal +ENV PATH="/root/.cargo/bin:${PATH}" RUN rustup toolchain install nightly && \ rustup component add rust-src --toolchain nightly -# Install build dependencies +# Install additional build dependencies RUN apt-get update && apt-get install -y \ git \ - cmake \ - make \ libssl-dev \ pkg-config \ wget \ - gnupg \ - software-properties-common \ ninja-build \ ccache \ && rm -rf /var/lib/apt/lists/* -# Install latest LLVM 20.1.5 from official releases for maximum optimization -RUN wget https://github.com/llvm/llvm-project/releases/download/llvmorg-20.1.5/clang+llvm-20.1.5-x86_64-linux-gnu.tar.xz && \ - tar xf clang+llvm-20.1.5-x86_64-linux-gnu.tar.xz && \ - cp -r clang+llvm-20.1.5-x86_64-linux-gnu/* /usr/local/ && \ - rm -rf clang+llvm-20.1.5-x86_64-linux-gnu* - # Install mold linker (faster than lld) RUN wget https://github.com/rui314/mold/releases/download/v2.30.0/mold-2.30.0-x86_64-linux.tar.gz && \ tar xf mold-2.30.0-x86_64-linux.tar.gz && \ @@ -68,11 +62,12 @@ WORKDIR /build RUN git clone $RETH_REPO . && \ git checkout $RETH_VERSION -# Set environment variables for optimization with LLVM 20.1.5 -ENV CC=/usr/local/bin/clang -ENV CXX=/usr/local/bin/clang++ -ENV AR=/usr/local/bin/llvm-ar -ENV RANLIB=/usr/local/bin/llvm-ranlib +# Set environment variables for optimization +# The snowstep/llvm image already has clang and LLVM tools in PATH +ENV CC=clang +ENV CXX=clang++ +ENV AR=llvm-ar +ENV RANLIB=llvm-ranlib ENV LD=/usr/local/bin/mold ENV SCCACHE_DIR=/tmp/sccache ENV RUSTC_WRAPPER=/usr/local/bin/sccache