Skip to content

Unable to compile envoy-proxy-dynamic-modules-rust-sdk crate #3677

@turmanticant

Description

@turmanticant

What

Hey! I have a project using the rust bindings for envoys dynamic modules sdk that I am trying to bring into a monorepo. When I try to include it in my project it fails to compile.

Currently cargo successfully builds this crate. Bazel raises this error.

thread 'main' panicked at external/rules_rust++crate+crates__envoy-proxy-dynamic-modules-rust-sdk-0.1.0/build.rs:29:6:
Unable to generate bindings: NotExist("../../abi_version.h")

This crate generates bindings from cc sources outside of the crate root.

Full Error

ERROR: /home/user/.cache/bazel/_bazel_user/34c6fa7f467484e23b6742c76862b361/external/rules_rust++crate+crates__envoy-proxy-dynamic-modules-rust-sdk-0.1.0/BUILD.bazel:77:19: Running Cargo build script envoy-proxy-dynamic-modules-rust-sdk failed: (Exit 1): runner failed: error executing CargoBuildScriptRun command (from target @@rules_rust++crate+crates__envoy-proxy-dynamic-modules-rust-sdk-0.1.0//:_bs) bazel-out/k8-opt-exec-ST-d57f47055a04/bin/external/rules_rust+/cargo/cargo_build_script_runner/runner ... (remaining 10 arguments skipped)

Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
Build script process failed with exit code 101
--stdout:
cargo:rerun-if-changed=abi.h
cargo:rerun-if-env-changed=TARGET
cargo:rerun-if-env-changed=BINDGEN_EXTRA_CLANG_ARGS_x86_64-unknown-linux-gnu
cargo:rerun-if-env-changed=BINDGEN_EXTRA_CLANG_ARGS_x86_64_unknown_linux_gnu
cargo:rerun-if-env-changed=BINDGEN_EXTRA_CLANG_ARGS
cargo:rerun-if-changed=../../abi.h
cargo:rerun-if-changed=../../abi_version.h

--stderr:

thread 'main' panicked at external/rules_rust++crate+crates__envoy-proxy-dynamic-modules-rust-sdk-0.1.0/build.rs:29:6:
Unable to generate bindings: NotExist("../../abi_version.h")
stack backtrace:
   0:     0x55d4cb823472 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::hdcfcb6d4c8489523
   1:     0x55d4cb84a063 - core::fmt::write::h8a494366950f23bb
   2:     0x55d4cb8203f3 - std::io::Write::write_fmt::h6556609fca33d0b1
   3:     0x55d4cb8232c2 - std::sys::backtrace::BacktraceLock::print::hb2a626a81e06b2dc
   4:     0x55d4cb8247a3 - std::panicking::default_hook::{{closure}}::h4f78485264f12d10
   5:     0x55d4cb824585 - std::panicking::default_hook::h2c66fc99e962531d
   6:     0x55d4cb8251b5 - std::panicking::rust_panic_with_hook::h33ac55f64bbd807d
   7:     0x55d4cb824f4a - std::panicking::begin_panic_handler::{{closure}}::h30e7cb89678a57fe
   8:     0x55d4cb823979 - std::sys::backtrace::__rust_end_short_backtrace::hed60f27456c16ced
   9:     0x55d4cb824bdd - __rustc[de2ca18b4c54d5b8]::rust_begin_unwind
  10:     0x55d4cb848530 - core::panicking::panic_fmt::h62f63d096dd276af
  11:     0x55d4cb8488f6 - core::result::unwrap_failed::h95bc3f5a607b2c95
  12:     0x55d4cb40ddc2 - build_script_build::main::h64096fa5741dcf99
  13:     0x55d4cb40aaf3 - std::sys::backtrace::__rust_begin_short_backtrace::h9c32449f57da8917
  14:     0x55d4cb40a9c9 - std::rt::lang_start::{{closure}}::h5aeb0c5d39d6e5e1
  15:     0x55d4cb81b2c0 - std::rt::lang_start_internal::h34f9328d113fd60a
  16:     0x55d4cb40e0c5 - main
  17:     0x7f36fa23f575 - __libc_start_call_main
  18:     0x7f36fa23f628 - __libc_start_main_alias_2
  19:     0x55d4cb4080c5 - _start
  20:                0x0 - <unknown>

Generated BULID File

###############################################################################
# @generated
# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To 
# regenerate this file, run the following:
#
#     bazel mod show_repo 'module'
###############################################################################

load(
    "@rules_rust//cargo:defs.bzl",
    "cargo_build_script",
    "cargo_toml_env_vars",
)

load("@rules_rust//rust:defs.bzl", "rust_library")

# buildifier: disable=bzl-visibility
load("@rules_rust//crate_universe/private:selects.bzl", "selects")

package(default_visibility = ["//visibility:public"])

cargo_toml_env_vars(
    name = "cargo_toml_env_vars",
    src = "Cargo.toml",
)

rust_library(
    name = "envoy_proxy_dynamic_modules_rust_sdk",
    deps = [
        "@crates__envoy-proxy-dynamic-modules-rust-sdk-0.1.0//:build_script_build",
        "@crates__mockall-0.13.1//:mockall",
    ],
    compile_data = glob(
        allow_empty = True,
        include = ["**"],
        exclude = [
            "**/* *",
            ".tmp_git_root/**/*",
            "BUILD",
            "BUILD.bazel",
            "WORKSPACE",
            "WORKSPACE.bazel",
        ],
    ),
    crate_root = "src/lib.rs",
    edition = "2021",
    rustc_env_files = [
        ":cargo_toml_env_vars",
    ],
    rustc_flags = [
        "--cap-lints=allow",
    ],
    srcs = glob(
        allow_empty = True,
        include = ["**/*.rs"],
    ),
    tags = [
        "cargo-bazel",
        "crate-name=envoy-proxy-dynamic-modules-rust-sdk",
        "manual",
        "noclippy",
        "norustfmt",
    ],
    target_compatible_with = select({
        "@rules_rust//rust/platform:aarch64-apple-darwin": [],
        "@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
        "@rules_rust//rust/platform:wasm32-unknown-unknown": [],
        "@rules_rust//rust/platform:wasm32-wasip1": [],
        "@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
        "@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
        "@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
        "//conditions:default": ["@platforms//:incompatible"],
    }),
    version = "0.1.0",
)

cargo_build_script(
    name = "_bs",
    compile_data = glob(
        allow_empty = True,
        include = ["**"],
        exclude = [
            "**/* *",
            "**/*.rs",
            ".tmp_git_root/**/*",
            "BUILD",
            "BUILD.bazel",
            "WORKSPACE",
            "WORKSPACE.bazel",
        ],
    ),
    crate_name = "build_script_build",
    crate_root = "build.rs",
    data = glob(
        allow_empty = True,
        include = ["**"],
        exclude = [
            "**/* *",
            ".tmp_git_root/**/*",
            "BUILD",
            "BUILD.bazel",
            "WORKSPACE",
            "WORKSPACE.bazel",
        ],
    ),
    deps = [
        "@crates__bindgen-0.70.1//:bindgen",
    ],
    edition = "2021",
    pkg_name = "envoy-proxy-dynamic-modules-rust-sdk",
    rustc_env_files = [
        ":cargo_toml_env_vars",
    ],
    rustc_flags = [
        "--cap-lints=allow",
    ],
    srcs = glob(
        allow_empty = True,
        include = ["**/*.rs"],
    ),
    tags = [
        "cargo-bazel",
        "crate-name=envoy-proxy-dynamic-modules-rust-sdk",
        "manual",
        "noclippy",
        "norustfmt",
    ],
    version = "0.1.0",
    visibility = ["//visibility:private"],
)

alias(
    name = "build_script_build",
    actual = ":_bs",
    tags = ["manual"],
)

Reproduction Steps

Add dynamic modules to your Cargo.toml. I have also tried this with the starlark rules in my MODULE.bazel to the same effect.

envoy-proxy-dynamic-modules-rust-sdk = {	git = "https://github.com/envoyproxy/envoy",rev = "dc2d3098ae5641555f15c71d5bb5ce0060a8015c"}

Add the crate to a rust_binary. The code doesn't need to import anything from the crate, it just needs to be in the deps.

rust_binary(
    name = "hello_world",
    srcs = ["main.rs"],
    deps = ["@crates//:envoy-proxy-dynamic-modules-rust-sdk"],
)

Build the above target to trigger the error.

bazel build //:hello_world
# see 'full error' above for output

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions