mirror of
https://github.com/milvus-io/milvus.git
synced 2026-07-21 10:15:43 +00:00
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:
@@ -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
|
||||
|
||||
|
||||
Executable
+51
@@ -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
@@ -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*)
|
||||
|
||||
Reference in New Issue
Block a user