ci: scrub rocksdb.pc of relative include path
RocksDB's Makefile unconditionally appends `-isystem third-party/
gtest-1.8.1/fused-src` to the generated rocksdb.pc Cflags. That path
is relative to the build directory, so when the installed .pc file
ends up in /usr/local/lib/pkgconfig/, Triangles' CMake configure
errors out with:
CMake Error in src/CMakeLists.txt:
Imported target 'PkgConfig::RocksDB' includes non-existent path
'third-party/gtest-1.8.1/fused-src'
Modern CMake (>= 3.27) refuses imported targets with relative paths
in INTERFACE_INCLUDE_DIRECTORIES. Replace the bad flag with an
absolute path to the installed include dir so pkg-config consumers
get a real on-disk path.
Discovered while debugging the second CI failure on PR #10
(Configure succeeded but generation failed because PkgConfig::RocksDB
referenced a path that didn't exist).
This commit is contained in:
@@ -41,6 +41,25 @@ make -j"${JOBS}" shared_lib PORTABLE=1 USE_RTTI=1 \
|
||||
|
||||
make install-shared PREFIX="${INSTALL_PREFIX}"
|
||||
|
||||
# Scrub the rocksdb.pc that install-shared just wrote. RocksDB's
|
||||
# Makefile unconditionally appends `-isystem third-party/gtest-1.8.1/
|
||||
# fused-src` to Cflags, which is a RELATIVE path baked in from the build
|
||||
# directory. Modern CMake (>= 3.27) refuses to consume imported targets
|
||||
# with non-existent relative paths in INTERFACE_INCLUDE_DIRECTORIES,
|
||||
# so pkg_check_modules(rocksdb) on a Triangles configure errors out
|
||||
# with: 'Imported target "PkgConfig::RocksDB" includes non-existent
|
||||
# path "third-party/gtest-1.8.1/fused-src"'.
|
||||
#
|
||||
# Replace the bad flag with the absolute include dir so pkg-config
|
||||
# consumers see a path that actually exists on disk.
|
||||
PC_FILE="${INSTALL_PREFIX}/lib/pkgconfig/rocksdb.pc"
|
||||
if [ -f "${PC_FILE}" ]; then
|
||||
sed -i \
|
||||
-e "s|-isystem third-party/gtest-1.8.1/fused-src|-I${INSTALL_PREFIX}/include|g" \
|
||||
-e "s|-isystem \\${prefix}/third-party/gtest-1.8.1/fused-src|-I${INSTALL_PREFIX}/include|g" \
|
||||
"${PC_FILE}"
|
||||
fi
|
||||
|
||||
ldconfig
|
||||
|
||||
# Sanity: installed library should be on disk and registered with ldconfig.
|
||||
|
||||
Reference in New Issue
Block a user