Skip to content

Instantly share code, notes, and snippets.

@progzone122
Created May 14, 2025 05:00
Show Gist options
  • Save progzone122/a097c137aecb68770720915849508de2 to your computer and use it in GitHub Desktop.
Save progzone122/a097c137aecb68770720915849508de2 to your computer and use it in GitHub Desktop.
Diesel with MySQL on Arch Linux: mysqlclient-sys v0.4.1 build error

Problem

You're trying to compile a program after adding diesel with the mysql feature, but you're getting an error:

error: failed to run custom build command for `mysqlclient-sys v0.4.1`

Caused by:
  process didn't exit successfully: `/home/diablo/stopfake/backend/target/debug/build/mysqlclient-sys-220ada85d6c3a9cb/build-script-build` (exit status: 101)
  --- stdout
  cargo::rerun-if-env-changed=MYSQLCLIENT_VERSION
  cargo::rerun-if-env-changed=MYSQLCLIENT_INCLUDE_DIR
  cargo::rerun-if-env-changed=MYSQLCLIENT_INCLUDE_DIR_X86_64_UNKNOWN_LINUX_GNU
  cargo::rerun-if-env-changed=MYSQLCLIENT_LIB
  cargo::rerun-if-env-changed=MYSQLCLIENT_LIB_DIR
  cargo::rerun-if-env-changed=MYSQLCLIENT_LIB_DIR_X86_64_UNKNOWN_LINUX_GNU
  cargo::rerun-if-env-changed=MYSQLCLIENT_LIBNAME
  cargo::rerun-if-env-changed=MYSQLCLIENT_LIBNAME_X86_64_UNKNOWN_LINUX_GNU
  cargo::rerun-if-env-changed=MYSQLCLIENT_STATIC
  cargo::rerun-if-env-changed=MYSQLCLIENT_VERSION_X86_64_UNKNOWN_LINUX_GNU
  cargo::rerun-if-env-changed=MYSQLCLIENT_LIB_X86_64_UNKNOWN_LINUX_GNU
  cargo::rerun-if-env-changed=MYSQLCLIENT_STATIC_X86_64_UNKNOWN_LINUX_GNU
  cargo:rerun-if-env-changed=MYSQLCLIENT_NO_PKG_CONFIG
  cargo:rerun-if-env-changed=PKG_CONFIG_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG
  cargo:rerun-if-env-changed=PKG_CONFIG
  cargo:rerun-if-env-changed=MYSQLCLIENT_STATIC
  cargo:rerun-if-env-changed=MYSQLCLIENT_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_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64_unknown_linux_gnu
  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_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64_unknown_linux_gnu
  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_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-env-changed=LIBMARIADB_NO_PKG_CONFIG
  cargo:rerun-if-env-changed=PKG_CONFIG_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG
  cargo:rerun-if-env-changed=PKG_CONFIG
  cargo:rerun-if-env-changed=LIBMARIADB_STATIC
  cargo:rerun-if-env-changed=LIBMARIADB_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_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64_unknown_linux_gnu
  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_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64_unknown_linux_gnu
  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_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR

  --- stderr

  thread 'main' panicked at /home/diablo/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/mysqlclient-sys-0.4.1/build.rs:91:5:
  Did not find a compatible version of libmysqlclient.
  Ensure that you installed one and teached mysqlclient-sys how to find it
  You have the following options for that:

  * Use `pkg_config` to automatically detect the right location
  * Use vcpkg to automatically detect the right location. 
  You also need to set `MYSQLCLIENT_VERSION` to specify which
  version of libmysqlclient you are using
  * Set the `MYSQLCLIENT_LIB_DIR` and `MYSQLCLIENT_VERSION` environment 
  variables to point the compiler to the right directory and specify 
  which version is used
  * Make the `mysql_config` binary avaible in the environment that invokes
  the compiler
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
warning: build failed, waiting for other jobs to finish...

Fix

The error failed to run custom build command for mysqlclient-sys indicates that Rust was unable to build bindings for libmysqlclient - it is a C library and needs system dependencies for it.

sudo pacman -S mariadb mariadb-libs mariadb-clients base-devel pkgconf
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment