summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexSm <[email protected]>2025-06-16 18:21:26 +0200
committerGitHub <[email protected]>2025-06-16 18:21:26 +0200
commitd12031b8949081837a0d3b2d73db1b10bee71e35 (patch)
tree9fa4554554edd492fa8e8d276a3c71f696f75e6d
parentfc67d742821b41d1f22817c67c3fcb5f517be095 (diff)
Fix cmakelists generation to Conan2 (#19701)
-rw-r--r--.github/actions/build/action.yml2
-rw-r--r--.github/prewarm/build.sh1
-rw-r--r--conanfile.py40
-rwxr-xr-xgenerate_cmake18
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])