diff options
author | AlexSm <[email protected]> | 2025-06-16 18:21:26 +0200 |
---|---|---|
committer | GitHub <[email protected]> | 2025-06-16 18:21:26 +0200 |
commit | d12031b8949081837a0d3b2d73db1b10bee71e35 (patch) | |
tree | 9fa4554554edd492fa8e8d276a3c71f696f75e6d | |
parent | fc67d742821b41d1f22817c67c3fcb5f517be095 (diff) |
Fix cmakelists generation to Conan2 (#19701)
-rw-r--r-- | .github/actions/build/action.yml | 2 | ||||
-rw-r--r-- | .github/prewarm/build.sh | 1 | ||||
-rw-r--r-- | conanfile.py | 40 | ||||
-rwxr-xr-x | generate_cmake | 18 |
4 files changed, 47 insertions, 14 deletions
diff --git a/.github/actions/build/action.yml b/.github/actions/build/action.yml index 5079684ee92..2a607f9fdd4 100644 --- a/.github/actions/build/action.yml +++ b/.github/actions/build/action.yml @@ -32,6 +32,7 @@ runs: cmake -G Ninja -DCMAKE_BUILD_TYPE=Release \ -DCCACHE_PATH=/usr/local/bin/ccache \ -DCMAKE_TOOLCHAIN_FILE=../ydb/clang.toolchain \ + -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=./cmake/conan_provider.cmake \ -DCMAKE_CXX_FLAGS="-fsanitize=${{ inputs.sanitizer }} -g -gsplit-dwarf -gz -fno-omit-frame-pointer ${{ inputs.extra_compile_flags }}" \ -DCMAKE_C_FLAGS="-fsanitize=${{ inputs.sanitizer }} -g -gsplit-dwarf -gz -fno-omit-frame-pointer ${{ inputs.extra_compile_flags }}" \ ../ydb @@ -51,6 +52,7 @@ runs: cmake -G Ninja -DCMAKE_BUILD_TYPE=Release \ -DCCACHE_PATH=/usr/local/bin/ccache \ -DCMAKE_TOOLCHAIN_FILE=../ydb/clang.toolchain \ + -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=./cmake/conan_provider.cmake \ -DCMAKE_C_FLAGS="${{ inputs.extra_compile_flags }}" \ -DCMAKE_CXX_FLAGS="${{ inputs.extra_compile_flags }}" \ ../ydb diff --git a/.github/prewarm/build.sh b/.github/prewarm/build.sh index 8779edad0f1..0b90c74675d 100644 --- a/.github/prewarm/build.sh +++ b/.github/prewarm/build.sh @@ -16,6 +16,7 @@ echo "::group::cmake" cmake -G Ninja -DCMAKE_BUILD_TYPE=Release \ -DCCACHE_PATH=/usr/local/bin/ccache \ -DCMAKE_TOOLCHAIN_FILE=../ydb/clang.toolchain \ +-DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=./cmake/conan_provider.cmake \ ../ydb echo "::endgroup::" diff --git a/conanfile.py b/conanfile.py index 8edc9358299..ef96565d6b4 100644 --- a/conanfile.py +++ b/conanfile.py @@ -1,14 +1,17 @@ from conan import ConanFile +import os + +from conan.tools.files import copy +from conan.tools.cmake import CMakeToolchain, CMakeDeps, cmake_layout +from conan.tools.env import Environment + class App(ConanFile): settings = "os", "compiler", "build_type", "arch" - default_options = {"libiconv:shared": "True"} - - def requirements(self): - self.requires("libiconv/1.15") + default_options = {} def build_requirements(self): self.tool_requires("bison/3.8.2") @@ -16,12 +19,23 @@ class App(ConanFile): self.tool_requires("ragel/6.10") self.tool_requires("yasm/1.3.0") - generators = "cmake_find_package", "cmake_paths" - - def imports(self): - self.copy(pattern="*yasm*", src="bin", dst="./bin") - self.copy(pattern="bison*", src="bin", dst="./bin/bison/bin") - self.copy(pattern="m4*", src="bin", dst="./bin/m4/bin") - self.copy(pattern="ragel*", src="bin", dst="./bin") - self.copy(pattern="ytasm*", src="bin", dst="./bin") - self.copy(pattern="*", src="res", dst="./bin/bison/res") + def generate(self): + CMakeDeps(self).generate() + CMakeToolchain(self).generate() + + for dep in self.dependencies.values(): + for bindir in dep.cpp_info.bindirs: + copy(self, pattern="*yasm*", src=bindir, dst=self.build_folder + "../../../.././bin") + for bindir in dep.cpp_info.bindirs: + copy(self, pattern="bison*", src=bindir, dst=self.build_folder + "../../../.././bin/bison/bin") + for bindir in dep.cpp_info.bindirs: + copy(self, pattern="m4*", src=bindir, dst=self.build_folder + "../../../.././bin/m4/bin") + for bindir in dep.cpp_info.bindirs: + copy(self, pattern="ragel*", src=bindir, dst=self.build_folder + "../../../.././bin") + for bindir in dep.cpp_info.bindirs: + copy(self, pattern="ytasm*", src=bindir, dst=self.build_folder + "../../../.././bin") + for resdir in dep.cpp_info.resdirs: + copy(self, pattern="*", src=resdir, dst=self.build_folder + "../../../.././bin/bison/res") + + def layout(self): + cmake_layout(self) diff --git a/generate_cmake b/generate_cmake index 5f542247e24..5fe65f6c553 100755 --- a/generate_cmake +++ b/generate_cmake @@ -197,7 +197,23 @@ if __name__ == "__main__": generate_graph_for_platform, generate_graph_for_platform_commands ) - yexport_args = [yexport_binary_path, "--export-root", f"\"{root_folder}\"", "--target", "YDB", "--generator", "cmake"] + yexport_args = [ + yexport_binary_path, + "--export-root", f"\"{root_folder}\"", + "--configuration", ydb_metadata_folder_path, + "--target", "YDB", + "--generator", "cmake", + ] + + yexport_toml = f"{ydb_metadata_folder_path}/yexport.toml" + with open(yexport_toml, "w") as f: + f.write("\n".join([ + '[add_attrs.root]', + 'use_conan2 = true', + '', + '[add_attrs.dir]', + 'use_conan2 = true', + ])) for index, platform in enumerate(platforms): errors_for_platform_size = len(errors_for_platform[index]) |