Missing protobuf configuration when installing via ue4-conan - cmake

I'm trying to get gRPC running in Unreal Engine 4, using the conan-ue4cli tool. I use the provided grpc-ue4 recipe linked here: https://github.com/adamrehn/ue4-conan-recipes/tree/master/grpc-ue4
While running ue4 conan build "grpc-ue4" an error is thrown "Could not find a package configuration file provided by "Protobuf""
Output:
...
-- Looking for pthread.h
-- Looking for pthread.h - not found
-- Found Threads: TRUE
-- Found c-ares: C:/Users/Redux Gamer/.conan/data/cares-ue4/1.16.1/adamrehn/4.27/package/7333dc905312a2df09e78e1a60d59e628a5f0321/lib/cmake/c-ares/c-ares-config.cmake (found suitable version "1.16.1", minimum required is "1.13.0")
CMake Error at cmake/protobuf.cmake:58 (find_package):
Could not find a package configuration file provided by "Protobuf" with any
of the following names:
ProtobufConfig.cmake
protobuf-config.cmake
Add the installation prefix of "Protobuf" to CMAKE_PREFIX_PATH or set
"Protobuf_DIR" to a directory containing one of the above files. If
"Protobuf" provides a separate development package or SDK, be sure it has
been installed.
Call Stack (most recent call first):
CMakeLists.txt:224 (include)
-- Configuring incomplete, errors occurred!
See also "C:/.conan/9d531a/1/CMakeFiles/CMakeOutput.log".
See also "C:/.conan/9d531a/1/CMakeFiles/CMakeError.log".
grpc-ue4/1.30.2#adamrehn/4.27:
grpc-ue4/1.30.2#adamrehn/4.27: ERROR: Package 'bf9f4e336e64d98ce96ba6aaac093ac1ff3705d4' build failed
grpc-ue4/1.30.2#adamrehn/4.27: WARN: Build folder C:\.conan\9d531a\1
ERROR: grpc-ue4/1.30.2#adamrehn/4.27: Error in build() method, line 98
cmake.configure(source_folder="grpc", args=self.cmake_flags())
ConanException: Error 1 while executing cd C:\.conan\9d531a\1 && ...
I'm running Windows 10, UE4.27, python 3.7.8, cmake 3.21.3. I tried searching for the missing protobuf-config.cmake but it also can't be found in the conan or project folder.
Any suggestions or pointers where to look would be greatly appreciated.
The responsible conan-file is here: https://github.com/adamrehn/ue4-conan-recipes/tree/master/grpc-ue4/1.30.2

This got broken with commit 865c38e99f694e63fd109ae06423472ebb7885a3 (see: https://github.com/adamrehn/ue4-conan-recipes/pull/8)
Reverting this change solved it for me.
To manually fix this:
Go to C:\Users\USERNAME.conan\data\grpc-ue4\1.30.2\adamrehn\4.27\export\conanfile.py and in line 51 change:
"-DProtobuf_DIR=" + os.path.join(protobuf.rootpath, "lib/cmake/protobuf"),
to
"-DProtobuf_DIR=" + os.path.join(protobuf.rootpath, "cmake"),
Then you need to run the command with the --no-cache parameter (otherwise the recipe will be replaced again by the original)
ue4 conan build grpc-ue4 --no-cache

Related

Build libmariadb with Yocto

I am trying to make a recipe for a C++ app that uses libmariadb. While developing I was using vcpkg but now I want to use Yocto.
Here is the application_1.0.0.bb file:
# Metadata
SUMMARY = "Customer API Backend"
DESCRIPTION = "Customer API in C++ using gRPC"
# License is closed, no checksum to avoid warnings
LICENSE = "CLOSED"
LIC_FILE_CHKSUM = ""
DEPENDS = "protobuf protobuf-c protobuf-native grpc grpc-native openssl mariadb poco"
SRCREV = "${AUTOREV}"
SRC_URI = "git://git#gitlab.com/software/projects/embedded/application.git;protocol=ssh;branch=master;"
S = "${WORKDIR}/git"
inherit pkgconfig cmake
Here is the CMake part that poses problem with Yocto:
find_package(unofficial-libmariadb CONFIG REQUIRED)
find_package(Poco REQUIRED COMPONENTS Data DataMySQL)
target_link_libraries(database_api
PRIVATE
unofficial::libmariadb
Poco::DataMySQL
)
I get this error message during the configure step (CMake):
CMake Error at src/libraries/external_interfaces/database_api/CMakeLists.txt:20 (find_package):
Could not find a package configuration file probided by
"unofficial-libmariadb" with any of the following names:
unofficial-libmariadbConfig.cmake
unofficial-libmariadb-config.cmake
Add the installation prefix of "unofficial-libmariadb" to CMAKE_PREFIX_PATH
or set "unofficial-libmariadb_DIR" to a directory containing one of the
above files. If "unofficial-libmariadb" provides a separate development
package or SDK, be sure it has been installed.
I tried adding mariadb-native to the DEPENDS on the bitbake recipe but then I get this error messagewhen configuring mariadb-native`:
CMake Error at /home/oe-core/build/tmp/work/x86_64-linux/mariadb-native/10.7.5-r0/recipe-sysroot-native/usr/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Could NOT find GnuTLS (missing: GNUTLS_LIBRARY GNUTLS_INCLUDE_DIR)
(Required is at least version "3.3.24")
Call Stack (most recent call first):
(...)
-- Configuring incomplete, errors occurred!
Ok I figured it out by using more recent versions of the mariadb recipes + vcpkg mariadb port patches:
For the mariadb-native build:
Add a mariadb-native_%.bbappend in a recipes-dbs/mysql/ folder in your layer:
DEPENDS:append = " gnutls-native fmt-native"
Alternative is to have the more recent mariadb-native_%.bb recipe as it is already included. If, like me, you have 10.7.4 or something, the bbappend is required.
For the unofficial-mariadb target:
Using Yocto's devtool on mariadb recipe, I just reproduced the patches that vcpkg port of libmariadb has (found here: https://github.com/microsoft/vcpkg/tree/master/ports/libmariadb). The one that matters is the modification to libmariadb/CMakeLists.txt (but from mariadb recipe this is libmariadb/libmariadb/CMakeLists.txt since this is a higher repo layer). This patch export unofficial-libmariadb and also uses the unofficial:: namespace. This makes my project compatible.

CMake hunter error: `Unexpected MSVC_VERSION`

First of all, thank you for taking your time to help!
System: Windows 10 x64
cmake version: 3.24.1
Visual Studio 2022 v17.3.3
Console with admin privileges: Developer Command Prompt for VS 2022
Perl (Strawberry Perl): perl 5, version 32, subversion 1 (v5.32.1) built for MSWin32-x64-multi-thread
I am trying to compile kawpowminer from https://github.com/RavenCommunity/kawpowminer.
I already found some other solutions to similar errors but they haven't helped me.
Looked into those files (every single one printed out in the error) and found the lines with "hunter_add_package" as the cause of those errors.
I also changed 2019 to 2022 and 15 to 17 in those config files and edited the paths if needed.
I cloned at C:\Users\MEuser\kp the described git-project from "https://github.com/RavenCommunity/kawpowminer".
This is my script, the last line is causing the error. No errors are printed out before.
mkdir kp
cd kp
git clone https://github.com/RavenCommunity/kawpowminer
cd kawpowminer
git submodule update --init --recursive
cd build
cmake -G "Visual Studio 16 2019" -A X64 -H. -Bbuild -DETHASHCL=ON -DETHASHCUDA=ON -DAPICORE=ON ..
cd build
cmake --build . --config Release
Console: Developer Command Prompt for VS 2022
CMake Warning: Ignoring extra path from command line:
"C:/Users/Meuser/k2/kawpowminer/build"
-- [cable ] Cable 0.2.14 initialized
-- Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.19044.
-- [cable ] Configurations: Release;RelWithDebInfo
-- [hunter] Calculating Toolchain-SHA1
-- [hunter] Calculating Config-SHA1
-- [hunter] HUNTER_ROOT: C:/.hunter
-- [hunter] [ Hunter-ID: e14bc15 | Toolchain-ID: b0b5bc7 | Config-ID: 196746b ]
[hunter ** INTERNAL **] Unexpected MSVC_VERSION: '1933' [hunter **
INTERNAL **] [Directory:C:/Users/MEuser/k2/kawpowminer]
--lol------------------------- ERROR ------------------------lol--
https://docs.hunter.sh/en/latest/reference/errors/error.internal.html
------------------------------------------------------------------
CMake Error at
C:/.hunter/_Base/Download/Hunter/0.23.214/e14bc15/Unpacked/cmake/modules/hunter_error_page.cmake:12
(message): Call Stack (most recent call first):
C:/.hunter/_Base/Download/Hunter/0.23.214/e14bc15/Unpacked/cmake/modules/hunter_internal_error.cmake:13 (hunter_error_page)
C:/.hunter/_Base/Download/Hunter/0.23.214/e14bc15/Unpacked/cmake/modules/hunter_setup_msvc.cmake:73
(hunter_internal_error)
C:/.hunter/_Base/Download/Hunter/0.23.214/e14bc15/Unpacked/cmake/modules/hunter_finalize.cmake:117
(hunter_setup_msvc)
C:/.hunter/_Base/Download/Hunter/0.23.214/e14bc15/Unpacked/cmake/modules/hunter_add_package.cmake:23
(hunter_finalize) CMakeLists.txt:56 (hunter_add_package)
-- Configuring incomplete, errors occurred!
I did found similar errors in the internet and on stack but nothing really helped me.
I also searched through the files and the config (CMakeLists.txt) and researched some lines, but I really didnt found anything interesting, similar or working.
(it's 5am in my country, please don't assume I didn't researched a lot or anything, I am just lost)
I also tried different includes for the HunterGate like
include("cmake/HunterGate.make")
HunterGate(
URL "https://github.com/ruslo/hunter/archive/v0.23.33.tar.gz"
SHA1 "abcf4b9b77b5a0160abc1da1cdda35f64b14196a"
)
But at this point I have to admit, I don't know what I am actually doing...
Investigating your error message,
[hunter ** INTERNAL **] Unexpected MSVC_VERSION: '1933' [hunter **
INTERNAL **] [Directory:C:/Users/MEuser/k2/kawpowminer]
I'm pretty sure this is fixed by this hunter PR ("Add support for Visual Studio 17 2022" #484), which added the following to :/cmake/modules/hunter_setup_msvc.cmake:
# ...
string(REGEX MATCH "^193[0-9]$" _vs_17_2022 "${MSVC_VERSION}")
# ...
elseif(_vs_17_2022)
set(HUNTER_MSVC_VERSION "17")
set(HUNTER_MSVC_YEAR "2022")
# ...
The solution is to update your hunter version to get this fix.
I think the Hunter first step docs should be all the information you need. Just change the HunterGate URL to use v0.23.317.
You get a gold star from me for providing so many details in your question (I think you were just missing what hunter version you're using).
If I could add a bit more to my answer, I'd say that reading long error messages to find the important parts and googling key phrases is useful (a skill? / a helpful trick?). If this is truly the cause of your issue, with luck, it's possible to find the answer yourself in less than 5 minutes. I just read your error message, and googled:
hunter "Unexpected MSVC_VERSION"
(the quotes means to look for an exact match)
, which led me to hunter_setup_msvc.cmake in the old hunter repo, and then I just went to the new repo, went to the file, and (by luck) the GitHub banner for most recent commit said "tnixeu add msvc17_2022 to huter_setup_msvc.cmake (#484)".
* Bonus link to wikipedia on MSVC versions.

Requested modules not available: vtkRendering

I have been trying to build VTK and run the first example in the tutorial,
the cone , but when I do
cmake .
I got the following Error:
CMake Error at /usr/local/lib/cmake/vtk-6.3/vtkModuleAPI.cmake:120 (message):
Requested modules not available:
vtkRendering
Call Stack (most recent call first):
/usr/local/lib/cmake/vtk-6.3/VTKConfig.cmake:80 (vtk_module_config)
CMakeLists.txt:11 (find_package)
-- Configuring incomplete, errors occurred!
I am using Red Hat Enterprise Linux Server release 5.5 (Tikanga).
Any suggestion would be appriciated!
I had the same problem, simply due to the fact that "vtkRendering" itself does not exist in recent versions of VTK (I'm using 6.3).
You should specify for example vtkRenderingOpenGL, or vtkRenderingQt, etc...
Hope it helps!

FindPostgreSQL.cmake won't work on ubuntu

Ubuntu 12.04
CMake 2.8.9
Postgresql 9.2.2
I'm trying to get the FindPostgreSQL module to find /usr/include/postgresql/libpq-fe.h.
Here's what I have in my CMakeLists.txt:
find_package(PostgreSQL REQUIRED)
This is the error I get:
CMake Error at /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:97 (MESSAGE):
Could NOT find PostgreSQL (missing: PostgreSQL_TYPE_INCLUDE_DIR) (found
version "9.2.2")
Call Stack (most recent call first):
/usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:288 (_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake-2.8/Modules/FindPostgreSQL.cmake:155 (find_package_handle_standard_args)
CMakeLists.txt:7 (find_package)
I added the following lines before calling find_package but it didn't seem to have any effect.
set(PostgreSQL_ADDITIONAL_VERSIONS "9.2.2")
set(PostgreSQL_ADDITIONAL_SEARCH_PATHS ${PostgreSQL_ADDITIONAL_SEARCH_PATHS} "/usr/include/postgresql")
I also tried googling for PostgreSQL_TYPE_INCLUDE_DIR but didn't find anything. What else can I try?
Make sure you've installed both libpq-dev\ and postgresql-server-dev-all (or specific version e.g. postgresql-server-dev-9.4)
$ dpkg --get-selections | grep -e "libpq-dev\|postgresql-server-dev"
in case you're missing some package
apt-get install libpq-dev postgresql-server-dev-all
should fix it.
After a bit more debugging I figured out that it's getting stuck trying to find pg_type.h
This file is located in /usr/include/postgresql/catalog/pg_types.h but the module is expecting to find it in /usr/include/postgresql/server/catalog/pg_types.h
find_path(PostgreSQL_TYPE_INCLUDE_DIR
NAMES catalog/pg_type.h
PATHS
# Look in other places.
${PostgreSQL_ROOT_DIRECTORIES}
PATH_SUFFIXES
pgsql/server
postgresql/server
include/server
# Help the user find it if we cannot.
DOC "The ${PostgreSQL_INCLUDE_DIR_MESSAGE}"
)
It works if I add postgresql to the PATH_SUFFIXES
find_path(PostgreSQL_TYPE_INCLUDE_DIR
NAMES catalog/pg_type.h
PATHS
# Look in other places.
${PostgreSQL_ROOT_DIRECTORIES}
PATH_SUFFIXES
postgresql
pgsql/server
postgresql/server
include/server
# Help the user find it if we cannot.
DOC "The ${PostgreSQL_INCLUDE_DIR_MESSAGE}"
)
On Ubuntu you can also work around that issue by calling cmake with having PostgreSQL_TYPE_INCLUDE_DIR defined like this:
cmake -DPostgreSQL_TYPE_INCLUDE_DIR=/usr/include/postgresql/
See the bug report [1] for this issue and a potential fix [2]. Álso see the discussion about the reasoning behind the move on the debian mailinglist at [3].
On Ubuntu/Debian, starting with PostgreSQL 9.3 the header file pg_type.h
is moved to a separate package (from libpq-dev to postgresql-server-dev)
and consequently the file pg_type.h is moved to a new location
[1] https://gitlab.kitware.com/cmake/cmake/issues/17223
[2] https://gitlab.kitware.com/cmake/cmake/commit/d4fd30d8d8f5b9c4b5a110b4676cad2a19d7c314
[3] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=314427
From Linux Mint 17.3 ("Rosa") with PostgreSQL 9.3, I had to adjust ilia choly's solution (interestingly, the suggested postgres entry in the list was already present in the file, but wasn't enough to fix things).
I had to edit /usr/share/cmake-2.8/Modules/FindPostgreSQL.cmake around line 114 and add postgresql/9.3 so that the find_path call looks like
find_path(PostgreSQL_TYPE_INCLUDE_DIR
NAMES catalog/pg_type.h
PATHS
# Look in other places.
${PostgreSQL_ROOT_DIRECTORIES}
PATH_SUFFIXES
postgresql/9.3
postgresql
pgsql/server
postgresql/server
include/server
# Help the user find it if we cannot.
DOC "The ${PostgreSQL_INCLUDE_DIR_MESSAGE}"
)

Not getting TBB to compile test examples

I am not getting TBB to work. I am following the steps in the "Getting started" document.
I am doing the following steps:
downloading the linux files + the sources files.
extracting them in 1 directory
calling make
going to tbb.../bin calling source tbbvars.sh intel64
going to examples/Getting_started/sub_string_finder
calling make
I then get the error:
sub_string_finder.cpp:32:30: fatal error: tbb/parallel_for.h: No such file or directory
I really googled a lot but can't find any related stuff.
I did also try to add some -I statement but it didnt help
I assume it is kind of a including/linking problem but I dont know how to fix.
This is all done on fedora 16 64bit. (kernel 3.1.4) // TBB version 4.0
The solution was to install tbb-devel package.