diff --git a/.github/workflows/create_draft_release.yml b/.github/workflows/create_draft_release.yml index c3c84e89..f7aadc69 100644 --- a/.github/workflows/create_draft_release.yml +++ b/.github/workflows/create_draft_release.yml @@ -34,6 +34,11 @@ jobs: secrets: QUAY_IO_TOKEN: ${{ secrets.QUAY_IO_TOKEN }} QUAY_IO_USERNAME: ${{ secrets.QUAY_IO_USERNAME }} + call_debug_build: + uses: ./.github/workflows/debug_build.yml + secrets: + QUAY_IO_TOKEN: ${{ secrets.QUAY_IO_TOKEN }} + QUAY_IO_USERNAME: ${{ secrets.QUAY_IO_USERNAME }} create_release: runs-on: ubuntu-latest @@ -41,6 +46,7 @@ jobs: [ call_kuksa_databroker_build, call_kuksa_databroker-cli_build, + call_debug_build, ] steps: - name: Checkout diff --git a/.github/workflows/debug_build.yml b/.github/workflows/debug_build.yml new file mode 100644 index 00000000..8dfa68dd --- /dev/null +++ b/.github/workflows/debug_build.yml @@ -0,0 +1,318 @@ +# /******************************************************************************** +# * Copyright (c) 2024 Contributors to the Eclipse Foundation +# * +# * See the NOTICE file(s) distributed with this work for additional +# * information regarding copyright ownership. +# * +# * This program and the accompanying materials are made available under the +# * terms of the Apache License 2.0 which is available at +# * http://www.apache.org/licenses/LICENSE-2.0 +# * +# * SPDX-License-Identifier: Apache-2.0 +# ********************************************************************************/ + +name: Debug build databroker + +on: + push: + branches: [ main] + pull_request: + workflow_call: + secrets: + QUAY_IO_TOKEN: + required: true + QUAY_IO_USERNAME: + required: true + workflow_dispatch: + +# suffix to avoid cancellation when running from release workflow +concurrency: + group: ${{ github.ref }}-${{ github.workflow }}-databroker-debug + cancel-in-progress: true + +# Needed as default_workflow_permissions is "read" +permissions: + packages: write + +jobs: + lint: + name: Lint + runs-on: ubuntu-latest + env: + CARGO_TERM_COLOR: always + steps: + - uses: actions/checkout@v4 + - uses: actions/cache@v4 + with: + path: | + ~/.cargo/bin/ + ~/.cargo/registry/index/ + ~/.cargo/registry/cache/ + ~/.cargo/git/db/ + ~/.cargo/.crates.toml + ~/.cargo/.crates2.json + target/ + key: databroker-lint-${{ hashFiles('**/Cargo.lock') }} + - name: Show toolchain information + working-directory: ${{github.workspace}} + run: | + rustup toolchain list + cargo --version + - name: cargo fmt + working-directory: ${{github.workspace}} + run: cargo fmt -- --check + - name: cargo clippy + working-directory: ${{github.workspace}} + run: cargo clippy --all-targets -- -W warnings -D warnings + - name: cargo clippy (feature viss) + working-directory: ${{github.workspace}} + run: cargo clippy --features viss --all-targets -- -W warnings -D warnings + + + kuksa-lib: + name: Build Kuksa lib + runs-on: ubuntu-latest + env: + CARGO_TERM_COLOR: always + steps: + - uses: actions/checkout@v4 + - uses: actions/cache@v4 + with: + path: | + ~/.cargo/bin/ + ~/.cargo/registry/index/ + ~/.cargo/registry/cache/ + ~/.cargo/git/db/ + ~/.cargo/.crates.toml + ~/.cargo/.crates2.json + target/ + key: databroker-lint-${{ hashFiles('**/Cargo.lock') }} + - name: Show toolchain information + working-directory: ${{github.workspace}} + run: | + rustup toolchain list + cargo --version + - name: Build lib + working-directory: ${{github.workspace}} + run: | + cd lib + cargo build --release + + test: + name: Run unit tests + runs-on: ubuntu-latest + env: + CARGO_TERM_COLOR: always + steps: + - uses: actions/checkout@v4 + - uses: actions/cache@v4 + with: + path: | + ~/.cargo/bin/ + ~/.cargo/registry/index/ + ~/.cargo/registry/cache/ + ~/.cargo/git/db/ + ~/.cargo/.crates.toml + ~/.cargo/.crates2.json + ~/.cache/pip/ + target/ + key: databroker-coverage-${{ hashFiles('**/Cargo.lock') }} + - name: Install cargo-llvm-cov + uses: taiki-e/install-action@cargo-llvm-cov + - name: Generate code coverage + run: cargo llvm-cov --all-features --workspace --lcov --output-path lcov.info + - name: Upload coverage to Codecov + # Uploaded result available at https://app.codecov.io/gh/eclipse-kuksa/kuksa-databroker + uses: codecov/codecov-action@v4 + with: + files: lcov.info + token: ${{ secrets.CODECOV_TOKEN }} + + build: + name: Build + runs-on: ubuntu-latest + env: + CARGO_TERM_COLOR: always + strategy: + matrix: + platform: + - name: amd64 + - name: arm64 + - name: riscv64 + steps: + - uses: actions/checkout@v4 + + - uses: actions/cache@v4 + with: + path: | + ~/.cargo/bin/ + ~/.cargo/registry/index/ + ~/.cargo/registry/cache/ + ~/.cargo/git/db/ + ~/.cargo/.crates.toml + ~/.cargo/.crates2.json + target-*/ + key: databroker-release-${{ matrix.platform.name }}-${{ hashFiles('**/Cargo.lock') }} + - uses: actions/setup-python@v5 + # Needed for pip + with: + python-version: '3.12' + - name: Install build prerequisites + working-directory: ${{github.workspace}}/ + run: | + cargo install cross cargo-license cargo-cyclonedx + pip install "git+https://github.com/eclipse-kuksa/kuksa-common.git@v1#subdirectory=sbom-tools" + - name: Build + working-directory: ${{github.workspace}} + env: + KUKSA_DATABROKER_FEATURES: databroker/viss,databroker/tls + KUKSA_DATABROKER_SBOM: y + run: | + export KUKSA_DATABROKER_PROFILE=release-with-debug + ./scripts/build-databroker.sh ${{ matrix.platform.name }} + + - name: Find debug symbol for receiving signal updates + run: | + export DEBUGSYMBOL=$(nm ${{github.workspace}}/dist/${{ matrix.platform.name }}/databroker | grep -E 'DatabaseWriteAccess.*update[^_]+' | cut -d' ' -f3) + echo ${DEBUGSYMBOL} > ${{github.workspace}}/dist/${{ matrix.platform.name }}/debugsymbols.txt + echo "Debug Symbol for eBPF Tracing: ${DEBUGSYMBOL}" >> $GITHUB_STEP_SUMMARY + + - name: "Archiving artifacts" + shell: bash + working-directory: ${{github.workspace}}/dist/${{ matrix.platform.name }} + run: | + tar -czf ../databroker-${{ matrix.platform.name }}-release-with-debug.tar.gz * + + - name: "Uploading artifacts" + uses: actions/upload-artifact@v4 + with: + name: databroker-${{ matrix.platform.name }}-release-with-debug + path: ${{github.workspace}}/dist/databroker-${{ matrix.platform.name}}-release-with-debug.tar.gz + if-no-files-found: error + + check_ghcr_push: + name: Check access rights + uses: eclipse-kuksa/kuksa-actions/.github/workflows/check_ghcr_push.yml@4 + secrets: inherit + + create-container: + name: Create multiarch container + runs-on: ubuntu-latest + + needs: [build, check_ghcr_push] + + steps: + - uses: actions/checkout@v4 + - name: Retrieve artifacts + uses: actions/download-artifact@v4 + with: + path: artifacts + pattern: databroker-* + merge-multiple: true + + - name: Unpack binaries + run: | + mkdir -p dist/amd64 dist/arm64 dist/riscv64 + tar xf artifacts/databroker-arm64-release-with-debug.tar.gz -C dist/arm64 + tar xf artifacts/databroker-amd64-release-with-debug.tar.gz -C dist/amd64 + tar xf artifacts/databroker-riscv64-release-with-debug.tar.gz -C dist/riscv64 + + - name: Set container metadata + id: meta + uses: docker/metadata-action@v5 + with: + # list of Docker images to use as base name for tags + images: | + ghcr.io/eclipse-kuksa/kuksa-databroker-release-with-debug + quay.io/eclipse-kuksa/kuksa-databroker-release-with-debug + # generate Docker tags based on the following events/attributes + tags: | + type=ref,event=branch + type=ref,event=pr + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + type=semver,pattern={{major}} + + - name: Setup Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v3 + + - name: Log in to ghcr.io container registry + if: needs.check_ghcr_push.outputs.push == 'true' + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Log in to quay.io container registry + if: needs.check_ghcr_push.outputs.push == 'true' + uses: docker/login-action@v3 + with: + registry: quay.io + username: ${{ secrets.QUAY_IO_USERNAME }} + password: ${{ secrets.QUAY_IO_TOKEN }} + + - name: Build kuksa-databroker container and push to ghcr.io, quay.io and ttl.sh + id: ghcr-build + if: needs.check_ghcr_push.outputs.push == 'true' + uses: docker/build-push-action@v5 + with: + platforms: | + linux/amd64 + linux/arm64 + linux/riscv64 + file: ./scripts/Dockerfile + context: . + push: true + tags: | + ${{ steps.meta.outputs.tags }} + ttl.sh/eclipse-kuksa/kuksa-databroker-${{github.sha}}-release-with-debug + labels: ${{ steps.meta.outputs.labels }} + # Provenance to solve that an unknown/unkown image is shown on ghcr.io + # Same problem as described in https://github.com/orgs/community/discussions/45969 + provenance: false + + - name: Build ephemeral kuksa-databroker container and push to ttl.sh + if: needs.check_ghcr_push.outputs.push == 'false' + id: tmp-build + uses: docker/build-push-action@v5 + with: + platforms: | + linux/amd64 + linux/arm64 + linux/riscv64 + file: ./scripts/Dockerfile + context: . + push: true + tags: "ttl.sh/eclipse-kuksa/kuksa-databroker-${{github.sha}}-release-with-debug" + labels: ${{ steps.meta.outputs.labels }} + # Provenance to solve that an unknown/unkown image is shown on ghcr.io + # Same problem as described in https://github.com/orgs/community/discussions/45969 + provenance: false + + - name: Posting message + uses: eclipse-kuksa/kuksa-actions/post-container-location@4 + with: + image: ttl.sh/eclipse-kuksa/kuksa-databroker-${{github.sha}}-release-with-debug + + integration-test: + name: Run integration test + runs-on: ubuntu-latest + needs: [create-container] + strategy: + matrix: + platform: ["arm64", "amd64", "riscv64"] + + steps: + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - uses: actions/checkout@v4 + + - name: Run integration test on ${{ matrix.platform }} container + env: + DATABROKER_IMAGE: ttl.sh/eclipse-kuksa/kuksa-databroker-${{github.sha}}-release-with-debug + CONTAINER_PLATFORM: linux/${{ matrix.platform }} + run: | + ${{github.workspace}}/integration_test/run.sh diff --git a/databroker-proto/build.rs b/databroker-proto/build.rs index 1a832c9f..4eec3f11 100644 --- a/databroker-proto/build.rs +++ b/databroker-proto/build.rs @@ -42,6 +42,27 @@ fn main() -> Result<(), Box> { &["proto"], ) .unwrap(); + tonic_build::configure() + .file_descriptor_set_path(out_dir.join("kuksa.val.v1_descriptor.bin")) + .compile( + &[ + "proto/kuksa/val/v1/val.proto", + "proto/kuksa/val/v1/types.proto", + ], + &["proto"], + ) + .unwrap(); + tonic_build::configure() + .file_descriptor_set_path(out_dir.join("sdv.databroker.v1_descriptor.bin")) + .compile( + &[ + "proto/sdv/databroker/v1/broker.proto", + "proto/sdv/databroker/v1/types.proto", + "proto/sdv/databroker/v1/collector.proto", + ], + &["proto"], + ) + .unwrap(); Ok(()) } diff --git a/databroker-proto/src/lib.rs b/databroker-proto/src/lib.rs index 9bc5552c..6161470c 100644 --- a/databroker-proto/src/lib.rs +++ b/databroker-proto/src/lib.rs @@ -16,6 +16,8 @@ pub mod sdv { pub mod databroker { pub mod v1 { + pub const FILE_DESCRIPTOR_SET: &[u8] = + tonic::include_file_descriptor_set!("sdv.databroker.v1_descriptor"); tonic::include_proto!("sdv.databroker.v1"); } } @@ -24,6 +26,8 @@ pub mod sdv { pub mod kuksa { pub mod val { pub mod v1 { + pub const FILE_DESCRIPTOR_SET: &[u8] = + tonic::include_file_descriptor_set!("kuksa.val.v1_descriptor"); tonic::include_proto!("kuksa.val.v1"); use datapoint::Value; diff --git a/databroker/src/broker.rs b/databroker/src/broker.rs index 1af21ab2..78d691ae 100644 --- a/databroker/src/broker.rs +++ b/databroker/src/broker.rs @@ -1707,10 +1707,13 @@ impl AuthorizedAccess<'_, '_> { .await .add_change_subscription(subscription); - let stream = BroadcastStream::new(receiver).filter_map(|result| match result { + let stream = BroadcastStream::new(receiver).filter_map(move |result| match result { Ok(message) => Some(message), Err(err) => { - debug!("Lagged entries: {}", err); + warn!( + "Slow subscriber with capacity {} lagged and missed signal updates: {}", + channel_capacity, err + ); None } }); diff --git a/databroker/src/grpc/server.rs b/databroker/src/grpc/server.rs index b94d1ed2..a7d78e14 100644 --- a/databroker/src/grpc/server.rs +++ b/databroker/src/grpc/server.rs @@ -212,15 +212,15 @@ where } }; + let mut reflection_builder = tonic_reflection::server::Builder::configure() + .register_encoded_file_descriptor_set(kuksa::val::v1::FILE_DESCRIPTOR_SET); let mut router = server.add_optional_service(kuksa_val_v1); if apis.contains(&Api::KuksaValV2) { - let service = tonic_reflection::server::Builder::configure() - .register_encoded_file_descriptor_set(kuksa::val::v2::FILE_DESCRIPTOR_SET) - .build() - .unwrap(); + reflection_builder = reflection_builder + .register_encoded_file_descriptor_set(kuksa::val::v2::FILE_DESCRIPTOR_SET); - router = router.add_service(service).add_optional_service(Some( + router = router.add_optional_service(Some( kuksa::val::v2::val_server::ValServer::with_interceptor( broker.clone(), authorization.clone(), @@ -229,6 +229,9 @@ where } if apis.contains(&Api::SdvDatabrokerV1) { + reflection_builder = reflection_builder + .register_encoded_file_descriptor_set(sdv::databroker::v1::FILE_DESCRIPTOR_SET); + router = router.add_optional_service(Some( sdv::databroker::v1::broker_server::BrokerServer::with_interceptor( broker.clone(), @@ -243,6 +246,9 @@ where )); } + let reflection_service = reflection_builder.build().unwrap(); + router = router.add_service(reflection_service); + router .serve_with_incoming_shutdown(incoming, shutdown(broker, signal)) .await?; diff --git a/doc/debugging.md b/doc/debugging.md new file mode 100644 index 00000000..082cee01 --- /dev/null +++ b/doc/debugging.md @@ -0,0 +1,35 @@ +# Debugging Kuksa Databroker + +For debugging, troubleshooting and specific testing purposes, databroker can be built with a different build profile `release-with-debug`, which enables some symbols to remain in the binary. + +```sh +# in ${WORKSPACE} +cargo build --profile release-with-debug --all-targets +``` + + _Note:_ The size of the databroker (x86_64) binary increases from ~6 MiB to ~60 MiB for the debug build. + +## Profile Configuration + +See [The Cargo Book](https://doc.rust-lang.org/cargo/reference/profiles.html) for details on profile settings. + +- Link Time Optimization (LTO), such as dead code removal, is enabled. +- Optimization Level is "s": optimize for binary size +- Codegen Units is set to 1 for faster code (increased compile time) +- Incremental is disabled for release profiles (no improvements between recompiles) +- Strip is disabled, to keep debug symbols (necessary for eBPF to work) +- Debug is enabled (full debug info) + +```yaml +[profile.release] +lto = true +opt-level = "s" +codegen-units = 1 +incremental = false +strip = true + +[profile.release-with-debug] +inherits = "release" +strip = false +debug = true +``` diff --git a/lib/Cargo.lock b/lib/Cargo.lock index e56be362..e3528e4f 100644 --- a/lib/Cargo.lock +++ b/lib/Cargo.lock @@ -185,6 +185,17 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "databroker-examples" +version = "0.1.0" +dependencies = [ + "kuksa", + "kuksa-common", + "kuksa-sdv", + "tokio", + "tokio-stream", +] + [[package]] name = "databroker-proto" version = "0.6.0-dev.0" @@ -487,6 +498,16 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + [[package]] name = "log" version = "0.4.22" @@ -553,6 +574,29 @@ version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +[[package]] +name = "parking_lot" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets", +] + [[package]] name = "percent-encoding" version = "2.3.1" @@ -730,6 +774,15 @@ dependencies = [ "getrandom", ] +[[package]] +name = "redox_syscall" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +dependencies = [ + "bitflags 2.6.0", +] + [[package]] name = "regex" version = "1.11.1" @@ -839,6 +892,12 @@ version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + [[package]] name = "serde" version = "1.0.215" @@ -865,6 +924,15 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "signal-hook-registry" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +dependencies = [ + "libc", +] + [[package]] name = "slab" version = "0.4.9" @@ -874,6 +942,12 @@ dependencies = [ "autocfg", ] +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + [[package]] name = "socket2" version = "0.5.7" @@ -936,7 +1010,9 @@ dependencies = [ "bytes", "libc", "mio", + "parking_lot", "pin-project-lite", + "signal-hook-registry", "socket2", "tokio-macros", "windows-sys 0.52.0", diff --git a/lib/Cargo.toml b/lib/Cargo.toml index 0aa82b4c..0f83dbca 100644 --- a/lib/Cargo.toml +++ b/lib/Cargo.toml @@ -4,7 +4,8 @@ resolver = "2" members = [ "common", "kuksa", - "sdv" + "sdv", + "databroker-examples" ] [workspace.dependencies] diff --git a/lib/databroker-examples/Cargo.toml b/lib/databroker-examples/Cargo.toml new file mode 100644 index 00000000..6acaa439 --- /dev/null +++ b/lib/databroker-examples/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "databroker-examples" +version = "0.1.0" +edition = "2021" + +[dependencies] +kuksa-common = { path = "../common"} +kuksa = { path = "../kuksa"} +kuksa-sdv = { path = "../sdv"} +tokio = {version = "1.17.0", features = ["full"]} +tokio-stream = "0.1.8" diff --git a/lib/databroker-examples/examples/slow_subscriber.rs b/lib/databroker-examples/examples/slow_subscriber.rs new file mode 100644 index 00000000..8cf47e61 --- /dev/null +++ b/lib/databroker-examples/examples/slow_subscriber.rs @@ -0,0 +1,49 @@ +/******************************************************************************** +* Copyright (c) 2024 Contributors to the Eclipse Foundation +* +* See the NOTICE file(s) distributed with this work for additional +* information regarding copyright ownership. +* +* This program and the accompanying materials are made available under the +* terms of the Apache License 2.0 which is available at +* http://www.apache.org/licenses/LICENSE-2.0 +* +* SPDX-License-Identifier: Apache-2.0 +********************************************************************************/ + +use kuksa::KuksaClient; +use tokio::time::{sleep, Duration}; +use kuksa_common::to_uri; +use std::thread; + +#[tokio::main] +async fn main() { + + // Paths to subscribe + let paths = vec!["Vehicle.Speed"]; + + // Initialize the KuksaClient + let mut client: KuksaClient = KuksaClient::new(to_uri("127.0.0.1:55555").unwrap()); + + // Subscribe to paths + let mut stream = client.subscribe(paths.clone()).await.unwrap(); + + println!("Subscribed to {:?}", paths); + + loop { + match stream.message().await { + Ok(msg) => { + println!("Got message, will wait 5 seconds: {:?}", msg); + // Simulate slow processing by sleeping + sleep(Duration::from_secs(1)).await; + thread::sleep(Duration::from_secs(5)); + } + Err(e) => { + println!("Error while receiving message: {:?}", e); + break; // Exit loop on error + } + } + } + + println!("Exiting subscriber..."); +} diff --git a/scripts/build-databroker.sh b/scripts/build-databroker.sh index 7567d913..fc5950e8 100755 --- a/scripts/build-databroker.sh +++ b/scripts/build-databroker.sh @@ -44,7 +44,9 @@ # https://github.com/eclipse-kuksa/kuksa-common/tree/main/sbom-tools # to be available # - +# KUKSA_DATABROKER_PROFILE +# Set the cargo profile to use. Defaults to "release" +# # exit on error, to not waste any time set -e @@ -72,6 +74,12 @@ if [ -z "$KUKSA_DATABROKER_FEATURES" ]; then KUKSA_DATABROKER_FEATURES="databroker/default" fi +# Check if a certain profile is requested +if [ -z "$KUKSA_DATABROKER_PROFILE" ]; then + # If not set, assign a default value + KUKSA_DATABROKER_PROFILE="release" +fi + SBOM=0 # Check whether to build SBOM if [ ! -z "$KUKSA_DATABROKER_SBOM" ]; then @@ -111,13 +119,16 @@ function build_target() { # /target/release/build/libc-2dd22ab6b5fb9fd2/build-script-build: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.29' not found (required by /target/release/build/libc-2dd22ab6b5fb9fd2/build-script-build) # # this is solved by using different target-dirs for each platform + echo "Environmant variables related to the build:" + env | grep -i -E 'cargo|cross|kuksa' + echo "Building databroker for target $target_rust" - cross build --target $target_rust --target-dir ./target-$target_docker --features $KUKSA_DATABROKER_FEATURES --bin databroker --release + cross build --target $target_rust --target-dir ./target-$target_docker --features $KUKSA_DATABROKER_FEATURES --bin databroker --profile ${KUKSA_DATABROKER_PROFILE} echo "Prepare $target_docker dist folder" rm -rf ./dist/$target_docker || true mkdir ./dist/$target_docker - cp ./target-$target_docker/$target_rust/release/databroker ./dist/$target_docker + cp ./target-$target_docker/$target_rust/${KUKSA_DATABROKER_PROFILE}/databroker ./dist/$target_docker if [[ $SBOM -eq 1 ]]; then echo "Create $target_rust SBOM"