[Feature] introduce jemalloc into thirdparty (#6238)
This commit is contained in:
parent
971ac081bc
commit
7ccb2823c7
|
|
@ -213,8 +213,8 @@ set_target_properties(openssl PROPERTIES IMPORTED_LOCATION ${THIRDPARTY_DIR}/lib
|
|||
add_library(leveldb STATIC IMPORTED)
|
||||
set_target_properties(leveldb PROPERTIES IMPORTED_LOCATION ${THIRDPARTY_DIR}/lib/libleveldb.a)
|
||||
|
||||
add_library(jemalloc STATIC IMPORTED)
|
||||
set_target_properties(jemalloc PROPERTIES IMPORTED_LOCATION ${THIRDPARTY_DIR}/lib64/libjemalloc.a)
|
||||
add_library(jemalloc_for_arrow STATIC IMPORTED)
|
||||
set_target_properties(jemalloc_for_arrow PROPERTIES IMPORTED_LOCATION ${THIRDPARTY_DIR}/lib64/libjemalloc.a)
|
||||
|
||||
add_library(brotlicommon STATIC IMPORTED)
|
||||
set_target_properties(brotlicommon PROPERTIES IMPORTED_LOCATION ${THIRDPARTY_DIR}/lib64/libbrotlicommon.a)
|
||||
|
|
@ -567,7 +567,8 @@ set(STARROCKS_DEPENDENCIES
|
|||
leveldb
|
||||
bitshuffle
|
||||
roaring
|
||||
jemalloc
|
||||
# arrow compiles jemalloc with a specific prefix, we should keep it
|
||||
jemalloc_for_arrow
|
||||
brotlicommon
|
||||
brotlidec
|
||||
brotlienc
|
||||
|
|
|
|||
|
|
@ -884,6 +884,21 @@ build_opentelemetry() {
|
|||
${BUILD_SYSTEM} install
|
||||
}
|
||||
|
||||
# jemalloc
|
||||
build_jemalloc() {
|
||||
OLD_CFLAGS=$CFLAGS
|
||||
check_if_source_exist $JEMALLOC_SOURCE
|
||||
|
||||
unset CFLAGS
|
||||
export CFLAGS="-O3 -fno-omit-frame-pointer -fPIC -g"
|
||||
cd $TP_SOURCE_DIR/$JEMALLOC_SOURCE
|
||||
./configure --prefix=${TP_INSTALL_DIR} --with-jemalloc-prefix=je --enable-prof --disable-cxx --disable-libdl --disable-shared
|
||||
make -j$PARALLEL
|
||||
make install
|
||||
mv $TP_INSTALL_DIR/lib/libjemalloc.a $TP_INSTALL_DIR/lib/libjemalloc_for_starrocks.a
|
||||
export CFLAGS=$OLD_CFLAGS
|
||||
}
|
||||
|
||||
export CXXFLAGS="-O3 -fno-omit-frame-pointer -Wno-class-memaccess -fPIC -g -I${TP_INCLUDE_DIR}"
|
||||
export CPPFLAGS=$CXXFLAGS
|
||||
# https://stackoverflow.com/questions/42597685/storage-size-of-timespec-isnt-known
|
||||
|
|
@ -927,6 +942,7 @@ build_aliyun_oss_jars
|
|||
build_aws_cpp_sdk
|
||||
build_vpack
|
||||
build_opentelemetry
|
||||
build_jemalloc
|
||||
|
||||
if [[ "${MACHINE_TYPE}" != "aarch64" ]]; then
|
||||
build_breakpad
|
||||
|
|
|
|||
|
|
@ -174,6 +174,7 @@ UNZIP_CMD="unzip"
|
|||
SUFFIX_TGZ="\.(tar\.gz|tgz)$"
|
||||
SUFFIX_XZ="\.tar\.xz$"
|
||||
SUFFIX_ZIP="\.zip$"
|
||||
SUFFIX_BZ2="\.bz2$"
|
||||
# temporary directory for unpacking
|
||||
# package is unpacked in tmp_dir and then renamed.
|
||||
mkdir -p $TP_SOURCE_DIR/tmp_dir
|
||||
|
|
@ -206,6 +207,13 @@ do
|
|||
echo "Failed to unzip ${!NAME}"
|
||||
exit 1
|
||||
fi
|
||||
elif [[ "${!NAME}" =~ $SUFFIX_BZ2 ]]; then
|
||||
echo "$TP_SOURCE_DIR/${!NAME}"
|
||||
echo "$TP_SOURCE_DIR/${!SOURCE}"
|
||||
if ! $TAR_CMD jxvf "$TP_SOURCE_DIR/${!NAME}" -C $TP_SOURCE_DIR/tmp_dir; then
|
||||
echo "Failed to untar ${!NAME}"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "nothing has been done with ${!NAME}"
|
||||
continue
|
||||
|
|
@ -375,5 +383,14 @@ else
|
|||
echo "$AWS_SDK_CPP_SOURCE not patched"
|
||||
fi
|
||||
|
||||
# patch jemalloc_hook
|
||||
cd $TP_SOURCE_DIR/$JEMALLOC_SOURCE
|
||||
if [ ! -f $PATCHED_MARK ] && [ $JEMALLOC_SOURCE = "jemalloc-5.2.1" ]; then
|
||||
patch -p0 < $TP_PATCH_DIR/jemalloc_hook.patch
|
||||
touch $PATCHED_MARK
|
||||
fi
|
||||
cd -
|
||||
echo "Finished patching $JEMALLOC_SOURCE"
|
||||
|
||||
cd -
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,11 @@
|
|||
--- include/jemalloc/jemalloc.sh 2022-05-16 18:45:40.072099757 +0800
|
||||
+++ include/jemalloc/jemalloc.sh 2022-05-16 18:45:44.994620722 +0800
|
||||
@@ -12,7 +12,7 @@ extern "C" {
|
||||
EOF
|
||||
|
||||
for hdr in jemalloc_defs.h jemalloc_rename.h jemalloc_macros.h \
|
||||
- jemalloc_protos.h jemalloc_typedefs.h jemalloc_mangle.h ; do
|
||||
+ jemalloc_protos.h jemalloc_typedefs.h ; do
|
||||
cat "${objroot}include/jemalloc/${hdr}" \
|
||||
| grep -v 'Generated from .* by configure\.' \
|
||||
| sed -e 's/ $//g'
|
||||
Loading…
Reference in New Issue