Skip to content

UI tests are broken in musl environments #1236

@BradyBonnette

Description

@BradyBonnette

See: #1235

This issue is more of a reminder to go back and possibly do a more in-depth analysis of why UI tests do not work in musl environments.

In particular, the UI tests seem to be failing with attempting to dynamically loaded libraries:

running 1 test
   Compiling pgrx-pg-sys v0.10.0-beta.1 (/checkout/pgrx-pg-sys)
error: failed to run custom build command for `pgrx-pg-sys v0.10.0-beta.1 (/checkout/pgrx-pg-sys)`

Caused by:
  process didn't exit successfully: `/checkout/target/tests/trybuild/debug/build/pgrx-pg-sys-6668251dbe05f204/build-script-build` (exit status: 101)
  --- stdout
  cargo:rerun-if-env-changed=PGRX_BUILD_VERBOSE
  cargo:rerun-if-env-changed=PGRX_PG_SYS_GENERATE_BINDINGS_FOR_RELEASE
  cargo:rerun-if-env-changed=PGRX_PG_CONFIG_PATH
  cargo:rerun-if-env-changed=PGRX_PG_CONFIG_AS_ENV
  cargo:rerun-if-env-changed=LLVM_CONFIG_PATH
  cargo:rerun-if-env-changed=LIBCLANG_PATH
  cargo:rerun-if-env-changed=LIBCLANG_STATIC_PATH
  cargo:rerun-if-env-changed=BINDGEN_EXTRA_CLANG_ARGS
  cargo:rerun-if-env-changed=BINDGEN_EXTRA_CLANG_ARGS_x86_64-unknown-linux-musl
  cargo:rerun-if-env-changed=BINDGEN_EXTRA_CLANG_ARGS_x86_64_unknown_linux_musl
  cargo:rerun-if-env-changed=PGRX_PG_SYS_GENERATE_BINDINGS_FOR_RELEASE
  cargo:rerun-if-changed=include
  cargo:rerun-if-changed=cshim
  cargo:rerun-if-changed=/home/rust/.pgrx/config.toml
  cargo:rerun-if-env-changed=PGRX_PG_SYS_GENERATE_BINDINGS_FOR_RELEASE
  cargo:rerun-if-env-changed=PGRX_TARGET_INFO_PATH_PG14_x86_64-unknown-linux-musl
  cargo:rerun-if-env-changed=PGRX_TARGET_INFO_PATH_PG14
  cargo:rerun-if-env-changed=PGRX_INCLUDEDIR_SERVER_PG14_x86_64-unknown-linux-musl
  cargo:rerun-if-env-changed=PGRX_INCLUDEDIR_SERVER_PG14
  cargo:rerun-if-env-changed=PGRX_INCLUDEDIR_SERVER_x86_64-unknown-linux-musl
  cargo:rerun-if-env-changed=PGRX_INCLUDEDIR_SERVER
  cargo:rerun-if-env-changed=PGRX_BINDGEN_NO_DETECT_INCLUDES_x86_64-unknown-linux-musl
  cargo:rerun-if-env-changed=PGRX_BINDGEN_NO_DETECT_INCLUDES

  --- stderr
  build_paths=BuildPaths { manifest_dir: "/checkout/pgrx-pg-sys", out_dir: "/checkout/target/tests/trybuild/x86_64-unknown-linux-musl/debug/build/pgrx-pg-sys-976c22b7f866ebfb/out", src_dir: "/checkout/pgrx-pg-sys/src", shim_src: "/checkout/pgrx-pg-sys/cshim", shim_dst: "/checkout/target/tests/trybuild/x86_64-unknown-linux-musl/debug/build/pgrx-pg-sys-976c22b7f866ebfb/out/cshim" }
  Generating bindings for pg14
  thread '<unnamed>' panicked at 'Unable to find libclang: "the `libclang` shared library at /usr/lib/llvm16/lib/libclang.so.16.0.6 could not be opened: Dynamic loading not supported"', /home/rust/.cargo/registry/src/index.crates.io-6f17d22bba15001f/bindgen-0.66.1/lib.rs:604:31
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
  thread 'main' panicked at 'thread panicked while generating bindings: Any { .. }', /checkout/pgrx-pg-sys/build.rs:196:41
test ui ... FAILED

Current theory is that the "-Ctarget-feature=-crt-static" rustflags are somehow ignored/replaced when running the UI tests themselves. This was observed in the "Will It Blend" nighty runs when running pgrx tests in a postgresql-alpine container.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingciWork related to continuous integrationtest-support

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions