diff --git a/components/core/CMakeLists.txt b/components/core/CMakeLists.txt index 69987b0ef4..37b332444e 100644 --- a/components/core/CMakeLists.txt +++ b/components/core/CMakeLists.txt @@ -123,7 +123,7 @@ if(PROJECT_IS_TOP_LEVEL) # NOTE: We mark the file optional since it's not required if the user happens to have the # dependencies installed already. set(CLP_DEPS_CPP_DIR "${CMAKE_SOURCE_DIR}/../../build/deps/cpp") - include("${CLP_DEPS_CPP_DIR}/cmake-settings/all-core.cmake" + include("${CLP_DEPS_CPP_DIR}/cmake-settings/core/all-core.cmake" OPTIONAL RESULT_VARIABLE CLP_DEPS_CPP_CORE_SETTINGS_FILE_PATH ) diff --git a/taskfiles/deps/artifacts.yaml b/taskfiles/deps/artifacts.yaml new file mode 100644 index 0000000000..1c4167580f --- /dev/null +++ b/taskfiles/deps/artifacts.yaml @@ -0,0 +1,31 @@ +version: "3" + +vars: + G_ANTLR_JAR_FILE: "{{.G_DEPS_CPP_DIR}}/antlr-{{.G_ANTLR_VERSION}}-complete.jar" + +tasks: + antlr-jar: + internal: true + vars: + CHECKSUM_FILE: "{{.G_DEPS_CPP_CHECKSUMS_DIR}}/antlr-jar.md5" + OUTPUT_FILE: "{{.G_ANTLR_JAR_FILE}}" + run: "once" + deps: + - task: "yscope-dev-utils:checksum:validate" + vars: + CHECKSUM_FILE: "{{.CHECKSUM_FILE}}" + INCLUDE_PATTERNS: + - "{{.OUTPUT_FILE}}" + cmds: + - task: "yscope-dev-utils:remote:curl" + vars: + FILE_SHA256: "eae2dfa119a64327444672aff63e9ec35a20180dc5b8090b7a6ab85125df4d76" + OUTPUT_FILE: "{{.OUTPUT_FILE}}" + URL: "https://www.antlr.org/download/antlr-{{.G_ANTLR_VERSION}}-complete.jar" + + # This command must be last + - task: "yscope-dev-utils:checksum:compute" + vars: + CHECKSUM_FILE: "{{.CHECKSUM_FILE}}" + INCLUDE_PATTERNS: + - "{{.OUTPUT_FILE}}" diff --git a/taskfiles/deps/cmake-libs.yaml b/taskfiles/deps/cmake-libs.yaml new file mode 100644 index 0000000000..998f9c9a19 --- /dev/null +++ b/taskfiles/deps/cmake-libs.yaml @@ -0,0 +1,445 @@ +version: "3" + +vars: + # Library names + G_BOOST_LIB_NAME: "Boost" + G_FMT_LIB_NAME: "fmt" + G_GSL_LIB_NAME: "Microsoft.GSL" + +# NOTE: For dependencies built using CMake, we set CMP0074 to NEW whenever: +# - a component's minimum required CMake version is less than 3.27 (where CMP0074 defaults to OLD); +# and +# - the component depends on another via `_ROOT`. +tasks: + absl: + internal: true + requires: + vars: ["CMAKE_SETTINGS_DIR"] + cmds: + - task: "utils:install-remote-cmake-lib-and-generate-settings" + vars: + CMAKE_GEN_ARGS: + - "-DCMAKE_BUILD_TYPE=Release" + - "-DCMAKE_CXX_STANDARD=20" + - "-DCMAKE_INSTALL_MESSAGE=LAZY" + CMAKE_SETTINGS_DIR: "{{.CMAKE_SETTINGS_DIR}}" + LIB_NAME: "absl" + TARBALL_SHA256: "7262daa7c1711406248c10f41026d685e88223bc92817d16fb93c19adb57f669" + TARBALL_URL: "https://github.com/abseil/abseil-cpp/releases/download/20250512.0/\ + abseil-cpp-20250512.0.tar.gz" + + antlr-runtime: + internal: true + requires: + vars: ["CMAKE_SETTINGS_DIR"] + cmds: + - task: "utils:install-remote-cmake-lib-and-generate-settings" + vars: + CMAKE_GEN_ARGS: + - "-DANTLR4_INSTALL=ON" + - "-DCMAKE_BUILD_TYPE=Release" + - "-DCMAKE_INSTALL_MESSAGE=LAZY" + + # Set CMP0135 so that extracted files use the current timestamp as their modification + # timestamp, which ensures the library gets rebuilt if the extracted files change. + - "-DCMAKE_POLICY_DEFAULT_CMP0135=NEW" + CMAKE_SETTINGS_DIR: "{{.CMAKE_SETTINGS_DIR}}" + CMAKE_SOURCE_DIR: "runtime/Cpp" + LIB_NAME: "antlr4-runtime" + TARBALL_SHA256: "9f18272a9b32b622835a3365f850dd1063d60f5045fb1e12ce475ae6e18a35bb" + TARBALL_URL: "https://github.com/antlr/antlr4/archive/refs/tags/\ + {{.G_ANTLR_VERSION}}.tar.gz" + + catch2: + internal: true + requires: + vars: ["CMAKE_SETTINGS_DIR"] + cmds: + - task: "utils:install-remote-cmake-lib-and-generate-settings" + vars: + CMAKE_GEN_ARGS: + - "-DBUILD_TESTING=OFF" + - "-DCMAKE_BUILD_TYPE=Release" + - "-DCMAKE_CXX_STANDARD=20" + - "-DCMAKE_CXX_STANDARD_REQUIRED=ON" + - "-DCMAKE_INSTALL_MESSAGE=LAZY" + CMAKE_SETTINGS_DIR: "{{.CMAKE_SETTINGS_DIR}}" + LIB_NAME: "Catch2" + TARBALL_SHA256: "1ab2de20460d4641553addfdfe6acd4109d871d5531f8f519a52ea4926303087" + TARBALL_URL: "https://github.com/catchorg/Catch2/archive/refs/tags/v3.8.0.tar.gz" + + date: + internal: true + requires: + vars: ["CMAKE_SETTINGS_DIR"] + cmds: + - task: "utils:install-remote-cmake-lib-and-generate-settings" + vars: + CMAKE_GEN_ARGS: + - "-DCMAKE_BUILD_TYPE=Release" + - "-DCMAKE_INSTALL_MESSAGE=LAZY" + CMAKE_SETTINGS_DIR: "{{.CMAKE_SETTINGS_DIR}}" + LIB_NAME: "date" + TARBALL_SHA256: "7a390f200f0ccd207e8cff6757e04817c1a0aec3e327b006b7eb451c57ee3538" + TARBALL_URL: "https://github.com/HowardHinnant/date/archive/refs/tags/v3.0.1.tar.gz" + + fmt: + internal: true + requires: + vars: ["CMAKE_SETTINGS_DIR"] + cmds: + - task: "utils:install-remote-cmake-lib-and-generate-settings" + vars: + CMAKE_GEN_ARGS: + - "-DCMAKE_BUILD_TYPE=Release" + - "-DCMAKE_INSTALL_MESSAGE=LAZY" + - "-DFMT_DOC=OFF" + - "-DFMT_TEST=OFF" + CMAKE_SETTINGS_DIR: "{{.CMAKE_SETTINGS_DIR}}" + LIB_NAME: "{{.G_FMT_LIB_NAME}}" + TARBALL_SHA256: "bc23066d87ab3168f27cef3e97d545fa63314f5c79df5ea444d41d56f962c6af" + TARBALL_URL: "https://github.com/fmtlib/fmt/archive/refs/tags/11.2.0.tar.gz" + + liblzma: + internal: true + requires: + vars: ["CMAKE_SETTINGS_DIR"] + vars: + COMMON_CMAKE_GEN_ARGS: + - "-DBUILD_TESTING=OFF" + - "-DCMAKE_BUILD_TYPE=Release" + - "-DCMAKE_INSTALL_MESSAGE=LAZY" + - "-DXZ_DOC=OFF" + - "-DXZ_TOOL_LZMADEC=OFF" + - "-DXZ_TOOL_LZMAINFO=OFF" + - "-DXZ_TOOL_SCRIPTS=OFF" + - "-DXZ_TOOL_SYMLINKS_LZMA=OFF" + - "-DXZ_TOOL_XZ=OFF" + - "-DXZ_TOOL_XZDEC=OFF" + TARBALL_SHA256: "507825b599356c10dca1cd720c9d0d0c9d5400b9de300af00e4d1ea150795543" + TARBALL_URL: "https://github.com/tukaani-project/xz/releases/download/v5.8.1/xz-5.8.1.tar.gz" + deps: + - task: "liblzma-install" + vars: + BUILD_SHARED_LIBS: true + CMAKE_SETTINGS_DIR: "{{.CMAKE_SETTINGS_DIR}}" + COMMON_CMAKE_GEN_ARGS: + ref: ".COMMON_CMAKE_GEN_ARGS" + TARBALL_SHA256: "{{.TARBALL_SHA256}}" + TARBALL_URL: "{{.TARBALL_URL}}" + - task: "liblzma-install" + vars: + BUILD_SHARED_LIBS: false + CMAKE_SETTINGS_DIR: "{{.CMAKE_SETTINGS_DIR}}" + COMMON_CMAKE_GEN_ARGS: + ref: ".COMMON_CMAKE_GEN_ARGS" + TARBALL_SHA256: "{{.TARBALL_SHA256}}" + TARBALL_URL: "{{.TARBALL_URL}}" + + liblzma-install: + internal: true + requires: + vars: + - "BUILD_SHARED_LIBS" + - "CMAKE_SETTINGS_DIR" + - "COMMON_CMAKE_GEN_ARGS" + - "TARBALL_SHA256" + - "TARBALL_URL" + cmds: + - task: "utils:install-remote-cmake-lib-and-generate-settings" + vars: + CMAKE_GEN_ARGS: + - "-DBUILD_SHARED_LIBS={{ if .BUILD_SHARED_LIBS }}ON{{ else }}OFF{{ end }}" + - >- + {{ join " " .COMMON_CMAKE_GEN_ARGS }} + CMAKE_SETTINGS_DIR: "{{.CMAKE_SETTINGS_DIR}}" + LIB_NAME: "LibLZMA-{{ if .BUILD_SHARED_LIBS }}shared{{ else }}static{{ end }}" + TARBALL_SHA256: "{{.TARBALL_SHA256}}" + TARBALL_URL: "{{.TARBALL_URL}}" + + log-surgeon: + internal: true + vars: + DEPS: + - "fmt" + - "microsoft.gsl" + requires: + vars: ["CMAKE_SETTINGS_DIR"] + deps: + - for: + var: "DEPS" + task: "{{.ITEM}}" + vars: + CMAKE_SETTINGS_DIR: "{{.CMAKE_SETTINGS_DIR}}" + cmds: + - task: "utils:install-remote-cmake-lib-and-generate-settings" + vars: + CMAKE_GEN_ARGS: + - "-C {{.CMAKE_SETTINGS_DIR}}/{{.G_FMT_LIB_NAME}}.cmake" + - "-C {{.CMAKE_SETTINGS_DIR}}/{{.G_GSL_LIB_NAME}}.cmake" + - "-DCMAKE_BUILD_TYPE=Release" + - "-DCMAKE_INSTALL_MESSAGE=LAZY" + - "-Dlog_surgeon_BUILD_TESTING=OFF" + CMAKE_SETTINGS_DIR: "{{.CMAKE_SETTINGS_DIR}}" + LIB_NAME: "log_surgeon" + TARBALL_SHA256: "69a99e0804a52c6b6397c5e7eabecc9bb4915d0145632c66fc63ad13678ff56a" + TARBALL_URL: "https://github.com/y-scope/log-surgeon/archive/a722d07.tar.gz" + + lz4: + internal: true + requires: + vars: ["CMAKE_SETTINGS_DIR"] + cmds: + - task: "utils:install-remote-cmake-lib-and-generate-settings" + vars: + CMAKE_GEN_ARGS: + - "-DBUILD_SHARED_LIBS=ON" + - "-DBUILD_STATIC_LIBS=ON" + - "-DCMAKE_BUILD_TYPE=Release" + - "-DCMAKE_INSTALL_MESSAGE=LAZY" + - "-DLZ4_BUILD_CLI=OFF" + CMAKE_SETTINGS_DIR: "{{.CMAKE_SETTINGS_DIR}}" + CMAKE_SOURCE_DIR: "build/cmake" + LIB_NAME: "lz4" + TARBALL_SHA256: "537512904744b35e232912055ccf8ec66d768639ff3abe5788d90d792ec5f48b" + TARBALL_URL: "https://github.com/lz4/lz4/releases/download/v1.10.0/lz4-1.10.0.tar.gz" + + mariadb-connector-cpp: + internal: true + requires: + vars: ["CMAKE_SETTINGS_DIR"] + platforms: ["linux"] + 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: + # - Update the precondition accordingly. + # - Make `INSTALL_LAYOUT` configurable. + - >- + source /etc/os-release && [[ "$ID" == "ubuntu" ]] + cmds: + - task: "utils:install-remote-cmake-lib-and-generate-settings" + vars: + CMAKE_GEN_ARGS: + - "-DUSE_SYSTEM_INSTALLED_LIB=ON" + - "-DINSTALL_LAYOUT=DEB" + CMAKE_SETTINGS_DIR: "{{.CMAKE_SETTINGS_DIR}}" + LIB_NAME: "mariadb-connector-cpp" + TARBALL_SHA256: "0e3dfe9f2bc3f7bb6f7c159009556290064a7c23402ea08019fa8aebfc3ff2c9" + TARBALL_URL: "https://github.com/mariadb-corporation/mariadb-connector-cpp/archive/refs/\ + tags/1.1.5.tar.gz" + + microsoft.gsl: + internal: true + requires: + vars: ["CMAKE_SETTINGS_DIR"] + cmds: + - task: "utils:install-remote-cmake-lib-and-generate-settings" + vars: + CMAKE_GEN_ARGS: + - "-DCMAKE_BUILD_TYPE=Release" + - "-DCMAKE_INSTALL_MESSAGE=LAZY" + - "-DGSL_TEST=OFF" + CMAKE_SETTINGS_DIR: "{{.CMAKE_SETTINGS_DIR}}" + LIB_NAME: "{{.G_GSL_LIB_NAME}}" + TARBALL_SHA256: "f0e32cb10654fea91ad56bde89170d78cfbf4363ee0b01d8f097de2ba49f6ce9" + TARBALL_URL: "https://github.com/microsoft/GSL/archive/refs/tags/v4.0.0.tar.gz" + + mongocxx: + internal: true + requires: + vars: ["CMAKE_SETTINGS_DIR"] + vars: + VERSION: "r4.1.1" + cmds: + - task: "utils:install-remote-cmake-lib-and-generate-settings" + vars: + CMAKE_GEN_ARGS: + - "-DBUILD_SHARED_AND_STATIC_LIBS=ON" + - "-DBUILD_SHARED_LIBS_WITH_STATIC_MONGOC=ON" + - "-DCMAKE_BUILD_TYPE=Release" + - "-DCMAKE_INSTALL_MESSAGE=LAZY" + - "-DENABLE_UNINSTALL=OFF" + CMAKE_SETTINGS_DIR: "{{.CMAKE_SETTINGS_DIR}}" + LIB_NAME: "mongocxx" + TARBALL_SHA256: "19dff3cf834a3e09229260f22a0325820a7e30c78b294db91794dd934776b33a" + TARBALL_URL: "https://github.com/mongodb/mongo-cxx-driver/releases/download/{{.VERSION}}\ + /mongo-cxx-driver-{{.VERSION}}.tar.gz" + + msgpack-cxx: + internal: true + requires: + vars: ["CMAKE_SETTINGS_DIR"] + vars: + VERSION: "7.0.0" + deps: + - task: "boost" + vars: + CMAKE_SETTINGS_DIR: "{{.CMAKE_SETTINGS_DIR}}" + cmds: + - task: "utils:install-remote-cmake-lib-and-generate-settings" + vars: + CMAKE_GEN_ARGS: + - "-C {{.CMAKE_SETTINGS_DIR}}/{{.G_BOOST_LIB_NAME}}.cmake" + - "-DCMAKE_BUILD_TYPE=Release" + - "-DCMAKE_INSTALL_MESSAGE=LAZY" + - "-DCMAKE_POLICY_DEFAULT_CMP0074=NEW" + - "-DMSGPACK_BUILD_DOCS=OFF" + - "-DMSGPACK_CXX20=ON" + CMAKE_SETTINGS_DIR: "{{.CMAKE_SETTINGS_DIR}}" + LIB_NAME: "msgpack-cxx" + TARBALL_SHA256: "7504b7af7e7b9002ce529d4f941e1b7fb1fb435768780ce7da4abaac79bb156f" + TARBALL_URL: "https://github.com/msgpack/msgpack-c/releases/download/cpp-{{.VERSION}}\ + /msgpack-cxx-{{.VERSION}}.tar.gz" + + nlohmann_json: + internal: true + requires: + vars: ["CMAKE_SETTINGS_DIR"] + cmds: + - task: "utils:install-remote-cmake-lib-and-generate-settings" + vars: + CMAKE_GEN_ARGS: + - "-DCMAKE_BUILD_TYPE=Release" + - "-DCMAKE_INSTALL_MESSAGE=LAZY" + - "-DJSON_BuildTests=OFF" + CMAKE_SETTINGS_DIR: "{{.CMAKE_SETTINGS_DIR}}" + LIB_NAME: "nlohmann_json" + TARBALL_SHA256: "0d8ef5af7f9794e3263480193c491549b2ba6cc74bb018906202ada498a79406" + + # NOTE: We use the GitHub-generated source tarball for this version rather than the + # release tarball, since the latter is served from githubusercontent.com which is blocked + # by some developers' firewalls. The contents of the former are a superset of the latter. + TARBALL_URL: "https://github.com/nlohmann/json/archive/refs/tags/v3.11.3.tar.gz" + + simdjson: + internal: true + requires: + vars: ["CMAKE_SETTINGS_DIR"] + cmds: + - task: "utils:install-remote-cmake-lib-and-generate-settings" + vars: + CMAKE_GEN_ARGS: + - "-DCMAKE_BUILD_TYPE=Release" + - "-DCMAKE_INSTALL_MESSAGE=LAZY" + CMAKE_SETTINGS_DIR: "{{.CMAKE_SETTINGS_DIR}}" + LIB_NAME: "simdjson" + TARBALL_SHA256: "07a1bb3587aac18fd6a10a83fe4ab09f1100ab39f0cb73baea1317826b9f9e0d" + TARBALL_URL: "https://github.com/simdjson/simdjson/archive/refs/tags/v3.13.0.tar.gz" + + spdlog: + internal: true + requires: + vars: ["CMAKE_SETTINGS_DIR"] + deps: + - task: "fmt" + vars: + CMAKE_SETTINGS_DIR: "{{.CMAKE_SETTINGS_DIR}}" + cmds: + - task: "utils:install-remote-cmake-lib-and-generate-settings" + vars: + CMAKE_GEN_ARGS: + - "-C {{.CMAKE_SETTINGS_DIR}}/{{.G_FMT_LIB_NAME}}.cmake" + - "-DCMAKE_BUILD_TYPE=Release" + - "-DCMAKE_INSTALL_MESSAGE=LAZY" + - "-DCMAKE_POLICY_DEFAULT_CMP0074=NEW" + - "-DSPDLOG_BUILD_EXAMPLE=OFF" + - "-DSPDLOG_BUILD_EXAMPLE_HO=OFF" + - "-DSPDLOG_FMT_EXTERNAL=ON" + CMAKE_SETTINGS_DIR: "{{.CMAKE_SETTINGS_DIR}}" + LIB_NAME: "spdlog" + TARBALL_SHA256: "15a04e69c222eb6c01094b5c7ff8a249b36bb22788d72519646fb85feb267e67" + + # NOTE: Since spdlog depends on fmt, we need to choose a version of spdlog that's + # compatible with the version of fmt we use. + TARBALL_URL: "https://github.com/gabime/spdlog/archive/refs/tags/v1.15.3.tar.gz" + + utfcpp: + internal: true + requires: + vars: ["CMAKE_SETTINGS_DIR"] + cmds: + - task: "utils:install-remote-cmake-lib-and-generate-settings" + vars: + CMAKE_GEN_ARGS: + - "-DCMAKE_INSTALL_MESSAGE=LAZY" + CMAKE_SETTINGS_DIR: "{{.CMAKE_SETTINGS_DIR}}" + LIB_NAME: "utfcpp" + TARBALL_SHA256: "6920a6a5d6a04b9a89b2a89af7132f8acefd46e0c2a7b190350539e9213816c0" + TARBALL_URL: "https://github.com/nemtrif/utfcpp/archive/refs/tags/v4.0.6.tar.gz" + + yaml-cpp: + internal: true + requires: + vars: ["CMAKE_SETTINGS_DIR"] + cmds: + - task: "utils:install-remote-cmake-lib-and-generate-settings" + vars: + CMAKE_GEN_ARGS: + - "-DBUILD_TESTING=OFF" + - "-DCMAKE_BUILD_TYPE=Release" + - "-DCMAKE_INSTALL_MESSAGE=LAZY" + CMAKE_SETTINGS_DIR: "{{.CMAKE_SETTINGS_DIR}}" + LIB_NAME: "yaml-cpp" + TARBALL_SHA256: "43e6a9fcb146ad871515f0d0873947e5d497a1c9c60c58cb102a97b47208b7c3" + TARBALL_URL: "https://github.com/jbeder/yaml-cpp/archive/refs/tags/yaml-cpp-0.7.0.tar.gz" + + ystdlib: + internal: true + requires: + vars: ["CMAKE_SETTINGS_DIR"] + deps: + - task: "boost" + vars: + CMAKE_SETTINGS_DIR: "{{.CMAKE_SETTINGS_DIR}}" + cmds: + - task: "utils:install-remote-cmake-lib-and-generate-settings" + vars: + CMAKE_GEN_ARGS: + - "-C {{.CMAKE_SETTINGS_DIR}}/{{.G_BOOST_LIB_NAME}}.cmake" + - "-DCMAKE_POSITION_INDEPENDENT_CODE=ON" + - "-Dystdlib_BUILD_TESTING=OFF" + CMAKE_SETTINGS_DIR: "{{.CMAKE_SETTINGS_DIR}}" + LIB_NAME: "ystdlib" + TARBALL_SHA256: "65990dc2bcc4a355c2181bfe31a7800f492309d1bcd340f52a34e85047e61bc8" + TARBALL_URL: "https://github.com/y-scope/ystdlib-cpp/archive/9ed78cd.tar.gz" + + zlib: + internal: true + requires: + vars: ["CMAKE_SETTINGS_DIR"] + vars: + LIB_NAME: "zlib" + cmds: + - task: "utils:install-remote-cmake-lib-and-generate-settings" + vars: + CMAKE_GEN_ARGS: + - "-DBUILD_SHARED_LIBS=ON" + - "-DCMAKE_BUILD_TYPE=Release" + - "-DCMAKE_INSTALL_MESSAGE=LAZY" + - "-DCMAKE_INSTALL_PREFIX={{.G_DEPS_CPP_DIR}}/{{.LIB_NAME}}-install" + - "-DZLIB_BUILD_EXAMPLES=OFF" + CMAKE_SETTINGS_DIR: "{{.CMAKE_SETTINGS_DIR}}" + LIB_NAME: "{{.LIB_NAME}}" + TARBALL_SHA256: "9a93b2b7dfdac77ceba5a558a580e74667dd6fede4585b91eefb60f03b72df23" + TARBALL_URL: "https://github.com/madler/zlib/releases/download/v1.3.1/zlib-1.3.1.tar.gz" + + zstd: + internal: true + requires: + vars: ["CMAKE_SETTINGS_DIR"] + cmds: + - task: "utils:install-remote-cmake-lib-and-generate-settings" + vars: + CMAKE_GEN_ARGS: + - "-DCMAKE_BUILD_TYPE=Release" + - "-DCMAKE_INSTALL_MESSAGE=LAZY" + - "-DZSTD_BUILD_CONTRIB=OFF" + - "-DZSTD_BUILD_PROGRAMS=OFF" + - "-DZSTD_BUILD_SHARED=ON" + - "-DZSTD_BUILD_STATIC=ON" + - "-DZSTD_BUILD_TESTS=OFF" + CMAKE_SETTINGS_DIR: "{{.CMAKE_SETTINGS_DIR}}" + CMAKE_SOURCE_DIR: "build/cmake" + LIB_NAME: "zstd" + TARBALL_SHA256: "eb33e51f49a15e023950cd7825ca74a4a2b43db8354825ac24fc1b7ee09e6fa3" + TARBALL_URL: "https://github.com/facebook/zstd/releases/download/v1.5.7/zstd-1.5.7.tar.gz" diff --git a/taskfiles/deps/core.yaml b/taskfiles/deps/core.yaml new file mode 100644 index 0000000000..3232dfafb0 --- /dev/null +++ b/taskfiles/deps/core.yaml @@ -0,0 +1,57 @@ +version: "3" + +vars: + # NOTE: This must be kept in-sync with its usage in components/core/CMakeLists.txt + G_DEPS_CPP_CORE_CMAKE_SETTINGS_DIR: "{{.G_DEPS_CPP_DIR}}/cmake-settings/core" + G_DEPS_CPP_CORE_CMAKE_SETTINGS_FILE: "{{.G_DEPS_CPP_CORE_CMAKE_SETTINGS_DIR}}/all-core.cmake" + +tasks: + default: + deps: + - task: "core" + + core: + deps: + - task: ":init" + - task: ":utils:clean-outdated-cpp-checksum-files" + cmds: + - task: ":yscope-dev-utils:cmake:install-deps-and-generate-settings" + vars: + CMAKE_SETTINGS_DIR: "{{.G_DEPS_CPP_CORE_CMAKE_SETTINGS_DIR}}" + CMAKE_SETTINGS_FILE: "{{.G_DEPS_CPP_CORE_CMAKE_SETTINGS_FILE}}" + DEP_TASK: "core:core-all-parallel" + - task: ":utils:combine-cpp-checksum-files" + + core-all-parallel: + internal: true + vars: + CPP_CORE_TASKS: + - "absl" + - "antlr-jar" + - "antlr-runtime" + - "boost" + - "catch2" + - "date" + - "fmt" + - "liblzma" + - "log-surgeon" + - "lz4" + - "microsoft.gsl" + - "mongocxx" + - "msgpack-cxx" + - "nlohmann_json" + - "simdjson" + - "spdlog" + - "sqlite3" + - "utfcpp" + - "yaml-cpp" + - "ystdlib" + - "zlib" + - "zstd" + run: "once" + deps: + - for: + var: "CPP_CORE_TASKS" + task: ":{{.ITEM}}" + vars: + CMAKE_SETTINGS_DIR: "{{.CMAKE_SETTINGS_DIR}}" diff --git a/taskfiles/deps/log-viewer.yaml b/taskfiles/deps/log-viewer.yaml new file mode 100644 index 0000000000..835195b58b --- /dev/null +++ b/taskfiles/deps/log-viewer.yaml @@ -0,0 +1,15 @@ +version: "3" + +vars: + G_DEPS_LOG_VIEWER_CHECKSUM_FILE: "{{.G_DEPS_DIR}}/log-viewer.md5" + +tasks: + default: + cmds: + - task: ":yscope-dev-utils:remote:download-and-extract-tar" + vars: + CHECKSUM_FILE: "{{.G_DEPS_LOG_VIEWER_CHECKSUM_FILE}}" + FILE_SHA256: "f9baaae0886439862204e8062c69dd49354cb14ad4e59f7c35779d544384955e" + OUTPUT_DIR: "{{.G_WEBUI_SRC_DIR}}/yscope-log-viewer" + TAR_FILE: "{{.G_BUILD_DIR}}/yscope-log-viewer.tar.gz" + URL: "https://github.com/y-scope/yscope-log-viewer/archive/3abe4cc.tar.gz" diff --git a/taskfiles/deps/main.yaml b/taskfiles/deps/main.yaml index 9a6b0ab478..b6a6645c91 100644 --- a/taskfiles/deps/main.yaml +++ b/taskfiles/deps/main.yaml @@ -1,639 +1,49 @@ version: "3" includes: - utils: "./utils.yaml" + # Main targets + core: "core.yaml" + spider: "spider.yaml" + log-viewer: "log-viewer.yaml" + + # Utils + utils: "utils.yaml" yscope-dev-utils: "../../tools/yscope-dev-utils/exports/taskfiles/utils/utils.yaml" + # Individual component tasks + artifacts: + flatten: true + taskfile: "artifacts.yaml" + cmake-libs: + flatten: true + taskfile: "cmake-libs.yaml" + misc-libs: + flatten: true + taskfile: "misc-libs.yaml" + vars: # Directories G_DEPS_DIR: "{{.G_BUILD_DIR}}/deps" G_DEPS_CPP_DIR: "{{.G_DEPS_DIR}}/cpp" - G_DEPS_CPP_CHECKSUMS_DIR: "{{.G_DEPS_CPP_DIR}}/checksums" - # Checksum file paths + # Checksum dirs and paths + G_DEPS_CPP_CHECKSUMS_DIR: "{{.G_DEPS_CPP_DIR}}/checksums" G_DEPS_CPP_CHECKSUM_FILE: "{{.G_DEPS_CPP_CHECKSUMS_DIR}}/all.md5" - G_DEPS_LOG_VIEWER_CHECKSUM_FILE: "{{.G_DEPS_DIR}}/log-viewer.md5" - - # NOTE: This must be kept in-sync with its usage in components/core/CMakeLists.txt - G_DEPS_CPP_CMAKE_SETTINGS_DIR: "{{.G_DEPS_CPP_DIR}}/cmake-settings" - # Library names - G_BOOST_LIB_NAME: "Boost" - G_FMT_LIB_NAME: "fmt" - G_GSL_LIB_NAME: "Microsoft.GSL" - - # Antlr + # Misc G_ANTLR_VERSION: "4.13.2" - G_ANTLR_JAR_FILE: "{{.G_DEPS_CPP_DIR}}/antlr-{{.G_ANTLR_VERSION}}-complete.jar" -# NOTE: For dependencies built using CMake, we set CMP0074 to NEW whenever: -# - a component's minimum required CMake version is less than 3.27 (where CMP0074 defaults to OLD); -# and -# - the component depends on another via `_ROOT`. tasks: default: deps: - "core" + - "spider" - "log-viewer" - core: - deps: - - "utils:clean-outdated-cpp-checksum-files" - - "utils:init" - cmds: - - "rm -rf '{{.G_DEPS_CPP_CMAKE_SETTINGS_DIR}}'" - - "mkdir -p '{{.G_DEPS_CPP_CMAKE_SETTINGS_DIR}}'" - - task: "yscope-dev-utils:cmake:install-deps-and-generate-settings" - vars: - CMAKE_SETTINGS_DIR: "{{.G_DEPS_CPP_CMAKE_SETTINGS_DIR}}" - CMAKE_SETTINGS_FILE: "{{.G_DEPS_CPP_CMAKE_SETTINGS_DIR}}/all-core.cmake" - DEP_TASK: "core-all-parallel" - - task: "utils:combine-cpp-checksum-files" - - log-viewer: - deps: - - "utils:init" - cmds: - - task: "yscope-dev-utils:remote:download-and-extract-tar" - vars: - CHECKSUM_FILE: "{{.G_DEPS_LOG_VIEWER_CHECKSUM_FILE}}" - FILE_SHA256: "f9baaae0886439862204e8062c69dd49354cb14ad4e59f7c35779d544384955e" - OUTPUT_DIR: "{{.G_WEBUI_SRC_DIR}}/yscope-log-viewer" - TAR_FILE: "{{.G_BUILD_DIR}}/yscope-log-viewer.tar.gz" - URL: "https://github.com/y-scope/yscope-log-viewer/archive/3abe4cc.tar.gz" - - core-all-parallel: - internal: true - run: "once" - deps: - - task: "absl" - - task: "antlr-jar" - - task: "antlr-runtime" - - task: "boost" - - task: "catch2" - - task: "date" - - task: "fmt" - - task: "liblzma" - - task: "log-surgeon" - - task: "lz4" - - task: "microsoft.gsl" - - task: "mongocxx" - - task: "msgpack-cxx" - - task: "nlohmann_json" - - task: "simdjson" - - task: "spdlog" - - task: "sqlite3" - - task: "utfcpp" - - task: "yaml-cpp" - - task: "ystdlib" - - task: "zlib" - - task: "zstd" - - spider: - deps: - - "spider-dep" - platforms: ["linux"] - preconditions: - # NOTE: Spider is only supported on Ubuntu at present. - - >- - source /etc/os-release && [[ "$ID" == "ubuntu" ]] - cmds: - - task: "yscope-dev-utils:cmake:install-remote-tar" - vars: - CMAKE_PACKAGE_NAME: "spider" - TAR_SHA256: "43478b6da99aa2df50c960573ec68c6fcf67cdfbab39b5e314676218aa93b959" - TAR_URL: "https://github.com/y-scope/spider/archive/6a7bad3.tar.gz" - WORK_DIR: "{{.G_SPIDER_BUILD_DIR}}" - CMAKE_JOBS: "{{.G_CPP_MAX_PARALLELISM_PER_BUILD_TASK}}" - CMAKE_GEN_ARGS: - - "-C {{.G_DEPS_CPP_CMAKE_SETTINGS_DIR}}/all-spider.cmake" - - "-DCMAKE_BUILD_TYPE=Release" - - "-DCMAKE_INSTALL_MESSAGE=LAZY" - - "-DSPIDER_BUILD_TESTING=OFF" - - spider-dep: - internal: true - deps: - - "utils:clean-outdated-cpp-checksum-files" - - "utils:init" - cmds: - - "rm -rf '{{.G_DEPS_CPP_CMAKE_SETTINGS_DIR}}'" - - "mkdir -p '{{.G_DEPS_CPP_CMAKE_SETTINGS_DIR}}'" - - task: "yscope-dev-utils:cmake:install-deps-and-generate-settings" - vars: - CMAKE_SETTINGS_DIR: "{{.G_DEPS_CPP_CMAKE_SETTINGS_DIR}}" - CMAKE_SETTINGS_FILE: "{{.G_DEPS_CPP_CMAKE_SETTINGS_DIR}}/all-spider.cmake" - DEP_TASK: "spider-all-parallel" - - task: "utils:combine-cpp-checksum-files" - - spider-all-parallel: - internal: true - run: "once" - deps: - - task: "absl" - - task: "antlr-jar" - - task: "antlr-runtime" - - task: "boost" - - task: "fmt" - - task: "mariadb-connector-cpp" - - task: "msgpack-cxx" - - task: "spdlog" - - task: "ystdlib" - - absl: - internal: true - run: "once" - cmds: - - task: "utils:install-remote-cmake-lib" - vars: - CMAKE_GEN_ARGS: - - "-DCMAKE_BUILD_TYPE=Release" - - "-DCMAKE_CXX_STANDARD=20" - - "-DCMAKE_INSTALL_MESSAGE=LAZY" - LIB_NAME: "absl" - TARBALL_SHA256: "7262daa7c1711406248c10f41026d685e88223bc92817d16fb93c19adb57f669" - TARBALL_URL: "https://github.com/abseil/abseil-cpp/releases/download/20250512.0/\ - abseil-cpp-20250512.0.tar.gz" - - antlr-jar: - internal: true - vars: - CHECKSUM_FILE: "{{.G_DEPS_CPP_CHECKSUMS_DIR}}/antlr-jar.md5" - OUTPUT_FILE: "{{.G_ANTLR_JAR_FILE}}" - run: "once" - deps: - - task: "yscope-dev-utils:checksum:validate" - vars: - CHECKSUM_FILE: "{{.CHECKSUM_FILE}}" - INCLUDE_PATTERNS: - - "{{.OUTPUT_FILE}}" - - task: "utils:init" - cmds: - - task: "yscope-dev-utils:remote:curl" - vars: - FILE_SHA256: "eae2dfa119a64327444672aff63e9ec35a20180dc5b8090b7a6ab85125df4d76" - OUTPUT_FILE: "{{.OUTPUT_FILE}}" - URL: "https://www.antlr.org/download/antlr-{{.G_ANTLR_VERSION}}-complete.jar" - - # This command must be last - - task: "yscope-dev-utils:checksum:compute" - vars: - CHECKSUM_FILE: "{{.CHECKSUM_FILE}}" - INCLUDE_PATTERNS: - - "{{.OUTPUT_FILE}}" - - antlr-runtime: - internal: true - run: "once" - vars: - LIB_NAME: "antlr4-runtime" - - # Paths - BUILD_DIR: "{{.G_DEPS_CPP_DIR}}/{{.LIB_NAME}}-build" - CHECKSUM_FILE: "{{.G_DEPS_CPP_CHECKSUMS_DIR}}/{{.LIB_NAME}}.md5" - INSTALL_PREFIX: "{{.G_DEPS_CPP_DIR}}/{{.LIB_NAME}}-install" - SOURCE_DIR: "{{.G_DEPS_CPP_DIR}}/{{.LIB_NAME}}-src" - deps: - - task: "utils:init" - - task: "yscope-dev-utils:checksum:validate" - vars: - CHECKSUM_FILE: "{{.CHECKSUM_FILE}}" - INCLUDE_PATTERNS: ["{{.INSTALL_PREFIX}}"] - - # NOTE: We can't use `yscope-dev-utils:cmake:install-remote-tar` (and by extension - # `utils:install-remote-cmake-lib`) since it doesn't yet support the `INCLUDE_PATTERNS` and - # `NUM_COMPONENTS_TO_STRIP` parameters. - cmds: - - task: "yscope-dev-utils:remote:download-and-extract-tar" - vars: - FILE_SHA256: "9f18272a9b32b622835a3365f850dd1063d60f5045fb1e12ce475ae6e18a35bb" - INCLUDE_PATTERNS: ["*/runtime/Cpp"] - NUM_COMPONENTS_TO_STRIP: 3 - OUTPUT_DIR: "{{.SOURCE_DIR}}" - URL: "https://github.com/antlr/antlr4/archive/refs/tags/{{.G_ANTLR_VERSION}}.tar.gz" - - task: "yscope-dev-utils:cmake:generate" - vars: - BUILD_DIR: "{{.BUILD_DIR}}" - EXTRA_ARGS: - - "-DANTLR4_INSTALL=ON" - - "-DCMAKE_BUILD_TYPE=Release" - - "-DCMAKE_INSTALL_MESSAGE=LAZY" - - # Set CMP0135 so that extracted files use the current timestamp as their modification - # timestamp, which ensures the library gets rebuilt if the extracted files change. - - "-DCMAKE_POLICY_DEFAULT_CMP0135=NEW" - SOURCE_DIR: "{{.SOURCE_DIR}}" - - task: "yscope-dev-utils:cmake:build" - vars: - BUILD_DIR: "{{.BUILD_DIR}}" - JOBS: "{{.G_CPP_MAX_PARALLELISM_PER_BUILD_TASK}}" - - task: "yscope-dev-utils:cmake:install" - vars: - BUILD_DIR: "{{.BUILD_DIR}}" - CMAKE_PACKAGE_NAME: "{{.LIB_NAME}}" - CMAKE_SETTINGS_DIR: "{{.G_DEPS_CPP_CMAKE_SETTINGS_DIR}}" - INSTALL_PREFIX: "{{.INSTALL_PREFIX}}" - - # This command must be last - - task: "yscope-dev-utils:checksum:compute" - vars: - CHECKSUM_FILE: "{{.CHECKSUM_FILE}}" - INCLUDE_PATTERNS: ["{{.INSTALL_PREFIX}}"] - - boost: - internal: true - vars: - VERSION: "1.87.0" - run: "once" - cmds: - - task: "yscope-dev-utils:boost:download-and-install" - vars: - CMAKE_SETTINGS_DIR: "{{.G_DEPS_CPP_CMAKE_SETTINGS_DIR}}" - FILE_SHA256: "d6c69e4459eb5d6ec208250291221e7ff4a2affde9af6e49c9303b89c687461f" - TARGETS: - - "filesystem" - - "iostreams" - - "process" - - "program_options" - - "regex" - - "system" - - "url" - URL: "https://github.com/boostorg/boost/releases/download/boost-{{.VERSION}}/\ - boost-{{.VERSION}}-b2-nodocs.tar.gz" - WORK_DIR: "{{.G_DEPS_CPP_DIR}}" - - catch2: - internal: true - run: "once" - cmds: - - task: "utils:install-remote-cmake-lib" - vars: - CMAKE_GEN_ARGS: - - "-DBUILD_TESTING=OFF" - - "-DCMAKE_BUILD_TYPE=Release" - - "-DCMAKE_CXX_STANDARD=20" - - "-DCMAKE_CXX_STANDARD_REQUIRED=ON" - - "-DCMAKE_INSTALL_MESSAGE=LAZY" - LIB_NAME: "Catch2" - TARBALL_SHA256: "1ab2de20460d4641553addfdfe6acd4109d871d5531f8f519a52ea4926303087" - TARBALL_URL: "https://github.com/catchorg/Catch2/archive/refs/tags/v3.8.0.tar.gz" - - date: - internal: true - run: "once" - cmds: - - task: "utils:install-remote-cmake-lib" - vars: - CMAKE_GEN_ARGS: - - "-DCMAKE_BUILD_TYPE=Release" - - "-DCMAKE_INSTALL_MESSAGE=LAZY" - LIB_NAME: "date" - TARBALL_SHA256: "7a390f200f0ccd207e8cff6757e04817c1a0aec3e327b006b7eb451c57ee3538" - TARBALL_URL: "https://github.com/HowardHinnant/date/archive/refs/tags/v3.0.1.tar.gz" - - fmt: - internal: true - run: "once" - cmds: - - task: "utils:install-remote-cmake-lib" - vars: - CMAKE_GEN_ARGS: - - "-DCMAKE_BUILD_TYPE=Release" - - "-DCMAKE_INSTALL_MESSAGE=LAZY" - - "-DFMT_DOC=OFF" - - "-DFMT_TEST=OFF" - LIB_NAME: "{{.G_FMT_LIB_NAME}}" - TARBALL_SHA256: "bc23066d87ab3168f27cef3e97d545fa63314f5c79df5ea444d41d56f962c6af" - TARBALL_URL: "https://github.com/fmtlib/fmt/archive/refs/tags/11.2.0.tar.gz" - - liblzma: - internal: true - vars: - COMMON_CMAKE_GEN_ARGS: - - "-DBUILD_TESTING=OFF" - - "-DCMAKE_BUILD_TYPE=Release" - - "-DCMAKE_INSTALL_MESSAGE=LAZY" - - "-DXZ_DOC=OFF" - - "-DXZ_TOOL_LZMADEC=OFF" - - "-DXZ_TOOL_LZMAINFO=OFF" - - "-DXZ_TOOL_SCRIPTS=OFF" - - "-DXZ_TOOL_SYMLINKS_LZMA=OFF" - - "-DXZ_TOOL_XZ=OFF" - - "-DXZ_TOOL_XZDEC=OFF" - TARBALL_SHA256: "507825b599356c10dca1cd720c9d0d0c9d5400b9de300af00e4d1ea150795543" - TARBALL_URL: "https://github.com/tukaani-project/xz/releases/download/v5.8.1/xz-5.8.1.tar.gz" - run: "once" - deps: - - task: "liblzma-install" - vars: - BUILD_SHARED_LIBS: true - COMMON_CMAKE_GEN_ARGS: - ref: ".COMMON_CMAKE_GEN_ARGS" - TARBALL_SHA256: "{{.TARBALL_SHA256}}" - TARBALL_URL: "{{.TARBALL_URL}}" - - task: "liblzma-install" - vars: - BUILD_SHARED_LIBS: false - COMMON_CMAKE_GEN_ARGS: - ref: ".COMMON_CMAKE_GEN_ARGS" - TARBALL_SHA256: "{{.TARBALL_SHA256}}" - TARBALL_URL: "{{.TARBALL_URL}}" - - liblzma-install: - internal: true - requires: - vars: ["BUILD_SHARED_LIBS", "COMMON_CMAKE_GEN_ARGS", "TARBALL_SHA256", "TARBALL_URL"] - cmds: - - task: "utils:install-remote-cmake-lib" - vars: - CMAKE_GEN_ARGS: - - "-DBUILD_SHARED_LIBS={{ if .BUILD_SHARED_LIBS }}ON{{ else }}OFF{{ end }}" - - >- - {{ join " " .COMMON_CMAKE_GEN_ARGS }} - LIB_NAME: "LibLZMA-{{ if .BUILD_SHARED_LIBS }}shared{{ else }}static{{ end }}" - TARBALL_SHA256: "{{.TARBALL_SHA256}}" - TARBALL_URL: "{{.TARBALL_URL}}" - - log-surgeon: - internal: true - run: "once" - deps: - - "fmt" - - "microsoft.gsl" - cmds: - - task: "utils:install-remote-cmake-lib" - vars: - CMAKE_GEN_ARGS: - - "-C {{.G_DEPS_CPP_CMAKE_SETTINGS_DIR}}/{{.G_FMT_LIB_NAME}}.cmake" - - "-C {{.G_DEPS_CPP_CMAKE_SETTINGS_DIR}}/{{.G_GSL_LIB_NAME}}.cmake" - - "-DCMAKE_BUILD_TYPE=Release" - - "-DCMAKE_INSTALL_MESSAGE=LAZY" - - "-Dlog_surgeon_BUILD_TESTING=OFF" - LIB_NAME: "log_surgeon" - TARBALL_SHA256: "69a99e0804a52c6b6397c5e7eabecc9bb4915d0145632c66fc63ad13678ff56a" - TARBALL_URL: "https://github.com/y-scope/log-surgeon/archive/a722d07.tar.gz" - - lz4: - internal: true - run: "once" - cmds: - - task: "utils:install-remote-cmake-lib" - vars: - CMAKE_GEN_ARGS: - - "-DBUILD_SHARED_LIBS=ON" - - "-DBUILD_STATIC_LIBS=ON" - - "-DCMAKE_BUILD_TYPE=Release" - - "-DCMAKE_INSTALL_MESSAGE=LAZY" - - "-DLZ4_BUILD_CLI=OFF" - CMAKE_SOURCE_DIR: "build/cmake" - LIB_NAME: "lz4" - TARBALL_SHA256: "537512904744b35e232912055ccf8ec66d768639ff3abe5788d90d792ec5f48b" - TARBALL_URL: "https://github.com/lz4/lz4/releases/download/v1.10.0/lz4-1.10.0.tar.gz" - - mariadb-connector-cpp: - platforms: ["linux"] - 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: - # - Update the precondition accordingly. - # - Make `INSTALL_LAYOUT` configurable. - - >- - source /etc/os-release && [[ "$ID" == "ubuntu" ]] - internal: true - run: "once" - cmds: - - task: "utils:install-remote-cmake-lib" - vars: - CMAKE_GEN_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" - - microsoft.gsl: - internal: true - run: "once" - cmds: - - task: "utils:install-remote-cmake-lib" - vars: - CMAKE_GEN_ARGS: - - "-DCMAKE_BUILD_TYPE=Release" - - "-DCMAKE_INSTALL_MESSAGE=LAZY" - - "-DGSL_TEST=OFF" - LIB_NAME: "{{.G_GSL_LIB_NAME}}" - TARBALL_SHA256: "f0e32cb10654fea91ad56bde89170d78cfbf4363ee0b01d8f097de2ba49f6ce9" - TARBALL_URL: "https://github.com/microsoft/GSL/archive/refs/tags/v4.0.0.tar.gz" - - mongocxx: - internal: true - vars: - VERSION: "r4.1.1" - run: "once" - cmds: - - task: "utils:install-remote-cmake-lib" - vars: - CMAKE_GEN_ARGS: - - "-DBUILD_SHARED_AND_STATIC_LIBS=ON" - - "-DBUILD_SHARED_LIBS_WITH_STATIC_MONGOC=ON" - - "-DCMAKE_BUILD_TYPE=Release" - - "-DCMAKE_INSTALL_MESSAGE=LAZY" - - "-DENABLE_UNINSTALL=OFF" - LIB_NAME: "mongocxx" - TARBALL_SHA256: "19dff3cf834a3e09229260f22a0325820a7e30c78b294db91794dd934776b33a" - TARBALL_URL: "https://github.com/mongodb/mongo-cxx-driver/releases/download/{{.VERSION}}\ - /mongo-cxx-driver-{{.VERSION}}.tar.gz" - - msgpack-cxx: - internal: true - vars: - VERSION: "7.0.0" - run: "once" - deps: - - task: "boost" - cmds: - - task: "utils:install-remote-cmake-lib" - vars: - CMAKE_GEN_ARGS: - - "-C {{.G_DEPS_CPP_CMAKE_SETTINGS_DIR}}/{{.G_BOOST_LIB_NAME}}.cmake" - - "-DCMAKE_BUILD_TYPE=Release" - - "-DCMAKE_INSTALL_MESSAGE=LAZY" - - "-DCMAKE_POLICY_DEFAULT_CMP0074=NEW" - - "-DMSGPACK_BUILD_DOCS=OFF" - - "-DMSGPACK_CXX20=ON" - LIB_NAME: "msgpack-cxx" - TARBALL_SHA256: "7504b7af7e7b9002ce529d4f941e1b7fb1fb435768780ce7da4abaac79bb156f" - TARBALL_URL: "https://github.com/msgpack/msgpack-c/releases/download/cpp-{{.VERSION}}\ - /msgpack-cxx-{{.VERSION}}.tar.gz" - - nlohmann_json: - internal: true - run: "once" - cmds: - - task: "utils:install-remote-cmake-lib" - vars: - CMAKE_GEN_ARGS: - - "-DCMAKE_BUILD_TYPE=Release" - - "-DCMAKE_INSTALL_MESSAGE=LAZY" - - "-DJSON_BuildTests=OFF" - LIB_NAME: "nlohmann_json" - TARBALL_SHA256: "0d8ef5af7f9794e3263480193c491549b2ba6cc74bb018906202ada498a79406" - - # NOTE: We use the GitHub-generated source tarball for this version rather than the - # release tarball, since the latter is served from githubusercontent.com which is blocked - # by some developers' firewalls. The contents of the former are a superset of the latter. - TARBALL_URL: "https://github.com/nlohmann/json/archive/refs/tags/v3.11.3.tar.gz" - - simdjson: - internal: true - run: "once" - cmds: - - task: "utils:install-remote-cmake-lib" - vars: - CMAKE_GEN_ARGS: - - "-DCMAKE_BUILD_TYPE=Release" - - "-DCMAKE_INSTALL_MESSAGE=LAZY" - LIB_NAME: "simdjson" - TARBALL_SHA256: "07a1bb3587aac18fd6a10a83fe4ab09f1100ab39f0cb73baea1317826b9f9e0d" - TARBALL_URL: "https://github.com/simdjson/simdjson/archive/refs/tags/v3.13.0.tar.gz" - - spdlog: - internal: true - run: "once" - deps: - - "fmt" - cmds: - - task: "utils:install-remote-cmake-lib" - vars: - CMAKE_GEN_ARGS: - - "-C {{.G_DEPS_CPP_CMAKE_SETTINGS_DIR}}/{{.G_FMT_LIB_NAME}}.cmake" - - "-DCMAKE_BUILD_TYPE=Release" - - "-DCMAKE_INSTALL_MESSAGE=LAZY" - - "-DCMAKE_POLICY_DEFAULT_CMP0074=NEW" - - "-DSPDLOG_BUILD_EXAMPLE=OFF" - - "-DSPDLOG_BUILD_EXAMPLE_HO=OFF" - - "-DSPDLOG_FMT_EXTERNAL=ON" - LIB_NAME: "spdlog" - TARBALL_SHA256: "15a04e69c222eb6c01094b5c7ff8a249b36bb22788d72519646fb85feb267e67" - - # NOTE: Since spdlog depends on fmt, we need to choose a version of spdlog that's - # compatible with the version of fmt we use. - TARBALL_URL: "https://github.com/gabime/spdlog/archive/refs/tags/v1.15.3.tar.gz" - - sqlite3: - internal: true - vars: - LIB_NAME: "sqlite3" - - # Paths - EXTRACTION_DIR: "{{.G_DEPS_CPP_DIR}}/{{.LIB_NAME}}-src" - INSTALL_INCLUDE_DIR: "{{.G_DEPS_CPP_DIR}}/{{.LIB_NAME}}-install/include" - INSTALL_SYMLINK: "{{.INSTALL_INCLUDE_DIR}}/{{.LIB_NAME}}" - ZIP_FILENAME_STEM: "sqlite-amalgamation-3360000" - SRC_DIR: "{{.EXTRACTION_DIR}}/{{.ZIP_FILENAME_STEM}}" - run: "once" - deps: - - task: "utils:init" - cmds: - - task: "yscope-dev-utils:remote:download-and-extract-zip" - vars: - CHECKSUM_FILE: "{{.G_DEPS_CPP_CHECKSUMS_DIR}}/{{.LIB_NAME}}.md5" - FILE_SHA256: "999826fe4c871f18919fdb8ed7ec9dd8217180854dd1fe21eea96aed36186729" - OUTPUT_DIR: "{{.EXTRACTION_DIR}}" - URL: "https://www.sqlite.org/2021/{{.ZIP_FILENAME_STEM}}.zip" - - "mkdir -p '{{.INSTALL_INCLUDE_DIR}}'" - - "rm -f '{{.INSTALL_SYMLINK}}'" - - "ln -s '{{.SRC_DIR}}' '{{.INSTALL_SYMLINK}}'" - - |- - echo "set(CLP_SQLITE3_SOURCE_DIRECTORY \"{{.SRC_DIR}}\")" \ - > "{{.G_DEPS_CPP_CMAKE_SETTINGS_DIR}}/{{.LIB_NAME}}.cmake" - echo "set(CLP_SQLITE3_INCLUDE_DIRECTORY \"{{.INSTALL_INCLUDE_DIR}}\")" \ - >> "{{.G_DEPS_CPP_CMAKE_SETTINGS_DIR}}/{{.LIB_NAME}}.cmake" - - utfcpp: - internal: true - vars: - LIB_NAME: "utfcpp" - UTFCPP_OUTPUT_DIR: "{{.G_DEPS_CPP_DIR}}/{{.LIB_NAME}}-src" - run: "once" - deps: - - task: "utils:init" - cmds: - - task: "yscope-dev-utils:remote:download-and-extract-tar" - vars: - CHECKSUM_FILE: "{{.G_DEPS_CPP_CHECKSUMS_DIR}}/{{.LIB_NAME}}.md5" - FILE_SHA256: "6920a6a5d6a04b9a89b2a89af7132f8acefd46e0c2a7b190350539e9213816c0" - OUTPUT_DIR: "{{.UTFCPP_OUTPUT_DIR}}" - URL: "https://github.com/nemtrif/utfcpp/archive/refs/tags/v4.0.6.tar.gz" - - >- - echo "set( - CLP_UTFCPP_INCLUDE_DIRECTORY \"{{.UTFCPP_OUTPUT_DIR}}\" - )" > "{{.G_DEPS_CPP_CMAKE_SETTINGS_DIR}}/{{.LIB_NAME}}.cmake" - - yaml-cpp: - internal: true - run: "once" - cmds: - - task: "utils:install-remote-cmake-lib" - vars: - CMAKE_GEN_ARGS: - - "-DBUILD_TESTING=OFF" - - "-DCMAKE_BUILD_TYPE=Release" - - "-DCMAKE_INSTALL_MESSAGE=LAZY" - LIB_NAME: "yaml-cpp" - TARBALL_SHA256: "43e6a9fcb146ad871515f0d0873947e5d497a1c9c60c58cb102a97b47208b7c3" - TARBALL_URL: "https://github.com/jbeder/yaml-cpp/archive/refs/tags/yaml-cpp-0.7.0.tar.gz" - - ystdlib: - internal: true - run: "once" - deps: - - task: "boost" - cmds: - - task: "utils:install-remote-cmake-lib" - vars: - CMAKE_GEN_ARGS: - - "-C {{.G_DEPS_CPP_CMAKE_SETTINGS_DIR}}/{{.G_BOOST_LIB_NAME}}.cmake" - - "-DCMAKE_POSITION_INDEPENDENT_CODE=ON" - - "-Dystdlib_BUILD_TESTING=OFF" - LIB_NAME: "ystdlib" - TARBALL_SHA256: "65990dc2bcc4a355c2181bfe31a7800f492309d1bcd340f52a34e85047e61bc8" - TARBALL_URL: "https://github.com/y-scope/ystdlib-cpp/archive/9ed78cd.tar.gz" - - zlib: - internal: true - vars: - LIB_NAME: "zlib" - run: "once" - cmds: - - task: "utils:install-remote-cmake-lib" - vars: - CMAKE_GEN_ARGS: - - "-DBUILD_SHARED_LIBS=ON" - - "-DCMAKE_BUILD_TYPE=Release" - - "-DCMAKE_INSTALL_MESSAGE=LAZY" - - "-DCMAKE_INSTALL_PREFIX={{.G_DEPS_CPP_DIR}}/{{.LIB_NAME}}-install" - - "-DZLIB_BUILD_EXAMPLES=OFF" - LIB_NAME: "{{.LIB_NAME}}" - TARBALL_SHA256: "9a93b2b7dfdac77ceba5a558a580e74667dd6fede4585b91eefb60f03b72df23" - TARBALL_URL: "https://github.com/madler/zlib/releases/download/v1.3.1/zlib-1.3.1.tar.gz" - - zstd: + init: internal: true run: "once" cmds: - - task: "utils:install-remote-cmake-lib" - vars: - CMAKE_GEN_ARGS: - - "-DCMAKE_BUILD_TYPE=Release" - - "-DCMAKE_INSTALL_MESSAGE=LAZY" - - "-DZSTD_BUILD_CONTRIB=OFF" - - "-DZSTD_BUILD_PROGRAMS=OFF" - - "-DZSTD_BUILD_SHARED=ON" - - "-DZSTD_BUILD_STATIC=ON" - - "-DZSTD_BUILD_TESTS=OFF" - CMAKE_SOURCE_DIR: "build/cmake" - LIB_NAME: "zstd" - TARBALL_SHA256: "eb33e51f49a15e023950cd7825ca74a4a2b43db8354825ac24fc1b7ee09e6fa3" - TARBALL_URL: "https://github.com/facebook/zstd/releases/download/v1.5.7/zstd-1.5.7.tar.gz" + - "mkdir -p '{{.G_DEPS_DIR}}'" + - "mkdir -p '{{.G_DEPS_CPP_DIR}}'" + - "mkdir -p '{{.G_DEPS_CPP_CHECKSUMS_DIR}}'" diff --git a/taskfiles/deps/misc-libs.yaml b/taskfiles/deps/misc-libs.yaml new file mode 100644 index 0000000000..ab195354d3 --- /dev/null +++ b/taskfiles/deps/misc-libs.yaml @@ -0,0 +1,65 @@ +version: "3" + +tasks: + boost: + internal: true + vars: + LIB_NAME: "Boost" + VERSION: "1.87.0" + INSTALL_PREFIX: "{{.G_DEPS_CPP_DIR}}/{{.LIB_NAME}}-install" + requires: + vars: ["CMAKE_SETTINGS_DIR"] + cmds: + - task: "yscope-dev-utils:boost:download-and-install" + vars: + FILE_SHA256: "d6c69e4459eb5d6ec208250291221e7ff4a2affde9af6e49c9303b89c687461f" + INSTALL_PREFIX: "{{.INSTALL_PREFIX}}" + TARGETS: + - "filesystem" + - "iostreams" + - "process" + - "program_options" + - "regex" + - "system" + - "url" + URL: "https://github.com/boostorg/boost/releases/download/boost-{{.VERSION}}/\ + boost-{{.VERSION}}-b2-nodocs.tar.gz" + WORK_DIR: "{{.G_DEPS_CPP_DIR}}" + - task: "yscope-dev-utils:cmake:generate-cmake-settings" + vars: + CMAKE_PACKAGE_NAME: "{{.LIB_NAME}}" + CMAKE_SETTINGS_DIR: "{{.CMAKE_SETTINGS_DIR}}" + PACKAGE_INSTALL_PREFIX: "{{.INSTALL_PREFIX}}" + + + sqlite3: + internal: true + vars: + LIB_NAME: "sqlite3" + + # Paths + EXTRACTION_DIR: "{{.G_DEPS_CPP_DIR}}/{{.LIB_NAME}}-src" + INSTALL_INCLUDE_DIR: "{{.G_DEPS_CPP_DIR}}/{{.LIB_NAME}}-install/include" + INSTALL_SYMLINK: "{{.INSTALL_INCLUDE_DIR}}/{{.LIB_NAME}}" + ZIP_FILENAME_STEM: "sqlite-amalgamation-3360000" + SRC_DIR: "{{.EXTRACTION_DIR}}/{{.ZIP_FILENAME_STEM}}" + requires: + vars: ["CMAKE_SETTINGS_DIR"] + # TODO: use checksums to properly decide if this task is up-to-date once more than one main deps + # target depends on this library. + run: "once" + cmds: + - task: "yscope-dev-utils:remote:download-and-extract-zip" + vars: + CHECKSUM_FILE: "{{.G_DEPS_CPP_CHECKSUMS_DIR}}/{{.LIB_NAME}}.md5" + FILE_SHA256: "999826fe4c871f18919fdb8ed7ec9dd8217180854dd1fe21eea96aed36186729" + OUTPUT_DIR: "{{.EXTRACTION_DIR}}" + URL: "https://www.sqlite.org/2021/{{.ZIP_FILENAME_STEM}}.zip" + - "mkdir -p '{{.INSTALL_INCLUDE_DIR}}'" + - "rm -f '{{.INSTALL_SYMLINK}}'" + - "ln -s '{{.SRC_DIR}}' '{{.INSTALL_SYMLINK}}'" + - |- + echo "set(CLP_SQLITE3_SOURCE_DIRECTORY \"{{.SRC_DIR}}\")" \ + > "{{.CMAKE_SETTINGS_DIR}}/{{.LIB_NAME}}.cmake" + echo "set(CLP_SQLITE3_INCLUDE_DIRECTORY \"{{.INSTALL_INCLUDE_DIR}}\")" \ + >> "{{.CMAKE_SETTINGS_DIR}}/{{.LIB_NAME}}.cmake" diff --git a/taskfiles/deps/spider.yaml b/taskfiles/deps/spider.yaml new file mode 100644 index 0000000000..21030ebb98 --- /dev/null +++ b/taskfiles/deps/spider.yaml @@ -0,0 +1,66 @@ +version: "3" + +vars: + G_DEPS_CPP_SPIDER_CMAKE_SETTINGS_DIR: "{{.G_DEPS_CPP_DIR}}/cmake-settings/spider" + G_DEPS_CPP_SPIDER_CMAKE_SETTINGS_FILE: "{{.G_DEPS_CPP_SPIDER_CMAKE_SETTINGS_DIR}}/all-spider.cmake" + +tasks: + default: + deps: + - task: "spider" + + spider: + deps: + - task: "spider-dep" + platforms: ["linux"] + preconditions: + # NOTE: Spider is only supported on Ubuntu at present. + - >- + source /etc/os-release && [[ "$ID" == "ubuntu" ]] + cmds: + - task: ":yscope-dev-utils:cmake:install-remote-tar" + vars: + CMAKE_PACKAGE_NAME: "spider" + CMAKE_SETTINGS_DIR: "{{.G_DEPS_CPP_SPIDER_CMAKE_SETTINGS_DIR}}" + TAR_SHA256: "43478b6da99aa2df50c960573ec68c6fcf67cdfbab39b5e314676218aa93b959" + TAR_URL: "https://github.com/y-scope/spider/archive/6a7bad3.tar.gz" + WORK_DIR: "{{.G_SPIDER_BUILD_DIR}}" + CMAKE_JOBS: "{{.G_CPP_MAX_PARALLELISM_PER_BUILD_TASK}}" + CMAKE_GEN_ARGS: + - "-C {{.G_DEPS_CPP_SPIDER_CMAKE_SETTINGS_FILE}}" + - "-DCMAKE_BUILD_TYPE=Release" + - "-DCMAKE_INSTALL_MESSAGE=LAZY" + - "-DSPIDER_BUILD_TESTING=OFF" + + spider-dep: + deps: + - task: ":init" + - task: ":utils:clean-outdated-cpp-checksum-files" + cmds: + - task: ":yscope-dev-utils:cmake:install-deps-and-generate-settings" + vars: + CMAKE_SETTINGS_DIR: "{{.G_DEPS_CPP_SPIDER_CMAKE_SETTINGS_DIR}}" + CMAKE_SETTINGS_FILE: "{{.G_DEPS_CPP_SPIDER_CMAKE_SETTINGS_FILE}}" + DEP_TASK: "spider:spider-all-parallel" + - task: ":utils:combine-cpp-checksum-files" + + spider-all-parallel: + internal: true + vars: + CPP_SPIDER_TASKS: + - "absl" + - "antlr-jar" + - "antlr-runtime" + - "boost" + - "fmt" + - "mariadb-connector-cpp" + - "msgpack-cxx" + - "spdlog" + - "ystdlib" + run: "once" + deps: + - for: + var: "CPP_SPIDER_TASKS" + task: ":{{.ITEM}}" + vars: + CMAKE_SETTINGS_DIR: "{{.CMAKE_SETTINGS_DIR}}" diff --git a/taskfiles/deps/utils.yaml b/taskfiles/deps/utils.yaml index b6f71720a1..9ebc624e5c 100644 --- a/taskfiles/deps/utils.yaml +++ b/taskfiles/deps/utils.yaml @@ -1,8 +1,5 @@ version: "3" -includes: - yscope-dev-utils: "../../tools/yscope-dev-utils/exports/taskfiles/utils/utils.yaml" - tasks: # Cleans up the cpp checksum files any time the taskfiles change. This is to ensure that if any # of cpp's dependencies are removed from the taskfiles, then the checksum files for the removed @@ -10,11 +7,11 @@ tasks: # removed dependencies, we remove all of them. clean-outdated-cpp-checksum-files: internal: true - run: "once" sources: - "{{.ROOT_DIR}}/Taskfile.yaml" - "{{.ROOT_DIR}}/taskfiles/**/*.yaml" - "{{.ROOT_DIR}}/tools/yscope-dev-utils/exports/taskfiles/**/*.yaml" + run: "once" cmd: "rm -f '{{.G_DEPS_CPP_CHECKSUMS_DIR}}'/*" # Combines all of cpp's checksum files into `G_DEPS_CPP_CHECKSUM_FILE`. @@ -29,17 +26,45 @@ tasks: fi done - init: + # Installs a CMake-based library from a remote tarball, generates a corresponding settings file, + # and computes a checksum for the installation directory. + # + # @param {string} CMAKE_SETTINGS_DIR + # @param {string} LIB_NAME + # @param {string} TARBALL_SHA256 + # @param {string} TARBALL_URL + # @param {string[]} [CMAKE_GEN_ARGS] Any additional arguments to pass to the CMake generate + # command. + # @param {string} [CMAKE_SOURCE_DIR=.] The path, within the tarball extraction directory, + # containing the project's top level CMakeLists.txt. + install-remote-cmake-lib-and-generate-settings: internal: true - run: "once" + vars: + CMAKE_GEN_ARGS: + ref: "default (list) .CMAKE_GEN_ARGS" + CMAKE_SOURCE_DIR: >- + {{default "." .CMAKE_SOURCE_DIR}} + INSTALL_PREFIX: "{{.G_DEPS_CPP_DIR}}/{{.LIB_NAME}}-install" + INSTALL_DIR_CHECKSUM_FILE: "{{.G_DEPS_CPP_CHECKSUMS_DIR}}/{{.LIB_NAME}}.md5" + requires: + vars: ["CMAKE_SETTINGS_DIR", "LIB_NAME", "TARBALL_SHA256", "TARBALL_URL"] cmds: - - "mkdir -p '{{.G_DEPS_DIR}}'" - - "mkdir -p '{{.G_DEPS_CPP_DIR}}'" - - "mkdir -p '{{.G_DEPS_CPP_CHECKSUMS_DIR}}'" - - "mkdir -p '{{.G_DEPS_CPP_CMAKE_SETTINGS_DIR}}'" + - task: "install-remote-cmake-lib" + vars: + CMAKE_GEN_ARGS: + ref: ".CMAKE_GEN_ARGS" + LIB_NAME: "{{.LIB_NAME}}" + CMAKE_SOURCE_DIR: "{{.CMAKE_SOURCE_DIR}}" + TARBALL_SHA256: "{{.TARBALL_SHA256}}" + TARBALL_URL: "{{.TARBALL_URL}}" + - task: ":yscope-dev-utils:cmake:generate-cmake-settings" + vars: + CMAKE_PACKAGE_NAME: "{{.LIB_NAME}}" + CMAKE_SETTINGS_DIR: "{{.CMAKE_SETTINGS_DIR}}" + PACKAGE_INSTALL_PREFIX: "{{.INSTALL_PREFIX}}" - # Installs a CMake-based library from a remote tarball, generates a corresponding settings file, - # and computes a checksum for the installation directory. + # Installs a CMake-based library from a remote tarball, and computes a checksum for the + # installation directory. # # @param {string} LIB_NAME # @param {string} TARBALL_SHA256 @@ -50,6 +75,7 @@ tasks: # containing the project's top level CMakeLists.txt. install-remote-cmake-lib: internal: true + label: "{{.TASK}}:{{.LIB_NAME}}" vars: CMAKE_GEN_ARGS: ref: "default (list) .CMAKE_GEN_ARGS" @@ -57,28 +83,29 @@ tasks: {{default "." .CMAKE_SOURCE_DIR}} INSTALL_PREFIX: "{{.G_DEPS_CPP_DIR}}/{{.LIB_NAME}}-install" INSTALL_DIR_CHECKSUM_FILE: "{{.G_DEPS_CPP_CHECKSUMS_DIR}}/{{.LIB_NAME}}.md5" + requires: + vars: ["LIB_NAME", "TARBALL_SHA256", "TARBALL_URL"] + run: "when_changed" deps: - - task: "init" - - task: "yscope-dev-utils:checksum:validate" + - task: ":yscope-dev-utils:checksum:validate" vars: CHECKSUM_FILE: "{{.INSTALL_DIR_CHECKSUM_FILE}}" INCLUDE_PATTERNS: - "{{.INSTALL_PREFIX}}" cmds: - - task: "yscope-dev-utils:cmake:install-remote-tar" + - task: ":yscope-dev-utils:cmake:install-remote-tar" vars: CMAKE_GEN_ARGS: ref: ".CMAKE_GEN_ARGS" CMAKE_JOBS: "{{.G_CPP_MAX_PARALLELISM_PER_BUILD_TASK}}" CMAKE_PACKAGE_NAME: "{{.LIB_NAME}}" - CMAKE_SETTINGS_DIR: "{{.G_DEPS_CPP_CMAKE_SETTINGS_DIR}}" CMAKE_SOURCE_DIR: "{{.CMAKE_SOURCE_DIR}}" TAR_SHA256: "{{.TARBALL_SHA256}}" TAR_URL: "{{.TARBALL_URL}}" WORK_DIR: "{{.G_DEPS_CPP_DIR}}" # This command must be last - - task: "yscope-dev-utils:checksum:compute" + - task: ":yscope-dev-utils:checksum:compute" vars: CHECKSUM_FILE: "{{.INSTALL_DIR_CHECKSUM_FILE}}" INCLUDE_PATTERNS: diff --git a/tools/scripts/deps-download/init.sh b/tools/scripts/deps-download/init.sh index f18f1fd1db..3344afa140 100755 --- a/tools/scripts/deps-download/init.sh +++ b/tools/scripts/deps-download/init.sh @@ -10,9 +10,9 @@ script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" project_root_dir="$script_dir/../../../" download_dep_script="$script_dir/download-dep.py" -readonly YSCOPE_DEV_UTILS_COMMIT_SHA="f1202b9c21dac05d77632e4d3e1768b11e0dcf47" +readonly YSCOPE_DEV_UTILS_COMMIT_SHA="d7648ea57496ae11540e4bca69f7f2a5eeca6444" python3 "${download_dep_script}" \ - "https://github.com/y-scope/yscope-dev-utils/archive/${YSCOPE_DEV_UTILS_COMMIT_SHA}.zip" \ + "https://github.com/Bill-hbrhbr/yscope-dev-utils/archive/${YSCOPE_DEV_UTILS_COMMIT_SHA}.zip" \ "yscope-dev-utils-${YSCOPE_DEV_UTILS_COMMIT_SHA}" \ "${project_root_dir}/tools/yscope-dev-utils" \ --extract diff --git a/tools/yscope-dev-utils b/tools/yscope-dev-utils index f1202b9c21..d7648ea574 160000 --- a/tools/yscope-dev-utils +++ b/tools/yscope-dev-utils @@ -1 +1 @@ -Subproject commit f1202b9c21dac05d77632e4d3e1768b11e0dcf47 +Subproject commit d7648ea57496ae11540e4bca69f7f2a5eeca6444