inexorgame / vulkan-renderer

A new 3D game engine for Linux and Windows using C++20 and Vulkan API 1.3, in very early but ongoing development
https://inexor.org
MIT License
777 stars 34 forks source link

Use conan to get Vulkan #491

Closed IceflowRE closed 1 year ago

IceflowRE commented 1 year ago

Added: Conan dependency caching based on conanfile.py SHA. Whenever we change that file we have to compile the dependencies completly new. We could still load the old cache in those cases, but we currently have no elegant way to delete the old files. My experiment with a Python script were problematic here and there, not very easy to maintain.

Build Times:

With cache building we gain around 1min and also reduce the bandwidth consumption with servers outside of GitHub. Also we have a better control over which vulkan headers and tools are used to build, also making reproduceable builds more likely. The only downside is clang-tidy being 1min slower due to bigger cache. Also clang-tidy itself takes 2 min longer??


Close: #227

IAmNotHanni commented 1 year ago

Nice work! I get the following console output:

glslang/11.7.0: Retrieving from server 'conancenter' 
glslang/11.7.0: Trying with 'conancenter'...
Downloading conanmanifest.txt
Downloading conanfile.py
Downloading conan_export.tgz
glslang/11.7.0: Downloaded recipe revision 0
ERROR: glslang/11.7.0: Cannot load recipe.
Error loading conanfile at '/home/johannes/.conan/data/glslang/11.7.0/_/_/export/conanfile.py': Unable to load conanfile in /home/johannes/.conan/data/glslang/11.7.0/_/_/export/conanfile.py
  File "/usr/lib/python3.8/imp.py", line 171, in load_source
    module = _load(spec)
  File "<frozen importlib._bootstrap>", line 702, in _load
  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 848, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/home/johannes/.conan/data/glslang/11.7.0/_/_/export/conanfile.py", line 3, in <module>
    from conan.tools.apple import is_apple_os
ImportError: cannot import name 'is_apple_os' from 'conan.tools.apple' (/home/johannes/.local/lib/python3.8/site-packages/conan/tools/apple/__init__.py)

CMake Error at build/conan.cmake:655 (message):
  Conan install failed='1'
Call Stack (most recent call first):
  cmake/conan_setup.cmake:52 (conan_cmake_install)
  CMakeLists.txt:35 (include)

-- Configuring incomplete, errors occurred!
See also "/home/johannes/Inexor/CONANFIX/vulkan-renderer/build/CMakeFiles/CMakeOutput.log".
IceflowRE commented 1 year ago

Which conan version?

IAmNotHanni commented 1 year ago

Conan version 1.51.0

IceflowRE commented 1 year ago

Merged with #492