Repository: conan-io/conan-center-index

Issue:
[question] libmysqlclient : missing tool requirement ?
### What is your question?

When trying to consume _libmysqlclient_ (as a requirement) on a far-from-homogenous Linux system (project build with some user-built compiler, different from the system one, with different _glibc_), the build of _libmysqlclient_ fails because of _glibc_ incompatibilities.  
Something like

```
-- Found Doxygen: /usr/bin/doxygen  found components: doxygen dot 
/usr/bin/doxygen: /opt/gcc-10.3.0/lib64/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /usr/bin/doxygen)
/usr/bin/doxygen: /opt/gcc-10.3.0/lib64/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /usr/bin/doxygen)
/usr/bin/doxygen: /opt/gcc-10.3.0/lib64/libstdc++.so.6: version `CXXABI_1.3.13' not found (required by /usr/bin/doxygen)
/usr/bin/doxygen: /opt/gcc-10.3.0/lib64/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /lib/x86_64-linux-gnu/libclang-14.so.13)
/usr/bin/doxygen: /opt/gcc-10.3.0/lib64/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /lib/x86_64-linux-gnu/libclang-cpp.so.14)
/usr/bin/doxygen: /opt/gcc-10.3.0/lib64/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /lib/x86_64-linux-gnu/libclang-cpp.so.14)
/usr/bin/doxygen: /opt/gcc-10.3.0/lib64/libstdc++.so.6: version `CXXABI_1.3.13' not found (required by /lib/x86_64-linux-gnu/libclang-cpp.so.14)
/usr/bin/doxygen: /opt/gcc-10.3.0/lib64/libstdc++.so.6: version `CXXABI_1.3.13' not found (required by /lib/x86_64-linux-gnu/libLLVM-14.so.1)
/usr/bin/doxygen: /opt/gcc-10.3.0/lib64/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /lib/x86_64-linux-gnu/libLLVM-14.so.1)
/usr/bin/doxygen: /opt/gcc-10.3.0/lib64/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /lib/x86_64-linux-gnu/libLLVM-14.so.1)
/usr/bin/doxygen: /opt/gcc-10.3.0/lib64/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /lib/x86_64-linux-gnu/libz3.so.4)
/usr/bin/doxygen: /opt/gcc-10.3.0/lib64/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /lib/x86_64-linux-gnu/libz3.so.4)
/usr/bin/doxygen: /opt/gcc-10.3.0/lib64/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /lib/x86_64-linux-gnu/libicuuc.so.72)
```

Well, there are many ways to solve this issue.  The easiest and generalised one being to add _Doxygen_ as a tool requirement in the profile used for the build, like
```
[tool_requires]
doxygen/1.9.4
```

But it still seems to me that _Doxygen_ *should* have been added as a tool requirement in the recipe, as it is mandatory for the build to success in this kind of setup

Am I wrong ?

If requirement miss is confirmed, I can submit the PR.

Thanks


Discussion:
doxygen is not missing as a build requirements, because if it's not there it builds and produce the same binaries in package folder. Instead libmysqlclient recipe should disable build of documentation in CMakeLists and not try to find doxygen (or not try to build doc even if doxygen is found).
> Instead libmysqlclient recipe should disable build of documentation in CMakeLists and not try to find doxygen (or not try to build doc even if doxygen is found).

Agree, I'll try to open a PR to address this

Resolving patch:
diff --git a/recipes/libmysqlclient/all/conanfile.py b/recipes/libmysqlclient/all/conanfile.py
--- a/recipes/libmysqlclient/all/conanfile.py
+++ b/recipes/libmysqlclient/all/conanfile.py
@@ -66,7 +66,7 @@ def requirements(self):
             self.requires("openssl/1.1.1u")
         else:
             self.requires("openssl/[>=1.1 <4]")
-        self.requires("zlib/1.2.13")
+        self.requires("zlib/[>=1.2.11 <2]")
         self.requires("zstd/1.5.5")
         self.requires("lz4/1.9.4")
         if self.settings.os == "FreeBSD":
@@ -229,6 +229,9 @@ def generate(self):
         tc.cache_variables["WITH_SSL"] = self.dependencies["openssl"].package_folder.replace("\\", "/")
 
         tc.cache_variables["WITH_ZLIB"] = "system"
+
+        # Remove to ensure reproducible build, this only affects docs generation
+        tc.cache_variables["CMAKE_DISABLE_FIND_PACKAGE_Doxygen"] = True
         tc.generate()
 
         deps = CMakeDeps(self)


Test patch: