Remove the superbuild and the external projects.#5021
Conversation
|
Was the breaking change announced in any way? |
|
The change will be announced in the release notes. There is unfortunately no way to gradually introduce it (proposals to first make the superbuild off by default and then remove it were rejected), but at the same time the change is quite simple to migrate. |
f25ee66 to
917b7cf
Compare
ae47237 to
ceeb0f5
Compare
We probably need to announce removal and then actually do the removal in a couple releases. We cannot ship a release that will break dependencies and then expect them to fix it. |
ceeb0f5 to
0f54966
Compare
This comment was marked as resolved.
This comment was marked as resolved.
|
Undrafting, regardless of when we will take it, it is finished and ready for review. Also just built successfully1 libtiledbsoma with just the following change: diff --git a/libtiledbsoma/cmake/Modules/FindTileDB_EP.cmake b/libtiledbsoma/cmake/Modules/FindTileDB_EP.cmake
index 910fc4e..62bd32a 100644
--- a/libtiledbsoma/cmake/Modules/FindTileDB_EP.cmake
+++ b/libtiledbsoma/cmake/Modules/FindTileDB_EP.cmake
@@ -113,8 +113,8 @@ else()
else() # Build from source
ExternalProject_Add(ep_tiledb
PREFIX "externals"
- URL "https://github.com/TileDB-Inc/TileDB/archive/2.23.0.zip"
- URL_HASH SHA1=2acca37618f0a6192ca648930138231476422b96
+ GIT_REPOSITORY "https://github.com/TileDB-Inc/TileDB.git"
+ GIT_TAG teo/remove-superbuild
DOWNLOAD_NAME "tiledb.zip"
CMAKE_ARGS
-DCMAKE_INSTALL_PREFIX=${EP_INSTALL_PREFIX}Footnotes
|
With vcpkg this step is unnecessary.
There is little value in doing this, and the configuring with tests disabled is tested in the release worklow.
It handles variations in the target name, and the possibility that no CMake package is available (like in Conda, which should make that Conda patch unnecessary).
It uses the unified `zstd::libzstd` target if available, otherwise a generator expression that chooses between the shared or the static library (in vcpkg only one of them will be available).
Should fix failures under ASAN.
…d . --target install`. The previous method did not actually work, but this has a downside of potentially limiting parallelizability.
e0683b3 to
8848cb0
Compare
7d6521d to
7f660dc
Compare
89509c5 to
8d9b959
Compare
eric-hughes-tiledb
left a comment
There was a problem hiding this comment.
LGTM
This change is going to break IDE setups. It should be announced very loudly when it merges.
|
Macports build (on |
|
@KiterLuc thanks for this work. Question: I want to point to external projects (with the thanks again. (related to old ticket #4070 ) |
|
You can pass |
|
ah, thanks @teo-tsirpanis ! |
|
@teo-tsirpanis I do see the option listed in I wonder if it is because I do not set a |
|
I cannot reproduce locally. Do you perhaps have the |
|
I do not set |
|
Even when I pass Could it be that if CMake cannot find one dependency, instead of throwing an error, it begins a VCPKG install ? |
Very unlikely, vcpkg inside the Can you share a repro for me to try? |
SC-36912
SC-36913
Historically, the Core's build system has been using CMake external projects to download and build external dependencies, and a "superbuild" architecture to ensure a build order. With the advent of vcpkg, we have stopped building the dependencies ourselves and instead rely on vcpkg (or the "system" in general) to provide them for us. The superbuild has thus became a relic of the past, consisting of only the inner
tiledbproject when the new system is enabled (formerly by specifying-DTILEDB_VCPKG=ON, now always).This PR removes the superbuild. TileDB became a regular CMake project, whose targets can be built directly without first building the outer project, and then building the
build/tiledbsubdirectory. The CI scripts were updated accordingly to not use the subdirectory.This is inevitably a breaking change in the build system. For starters, local development environment will certainly need to make a clean build after this change. Furthermore, there will need to be changes in build scripts to not build again on the
tiledbsubdirectory.For examples of downstream migrations, TileDB-Inc/TileDB-Go#316 uses a
makeinvocation that has a similar effect both with and without the superbuild, and conda-forge/tiledb-feedstock#290 uses a semi-documented CMake option to disable the superbuild (which will have no effect after the superbuild gets removed).The majority of first-party downstreams (VCF, SOMA, MariaDB, Vector Search, the Python and Java APIs) use the
install-tiledbtarget, which currently is defiend on the superbuild and builds theinstalltarget in the innertiledbproject. With this PR theinstall-tiledbtarget will be kept for compatibility, but alias toinstall.I tried to build VCF with a TileDB external project from this branch, but it fails with an error that will be fixed with #4989. I will try again once that PR gets merged.Never mind, VCF builds with the latest changes.TYPE: BUILD
DESC: The superbuild architecture of the build system has been removed and TileDB is a regular CMake project. Build commands of the form
make && make -C tiledb <targets>will have to be replaced bymake <targets>.