Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Build without the superbuild. #290

Merged
merged 3 commits into from
May 28, 2024
Merged

Conversation

teo-tsirpanis
Copy link
Member

@teo-tsirpanis teo-tsirpanis commented May 21, 2024

This PR updates the build scripts to configure and build TileDB as a single CMake project, without the superbuild. Fixes #289 for reasons I do not understand.

@conda-forge-webservices
Copy link
Contributor

Hi! This is the friendly automated conda-forge-linting service.

I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

@teo-tsirpanis teo-tsirpanis changed the title [NO MERGE] Try building in trace mode on Windows only. Build without the superbuild. May 21, 2024
@teo-tsirpanis teo-tsirpanis marked this pull request as ready for review May 21, 2024 18:56
KiterLuc pushed a commit to TileDB-Inc/TileDB that referenced this pull request May 22, 2024
[SC-47807](https://app.shortcut.com/tiledb-inc/story/47807/detectstdpmr-fails-in-macos-when-cross-compiling)

We use `try_compile` instead of `try_run` to detect whether the headers
for `std::pmr` are available. This fixes errors in cross-compiling
scenarios, like when building for osx-arm64 in an osx-x64 machine.
Should fix failures in conda-forge/tiledb-feedstock#290, waiting for
adding a patch and validating.

---
TYPE: BUILD
DESC: Fix configuration errors when cross-compiling.
@teo-tsirpanis teo-tsirpanis merged commit 0fb196e into conda-forge:main May 28, 2024
8 checks passed
@teo-tsirpanis teo-tsirpanis deleted the trace branch May 28, 2024 22:25
KiterLuc pushed a commit to TileDB-Inc/TileDB that referenced this pull request Jul 17, 2024
[SC-36912](https://app.shortcut.com/tiledb-inc/story/36912/remove-cmake-variable-tiledb-vcpkg-from-the-build)

[SC-36913](https://app.shortcut.com/tiledb-inc/story/36913/remove-superbuild)

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 `tiledb`
project 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/tiledb` subdirectory. 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 `tiledb` subdirectory.

For examples of downstream migrations, TileDB-Inc/TileDB-Go#316 uses a
`make` invocation 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-tiledb` target, which
currently is defiend on the superbuild and builds the `install` target
in the inner `tiledb` project. With this PR the `install-tiledb` target
will be kept for compatibility, but alias to `install`.

~~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 by `make
<targets>`.
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Windows build spends almost half an hour trying to determine COMPILER_HAS_DEPRECATED during cmake config
3 participants