fix: renamed plan-parser-so to plan-parser-lib to allow compilation on mac (#48068)

issue: #44452

Signed-off-by: Buqian Zheng <zhengbuqian@gmail.com>
This commit is contained in:
Buqian Zheng
2026-03-09 11:57:25 +08:00
committed by GitHub
parent 6b910a0074
commit 0689bdb7c6
5 changed files with 74 additions and 22 deletions
+15 -1
View File
@@ -108,8 +108,13 @@ pushd ${BUILD_OUTPUT_DIR}
# The pre_build hook (below) handles setting LD_LIBRARY_PATH per-build
# for tools like grpc_cpp_plugin that need shared libs at build time.
SAVED_LD_LIBRARY_PATH="${LD_LIBRARY_PATH:-}"
SAVED_LD_PRELOAD="${LD_PRELOAD:-}"
SAVED_DYLD_LIBRARY_PATH="${DYLD_LIBRARY_PATH:-}"
SAVED_DYLD_INSERT_LIBRARIES="${DYLD_INSERT_LIBRARIES:-}"
unset LD_PRELOAD
unset LD_LIBRARY_PATH
unset DYLD_LIBRARY_PATH
unset DYLD_INSERT_LIBRARIES
export CONAN_REVISIONS_ENABLED=1
export CXXFLAGS="-Wno-error=address -Wno-error=deprecated-declarations -include cstdint"
@@ -256,10 +261,19 @@ HOOK_EOF
;;
esac
# Restore LD_LIBRARY_PATH so downstream build steps can find shared libs
# Restore LD_LIBRARY_PATH/LD_PRELOAD/DYLD vars so downstream build steps can find shared libs
if [[ -n "${SAVED_LD_LIBRARY_PATH}" ]]; then
export LD_LIBRARY_PATH="${SAVED_LD_LIBRARY_PATH}"
fi
if [[ -n "${SAVED_LD_PRELOAD}" ]]; then
export LD_PRELOAD="${SAVED_LD_PRELOAD}"
fi
if [[ -n "${SAVED_DYLD_LIBRARY_PATH}" ]]; then
export DYLD_LIBRARY_PATH="${SAVED_DYLD_LIBRARY_PATH}"
fi
if [[ -n "${SAVED_DYLD_INSERT_LIBRARIES}" ]]; then
export DYLD_INSERT_LIBRARIES="${SAVED_DYLD_INSERT_LIBRARIES}"
fi
popd
+51
View File
@@ -0,0 +1,51 @@
#!/usr/bin/env bash
set -euo pipefail
PWD_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
source "${PWD_DIR}/scripts/setenv.sh"
OUTPUT_LIB="${PWD_DIR}/internal/core/output/lib"
OUTPUT_INCLUDE="${PWD_DIR}/internal/core/output/include"
CWRAPPER_DIR="${PWD_DIR}/internal/parser/planparserv2/cwrapper"
mkdir -p "${OUTPUT_LIB}" "${OUTPUT_INCLUDE}"
OS="$(uname -s)"
if [[ "${OS}" == "Darwin" ]]; then
EXT="dylib"
RPATH_FLAG="-Wl,-rpath,@loader_path"
else
EXT="so"
RPATH_FLAG="-Wl,-rpath,\$ORIGIN"
fi
echo "Building plan parser shared library (${OS}, .${EXT}) ..."
go env -w CGO_ENABLED="1"
# Build Go c-shared library
GO111MODULE=on go build -buildmode=c-shared \
-o "${OUTPUT_LIB}/libmilvus-planparser.${EXT}" \
"${CWRAPPER_DIR}/wrapper.go"
# Fix install name on macOS so dependent libraries can find it via @loader_path
if [[ "${OS}" == "Darwin" ]]; then
install_name_tool -id "@loader_path/libmilvus-planparser.dylib" \
"${OUTPUT_LIB}/libmilvus-planparser.dylib"
fi
# Move generated header
mv "${OUTPUT_LIB}/libmilvus-planparser.h" "${OUTPUT_INCLUDE}/libmilvus-planparser.h"
cp "${CWRAPPER_DIR}/milvus_plan_parser.h" "${OUTPUT_INCLUDE}/"
# Build C++ wrapper
${CXX:-g++} -std=c++17 -shared -fPIC \
-o "${OUTPUT_LIB}/libmilvus-planparser-cpp.${EXT}" \
"${CWRAPPER_DIR}/milvus_plan_parser.cpp" \
-I"${OUTPUT_INCLUDE}" \
-L"${OUTPUT_LIB}" -lmilvus-planparser \
${RPATH_FLAG}
echo "Plan parser shared library built successfully."
+1 -1
View File
@@ -107,7 +107,7 @@ case "${unameOut}" in
export CGO_CFLAGS="${CFLAGS}"
export CGO_LDFLAGS="${LDFLAGS} -framework Security -framework CoreFoundation"
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:$ROOT_DIR/internal/core/output/lib/pkgconfig"
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH:-}:$ROOT_DIR/internal/core/output/lib/pkgconfig"
export DYLD_LIBRARY_PATH=$ROOT_DIR/cmake_build/lib:$ROOT_DIR/internal/core/output/lib
export RPATH=$DYLD_LIBRARY_PATH;;
MINGW*)