pop-os / xdg-desktop-portal-cosmic

GNU General Public License v3.0
37 stars 35 forks source link

unknown type name 'bool' #6

Closed yochananmarqos closed 1 year ago

yochananmarqos commented 1 year ago

While building cosmic-epoch using the cosmic-epoch-git AUR package, during the xdg-desktop-portal-cosmic build stage:

   Compiling pipewire-sys v0.6.0 (https://gitlab.freedesktop.org/pipewire/pipewire-rs#0656c386)
error: failed to run custom build command for `libspa-sys v0.6.0 (https://gitlab.freedesktop.org/pipewire/pipewire-rs#0656c386)`

Caused by:
  process didn't exit successfully: `/build/cosmic-epoch-git/src/cosmic-epoch/xdg-desktop-portal-cosmic/target/release/build/libspa-sys-087c8712d938be6b/build-script-build` (exit status: 101)
  --- stdout
  cargo:rerun-if-env-changed=LIBPIPEWIRE_0.3_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=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=PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-env-changed=SYSROOT
  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=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=LIBSPA_0.2_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=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=PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-env-changed=SYSROOT
  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=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:rustc-link-lib=pipewire-0.3
  cargo:include=/usr/include/pipewire-0.3:/usr/include/spa-0.2:/usr/include/spa-0.2
  cargo:rerun-if-env-changed=SYSTEM_DEPS_BUILD_INTERNAL
  cargo:rerun-if-env-changed=SYSTEM_DEPS_LINK
  cargo:rerun-if-env-changed=SYSTEM_DEPS_LIBPIPEWIRE_LIB
  cargo:rerun-if-env-changed=SYSTEM_DEPS_LIBPIPEWIRE_LIB_FRAMEWORK
  cargo:rerun-if-env-changed=SYSTEM_DEPS_LIBPIPEWIRE_SEARCH_NATIVE
  cargo:rerun-if-env-changed=SYSTEM_DEPS_LIBPIPEWIRE_SEARCH_FRAMEWORK
  cargo:rerun-if-env-changed=SYSTEM_DEPS_LIBPIPEWIRE_INCLUDE
  cargo:rerun-if-env-changed=SYSTEM_DEPS_LIBPIPEWIRE_NO_PKG_CONFIG
  cargo:rerun-if-env-changed=SYSTEM_DEPS_LIBPIPEWIRE_BUILD_INTERNAL
  cargo:rerun-if-env-changed=SYSTEM_DEPS_LIBPIPEWIRE_LINK
  cargo:rerun-if-env-changed=SYSTEM_DEPS_LIBSPA_LIB
  cargo:rerun-if-env-changed=SYSTEM_DEPS_LIBSPA_LIB_FRAMEWORK
  cargo:rerun-if-env-changed=SYSTEM_DEPS_LIBSPA_SEARCH_NATIVE
  cargo:rerun-if-env-changed=SYSTEM_DEPS_LIBSPA_SEARCH_FRAMEWORK
  cargo:rerun-if-env-changed=SYSTEM_DEPS_LIBSPA_INCLUDE
  cargo:rerun-if-env-changed=SYSTEM_DEPS_LIBSPA_NO_PKG_CONFIG
  cargo:rerun-if-env-changed=SYSTEM_DEPS_LIBSPA_BUILD_INTERNAL
  cargo:rerun-if-env-changed=SYSTEM_DEPS_LIBSPA_LINK

  cargo:rustc-cfg=system_deps_have_libpipewire
  cargo:rustc-cfg=system_deps_have_libspa
  cargo:rerun-if-changed=wrapper.h

  --- stderr
  /usr/include/pipewire-0.3/pipewire/version.h:25:1: error: unknown type name 'bool'
  thread 'main' panicked at 'Unable to generate bindings: ClangDiagnostic("/usr/include/pipewire-0.3/pipewire/version.h:25:1: error: unknown type name 'bool'\n")', /build/cosmic-epoch-git/src/cargo-home/git/checkouts/pipewire-rs-e803a8db90410a99/0656c38/libspa-sys/build.rs:43:39
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
warning: build failed, waiting for other jobs to finish...
make: *** [Makefile:33: xdg-desktop-portal-cosmic] Error 101
make: Leaving directory '/build/cosmic-epoch-git/src/cosmic-epoch/xdg-desktop-portal-cosmic'
error: Recipe `build` failed on line 18 with exit code 2

Cosmic-epoch built fine on July 11th. Since then, we now have libpipewire 1:0.3.75-1 and gcc 13.1.1-2.

Line 25 of /usr/include/pipewire-0.3/pipewire/version.h:

bool pw_check_library_version(int major, int minor, int micro);
metamacro commented 1 year ago

Seems like there's a simple fix for the build to pass:

...
==> Creating package "cosmic-epoch-git"...
  -> Generating .PKGINFO file...
  -> Generating .BUILDINFO file...
  -> Generating .MTREE file...
  -> Compressing package...
==> Leaving fakeroot environment.
==> Finished making: cosmic-epoch-git r78.a9a8a74-1 (Sun 23 Jul 2023 10:46:30 PM CEST)
==> Cleaning up...
...

The definition for bool needs to be included from the stdbool.h header file in the /usr/include/pipewire-0.3/pipewire/version.h header file, i.e., by applying the following Git diff in Pipewire's GitLab project repository:

diff --git a/src/pipewire/version.h.in b/src/pipewire/version.h.in
index 87fc0cfad..7ed14c7fd 100644
--- a/src/pipewire/version.h.in
+++ b/src/pipewire/version.h.in
@@ -11,6 +11,8 @@
 extern "C" {
 #endif

+#include <stdbool.h> /* bool */
+
 /** Return the version of the header files. Keep in mind that this is
 a macro and not a function, so it is impossible to get the pointer of
 it. */

Included it inside the C++ extern "C" just in case.

yochananmarqos commented 1 year ago

...applying the following Git diff in Pipewire's GitLab project repository

Where did you find that?

metamacro commented 1 year ago

Where did you find that?

Oh, I wrote it

yochananmarqos commented 1 year ago

It's now fixed with libpipewire 1:0.3.75-2 pipewire MR 1664 applied.