conan-io / conan-center-index

Recipes for the ConanCenter repository
https://conan.io/center
MIT License
950 stars 1.73k forks source link

bgfx/cci.20230216 : I was expecting to be able to use the shaderc binary to create shaders, but they are not installed #22031

Open jonas-printzen opened 9 months ago

jonas-printzen commented 9 months ago

Description

I'm attempting to include the bgfx library in my project, to render 3D visualizations and more, using conan2. I manage to build and run the most trivial example, with simple log output in renders, so the library and headers are there. However, the library depends heavily on it's own shader-compiler, shaderc, which does not seem to be available. I can't find them in the ~/.conan2/p folder, where everything else is present and working. I was also trying to figure out how it could be done, but looking at the recipe confuses me. It would be very interesting to me to learn how to get such a thing working. I might even be able to pitch in and help with it, but it is not really obvious how, given the state of the recipe.

Package and Environment Details

Conan profile

$ cat ~/.conan2/profiles/default => ...

[settings]
arch=x86_64
build_type=Release
compiler=gcc
compiler.cppstd=gnu17
compiler.libcxx=libstdc++11
compiler.version=12
os=Linux

Steps to reproduce

My conanfile.py works as far as compiling and running the app. -----8<-----8<-----8<-----8<-----8<-----8<-----

  imgui_dep = "imgui/1.90"

  def requirements(self):
    self.tool_requires('cmake/3.27.9')
    self.requires('gtest/1.14.0')
    self.requires('grpc/1.54.3')
    self.requires('codie/0.5.93')
    self.requires('bgfx/cci.20230216')
    self.requires('bx/cci.20221116') # Just build-tools
    self.requires('bimg/cci.20230114')
    self.requires(self.imgui_dep)
    self.requires('implot/0.16')

-----8<-----8<-----8<-----8<-----8<-----8<-----

Running: find ~/.conan2/p -type f -iname '*shaderc*' only finds source-files. There is no .../bin/ - folder in the cache.

But, checking out the source for bgfx et'al from github does also produce the binary shaderc.

Logs

bgfx/cci.20230216: RUN: make bgfx -R -C /home/jonas/.conan2/p/b/bgfx9ec19c61794e6/b/src/bgfx/.build/projects/gmake-linux config=release64 -j36 make: Entering directory '/home/jonas/.conan2/p/b/bgfx9ec19c61794e6/b/src/bgfx/.build/projects/gmake-linux' ==== Building bx (release64) ==== Creating ../../linux64_gcc/obj/x64/Release/bx Creating ../../linux64_gcc/obj/x64/Release/bx/bx/src Creating ../../linux64_gcc/bin bounds.cpp bx.cpp allocator.cpp commandline.cpp crtnone.cpp debug.cpp dtoa.cpp easing.cpp file.cpp filepath.cpp hash.cpp math.cpp mutex.cpp os.cpp process.cpp semaphore.cpp settings.cpp thread.cpp sort.cpp timer.cpp url.cpp string.cpp Archiving bx ==== Building bgfx (release64) ==== Creating ../../linux64_gcc/obj/x64/Release/bgfx Creating ../../linux64_gcc/obj/x64/Release/bgfx/src bgfx.cpp debug_renderdoc.cpp dxgi.cpp glcontext_egl.cpp glcontext_glx.cpp glcontext_html5.cpp glcontext_wgl.cpp nvapi.cpp renderer_agc.cpp renderer_d3d11.cpp renderer_d3d9.cpp renderer_d3d12.cpp renderer_gl.cpp renderer_gnm.cpp renderer_noop.cpp renderer_nvn.cpp renderer_webgpu.cpp renderer_vk.cpp shader.cpp shader_dx9bc.cpp shader_dxbc.cpp shader_spirv.cpp topology.cpp vertexlayout.cpp Archiving bgfx make: Leaving directory '/home/jonas/.conan2/p/b/bgfx9ec19c61794e6/b/src/bgfx/.build/projects/gmake-linux'

bgfx/cci.20230216: Package '4abd4ecfb74e13397599e76527d79f91b0ff3cad' built bgfx/cci.20230216: Build folder /home/jonas/.conan2/p/b/bgfx9ec19c61794e6/b/build-release bgfx/cci.20230216: Generating the package bgfx/cci.20230216: Packaging in folder /home/jonas/.conan2/p/b/bgfx9ec19c61794e6/p bgfx/cci.20230216: Calling package() bgfx/cci.20230216: package(): Packaged 1 '.a' file: libbgfx.a bgfx/cci.20230216: package(): Packaged 1 file: LICENSE bgfx/cci.20230216: package(): Packaged 5 '.h' files bgfx/cci.20230216: Created package revision ac52023eeb9db4884a92fd1e261cac87 bgfx/cci.20230216: Package '4abd4ecfb74e13397599e76527d79f91b0ff3cad' created bgfx/cci.20230216: Full package reference: bgfx/cci.20230216#d0bbce02186a893b282d15b21c42eca7:4abd4ecfb74e13397599e76527d79f91b0ff3cad#ac52023eeb9db4884a92fd1e261cac87 bgfx/cci.20230216: Package folder /home/jonas/.conan2/p/b/bgfx9ec19c61794e6/p codie/0.5.93: Already installed! (17 of 17) WARN: deprecated: Usage of deprecated Conan 1.X features that will be removed in Conan 2.X: WARN: deprecated: 'cpp_info.names' used in: abseil/20230125.3, openssl/3.2.0, gtest/1.14.0, bgfx/cci.20230216, c-ares/1.19.1, protobuf/3.21.12, bx/cci.20221116, grpc/1.54.3, bimg/cci.20230114, zlib/1.3 WARN: deprecated: 'cpp_info.build_modules' used in: abseil/20230125.3, openssl/3.2.0, protobuf/3.21.12, grpc/1.54.3 WARN: deprecated: 'env_info' used in: openssl/3.2.0, c-ares/1.19.1, imgui/1.90, cmake/3.27.9, genie/1170, protobuf/3.21.12, grpc/1.54.3 WARN: deprecated: 'cpp_info.filenames' used in: opengl/system, bgfx/cci.20230216, protobuf/3.21.12, bx/cci.20221116, bimg/cci.20230114

======== Finalizing install (deploy, generators) ======== conanfile.py (vui/0.1.2): Calling generate() conanfile.py (vui/0.1.2): Generators folder: /home/jonas/proj/cxx/vui/build/Release/generators conanfile.py (vui/0.1.2): CMakeToolchain generated: conan_toolchain.cmake conanfile.py (vui/0.1.2): Preset 'conan-release' added to CMakePresets.json. Invoke it manually using 'cmake --preset conan-release' if using CMake>=3.23 conanfile.py (vui/0.1.2): If your CMake version is not compatible with CMakePresets (<3.23) call cmake like: 'cmake -G "Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=/home/jonas/proj/cxx/vui/build/Release/generators/conan_toolchain.cmake -DCMAKE_POLICY_DEFAULT_CMP0091=NEW -DCMAKE_BUILD_TYPE=Release' conanfile.py (vui/0.1.2): CMakeToolchain generated: CMakePresets.json conanfile.py (vui/0.1.2): CMakeToolchain generated: ../../../CMakeUserPresets.json conanfile.py (vui/0.1.2): Generating aggregated env files conanfile.py (vui/0.1.2): Generated aggregated env files: ['conanbuild.sh', 'conanrun.sh'] Install finished successfully

xoorath commented 3 months ago

Hey @jonas-printzen, understandable - the recipe is a lot to look at.

There is a tools option you can set to True.

Something like this in your conanfile.py should do the trick:

    def configure(self):
        self.options["bgfx/cci.20230216"]["tools"] = True