diff --git a/taskfiles/deps/main.yaml b/taskfiles/deps/main.yaml index 9a6b0ab478..06ca69bfc2 100644 --- a/taskfiles/deps/main.yaml +++ b/taskfiles/deps/main.yaml @@ -390,8 +390,40 @@ tasks: TARBALL_SHA256: "537512904744b35e232912055ccf8ec66d768639ff3abe5788d90d792ec5f48b" TARBALL_URL: "https://github.com/lz4/lz4/releases/download/v1.10.0/lz4-1.10.0.tar.gz" + mariadb-connector-cpp-download-and-validate-checksum: + internal: true + requires: + vars: ["CHECKSUM_FILE"] + cmds: + - task: "yscope-dev-utils:remote:download-and-extract-tar" + vars: + FILE_SHA256: "0e3dfe9f2bc3f7bb6f7c159009556290064a7c23402ea08019fa8aebfc3ff2c9" + OUTPUT_DIR: "{{.G_DEPS_CPP_DIR}}/mariadb-connector-cpp-extracted" + URL: "https://github.com/mariadb-corporation/mariadb-connector-cpp/archive/refs/tags/\ + 1.1.5.tar.gz" + # Uses checksum to skip mariadb-connector-cpp installation because the build updates the + # source directory and will always rebuild. + - task: "yscope-dev-utils:checksum:validate" + vars: + CHECKSUM_FILE: "{{.CHECKSUM_FILE}}" + INCLUDE_PATTERNS: &mariadb-cmake-include-patterns + - "{{.G_DEPS_CPP_DIR}}/mariadb-connector-cpp-install" + mariadb-connector-cpp: + internal: true + vars: + # Cannot use dependency checksum directory because it is cleaned up in `utils:init`. + CHECKSUM_FILE: "{{.G_DEPS_CPP_CHECKSUMS_DIR}}/mariadb-connector-cpp.md5" + sources: + - "{{.TASKFILE}}" + - "{{.CHECKSUM_FILE}}" platforms: ["linux"] + generates: ["{{.CHECKSUM_FILE}}"] + run: "once" + deps: + - task: "mariadb-connector-cpp-download-and-validate-checksum" + vars: + CHECKSUM_FILE: "{{.CHECKSUM_FILE}}" preconditions: # NOTE: The MariaDB connector is only required for building Spider, which is only supported on # Ubuntu. `INSTALL_LAYOUT` is currently hardcoded to "DEB". To support other Linux distros: @@ -399,18 +431,34 @@ tasks: # - Make `INSTALL_LAYOUT` configurable. - >- source /etc/os-release && [[ "$ID" == "ubuntu" ]] - internal: true - run: "once" cmds: - - task: "utils:install-remote-cmake-lib" + # Copies extracted files so that the build won't pollute the extracted files and cause + # unnecessary rebuilds. + - |- + rm -rf "{{.G_DEPS_CPP_DIR}}/mariadb-connector-cpp-src" + cp -r "{{.G_DEPS_CPP_DIR}}/mariadb-connector-cpp-extracted" \ + "{{.G_DEPS_CPP_DIR}}/mariadb-connector-cpp-src" + - task: "yscope-dev-utils:cmake:generate" vars: - CMAKE_GEN_ARGS: + BUILD_DIR: "{{.G_DEPS_CPP_DIR}}/mariadb-connector-cpp-build" + EXTRA_ARGS: - "-DUSE_SYSTEM_INSTALLED_LIB=ON" - "-DINSTALL_LAYOUT=DEB" - LIB_NAME: "mariadb-connector-cpp" - TARBALL_URL: "https://github.com/mariadb-corporation/mariadb-connector-cpp/archive/refs/\ - tags/1.1.5.tar.gz" - TARBALL_SHA256: "0e3dfe9f2bc3f7bb6f7c159009556290064a7c23402ea08019fa8aebfc3ff2c9" + SOURCE_DIR: "{{.G_DEPS_CPP_DIR}}/mariadb-connector-cpp-src" + - task: "yscope-dev-utils:cmake:build" + vars: + BUILD_DIR: "{{.G_DEPS_CPP_DIR}}/mariadb-connector-cpp-build" + JOBS: "{{.G_CPP_MAX_PARALLELISM_PER_BUILD_TASK}}" + - task: "yscope-dev-utils:cmake:install" + vars: + BUILD_DIR: "{{.G_DEPS_CPP_DIR}}/mariadb-connector-cpp-build" + CMAKE_PACKAGE_NAME: "mariadb-connector-cpp" + CMAKE_SETTINGS_DIR: "{{.G_DEPS_CPP_CMAKE_SETTINGS_DIR}}" + INSTALL_PREFIX: "{{.G_DEPS_CPP_DIR}}/mariadb-connector-cpp-install" + - task: "yscope-dev-utils:checksum:compute" + vars: + CHECKSUM_FILE: "{{.CHECKSUM_FILE}}" + INCLUDE_PATTERNS: *mariadb-cmake-include-patterns microsoft.gsl: internal: true