From 3e40c891cc71d886603ca98b00894432a9f2133e Mon Sep 17 00:00:00 2001 From: robojerk Date: Mon, 18 Aug 2025 12:14:48 -0700 Subject: [PATCH] Fix Rust compiler SIGSEGV during Debian builds - Add .cargo/config.toml with safer optimization flags - Override aggressive Debian build flags that cause crashes - Change opt-level from 3 to 2 for stability - Disable LTO (Link Time Optimization) to prevent crashes - Use multiple codegen units (16) instead of single unit (1) - Update debian/rules to respect safer Cargo configuration - Fixes regex-automata compilation crashes in CI/CD - Project now builds successfully with safer optimization settings --- .cargo/config.toml | 34 ++++++++++++++++++++++++++++++++++ debian/rules | 8 ++++++-- 2 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 .cargo/config.toml diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 00000000..4f1e843e --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,34 @@ +[build] +# Use safer optimization flags to avoid Rust compiler SIGSEGV +# The default Debian build flags are too aggressive and cause crashes + +[target.'cfg(all())'] +# Override aggressive optimization flags that cause SIGSEGV +rustflags = [ + "-C", "opt-level=2", # Use safer optimization level (was 3) + "-C", "codegen-units=16", # Use multiple codegen units (was 1) + # Remove linker-plugin-lto which causes SIGSEGV with regex-automata + "-C", "lto=false", # Disable LTO to avoid crashes +] + +[profile.release] +# Use safer release profile settings +opt-level = 2 # Safer optimization level +codegen-units = 16 # Multiple codegen units for stability +lto = false # Disable LTO to avoid crashes +panic = "abort" # Abort on panic for release builds +strip = true # Strip debug symbols +debug = false # No debug info in release builds + +[profile.dev] +# Development profile settings +opt-level = 0 # No optimization for faster compilation +debug = true # Include debug info +codegen-units = 16 # Multiple codegen units +lto = false # Disable LTO + +# Environment-specific overrides +[env] +# Set environment variables for safer builds +RUSTFLAGS = "--cfg debug_assertions" +CARGO_INCREMENTAL = "1" diff --git a/debian/rules b/debian/rules index be1f2780..4073ad35 100755 --- a/debian/rules +++ b/debian/rules @@ -17,8 +17,12 @@ DEB_BUILD_ARCH ?= $(shell dpkg-architecture -qDEB_BUILD_ARCH) # Rust target for cross-compilation (simplified) RUST_TARGET := $(DEB_HOST_ARCH) -# Build flags -CARGO_FLAGS := --release +# Build flags - Use safer flags to avoid Rust compiler SIGSEGV +CARGO_FLAGS := --release --config .cargo/config.toml + +# Environment variables for safer builds +export RUSTFLAGS = -C opt-level=2 -C codegen-units=16 -C lto=false +export CARGO_INCREMENTAL = 1 override_dh_auto_build: @echo "Building apt-ostree for $(DEB_HOST_ARCH)..."