diff --git a/taskfiles/deps/core.yaml b/taskfiles/deps/core.yaml new file mode 100644 index 0000000000..31a0c340f0 --- /dev/null +++ b/taskfiles/deps/core.yaml @@ -0,0 +1,54 @@ +version: "3" + +vars: + # NOTE: This must be kept in-sync with its usage in components/core/CMakeLists.txt + G_DEPS_CPP_CORE_CMAKE_SETTINGS_FILE: "{{.G_DEPS_CPP_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_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}}" diff --git a/taskfiles/deps/installs/absl.yaml b/taskfiles/deps/installs/absl.yaml new file mode 100644 index 0000000000..9dd09b4dbd --- /dev/null +++ b/taskfiles/deps/installs/absl.yaml @@ -0,0 +1,17 @@ +version: "3" + +tasks: + default: + 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" diff --git a/taskfiles/deps/installs/all.yaml b/taskfiles/deps/installs/all.yaml new file mode 100644 index 0000000000..3fc2196569 --- /dev/null +++ b/taskfiles/deps/installs/all.yaml @@ -0,0 +1,31 @@ +version: "3" + +# 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`. + +includes: + absl: "absl.yaml" + antlr-jar: "antlr-jar.yaml" + antlr-runtime: "antlr-runtime.yaml" + boost: "boost.yaml" + catch2: "catch2.yaml" + date: "date.yaml" + fmt: "fmt.yaml" + liblzma: "liblzma.yaml" + log-surgeon: "log-surgeon.yaml" + lz4: "lz4.yaml" + mariadb-connector-cpp: "mariadb-connector-cpp.yaml" + microsoft.gsl: "microsoft.gsl.yaml" + mongocxx: "mongocxx.yaml" + msgpack-cxx: "msgpack-cxx.yaml" + nlohmann_json: "nlohmann_json.yaml" + simdjson: "simdjson.yaml" + spdlog: "spdlog.yaml" + sqlite3: "sqlite3.yaml" + utfcpp: "utfcpp.yaml" + yaml-cpp: "yaml-cpp.yaml" + ystdlib: "ystdlib.yaml" + zlib: "zlib.yaml" + zstd: "zstd.yaml" diff --git a/taskfiles/deps/installs/antlr-jar.yaml b/taskfiles/deps/installs/antlr-jar.yaml new file mode 100644 index 0000000000..3599e54e65 --- /dev/null +++ b/taskfiles/deps/installs/antlr-jar.yaml @@ -0,0 +1,14 @@ +version: "3" + +tasks: + default: + internal: true + run: "once" + deps: + - task: ":init" + cmds: + - task: ":yscope-dev-utils:remote:curl" + vars: + FILE_SHA256: "eae2dfa119a64327444672aff63e9ec35a20180dc5b8090b7a6ab85125df4d76" + OUTPUT_FILE: "{{.G_ANTLR_JAR_FILE}}" + URL: "https://www.antlr.org/download/antlr-{{.G_ANTLR_VERSION}}-complete.jar" diff --git a/taskfiles/deps/installs/antlr-runtime.yaml b/taskfiles/deps/installs/antlr-runtime.yaml new file mode 100644 index 0000000000..ff9ceb3ff3 --- /dev/null +++ b/taskfiles/deps/installs/antlr-runtime.yaml @@ -0,0 +1,23 @@ +version: "3" + +tasks: + default: + internal: true + run: "once" + cmds: + - task: ":utils:install-remote-cmake-lib" + vars: + CMAKE_GEN_ARGS: + - "-DANTLR4_INSTALL=ON" + - "-DANTLR_BUILD_CPP_TESTS=OFF" + - "-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_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" diff --git a/taskfiles/deps/installs/boost.yaml b/taskfiles/deps/installs/boost.yaml new file mode 100644 index 0000000000..17e440f28b --- /dev/null +++ b/taskfiles/deps/installs/boost.yaml @@ -0,0 +1,26 @@ +version: "3" + +tasks: + default: + internal: true + vars: + VERSION: "1.87.0" + run: "once" + deps: + - task: ":init" + 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}}" diff --git a/taskfiles/deps/installs/catch2.yaml b/taskfiles/deps/installs/catch2.yaml new file mode 100644 index 0000000000..2ade404bb6 --- /dev/null +++ b/taskfiles/deps/installs/catch2.yaml @@ -0,0 +1,20 @@ +version: "3" + +tasks: + default: + internal: true + run: "once" + cmds: + - task: ":utils:install-remote-cmake-lib" + vars: + CMAKE_GEN_ARGS: + - "-DCATCH_BUILD_TESTING=OFF" + - "-DCATCH_INSTALL_DOCS=OFF" + - "-DCATCH_INSTALL_EXTRAS=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" diff --git a/taskfiles/deps/installs/date.yaml b/taskfiles/deps/installs/date.yaml new file mode 100644 index 0000000000..d5cb506df9 --- /dev/null +++ b/taskfiles/deps/installs/date.yaml @@ -0,0 +1,15 @@ +version: "3" + +tasks: + default: + 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" diff --git a/taskfiles/deps/installs/fmt.yaml b/taskfiles/deps/installs/fmt.yaml new file mode 100644 index 0000000000..2e0ed9f235 --- /dev/null +++ b/taskfiles/deps/installs/fmt.yaml @@ -0,0 +1,18 @@ +version: "3" + +tasks: + default: + internal: true + 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" + - "-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" diff --git a/taskfiles/deps/installs/liblzma.yaml b/taskfiles/deps/installs/liblzma.yaml new file mode 100644 index 0000000000..a440c21aa6 --- /dev/null +++ b/taskfiles/deps/installs/liblzma.yaml @@ -0,0 +1,41 @@ +version: "3" + +tasks: + default: + internal: true + run: "once" + deps: + - task: "liblzma-install" + vars: + BUILD_SHARED_LIBS: true + - task: "liblzma-install" + vars: + BUILD_SHARED_LIBS: false + + liblzma-install: + internal: true + vars: + LIBLZMA_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" + requires: + vars: ["BUILD_SHARED_LIBS"] + cmds: + - task: ":utils:install-remote-cmake-lib" + vars: + CMAKE_GEN_ARGS: + - "-DBUILD_SHARED_LIBS={{ if .BUILD_SHARED_LIBS }}ON{{ else }}OFF{{ end }}" + - >- + {{ join " " .LIBLZMA_CMAKE_GEN_ARGS }} + LIB_NAME: "LibLZMA-{{ if .BUILD_SHARED_LIBS }}shared{{ else }}static{{ end }}" + TARBALL_SHA256: "507825b599356c10dca1cd720c9d0d0c9d5400b9de300af00e4d1ea150795543" + TARBALL_URL: >- + https://github.com/tukaani-project/xz/releases/download/v5.8.1/xz-5.8.1.tar.gz diff --git a/taskfiles/deps/installs/log-surgeon.yaml b/taskfiles/deps/installs/log-surgeon.yaml new file mode 100644 index 0000000000..35f326ad49 --- /dev/null +++ b/taskfiles/deps/installs/log-surgeon.yaml @@ -0,0 +1,24 @@ +version: "3" + +tasks: + default: + internal: true + vars: + DEPS: ["fmt", "microsoft.gsl"] + run: "once" + deps: + - for: + var: "DEPS" + task: ":{{.ITEM}}" + 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" diff --git a/taskfiles/deps/installs/lz4.yaml b/taskfiles/deps/installs/lz4.yaml new file mode 100644 index 0000000000..c9c8242270 --- /dev/null +++ b/taskfiles/deps/installs/lz4.yaml @@ -0,0 +1,19 @@ +version: "3" + +tasks: + default: + 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" diff --git a/taskfiles/deps/installs/mariadb-connector-cpp.yaml b/taskfiles/deps/installs/mariadb-connector-cpp.yaml new file mode 100644 index 0000000000..71990df825 --- /dev/null +++ b/taskfiles/deps/installs/mariadb-connector-cpp.yaml @@ -0,0 +1,27 @@ +version: "3" + +tasks: + default: + internal: true + 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. + - >- + . /etc/os-release && [ "$ID" = "ubuntu" ] + run: "once" + cmds: + - task: ":utils:install-remote-cmake-lib" + vars: + CMAKE_GEN_ARGS: + - "-DCMAKE_BUILD_TYPE=Release" + - "-DCMAKE_INSTALL_MESSAGE=LAZY" + - "-DINSTALL_LAYOUT=DEB" + - "-DUSE_SYSTEM_INSTALLED_LIB=ON" + - "-DWITH_UNIT_TESTS=OFF" + 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" diff --git a/taskfiles/deps/installs/microsoft.gsl.yaml b/taskfiles/deps/installs/microsoft.gsl.yaml new file mode 100644 index 0000000000..bce886c45b --- /dev/null +++ b/taskfiles/deps/installs/microsoft.gsl.yaml @@ -0,0 +1,16 @@ +version: "3" + +tasks: + default: + 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" diff --git a/taskfiles/deps/installs/mongocxx.yaml b/taskfiles/deps/installs/mongocxx.yaml new file mode 100644 index 0000000000..af3d36e9b5 --- /dev/null +++ b/taskfiles/deps/installs/mongocxx.yaml @@ -0,0 +1,22 @@ +version: "3" + +tasks: + default: + 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_EXAMPLES=OFF" + - "-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" diff --git a/taskfiles/deps/installs/msgpack-cxx.yaml b/taskfiles/deps/installs/msgpack-cxx.yaml new file mode 100644 index 0000000000..4319610de3 --- /dev/null +++ b/taskfiles/deps/installs/msgpack-cxx.yaml @@ -0,0 +1,27 @@ +version: "3" + +tasks: + default: + internal: true + vars: + DEPS: ["boost"] + VERSION: "7.0.0" + run: "once" + deps: + - for: + var: "DEPS" + task: ":{{.ITEM}}" + 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" diff --git a/taskfiles/deps/installs/nlohmann_json.yaml b/taskfiles/deps/installs/nlohmann_json.yaml new file mode 100644 index 0000000000..90319225b3 --- /dev/null +++ b/taskfiles/deps/installs/nlohmann_json.yaml @@ -0,0 +1,20 @@ +version: "3" + +tasks: + default: + 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" diff --git a/taskfiles/deps/installs/simdjson.yaml b/taskfiles/deps/installs/simdjson.yaml new file mode 100644 index 0000000000..3192b731e7 --- /dev/null +++ b/taskfiles/deps/installs/simdjson.yaml @@ -0,0 +1,17 @@ +version: "3" + +tasks: + default: + internal: true + 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" + - "-DSIMDJSON_BUILD_STATIC_LIB=ON" + LIB_NAME: "simdjson" + TARBALL_SHA256: "07a1bb3587aac18fd6a10a83fe4ab09f1100ab39f0cb73baea1317826b9f9e0d" + TARBALL_URL: "https://github.com/simdjson/simdjson/archive/refs/tags/v3.13.0.tar.gz" diff --git a/taskfiles/deps/installs/spdlog.yaml b/taskfiles/deps/installs/spdlog.yaml new file mode 100644 index 0000000000..da7522790b --- /dev/null +++ b/taskfiles/deps/installs/spdlog.yaml @@ -0,0 +1,29 @@ +version: "3" + +tasks: + default: + internal: true + vars: + DEPS: ["fmt"] + run: "once" + deps: + - for: + var: "DEPS" + task: ":{{.ITEM}}" + 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_SHARED=ON" + - "-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" diff --git a/taskfiles/deps/installs/sqlite3.yaml b/taskfiles/deps/installs/sqlite3.yaml new file mode 100644 index 0000000000..f87751d1f8 --- /dev/null +++ b/taskfiles/deps/installs/sqlite3.yaml @@ -0,0 +1,31 @@ +version: "3" + +tasks: + default: + internal: true + vars: + LIB_NAME: "sqlite3" + + # Paths + EXTRACTION_DIR: "{{.G_DEPS_CPP_DIR}}/{{.LIB_NAME}}-extracted" + 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: ":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}}" + ln -sfn "{{.SRC_DIR}}" "{{.INSTALL_SYMLINK}}" + cat > "{{.G_DEPS_CPP_CMAKE_SETTINGS_DIR}}/{{.LIB_NAME}}.cmake" < "{{.G_DEPS_CPP_CMAKE_SETTINGS_DIR}}/{{.LIB_NAME}}.cmake" <_ROOT`. tasks: default: deps: - "core" - "log-viewer" + - "spider" - 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: + init: 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_DIR}}'" + - "mkdir -p '{{.G_DEPS_CPP_DIR}}'" + - "mkdir -p '{{.G_DEPS_CPP_CHECKSUMS_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: - 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" diff --git a/taskfiles/deps/spider.yaml b/taskfiles/deps/spider.yaml new file mode 100644 index 0000000000..f61680901e --- /dev/null +++ b/taskfiles/deps/spider.yaml @@ -0,0 +1,62 @@ +version: "3" + +vars: + G_DEPS_CPP_SPIDER_CMAKE_SETTINGS_FILE: "{{.G_DEPS_CPP_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" + 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_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}}" diff --git a/taskfiles/deps/utils.yaml b/taskfiles/deps/utils.yaml index b6f71720a1..0dd96f4ea2 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,15 +26,6 @@ tasks: fi done - init: - internal: true - run: "once" - 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}}'" - # Installs a CMake-based library from a remote tarball, generates a corresponding settings file, # and computes a checksum for the installation directory. # @@ -58,14 +46,14 @@ tasks: INSTALL_PREFIX: "{{.G_DEPS_CPP_DIR}}/{{.LIB_NAME}}-install" INSTALL_DIR_CHECKSUM_FILE: "{{.G_DEPS_CPP_CHECKSUMS_DIR}}/{{.LIB_NAME}}.md5" deps: - - task: "init" - - task: "yscope-dev-utils:checksum:validate" + - task: ":init" + - 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" @@ -78,7 +66,7 @@ tasks: 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: