samael icon indicating copy to clipboard operation
samael copied to clipboard

Binding error `xmlExternalEntityLoader` on xmlsec1 1.3.2

Open gbouv opened this issue 1 year ago • 2 comments

I'm on MacOS and brew just upgraded xmlsec1 from 1.3.1 to 1.3.2. I'm now seeing this error when I compile my project depending on samael:

error: failed to run custom build command for `samael v0.0.14`

Caused by:
  process didn't exit successfully: `/Users/<USERNAME>/git/windmill/backend/target/debug/build/samael-46b70a6cc507485f/build-script-bindings` (exit status: 101)
  --- stdout
  cargo:rustc-cfg=xmlsec_static
  cargo:rustc-link-lib=xmlsec1-openssl
  cargo:rustc-link-lib=xmlsec1
  cargo:rustc-link-lib=xml2
  cargo:rustc-link-lib=ssl
  cargo:rustc-link-lib=crypto
  cargo:rerun-if-env-changed=XMLSEC1_NO_PKG_CONFIG
  cargo:rerun-if-env-changed=PKG_CONFIG_aarch64-apple-darwin
  cargo:rerun-if-env-changed=PKG_CONFIG_aarch64_apple_darwin
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG
  cargo:rerun-if-env-changed=PKG_CONFIG
  cargo:rerun-if-env-changed=XMLSEC1_STATIC
  cargo:rerun-if-env-changed=XMLSEC1_DYNAMIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_STATIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_DYNAMIC
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_aarch64-apple-darwin
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_aarch64_apple_darwin
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_aarch64-apple-darwin
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_aarch64_apple_darwin
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_aarch64-apple-darwin
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_aarch64_apple_darwin
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-env-changed=XMLSEC1_STATIC
  cargo:rerun-if-env-changed=XMLSEC1_DYNAMIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_STATIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_DYNAMIC
  cargo:rustc-link-search=native=/opt/homebrew/Cellar/libxml2/2.12.1/lib
  cargo:rustc-link-search=native=/opt/homebrew/Cellar/libxslt/1.1.39/lib
  cargo:rustc-link-search=native=/opt/homebrew/Cellar/libxmlsec1/1.3.2/lib
  cargo:rustc-link-search=native=/opt/homebrew/opt/openssl@3/lib
  cargo:rustc-link-lib=xmlsec1-openssl
  cargo:rustc-link-lib=xmlsec1
  cargo:rustc-link-lib=crypto
  cargo:rustc-link-lib=xslt
  cargo:rustc-link-lib=xml2
  cargo:rerun-if-env-changed=PKG_CONFIG_aarch64-apple-darwin
  cargo:rerun-if-env-changed=PKG_CONFIG_aarch64_apple_darwin
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG
  cargo:rerun-if-env-changed=PKG_CONFIG
  cargo:rerun-if-env-changed=XMLSEC1_STATIC
  cargo:rerun-if-env-changed=XMLSEC1_DYNAMIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_STATIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_DYNAMIC
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_aarch64-apple-darwin
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_aarch64_apple_darwin
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_aarch64-apple-darwin
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_aarch64_apple_darwin
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_aarch64-apple-darwin
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_aarch64_apple_darwin
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR

  --- stderr
  warning: -lxmlsec1-openssl: 'linker' input unused [-Wunused-command-line-argument]
  warning: -lxmlsec1: 'linker' input unused [-Wunused-command-line-argument]
  warning: -lz: 'linker' input unused [-Wunused-command-line-argument]
  warning: -licui18n: 'linker' input unused [-Wunused-command-line-argument]
  warning: -licuuc: 'linker' input unused [-Wunused-command-line-argument]
  warning: -licudata: 'linker' input unused [-Wunused-command-line-argument]
  warning: -liconv: 'linker' input unused [-Wunused-command-line-argument]
  warning: -lxslt: 'linker' input unused [-Wunused-command-line-argument]
  warning: -lxml2: 'linker' input unused [-Wunused-command-line-argument]
  warning: -lcrypto: 'linker' input unused [-Wunused-command-line-argument]
  warning: argument unused during compilation: '-L/opt/homebrew/Cellar/libxmlsec1/1.3.2/lib' [-Wunused-command-line-argument]
  warning: argument unused during compilation: '-L/opt/homebrew/Cellar/libxml2/2.12.1/lib' [-Wunused-command-line-argument]
  warning: argument unused during compilation: '-L/opt/homebrew/Cellar/icu4c/73.2/lib' [-Wunused-command-line-argument]
  warning: argument unused during compilation: '-L/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib' [-Wunused-command-line-argument]
  warning: argument unused during compilation: '-L/opt/homebrew/opt/openssl@3/lib' [-Wunused-command-line-argument]
  /opt/homebrew/Cellar/libxmlsec1/1.3.2/include/xmlsec1/xmlsec/xmlsec.h:100:80: error: unknown type name 'xmlExternalEntityLoader'
  clang diag: warning: -lxmlsec1-openssl: 'linker' input unused [-Wunused-command-line-argument]
  clang diag: warning: -lxmlsec1: 'linker' input unused [-Wunused-command-line-argument]
  clang diag: warning: -lz: 'linker' input unused [-Wunused-command-line-argument]
  clang diag: warning: -licui18n: 'linker' input unused [-Wunused-command-line-argument]
  clang diag: warning: -licuuc: 'linker' input unused [-Wunused-command-line-argument]
  clang diag: warning: -licudata: 'linker' input unused [-Wunused-command-line-argument]
  clang diag: warning: -liconv: 'linker' input unused [-Wunused-command-line-argument]
  clang diag: warning: -lxslt: 'linker' input unused [-Wunused-command-line-argument]
  clang diag: warning: -lxml2: 'linker' input unused [-Wunused-command-line-argument]
  clang diag: warning: -lcrypto: 'linker' input unused [-Wunused-command-line-argument]
  clang diag: warning: argument unused during compilation: '-L/opt/homebrew/Cellar/libxmlsec1/1.3.2/lib' [-Wunused-command-line-argument]
  clang diag: warning: argument unused during compilation: '-L/opt/homebrew/Cellar/libxml2/2.12.1/lib' [-Wunused-command-line-argument]
  clang diag: warning: argument unused during compilation: '-L/opt/homebrew/Cellar/icu4c/73.2/lib' [-Wunused-command-line-argument]
  clang diag: warning: argument unused during compilation: '-L/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib' [-Wunused-command-line-argument]
  clang diag: warning: argument unused during compilation: '-L/opt/homebrew/opt/openssl@3/lib' [-Wunused-command-line-argument]
  thread 'main' panicked at /Users/gbouvignies/.cargo/registry/src/index.crates.io-6f17d22bba15001f/samael-0.0.14/bindings.rs:52:49:
  Unable to generate bindings: ClangDiagnostic("/opt/homebrew/Cellar/libxmlsec1/1.3.2/include/xmlsec1/xmlsec/xmlsec.h:100:80: error: unknown type name 'xmlExternalEntityLoader'\n")
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
warning: build failed, waiting for other jobs to finish...

Note: a bunch of other libraries got upgraded, but I'm mentioning only xmlsec1 here since it's the one from the stacktrace. Happy to provide the entire list of upgrades if it can help.

Any clue what might be at play here? I'm not seeing any noticeable change in the xmlsec1 source code, especially in this .h file here, so I'm not entirely sure. Any help would be appreciated :)

gbouv avatar Dec 07 '23 11:12 gbouv

I also did encounter this error around the same time, although I am using xmlsec 1.2.37. The issue is probably caused by libxml2 and not xmlsec.

I was able to 'fix' the build process by adding #include <libxml/parser.h> to the bindings.h in samael. While this works, it's obviously not a good idea.

Today I noticed that the issue is gone with libxml2 2.12.3. Build fixes include 'Add missing includes', so I guess this was the culprit.

janst97 avatar Dec 20 '23 13:12 janst97

We are experiencing this as well!

jessfraz avatar Mar 09 '24 22:03 jessfraz