Cargo recompiles other crates every time I use their modules in a new way

I'm using the gstreamer rust crates that ffi for the set of gstreamer c libs.

[dependencies]
gstreamer = "0.20.5"
gstreamer-app = "0.20.0"
gstreamer-audio = "0.20.4"
gstreamer-pbutils = "0.20.5"
gstreamer-webrtc = "0.20.4"

Seems like anytime I call a new function or use some new symbol from these crates, while using rust-analyzer, cargo recompiles all of them. I'm getting this kind of output with cargo build -vvvv

[glib-sys 0.17.4] cargo:rerun-if-env-changed=PKG_CONFIG_x86_64_unknown_linux_gnu
[glib-sys 0.17.4] cargo:rerun-if-env-changed=HOST_PKG_CONFIG
[gobject-sys 0.17.4] cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR
[gobject-sys 0.17.4] cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
[glib-sys 0.17.4] cargo:rerun-if-env-changed=PKG_CONFIG
[glib-sys 0.17.4] cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64-unknown-linux-gnu
[glib-sys 0.17.4] cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64_unknown_linux_gnu
[glib-sys 0.17.4] cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH
[glib-sys 0.17.4] cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64_unknown_linux_gnu
[glib-sys 0.17.4] cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR
[gstreamer-audio-sys 0.20.0] cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
[gstreamer-audio-sys 0.20.0] cargo:rerun-if-env-changed=SYSROOT
[gstreamer-audio-sys 0.20.0] cargo:rerun-if-env-changed=PKG_CONFIG_x86_64-unknown-linux-gnu
[gstreamer-audio-sys 0.20.0] cargo:rerun-if-env-changed=PKG_CONFIG_x86_64_unknown_linux_gnu
[gstreamer-audio-sys 0.20.0] cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64-unknown-linux-gnu
[gstreamer-audio-sys 0.20.0] cargo:rerun-if-env-changed=PKG_CONFIG
[gstreamer-app-sys 0.20.0] cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_linux_gnu
[gstreamer-audio-sys 0.20.0] cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64_unknown_linux_gnu
[gstreamer-audio-sys 0.20.0] cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH
[gstreamer-audio-sys 0.20.0] cargo:rerun-if-env-changed=PKG_CONFIG_PATH
[gstreamer-audio-sys 0.20.0] cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64-unknown-linux-gnu
[gstreamer-audio-sys 0.20.0] cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64_unknown_linux_gnu
[gstreamer-audio-sys 0.20.0] cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR
[gstreamer-audio-sys 0.20.0] cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
[gstreamer-audio-sys 0.20.0] cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64-unknown-linux-gnu
[gstreamer-audio-sys 0.20.0] cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_linux_gnu
[gstreamer-audio-sys 0.20.0] cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
[gstreamer-audio-sys 0.20.0] cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
[gstreamer-video-sys 0.20.0] cargo:rustc-link-lib=gstvideo-1.0
[gstreamer-video-sys 0.20.0] cargo:rustc-link-lib=gstbase-1.0
[gstreamer-video-sys 0.20.0] cargo:rustc-link-lib=glib-2.0
[gstreamer-video-sys 0.20.0] cargo:rustc-link-lib=gobject-2.0
[gstreamer-audio-sys 0.20.0] cargo:rerun-if-env-changed=SYSTEM_DEPS_GSTREAMER_AUDIO_1_0_INCLUDE
[gstreamer-video-sys 0.20.0] cargo:include=/usr/include/gstreamer-1.0:/usr/include/glib-2.0:/usr/lib/glib-2.0/include:/usr/include/sysprof-4:/usr/include:/usr/include/orc-0.4
[gstreamer-video-sys 0.20.0] cargo:rerun-if-env-changed=SYSTEM_DEPS_BUILD_INTERNAL
[gstreamer-video-sys 0.20.0] cargo:rerun-if-env-changed=SYSTEM_DEPS_LINK
[gstreamer-video-sys 0.20.0] cargo:rerun-if-env-changed=SYSTEM_DEPS_GSTREAMER_VIDEO_1_0_SEARCH_NATIVE
[gstreamer-video-sys 0.20.0] cargo:rerun-if-env-changed=SYSTEM_DEPS_GSTREAMER_VIDEO_1_0_SEARCH_FRAMEWORK

What can I do about this?

Happened because in my bashrc I am exporting PKG_CONFIG by appending the existing env variable to new values. But removing the append fixed it.

1 Like

This topic was automatically closed 90 days after the last reply. We invite you to open a new topic if you have further questions or comments.