mirror of
https://github.com/sigp/lighthouse.git
synced 2026-05-08 01:05:47 +00:00
Merge remote-tracking branch 'upstream/unstable' into gloas-containers
This commit is contained in:
59
Makefile
59
Makefile
@@ -86,36 +86,67 @@ build-lcli-aarch64:
|
||||
build-lcli-riscv64:
|
||||
cross build --bin lcli --target riscv64gc-unknown-linux-gnu --features "portable" --profile "$(CROSS_PROFILE)" --locked
|
||||
|
||||
# extracts the current source date for reproducible builds
|
||||
SOURCE_DATE := $(shell git log -1 --pretty=%ct)
|
||||
# Environment variables for reproducible builds
|
||||
# Initialize RUSTFLAGS
|
||||
RUST_BUILD_FLAGS =
|
||||
# Remove build ID from the binary to ensure reproducibility across builds
|
||||
RUST_BUILD_FLAGS += -C link-arg=-Wl,--build-id=none
|
||||
# Remove metadata hash from symbol names to ensure reproducible builds
|
||||
RUST_BUILD_FLAGS += -C metadata=''
|
||||
|
||||
# Default image for x86_64
|
||||
# Set timestamp from last git commit for reproducible builds
|
||||
SOURCE_DATE ?= $(shell git log -1 --pretty=%ct)
|
||||
|
||||
# Disable incremental compilation to avoid non-deterministic artifacts
|
||||
CARGO_INCREMENTAL_VAL = 0
|
||||
# Set C locale for consistent string handling and sorting
|
||||
LOCALE_VAL = C
|
||||
# Set UTC timezone for consistent time handling across builds
|
||||
TZ_VAL = UTC
|
||||
|
||||
# Features for reproducible builds
|
||||
FEATURES_REPRODUCIBLE = $(CROSS_FEATURES),jemalloc-unprefixed
|
||||
|
||||
# Derive the architecture-specific library path from RUST_TARGET
|
||||
JEMALLOC_LIB_ARCH = $(word 1,$(subst -, ,$(RUST_TARGET)))
|
||||
JEMALLOC_OVERRIDE = /usr/lib/$(JEMALLOC_LIB_ARCH)-linux-gnu/libjemalloc.a
|
||||
|
||||
# Default target architecture
|
||||
RUST_TARGET ?= x86_64-unknown-linux-gnu
|
||||
|
||||
# Default images for different architectures
|
||||
RUST_IMAGE_AMD64 ?= rust:1.88-bullseye@sha256:8e3c421122bf4cd3b2a866af41a4dd52d87ad9e315fd2cb5100e87a7187a9816
|
||||
RUST_IMAGE_ARM64 ?= rust:1.88-bullseye@sha256:8b22455a7ce2adb1355067638284ee99d21cc516fab63a96c4514beaf370aa94
|
||||
|
||||
# Reproducible build for x86_64
|
||||
build-reproducible-x86_64:
|
||||
.PHONY: build-reproducible
|
||||
build-reproducible: ## Build the lighthouse binary into `target` directory with reproducible builds
|
||||
SOURCE_DATE_EPOCH=$(SOURCE_DATE) \
|
||||
RUSTFLAGS="${RUST_BUILD_FLAGS} --remap-path-prefix $$(pwd)=." \
|
||||
CARGO_INCREMENTAL=${CARGO_INCREMENTAL_VAL} \
|
||||
LC_ALL=${LOCALE_VAL} \
|
||||
TZ=${TZ_VAL} \
|
||||
JEMALLOC_OVERRIDE=${JEMALLOC_OVERRIDE} \
|
||||
cargo build --bin lighthouse --features "$(FEATURES_REPRODUCIBLE)" --profile "$(PROFILE)" --locked --target $(RUST_TARGET)
|
||||
|
||||
.PHONY: build-reproducible-x86_64
|
||||
build-reproducible-x86_64: ## Build reproducible x86_64 Docker image
|
||||
DOCKER_BUILDKIT=1 docker build \
|
||||
--build-arg RUST_TARGET="x86_64-unknown-linux-gnu" \
|
||||
--build-arg RUST_IMAGE=$(RUST_IMAGE_AMD64) \
|
||||
--build-arg SOURCE_DATE=$(SOURCE_DATE) \
|
||||
-f Dockerfile.reproducible \
|
||||
-t lighthouse:reproducible-amd64 .
|
||||
|
||||
# Default image for arm64
|
||||
RUST_IMAGE_ARM64 ?= rust:1.88-bullseye@sha256:8b22455a7ce2adb1355067638284ee99d21cc516fab63a96c4514beaf370aa94
|
||||
|
||||
# Reproducible build for aarch64
|
||||
build-reproducible-aarch64:
|
||||
.PHONY: build-reproducible-aarch64
|
||||
build-reproducible-aarch64: ## Build reproducible aarch64 Docker image
|
||||
DOCKER_BUILDKIT=1 docker build \
|
||||
--platform linux/arm64 \
|
||||
--build-arg RUST_TARGET="aarch64-unknown-linux-gnu" \
|
||||
--build-arg RUST_IMAGE=$(RUST_IMAGE_ARM64) \
|
||||
--build-arg SOURCE_DATE=$(SOURCE_DATE) \
|
||||
-f Dockerfile.reproducible \
|
||||
-t lighthouse:reproducible-arm64 .
|
||||
|
||||
# Build both architectures
|
||||
build-reproducible-all: build-reproducible-x86_64 build-reproducible-aarch64
|
||||
.PHONY: build-reproducible-all
|
||||
build-reproducible-all: build-reproducible-x86_64 build-reproducible-aarch64 ## Build both x86_64 and aarch64 reproducible Docker images
|
||||
|
||||
# Create a `.tar.gz` containing a binary for a specific target.
|
||||
define tarball_release_binary
|
||||
|
||||
Reference in New Issue
Block a user