]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
cmake/rocksdb: make sure dependencies build before rocksdb 54626/head
authorCasey Bodley <cbodley@redhat.com>
Thu, 23 Nov 2023 05:12:29 +0000 (00:12 -0500)
committerCasey Bodley <cbodley@redhat.com>
Thu, 23 Nov 2023 05:19:29 +0000 (00:19 -0500)
some of rocksdb's dependencies may not have built by the time its
ExternalProject starts, so it can fail with missing headers or
libraries. for example, `uring::uring` may itself be an ExternalProject,
and its include directory won't exist until it starts building:

```
[89/1345] Performing configure step for 'rocksdb_ext'
FAILED: src/rocksdb_ext-prefix/src/rocksdb_ext-stamp/rocksdb_ext-configure build/src/rocksdb_ext-prefix/src/rocksdb_ext-stamp/rocksdb_ext-configure
...
CMake Error in CMakeLists.txt:
  Imported target "uring::uring" includes non-existent path

    "build/src/liburing/src/include"

  in its INTERFACE_INCLUDE_DIRECTORIES.  Possible reasons include:

  * The path was deleted, renamed, or moved to another location.

  * An install or uninstall procedure did not complete successfully.

  * The installation package was faulty and references files it does not
  provide.
...
[91/1345] Performing download step (git clone) for 'liburing_ext'
Cloning into 'liburing'...
```

use `add_dependencies(rocksdb_ext)` to make sure all of its dependencies
are available before starting the build

Signed-off-by: Casey Bodley <cbodley@redhat.com>
cmake/modules/BuildRocksDB.cmake

index 97a101edfec38ed6586d540e825dfffd065abb44..f9a28274c40d2d9e3d7f0383784a755a94981f49 100644 (file)
@@ -91,6 +91,9 @@ function(build_rocksdb)
     INSTALL_COMMAND ""
     LIST_SEPARATOR !)
 
+  # make sure all the link libraries are built first
+  add_dependencies(rocksdb_ext ${rocksdb_INTERFACE_LINK_LIBRARIES})
+
   add_library(RocksDB::RocksDB STATIC IMPORTED)
   add_dependencies(RocksDB::RocksDB rocksdb_ext)
   set(rocksdb_INCLUDE_DIR "${rocksdb_SOURCE_DIR}/include")