This is an automated email from the ASF dual-hosted git repository.
isapego pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new 5680ca28b69 IGNITE-27303 ODBC: Use distribution packages to run tests
(#7516)
5680ca28b69 is described below
commit 5680ca28b69cdf1c85c58cff3450707c7c2c1950
Author: Dmitriy Zabotlin <[email protected]>
AuthorDate: Fri Feb 13 16:22:58 2026 +0200
IGNITE-27303 ODBC: Use distribution packages to run tests (#7516)
Co-authored-by: dzabotlin <[email protected]>
---
.teamcity/build/distributions/CppClientPackages.kt | 49 +++++++++
.teamcity/build/distributions/OdbcDeb.kt | 2 +-
.teamcity/build/distributions/OdbcRpm.kt | 2 +-
.teamcity/build/distributions/OdbcZip.kt | 4 +-
.teamcity/build/distributions/Project.kt | 1 +
.../files/docker/rockylinux8-odbc-cpp.dockerfile | 8 ++
.../files/docker/ubuntu22_04-odbc-cpp.dockerfile | 5 +
.teamcity/test/build_types/RunPlatformTests.kt | 3 +
.../platform_tests/PlatformCppOdbcTestsDebLinux.kt | 114 ++++++++++++++++++++
.../platform_tests/PlatformCppOdbcTestsRpmLinux.kt | 114 ++++++++++++++++++++
.../platform_tests/PlatformCppOdbcTestsTgzLinux.kt | 115 +++++++++++++++++++++
.../test/platform_tests/PlatformCppTestsLinux.kt | 28 +----
.teamcity/test/platform_tests/Project.kt | 3 +
modules/platforms/build.gradle | 19 ++++
modules/platforms/cpp/CMakeLists.txt | 39 +++++--
modules/platforms/cpp/cmake/packaging.cmake | 20 ++--
modules/platforms/cpp/ignite/client/CMakeLists.txt | 12 +--
modules/platforms/cpp/ignite/odbc/CMakeLists.txt | 12 +--
modules/platforms/cpp/pkgconfig/CMakeLists.txt | 4 +-
.../platforms/cpp/pkgconfig/ignite-client.pc.in | 4 +-
modules/platforms/cpp/pkgconfig/ignite-odbc.pc.in | 4 +-
21 files changed, 498 insertions(+), 64 deletions(-)
diff --git a/.teamcity/build/distributions/CppClientPackages.kt
b/.teamcity/build/distributions/CppClientPackages.kt
new file mode 100644
index 00000000000..b82cb5c81d8
--- /dev/null
+++ b/.teamcity/build/distributions/CppClientPackages.kt
@@ -0,0 +1,49 @@
+package build.distributions
+
+import jetbrains.buildServer.configs.kotlin.BuildType
+import jetbrains.buildServer.configs.kotlin.buildSteps.GradleBuildStep
+import org.apache.ignite.teamcity.CustomBuildSteps.Companion.customGradle
+import org.apache.ignite.teamcity.CustomBuildSteps.Companion.customScript
+
+object CppClientPackages : BuildType({
+ name = "[11] ODBC and C++ Client packages"
+ description = "Apache Ignite 3 ODBC and C++ Client Packages"
+
+ artifactRules = """
+ %VCSROOT__IGNITE3%/modules/platforms/build/cpp/_packages/*odbc*.deb =>
odbc-deb
+
%VCSROOT__IGNITE3%/modules/platforms/build/cpp/_packages/*odbc*.deb.sha256 =>
odbc-deb
+ %VCSROOT__IGNITE3%/modules/platforms/build/cpp/_packages/*client*.deb
=> client-deb
+
%VCSROOT__IGNITE3%/modules/platforms/build/cpp/_packages/*client*.deb.sha256 =>
client-deb
+
+ %VCSROOT__IGNITE3%/modules/platforms/build/cpp/_packages/*odbc*.rpm =>
odbc-rpm
+
%VCSROOT__IGNITE3%/modules/platforms/build/cpp/_packages/*odbc*.rpm.sha256 =>
odbc-rpm
+ %VCSROOT__IGNITE3%/modules/platforms/build/cpp/_packages/*client*.rpm
=> client-rpm
+
%VCSROOT__IGNITE3%/modules/platforms/build/cpp/_packages/*client*.rpm.sha256 =>
client-rpm
+
+ %VCSROOT__IGNITE3%/modules/platforms/build/cpp/_packages/*odbc*.tar.gz
=> odbc-tgz
+
%VCSROOT__IGNITE3%/modules/platforms/build/cpp/_packages/*odbc*.tar.gz.sha256
=> odbc-tgz
+
%VCSROOT__IGNITE3%/modules/platforms/build/cpp/_packages/*client*.tar.gz =>
client-tgz
+
%VCSROOT__IGNITE3%/modules/platforms/build/cpp/_packages/*client*.tar.gz.sha256
=> client-tgz
+ """.trimIndent()
+
+ params {
+ param("CONTAINER_JAVA_HOME", "/usr/lib/jvm/java-17-openjdk/")
+ }
+
+ steps {
+ customScript(type = "bash") {
+ name = "Setup Docker Proxy"
+ }
+
+ customGradle {
+ name = "Build ODBC and Client packages. RPM, DEB, TGZ. (Under
Rocky Linux 8 container)"
+ tasks = ":platforms:cmakeCpack"
+ workingDir = "%VCSROOT__IGNITE3%"
+ gradleParams = "-i -Pplatforms.enable"
+ dockerImage = "docker.gridgain.com/ci/tc-rockylinux8-odbc:v1.1"
+ dockerPull = true
+ dockerImagePlatform = GradleBuildStep.ImagePlatform.Linux
+ dockerRunParameters = "-e JAVA_HOME=%CONTAINER_JAVA_HOME%"
+ }
+ }
+})
diff --git a/.teamcity/build/distributions/OdbcDeb.kt
b/.teamcity/build/distributions/OdbcDeb.kt
index 8817f62784f..344b29b187a 100644
--- a/.teamcity/build/distributions/OdbcDeb.kt
+++ b/.teamcity/build/distributions/OdbcDeb.kt
@@ -39,7 +39,7 @@ object OdbcDeb : BuildType({
tasks = ":packaging-odbc:buildDeb"
workingDir = "%VCSROOT__IGNITE3%"
gradleParams = "-i -Pplatforms.enable"
- dockerImage = "docker.gridgain.com/ci/tc-rockylinux8-odbc:v1.0"
+ dockerImage = "docker.gridgain.com/ci/tc-rockylinux8-odbc:v1.1"
dockerPull = true
dockerImagePlatform = GradleBuildStep.ImagePlatform.Linux
dockerRunParameters = "-e JAVA_HOME=%CONTAINER_JAVA_HOME%"
diff --git a/.teamcity/build/distributions/OdbcRpm.kt
b/.teamcity/build/distributions/OdbcRpm.kt
index 30b08b58278..808cd03cc7e 100644
--- a/.teamcity/build/distributions/OdbcRpm.kt
+++ b/.teamcity/build/distributions/OdbcRpm.kt
@@ -38,7 +38,7 @@ object OdbcRpm : BuildType({
tasks = ":packaging-odbc:buildRpm"
workingDir = "%VCSROOT__IGNITE3%"
gradleParams = "-i -Pplatforms.enable"
- dockerImage = "docker.gridgain.com/ci/tc-rockylinux8-odbc:v1.0"
+ dockerImage = "docker.gridgain.com/ci/tc-rockylinux8-odbc:v1.1"
dockerPull = true
dockerImagePlatform = GradleBuildStep.ImagePlatform.Linux
dockerRunParameters = "-e JAVA_HOME=%CONTAINER_JAVA_HOME%"
diff --git a/.teamcity/build/distributions/OdbcZip.kt
b/.teamcity/build/distributions/OdbcZip.kt
index 79aed2bd25f..33fcf12eb5d 100644
--- a/.teamcity/build/distributions/OdbcZip.kt
+++ b/.teamcity/build/distributions/OdbcZip.kt
@@ -40,7 +40,7 @@ object OdbcZip : BuildType({
tasks = ":packaging-odbc:distZip"
workingDir = "%VCSROOT__IGNITE3%"
gradleParams = "-i -Pplatforms.enable"
- dockerImage = "docker.gridgain.com/ci/tc-rockylinux8-odbc:v1.0"
+ dockerImage = "docker.gridgain.com/ci/tc-rockylinux8-odbc:v1.1"
dockerPull = true
dockerImagePlatform = GradleBuildStep.ImagePlatform.Linux
dockerRunParameters = "-e JAVA_HOME=%CONTAINER_JAVA_HOME%"
@@ -50,7 +50,7 @@ object OdbcZip : BuildType({
tasks = ":packaging-odbc:distTar"
workingDir = "%VCSROOT__IGNITE3%"
gradleParams = "-i -Pplatforms.enable"
- dockerImage = "docker.gridgain.com/ci/tc-rockylinux8-odbc:v1.0"
+ dockerImage = "docker.gridgain.com/ci/tc-rockylinux8-odbc:v1.1"
dockerPull = true
dockerImagePlatform = GradleBuildStep.ImagePlatform.Linux
dockerRunParameters = "-e JAVA_HOME=%CONTAINER_JAVA_HOME%"
diff --git a/.teamcity/build/distributions/Project.kt
b/.teamcity/build/distributions/Project.kt
index def1622c7f9..16db9f1a745 100644
--- a/.teamcity/build/distributions/Project.kt
+++ b/.teamcity/build/distributions/Project.kt
@@ -15,6 +15,7 @@ object Project : Project({
listOf(
CliDeb,
CliRpm,
+ CppClientPackages,
Deb,
Docs,
Docker,
diff --git a/.teamcity/files/docker/rockylinux8-odbc-cpp.dockerfile
b/.teamcity/files/docker/rockylinux8-odbc-cpp.dockerfile
new file mode 100644
index 00000000000..662294dd590
--- /dev/null
+++ b/.teamcity/files/docker/rockylinux8-odbc-cpp.dockerfile
@@ -0,0 +1,8 @@
+FROM rockylinux:8
+# Install dependencies
+RUN dnf update -y
+RUN dnf -y install epel-release
+RUN dnf update -y
+RUN dnf install -y --setopt=max_parallel_downloads=10
--setopt=fastestmirror=True git gcc gcc-c++ clang make cmake unixODBC-devel
openssl-devel java-11-openjdk-devel java-17-openjdk-devel rpm-build dpkg
+RUN dnf clean all
+RUN rm -rf /var/cache/dnf
diff --git a/.teamcity/files/docker/ubuntu22_04-odbc-cpp.dockerfile
b/.teamcity/files/docker/ubuntu22_04-odbc-cpp.dockerfile
new file mode 100644
index 00000000000..baa17ecec79
--- /dev/null
+++ b/.teamcity/files/docker/ubuntu22_04-odbc-cpp.dockerfile
@@ -0,0 +1,5 @@
+FROM ubuntu:22.04
+# Install dependencies
+RUN apt update
+RUN apt install -y git gcc g++ clang make cmake unixodbc unixodbc-dev odbcinst
libssl-dev openjdk-11-jdk openjdk-17-jdk rpm
+RUN apt clean
diff --git a/.teamcity/test/build_types/RunPlatformTests.kt
b/.teamcity/test/build_types/RunPlatformTests.kt
index 273c30a9fe3..40d246e198d 100644
--- a/.teamcity/test/build_types/RunPlatformTests.kt
+++ b/.teamcity/test/build_types/RunPlatformTests.kt
@@ -12,6 +12,9 @@ object RunPlatformTests : BuildType({
dependencies {
snapshot(PlatformCppTestsLinux) {}
+ snapshot(PlatformCppOdbcTestsDebLinux) {}
+ snapshot(PlatformCppOdbcTestsRpmLinux) {}
+ snapshot(PlatformCppOdbcTestsTgzLinux) {}
// snapshot(PlatformCppTestsWindows) {} // Always falling, under
investigation
snapshot(PlatformDotnetTestsWindows) {}
snapshot(PlatformDotnetTestsLinux) {}
diff --git a/.teamcity/test/platform_tests/PlatformCppOdbcTestsDebLinux.kt
b/.teamcity/test/platform_tests/PlatformCppOdbcTestsDebLinux.kt
new file mode 100644
index 00000000000..facddedda44
--- /dev/null
+++ b/.teamcity/test/platform_tests/PlatformCppOdbcTestsDebLinux.kt
@@ -0,0 +1,114 @@
+package test.platform_tests
+
+import build.distributions.CppClientPackages
+import jetbrains.buildServer.configs.kotlin.BuildType
+import jetbrains.buildServer.configs.kotlin.ParameterDisplay
+import jetbrains.buildServer.configs.kotlin.buildFeatures.XmlReport
+import jetbrains.buildServer.configs.kotlin.buildFeatures.xmlReport
+import jetbrains.buildServer.configs.kotlin.buildSteps.script
+import
jetbrains.buildServer.configs.kotlin.failureConditions.BuildFailureOnText
+import jetbrains.buildServer.configs.kotlin.failureConditions.failOnText
+import org.apache.ignite.teamcity.CustomBuildSteps.Companion.customScript
+import org.apache.ignite.teamcity.Teamcity
+
+object PlatformCppOdbcTestsDebLinux : BuildType({
+ id(Teamcity.getId(this::class))
+ name = "Platform C++ ODBC Tests. DEB package (Ubuntu 22.04 Linux
container)"
+
+ artifactRules = """
+ %PATH__CMAKE_BUILD_DIRECTORY%/core => core_dumps
+ """.trimIndent()
+
+ params {
+ param("env.IGNITE_CPP_TESTS_USE_SINGLE_NODE", "")
+ param("PATH__CMAKE_BUILD_DIRECTORY",
"%PATH__WORKING_DIR%/cmake-build-debug")
+ param("PATH__ODBC_TEST_RESULTS",
"%PATH__WORKING_DIR%/odbc_tests_results.xml")
+ text("PATH__WORKING_DIR",
"%teamcity.build.checkoutDir%/%VCSROOT__IGNITE3%/modules/platforms/cpp",
display = ParameterDisplay.HIDDEN, allowEmpty = true)
+ text("PATH__IGNITE_DIR",
"%teamcity.build.checkoutDir%/%VCSROOT__IGNITE3%", display =
ParameterDisplay.HIDDEN, allowEmpty = true)
+ param("env.CPP_STAGING", "/tmp/cpp_staging")
+ param("CONTAINER_JAVA_HOME", "/usr/lib/jvm/java-17-openjdk-amd64/")
+ }
+
+ dependencies {
+ dependency(CppClientPackages) {
+ snapshot {}
+ artifacts {
+ cleanDestination = true
+ artifactRules = """
+ odbc-deb => ignite3-odbc-deb
+ """.trimIndent()
+ }
+ }
+ }
+
+ steps {
+ customScript(type = "bash") {
+ name = "Setup Docker Proxy"
+ }
+
+ script {
+ name = "Install ODBC and build C++ tests in Ubuntu 22.04 container"
+ dockerImage = "docker.gridgain.com/ci/tc-ubuntu22_04-odbc:v1.0"
+ dockerRunParameters = "-e JAVA_HOME=%CONTAINER_JAVA_HOME% --ulimit
nofile=32768:32768"
+ scriptContent = """
+ clang --version
+ clang++ --version
+ ulimit -a
+
+ dpkg -i ignite3-odbc-deb/*.deb
+
+ cd %PATH__IGNITE_DIR%
+ ./gradlew :ignite-runner:integrationTestClasses
+ mkdir %PATH__CMAKE_BUILD_DIRECTORY% || exit 2
+ cd %PATH__CMAKE_BUILD_DIRECTORY% || exit 3
+
+ cmake .. -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang
-DENABLE_TESTS=ON -DENABLE_ODBC=ON -DCMAKE_BUILD_TYPE=Debug
-DCMAKE_INSTALL_PREFIX=%env.CPP_STAGING% || (echo 'CMake configuration failed'
&& exit 5)
+ cmake --build . -j8 || (echo 'CMake build failed' && exit 6)
+
+ ./bin/ignite-odbc-test
--gtest_output=xml:%PATH__ODBC_TEST_RESULTS%
+ """.trimIndent()
+ }
+
+ customScript(type = "bash") {
+ name = "Clean Up Remaining Processes"
+ }
+ }
+
+ failureConditions {
+ executionTimeoutMin = 15
+ failOnText {
+ conditionType = BuildFailureOnText.ConditionType.CONTAINS
+ pattern = "CMake configuration failed"
+ failureMessage = "CMake configuration failed"
+ reverse = false
+ }
+ failOnText {
+ conditionType = BuildFailureOnText.ConditionType.CONTAINS
+ pattern = "CMake build failed"
+ failureMessage = "CMake build failed"
+ reverse = false
+ }
+ failOnText {
+ conditionType = BuildFailureOnText.ConditionType.CONTAINS
+ pattern = "CMake install failed"
+ failureMessage = "CMake install failed"
+ reverse = false
+ }
+ failOnText {
+ conditionType = BuildFailureOnText.ConditionType.CONTAINS
+ pattern = "FAILED TEST SUITE"
+ failureMessage = "One or several test suites have failed during
SetUpTestSuite"
+ reverse = false
+ }
+ }
+
+ features {
+ xmlReport {
+ reportType = XmlReport.XmlReportType.GOOGLE_TEST
+ rules = """
+ +:%PATH__ODBC_TEST_RESULTS%
+ """.trimIndent()
+ verbose = true
+ }
+ }
+})
diff --git a/.teamcity/test/platform_tests/PlatformCppOdbcTestsRpmLinux.kt
b/.teamcity/test/platform_tests/PlatformCppOdbcTestsRpmLinux.kt
new file mode 100644
index 00000000000..073eca60965
--- /dev/null
+++ b/.teamcity/test/platform_tests/PlatformCppOdbcTestsRpmLinux.kt
@@ -0,0 +1,114 @@
+package test.platform_tests
+
+import build.distributions.CppClientPackages
+import jetbrains.buildServer.configs.kotlin.BuildType
+import jetbrains.buildServer.configs.kotlin.ParameterDisplay
+import jetbrains.buildServer.configs.kotlin.buildFeatures.XmlReport
+import jetbrains.buildServer.configs.kotlin.buildFeatures.xmlReport
+import jetbrains.buildServer.configs.kotlin.buildSteps.*
+import
jetbrains.buildServer.configs.kotlin.failureConditions.BuildFailureOnText
+import jetbrains.buildServer.configs.kotlin.failureConditions.failOnText
+import org.apache.ignite.teamcity.CustomBuildSteps.Companion.customScript
+import org.apache.ignite.teamcity.Teamcity
+
+object PlatformCppOdbcTestsRpmLinux : BuildType({
+ id(Teamcity.getId(this::class))
+ name = "Platform C++ ODBC Tests. RPM package (Rockylinux 8 Linux
container)"
+
+ artifactRules = """
+ %PATH__CMAKE_BUILD_DIRECTORY%/core => core_dumps
+ """.trimIndent()
+
+ params {
+ param("env.IGNITE_CPP_TESTS_USE_SINGLE_NODE", "")
+ param("PATH__CMAKE_BUILD_DIRECTORY",
"%PATH__WORKING_DIR%/cmake-build-debug")
+ param("PATH__ODBC_TEST_RESULTS",
"%PATH__WORKING_DIR%/odbc_tests_results.xml")
+ text("PATH__WORKING_DIR",
"%teamcity.build.checkoutDir%/%VCSROOT__IGNITE3%/modules/platforms/cpp",
display = ParameterDisplay.HIDDEN, allowEmpty = true)
+ text("PATH__IGNITE_DIR",
"%teamcity.build.checkoutDir%/%VCSROOT__IGNITE3%", display =
ParameterDisplay.HIDDEN, allowEmpty = true)
+ param("env.CPP_STAGING", "/tmp/cpp_staging")
+ param("CONTAINER_JAVA_HOME", "/usr/lib/jvm/java-17-openjdk/")
+ }
+
+ dependencies {
+ dependency(CppClientPackages) {
+ snapshot {}
+ artifacts {
+ cleanDestination = true
+ artifactRules = """
+ odbc-rpm => ignite3-odbc-rpm
+ """.trimIndent()
+ }
+ }
+ }
+
+ steps {
+ customScript(type = "bash") {
+ name = "Setup Docker Proxy"
+ }
+
+ script {
+ name = "Install ODBC and build C++ tests in Rockylinux 8 container"
+ dockerImage = "docker.gridgain.com/ci/tc-rockylinux8-odbc:v1.1"
+ dockerRunParameters = "-e JAVA_HOME=%CONTAINER_JAVA_HOME% --ulimit
nofile=32768:32768"
+ scriptContent = """
+ clang --version
+ clang++ --version
+ ulimit -a
+
+ rpm -i ignite3-odbc-rpm/*.rpm
+
+ cd %PATH__IGNITE_DIR%
+ ./gradlew :ignite-runner:integrationTestClasses
+ mkdir %PATH__CMAKE_BUILD_DIRECTORY% || exit 2
+ cd %PATH__CMAKE_BUILD_DIRECTORY% || exit 3
+
+ cmake .. -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang
-DENABLE_TESTS=ON -DENABLE_ODBC=ON -DCMAKE_BUILD_TYPE=Debug
-DCMAKE_INSTALL_PREFIX=%env.CPP_STAGING% || (echo 'CMake configuration failed'
&& exit 5)
+ cmake --build . -j8 || (echo 'CMake build failed' && exit 6)
+
+ ./bin/ignite-odbc-test
--gtest_output=xml:%PATH__ODBC_TEST_RESULTS%
+ """.trimIndent()
+ }
+
+ customScript(type = "bash") {
+ name = "Clean Up Remaining Processes"
+ }
+ }
+
+ failureConditions {
+ executionTimeoutMin = 15
+ failOnText {
+ conditionType = BuildFailureOnText.ConditionType.CONTAINS
+ pattern = "CMake configuration failed"
+ failureMessage = "CMake configuration failed"
+ reverse = false
+ }
+ failOnText {
+ conditionType = BuildFailureOnText.ConditionType.CONTAINS
+ pattern = "CMake build failed"
+ failureMessage = "CMake build failed"
+ reverse = false
+ }
+ failOnText {
+ conditionType = BuildFailureOnText.ConditionType.CONTAINS
+ pattern = "CMake install failed"
+ failureMessage = "CMake install failed"
+ reverse = false
+ }
+ failOnText {
+ conditionType = BuildFailureOnText.ConditionType.CONTAINS
+ pattern = "FAILED TEST SUITE"
+ failureMessage = "One or several test suites have failed during
SetUpTestSuite"
+ reverse = false
+ }
+ }
+
+ features {
+ xmlReport {
+ reportType = XmlReport.XmlReportType.GOOGLE_TEST
+ rules = """
+ +:%PATH__ODBC_TEST_RESULTS%
+ """.trimIndent()
+ verbose = true
+ }
+ }
+})
diff --git a/.teamcity/test/platform_tests/PlatformCppOdbcTestsTgzLinux.kt
b/.teamcity/test/platform_tests/PlatformCppOdbcTestsTgzLinux.kt
new file mode 100644
index 00000000000..9e7511897a3
--- /dev/null
+++ b/.teamcity/test/platform_tests/PlatformCppOdbcTestsTgzLinux.kt
@@ -0,0 +1,115 @@
+package test.platform_tests
+
+import build.distributions.CppClientPackages
+import jetbrains.buildServer.configs.kotlin.BuildType
+import jetbrains.buildServer.configs.kotlin.ParameterDisplay
+import jetbrains.buildServer.configs.kotlin.buildFeatures.XmlReport
+import jetbrains.buildServer.configs.kotlin.buildFeatures.xmlReport
+import jetbrains.buildServer.configs.kotlin.buildSteps.script
+import
jetbrains.buildServer.configs.kotlin.failureConditions.BuildFailureOnText
+import jetbrains.buildServer.configs.kotlin.failureConditions.failOnText
+import org.apache.ignite.teamcity.CustomBuildSteps.Companion.customScript
+import org.apache.ignite.teamcity.Teamcity
+
+object PlatformCppOdbcTestsTgzLinux : BuildType({
+ id(Teamcity.getId(this::class))
+ name = "Platform C++ ODBC Tests. TGZ package (Ubuntu 22.04 Linux
container)"
+
+ artifactRules = """
+ %PATH__CMAKE_BUILD_DIRECTORY%/core => core_dumps
+ """.trimIndent()
+
+ params {
+ param("env.IGNITE_CPP_TESTS_USE_SINGLE_NODE", "")
+ param("PATH__CMAKE_BUILD_DIRECTORY",
"%PATH__WORKING_DIR%/cmake-build-debug")
+ param("PATH__ODBC_TEST_RESULTS",
"%PATH__WORKING_DIR%/odbc_tests_results.xml")
+ text("PATH__WORKING_DIR",
"%teamcity.build.checkoutDir%/%VCSROOT__IGNITE3%/modules/platforms/cpp",
display = ParameterDisplay.HIDDEN, allowEmpty = true)
+ text("PATH__IGNITE_DIR",
"%teamcity.build.checkoutDir%/%VCSROOT__IGNITE3%", display =
ParameterDisplay.HIDDEN, allowEmpty = true)
+ param("env.CPP_STAGING", "/tmp/cpp_staging")
+ param("CONTAINER_JAVA_HOME", "/usr/lib/jvm/java-17-openjdk-amd64/")
+ }
+
+ dependencies {
+ dependency(CppClientPackages) {
+ snapshot {}
+ artifacts {
+ cleanDestination = true
+ artifactRules = """
+ odbc-tgz => ignite3-odbc-tgz
+ """.trimIndent()
+ }
+ }
+ }
+
+ steps {
+ customScript(type = "bash") {
+ name = "Setup Docker Proxy"
+ }
+
+ script {
+ name = "Install ODBC and build C++ tests in Ubuntu 22.04 container"
+ dockerImage = "docker.gridgain.com/ci/tc-ubuntu22_04-odbc:v1.0"
+ dockerRunParameters = "-e JAVA_HOME=%CONTAINER_JAVA_HOME% --ulimit
nofile=32768:32768"
+ scriptContent = """
+ clang --version
+ clang++ --version
+ ulimit -a
+
+ tar xzvf ignite3-odbc-tgz/*.tar.gz -C /
+ odbcinst -i -d -f /usr/share/ignite/ignite3-odbc.ini -v
+
+ cd %PATH__IGNITE_DIR%
+ ./gradlew :ignite-runner:integrationTestClasses
+ mkdir %PATH__CMAKE_BUILD_DIRECTORY% || exit 2
+ cd %PATH__CMAKE_BUILD_DIRECTORY% || exit 3
+
+ cmake .. -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang
-DENABLE_TESTS=ON -DENABLE_ODBC=ON -DCMAKE_BUILD_TYPE=Debug
-DCMAKE_INSTALL_PREFIX=%env.CPP_STAGING% || (echo 'CMake configuration failed'
&& exit 5)
+ cmake --build . -j8 || (echo 'CMake build failed' && exit 6)
+
+ ./bin/ignite-odbc-test
--gtest_output=xml:%PATH__ODBC_TEST_RESULTS%
+ """.trimIndent()
+ }
+
+ customScript(type = "bash") {
+ name = "Clean Up Remaining Processes"
+ }
+ }
+
+ failureConditions {
+ executionTimeoutMin = 15
+ failOnText {
+ conditionType = BuildFailureOnText.ConditionType.CONTAINS
+ pattern = "CMake configuration failed"
+ failureMessage = "CMake configuration failed"
+ reverse = false
+ }
+ failOnText {
+ conditionType = BuildFailureOnText.ConditionType.CONTAINS
+ pattern = "CMake build failed"
+ failureMessage = "CMake build failed"
+ reverse = false
+ }
+ failOnText {
+ conditionType = BuildFailureOnText.ConditionType.CONTAINS
+ pattern = "CMake install failed"
+ failureMessage = "CMake install failed"
+ reverse = false
+ }
+ failOnText {
+ conditionType = BuildFailureOnText.ConditionType.CONTAINS
+ pattern = "FAILED TEST SUITE"
+ failureMessage = "One or several test suites have failed during
SetUpTestSuite"
+ reverse = false
+ }
+ }
+
+ features {
+ xmlReport {
+ reportType = XmlReport.XmlReportType.GOOGLE_TEST
+ rules = """
+ +:%PATH__ODBC_TEST_RESULTS%
+ """.trimIndent()
+ verbose = true
+ }
+ }
+})
diff --git a/.teamcity/test/platform_tests/PlatformCppTestsLinux.kt
b/.teamcity/test/platform_tests/PlatformCppTestsLinux.kt
index 242a282dfd2..d9bd4eace5e 100644
--- a/.teamcity/test/platform_tests/PlatformCppTestsLinux.kt
+++ b/.teamcity/test/platform_tests/PlatformCppTestsLinux.kt
@@ -26,7 +26,6 @@ object PlatformCppTestsLinux : BuildType({
param("env.IGNITE_CPP_TESTS_USE_SINGLE_NODE", "")
param("PATH__CMAKE_BUILD_DIRECTORY",
"%PATH__WORKING_DIR%/cmake-build-debug")
param("PATH__CLIENT_TEST_RESULTS",
"%PATH__WORKING_DIR%/cpp_client_tests_results.xml")
- param("PATH__ODBC_TEST_RESULTS",
"%PATH__WORKING_DIR%/odbc_tests_results.xml")
param("PATH__UNIT_TESTS_RESULT",
"%PATH__WORKING_DIR%/cpp_unit_test_results.xml")
text("PATH__WORKING_DIR",
"%teamcity.build.checkoutDir%/%VCSROOT__IGNITE3%/modules/platforms/cpp",
display = ParameterDisplay.HIDDEN, allowEmpty = true)
param("env.CPP_STAGING", "/tmp/cpp_staging")
@@ -39,9 +38,6 @@ object PlatformCppTestsLinux : BuildType({
scriptContent = """
gcc --version || exit 0
g++ --version || exit 0
-
- odbcinst -j || exit 0
- cat /etc/odbcinst.ini || exit 0
""".trimIndent()
}
script {
@@ -50,7 +46,7 @@ object PlatformCppTestsLinux : BuildType({
mkdir %PATH__CMAKE_BUILD_DIRECTORY% || exit 2
cd %PATH__CMAKE_BUILD_DIRECTORY% || exit 3
- cmake .. -DENABLE_TESTS=ON -DENABLE_ODBC=ON
-DWARNINGS_AS_ERRORS=ON -DCMAKE_BUILD_TYPE=Debug
-DCMAKE_INSTALL_PREFIX=%env.CPP_STAGING% || (echo 'CMake configuration failed'
&& exit 5)
+ cmake .. -DENABLE_TESTS=ON -DENABLE_ODBC=OFF
-DWARNINGS_AS_ERRORS=ON -DCMAKE_BUILD_TYPE=Debug
-DCMAKE_INSTALL_PREFIX=%env.CPP_STAGING% || (echo 'CMake configuration failed'
&& exit 5)
cmake --build . -j8 || (echo 'CMake build failed' && exit 6)
cmake --install . || (echo 'CMake install failed' && exit 7)
""".trimIndent()
@@ -83,19 +79,6 @@ object PlatformCppTestsLinux : BuildType({
customScript(type = "bash") {
name = "Clean Up Remaining Processes"
}
- script {
- name = "ODBC integration tests"
- workingDir = "%PATH__CMAKE_BUILD_DIRECTORY%"
- scriptContent = """
- if [ -f "./bin/ignite-odbc-test" ]; then
- ./bin/ignite-odbc-test
--gtest_output=xml:%PATH__ODBC_TEST_RESULTS%
- fi
- """.trimIndent()
- formatStderrAsError = true
- }
- customScript(type = "bash") {
- name = "Clean Up Remaining Processes"
- }
}
failureConditions {
@@ -131,7 +114,6 @@ object PlatformCppTestsLinux : BuildType({
reportType = XmlReport.XmlReportType.GOOGLE_TEST
rules = """
+:%PATH__CLIENT_TEST_RESULTS%
- +:%PATH__ODBC_TEST_RESULTS%
+:%PATH__CMAKE_BUILD_DIRECTORY%/Testing/Result/*.xml
""".trimIndent()
verbose = true
@@ -142,12 +124,4 @@ object PlatformCppTestsLinux : BuildType({
verbose = true
}
}
-
- /**
- * Temporary lock Platform Linux jobs on old-type agents
- * until execution of these tests is fixed on DIND agents
- */
- requirements {
- doesNotExist("env.DIND_ENABLED")
- }
})
diff --git a/.teamcity/test/platform_tests/Project.kt
b/.teamcity/test/platform_tests/Project.kt
index d2640e038d1..34583900de8 100644
--- a/.teamcity/test/platform_tests/Project.kt
+++ b/.teamcity/test/platform_tests/Project.kt
@@ -15,6 +15,9 @@ object Project : Project({
listOf(
PlatformCppTestsLinux,
+ PlatformCppOdbcTestsDebLinux,
+ PlatformCppOdbcTestsRpmLinux,
+ PlatformCppOdbcTestsTgzLinux,
PlatformDotnetTestsLinux,
PlatformPythonTestsLinux
).forEach {
diff --git a/modules/platforms/build.gradle b/modules/platforms/build.gradle
index d3f6f8724a2..008b6f96359 100644
--- a/modules/platforms/build.gradle
+++ b/modules/platforms/build.gradle
@@ -117,6 +117,25 @@ def cmakeBuildOdbc = tasks.register('cmakeBuildOdbc',
CMakeBuildTask) {
configureFromProject() // uses everything in the cmake { ... } section.
}
+def cmakeConfigurePackage = tasks.register('cmakeConfigurePackage',
CMakeConfigureTask) {
+ dependsOn copyPlatformsHeaders
+ configureFromProject() // uses everything in the cmake { ... } section.
+ getDef().ENABLE_CLIENT = 'ON'
+ getDef().ENABLE_ODBC = 'ON'
+}
+
+def cmakeBuildPackage = tasks.register('cmakeBuildPackage', CMakeBuildTask) {
+ dependsOn cmakeConfigurePackage
+ configureFromProject() // uses everything in the cmake { ... } section.
+}
+
+def cmakeCpack = tasks.register('cmakeCpack', Exec) {
+ dependsOn cmakeBuildPackage
+ workingDir "$buildDir/cpp"
+
+ commandLine "cpack", "-G", "DEB;RPM;TGZ", "-C", "Release"
+}
+
def buildNuGet = tasks.register('buildNuGet', Exec) {
dependsOn copyPlatformsHeaders
workingDir "$projectDir/dotnet"
diff --git a/modules/platforms/cpp/CMakeLists.txt
b/modules/platforms/cpp/CMakeLists.txt
index 54832b707f1..8c3a46f5027 100644
--- a/modules/platforms/cpp/CMakeLists.txt
+++ b/modules/platforms/cpp/CMakeLists.txt
@@ -19,10 +19,29 @@ cmake_minimum_required(VERSION 3.18)
include(CMakePackageConfigHelpers)
-file(READ _version.txt IGNITE_VERSION)
-if(NOT DEFINED IGNITE_VERSION)
- set(IGNITE_VERSION 3.0.0)
- message(WARNING "Failed to read version from _version.txt file. Using
default version \"${IGNITE_VERSION}\".")
+file(READ _version.txt IGNITE_VERSION_BASE)
+if(NOT DEFINED IGNITE_VERSION_BASE)
+ set(IGNITE_VERSION_BASE 3.0.0.0)
+ message(WARNING "Failed to read version from _version.txt file. Using
default version \"${IGNITE_VERSION_BASE}\".")
+endif()
+
+string(STRIP "${IGNITE_VERSION_BASE}" IGNITE_VERSION_BASE)
+string(REGEX MATCH "^([0-9]+)\\.([0-9]+)\\.([0-9]+)\\.?([0-9]+)?"
VERSION_MATCH "${IGNITE_VERSION_BASE}")
+
+if(VERSION_MATCH)
+ set(VERSION_MAJOR "${CMAKE_MATCH_1}")
+ set(VERSION_MINOR "${CMAKE_MATCH_2}")
+ set(VERSION_PATCH "${CMAKE_MATCH_3}")
+ set(VERSION_PRERELEASE "${CMAKE_MATCH_4}")
+ set(IGNITE_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
+ set(IGNITE_VERSION_FULL
"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}.${VERSION_PRERELEASE}")
+ if(VERSION_PRERELEASE)
+ message(STATUS "Parsed version: ${IGNITE_VERSION_FULL}")
+ else()
+ message(STATUS "Parsed version: ${IGNITE_VERSION}")
+ endif ()
+else()
+ message(FATAL_ERROR "Failed to parse version from
'${IGNITE_VERSION_BASE}'. Expected format: MAJOR.MINOR.PATCH.PRERELEASE")
endif()
project(ignite3 VERSION ${IGNITE_VERSION} LANGUAGES CXX)
@@ -30,7 +49,7 @@ project(ignite3 VERSION ${IGNITE_VERSION} LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
-set(CMAKE_PROJECT_VERSION ${PROJECT_VERSION})
+set(CMAKE_PROJECT_VERSION ${IGNITE_VERSION_BASE})
option(USE_LOCAL_DEPS "Use local dependencies." OFF)
option(ENABLE_CLIENT "Build Ignite.C++ Client module" ON)
@@ -123,9 +142,15 @@ if (WIN32)
add_definitions(-DNOMINMAX)
else()
include(GNUInstallDirs)
+ # Replace with the variables from GNUInstallDirs
+ set(IGNITE_INSTALL_ARCHIVE_DIR lib)
+ set(IGNITE_INSTALL_LIBRARY_DIR lib)
+ set(IGNITE_INSTALL_RUNTIME_DIR bin)
+ set(IGNITE_INSTALL_INCLUDE_DIR include)
+ set(IGNITE_INSTALL_DATAROOT_DIR share)
endif()
-set(IGNITE_INCLUDEDIR ${CMAKE_INSTALL_INCLUDEDIR}/ignite)
+set(IGNITE_INCLUDEDIR ${IGNITE_INSTALL_INCLUDE_DIR}/ignite)
include(cmake/packaging.cmake)
include(CPack)
@@ -256,7 +281,7 @@ install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/cmake/ignite-config.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/cmake/ignite-config-version.cmake"
COMPONENT client
- DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/ignite"
+ DESTINATION "${IGNITE_INSTALL_LIBRARY_DIR}/cmake/ignite"
)
# Do not export the package by default
diff --git a/modules/platforms/cpp/cmake/packaging.cmake
b/modules/platforms/cpp/cmake/packaging.cmake
index d8733ba230b..5858cd03860 100644
--- a/modules/platforms/cpp/cmake/packaging.cmake
+++ b/modules/platforms/cpp/cmake/packaging.cmake
@@ -26,8 +26,8 @@ if(ENABLE_UB_SANITIZER)
endif()
set(CPACK_PACKAGING_INSTALL_PREFIX "/usr")
-set(PACKAGE_SO_PATH
"${CPACK_PACKAGING_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
-set(IGNITE_ODBC_INI_PATH
"${CPACK_PACKAGING_INSTALL_PREFIX}/${CMAKE_INSTALL_DATAROOTDIR}/ignite")
+set(PACKAGE_SO_PATH
"${CPACK_PACKAGING_INSTALL_PREFIX}/${IGNITE_INSTALL_LIBRARY_DIR}")
+set(IGNITE_ODBC_INI_PATH
"${CPACK_PACKAGING_INSTALL_PREFIX}/${IGNITE_INSTALL_DATAROOT_DIR}/ignite")
set(CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION ON)
@@ -40,9 +40,13 @@ set(CPACK_VERBATIM_VARIABLES YES)
set(CPACK_PACKAGE_INSTALL_DIRECTORY ${CPACK_PACKAGE_NAME})
set(CPACK_OUTPUT_FILE_PREFIX "_packages")
-set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
-set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR})
-set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH})
+set(CPACK_PACKAGE_VERSION_MAJOR ${VERSION_MAJOR})
+set(CPACK_PACKAGE_VERSION_MINOR ${VERSION_MINOR})
+if(VERSION_PRERELEASE)
+ set(CPACK_PACKAGE_VERSION_PATCH ${VERSION_PATCH}.${VERSION_PRERELEASE})
+else()
+ set(CPACK_PACKAGE_VERSION_PATCH ${VERSION_PATCH})
+endif()
set(CPACK_PACKAGE_CONTACT "[email protected]")
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Apache Software Foundation")
@@ -86,8 +90,8 @@ file(COPY
set(CPACK_DEBIAN_ODBC_PACKAGE_CONTROL_EXTRA
"${SCRIPTS_BINARY_DIR}/postinst;${SCRIPTS_BINARY_DIR}/prerm")
set(CPACK_DEBIAN_ODBC_PACKAGE_CONTROL_STRICT_PERMISSION TRUE)
-set(CPACK_DEBIAN_CLIENT_PACKAGE_DEPENDS libc6 libstdc++6)
-set(CPACK_DEBIAN_ODBC_PACKAGE_DEPENDS unixodbc odbcinst libc6 libstdc++6)
+set(CPACK_DEBIAN_CLIENT_PACKAGE_DEPENDS "libc6, libstdc++6")
+set(CPACK_DEBIAN_ODBC_PACKAGE_DEPENDS "unixodbc, odbcinst, libc6, libstdc++6")
set(CPACK_RPM_ODBC_POST_INSTALL_SCRIPT_FILE
"${SCRIPTS_BINARY_DIR}/post_install.sh")
set(CPACK_RPM_ODBC_PRE_UNINSTALL_SCRIPT_FILE
"${SCRIPTS_BINARY_DIR}/pre_uninstall.sh")
@@ -100,7 +104,7 @@
configure_file("${ODBC_SCRIPT_DIR}/ignite3-odbc-linux.ini.in" "${CMAKE_CURRENT_B
install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/ignite3-odbc-linux.ini"
COMPONENT odbc
- DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/ignite/"
+ DESTINATION "${IGNITE_INSTALL_DATAROOT_DIR}/ignite/"
RENAME "ignite3-odbc.ini"
)
diff --git a/modules/platforms/cpp/ignite/client/CMakeLists.txt
b/modules/platforms/cpp/ignite/client/CMakeLists.txt
index 93599a93aae..328f03c5419 100644
--- a/modules/platforms/cpp/ignite/client/CMakeLists.txt
+++ b/modules/platforms/cpp/ignite/client/CMakeLists.txt
@@ -113,7 +113,7 @@ foreach(_target_lib IN LISTS _target_libs)
target_link_libraries(${_target_lib} PRIVATE ${LIBRARIES})
target_include_directories(${_target_lib}
PUBLIC $<BUILD_INTERFACE:${IGNITE_CMAKE_TOP_DIR}/>
- $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/>
+ $<INSTALL_INTERFACE:${IGNITE_INSTALL_INCLUDE_DIR}/>
)
endforeach()
unset(_target_libs)
@@ -124,10 +124,10 @@ add_library(ignite::client-static ALIAS ${TARGET}-static)
install(TARGETS ${TARGET}
EXPORT ignite-client-targets
COMPONENT client
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
- INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+ ARCHIVE DESTINATION ${IGNITE_INSTALL_ARCHIVE_DIR}
+ LIBRARY DESTINATION ${IGNITE_INSTALL_LIBRARY_DIR}
+ RUNTIME DESTINATION ${IGNITE_INSTALL_RUNTIME_DIR}
+ INCLUDES DESTINATION ${IGNITE_INSTALL_INCLUDE_DIR}
)
export(
@@ -139,7 +139,7 @@ export(
install(
EXPORT ignite-client-targets
NAMESPACE ignite::
- DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/ignite"
+ DESTINATION "${IGNITE_INSTALL_LIBRARY_DIR}/cmake/ignite"
COMPONENT client
FILE "ignite-client-targets.cmake"
)
diff --git a/modules/platforms/cpp/ignite/odbc/CMakeLists.txt
b/modules/platforms/cpp/ignite/odbc/CMakeLists.txt
index c9bd9aaad3f..ac9d8900aaa 100644
--- a/modules/platforms/cpp/ignite/odbc/CMakeLists.txt
+++ b/modules/platforms/cpp/ignite/odbc/CMakeLists.txt
@@ -95,7 +95,7 @@ foreach(_target_lib IN LISTS _target_libs)
target_include_directories(${_target_lib} SYSTEM INTERFACE
${ODBC_INCLUDE_DIRS})
target_include_directories(${_target_lib}
INTERFACE $<BUILD_INTERFACE:${IGNITE_CMAKE_TOP_DIR}/>
- $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/>
+ $<INSTALL_INTERFACE:${IGNITE_INSTALL_INCLUDE_DIR}/>
)
target_link_libraries(${_target_lib} PRIVATE ${LIBRARIES})
endforeach()
@@ -106,10 +106,10 @@ add_library(ignite::odbc ALIAS ${TARGET})
install(TARGETS ${TARGET}
EXPORT ignite-odbc-targets
COMPONENT odbc
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
- INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+ ARCHIVE DESTINATION ${IGNITE_INSTALL_ARCHIVE_DIR}
+ LIBRARY DESTINATION ${IGNITE_INSTALL_LIBRARY_DIR}
+ RUNTIME DESTINATION ${IGNITE_INSTALL_RUNTIME_DIR}
+ INCLUDES DESTINATION ${IGNITE_INSTALL_INCLUDE_DIR}
)
export(
@@ -121,7 +121,7 @@ export(
install(
EXPORT ignite-odbc-targets
NAMESPACE ignite::
- DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/ignite"
+ DESTINATION "${IGNITE_INSTALL_LIBRARY_DIR}/cmake/ignite"
COMPONENT odbc-local
FILE "ignite-odbc-targets.cmake"
)
diff --git a/modules/platforms/cpp/pkgconfig/CMakeLists.txt
b/modules/platforms/cpp/pkgconfig/CMakeLists.txt
index b9975fc0373..5a864172ab1 100644
--- a/modules/platforms/cpp/pkgconfig/CMakeLists.txt
+++ b/modules/platforms/cpp/pkgconfig/CMakeLists.txt
@@ -22,7 +22,7 @@ if (${ENABLE_CLIENT})
@ONLY
)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/ignite-client.pc
- DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig
+ DESTINATION ${IGNITE_INSTALL_LIBRARY_DIR}/pkgconfig
)
endif()
@@ -33,6 +33,6 @@ if (${ENABLE_ODBC})
@ONLY
)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/ignite-odbc.pc
- DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig
+ DESTINATION ${IGNITE_INSTALL_LIBRARY_DIR}/pkgconfig
)
endif()
diff --git a/modules/platforms/cpp/pkgconfig/ignite-client.pc.in
b/modules/platforms/cpp/pkgconfig/ignite-client.pc.in
index 957e00fdf54..3f4e0a8307f 100644
--- a/modules/platforms/cpp/pkgconfig/ignite-client.pc.in
+++ b/modules/platforms/cpp/pkgconfig/ignite-client.pc.in
@@ -1,7 +1,7 @@
prefix=@CMAKE_INSTALL_PREFIX@
exec_prefix=${prefix}
-libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
+libdir=${exec_prefix}/@IGNITE_INSTALL_LIBRARY_DIR@
+includedir=${prefix}/@IGNITE_INSTALL_INCLUDE_DIR@
Name: ignite-client
Description: Apache Ignite C++ Client Library
diff --git a/modules/platforms/cpp/pkgconfig/ignite-odbc.pc.in
b/modules/platforms/cpp/pkgconfig/ignite-odbc.pc.in
index a257365de14..a0276e85e84 100644
--- a/modules/platforms/cpp/pkgconfig/ignite-odbc.pc.in
+++ b/modules/platforms/cpp/pkgconfig/ignite-odbc.pc.in
@@ -1,7 +1,7 @@
prefix=@CMAKE_INSTALL_PREFIX@
exec_prefix=${prefix}
-libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
+libdir=${exec_prefix}/@IGNITE_INSTALL_LIBRARY_DIR@
+includedir=${prefix}/@IGNITE_INSTALL_INCLUDE_DIR@
Name: ignite-odbc
Description: Apache Ignite ODBC Driver