diff --git a/CMakeLists.txt b/CMakeLists.txt index 9c446b19a548e2f2f84d147d59327bee66d56caa..938997b23ea077ae2d1466c3516c0678587c7584 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -70,6 +70,13 @@ IF (NOT DEFINED TD_CLUSTER) ENDIF () ENDIF () + # + # Get OS information and store in variable TD_OS_INFO. + # + execute_process(COMMAND chmod 777 ${TD_COMMUNITY_DIR}/packaging/tools/get_os.sh) + execute_process(COMMAND ${TD_COMMUNITY_DIR}/packaging/tools/get_os.sh "" OUTPUT_VARIABLE TD_OS_INFO) + MESSAGE(STATUS "The current os is " ${TD_OS_INFO}) + IF (${CMAKE_SYSTEM_NAME} MATCHES "Linux") IF (${CMAKE_SIZEOF_VOID_P} MATCHES 8) SET(TD_LINUX_64 TRUE) @@ -150,6 +157,13 @@ IF (NOT DEFINED TD_CLUSTER) ENDIF () ADD_DEFINITIONS(-DLINUX) ADD_DEFINITIONS(-D_REENTRANT -D__USE_POSIX -D_LIBC_REENTRANT) + IF (${TD_OS_INFO} MATCHES "Alpine") + MESSAGE(STATUS "The current OS is Alpine, append extra flags") + SET(COMMON_FLAGS "${COMMON_FLAGS} -largp") + link_libraries(/usr/lib/libargp.a) + ELSE () + ADD_DEFINITIONS(-D__USE_GNU) + ENDIF () ELSEIF (TD_LINUX_32) IF (NOT TD_ARM) EXIT () @@ -160,6 +174,13 @@ IF (NOT DEFINED TD_CLUSTER) ADD_DEFINITIONS(-DLINUX) ADD_DEFINITIONS(-D_REENTRANT -D__USE_POSIX -D_LIBC_REENTRANT) ADD_DEFINITIONS(-DUSE_LIBICONV) + IF (${TD_OS_INFO} MATCHES "Alpine") + MESSAGE(STATUS "The current OS is Alpine, add extra flags") + SET(COMMON_FLAGS "${COMMON_FLAGS} -largp") + link_library(/usr/lib/libargp.a) + ELSE () + ADD_DEFINITIONS(-D__USE_GNU) + ENDIF () ELSEIF (TD_WINDOWS_64) SET(CMAKE_GENERATOR "NMake Makefiles" CACHE INTERNAL "" FORCE) SET(COMMON_FLAGS "/nologo /WX- /Oi /Oy- /Gm- /EHsc /MT /GS /Gy /fp:precise /Zc:wchar_t /Zc:forScope /Gd /errorReport:prompt /analyze-") diff --git a/packaging/deb/makedeb.sh b/packaging/deb/makedeb.sh index 5c2df734faf3195d783be9f337e3bd5f58cb1f64..1cd45cfb971a426b592aa795913eadd4806672a8 100755 --- a/packaging/deb/makedeb.sh +++ b/packaging/deb/makedeb.sh @@ -10,7 +10,7 @@ tdengine_ver=$3 armver=$4 script_dir="$(dirname $(readlink -f $0))" -top_dir="$(readlink -m ${script_dir}/../..)" +top_dir="$(readlink -f ${script_dir}/../..)" pkg_dir="${top_dir}/debworkroom" #echo "curr_dir: ${curr_dir}" diff --git a/packaging/release.sh b/packaging/release.sh index 70f7af652f172b096ff734d65b2049d4d4e77ea2..7297eb1d81a25e9d9e86ab2882a6c53db81f2b18 100755 --- a/packaging/release.sh +++ b/packaging/release.sh @@ -9,7 +9,7 @@ armver=$1 curr_dir=$(pwd) script_dir="$(dirname $(readlink -f $0))" -top_dir="$(readlink -m ${script_dir}/..)" +top_dir="$(readlink -f ${script_dir}/..)" versioninfo="${top_dir}/src/util/src/version.c" csudo="" diff --git a/packaging/rpm/makerpm.sh b/packaging/rpm/makerpm.sh index aef01875cbb15963f9289983c8e42649707b10bf..f885c65cddd7b993d797db9b1a031296371f8143 100755 --- a/packaging/rpm/makerpm.sh +++ b/packaging/rpm/makerpm.sh @@ -12,7 +12,7 @@ tdengine_ver=$3 armver=$4 script_dir="$(dirname $(readlink -f $0))" -top_dir="$(readlink -m ${script_dir}/../..)" +top_dir="$(readlink -f ${script_dir}/../..)" pkg_dir="${top_dir}/rpmworkroom" spec_file="${script_dir}/tdengine.spec" diff --git a/packaging/tools/get_os.sh b/packaging/tools/get_os.sh new file mode 100644 index 0000000000000000000000000000000000000000..13f9f63228697c7abb69daf6abe14e49a4977f13 --- /dev/null +++ b/packaging/tools/get_os.sh @@ -0,0 +1,14 @@ +#!/bin/bash +# +# This file is used to install TAOS time-series database on linux systems. The operating system +# is required to use systemd to manage services at boot + +set -e +# set -x + +# -----------------------Variables definition--------------------- +OS=$(cat /etc/*-release | grep "^NAME=" | cut -d= -f2) +len=$(echo ${#OS}) +len=$((len-2)) +retval=$(echo -ne ${OS:1:${len}} | cut -d" " -f0) +echo -ne $retval diff --git a/packaging/tools/install.sh b/packaging/tools/install.sh index e1bcce401d419ce7a97c4110161777cfeea4f0e5..ea3e16d345ed427d2f81abb14d66673d4df5cfbb 100755 --- a/packaging/tools/install.sh +++ b/packaging/tools/install.sh @@ -7,7 +7,7 @@ set -e #set -x # -----------------------Variables definition--------------------- -script_dir=$(dirname $(readlink -m "$0")) +script_dir=$(dirname $(readlink -f "$0")) # Dynamic directory data_dir="/var/lib/taos" log_dir="/var/log/taos" diff --git a/packaging/tools/install_client.sh b/packaging/tools/install_client.sh index 7560ebca4140688dbbee461e58ddcfef9a4b2391..78d7b750458d7b777119315237efe574b330af6d 100755 --- a/packaging/tools/install_client.sh +++ b/packaging/tools/install_client.sh @@ -7,7 +7,7 @@ set -e #set -x # -----------------------Variables definition--------------------- -script_dir=$(dirname $(readlink -m "$0")) +script_dir=$(dirname $(readlink -f "$0")) # Dynamic directory data_dir="/var/lib/taos" log_dir="/var/log/taos" diff --git a/packaging/tools/make_install.sh b/packaging/tools/make_install.sh index b461d5c46da502651823562ae5a7af011a7f8a93..25ab39777583e7e45934c4fd1c0606095890a11c 100755 --- a/packaging/tools/make_install.sh +++ b/packaging/tools/make_install.sh @@ -9,7 +9,7 @@ set -e # -----------------------Variables definition--------------------- source_dir=$1 binary_dir=$2 -script_dir=$(dirname $(readlink -m "$0")) +script_dir=$(dirname $(readlink -f "$0")) # Dynamic directory data_dir="/var/lib/taos" log_dir="/var/log/taos" diff --git a/packaging/tools/makeclient.sh b/packaging/tools/makeclient.sh index f8d21e202b8649c03d40d33d1c43c6338b12f790..4ff360a1af2a9f73d67f1a070f82396d811bb3e5 100755 --- a/packaging/tools/makeclient.sh +++ b/packaging/tools/makeclient.sh @@ -11,7 +11,7 @@ build_time=$3 armver=$4 script_dir="$(dirname $(readlink -f $0))" -top_dir="$(readlink -m ${script_dir}/../..)" +top_dir="$(readlink -f ${script_dir}/../..)" # create compressed install file. build_dir="${compile_dir}/build" diff --git a/packaging/tools/makepkg.sh b/packaging/tools/makepkg.sh index 714b74dbe6952a5ef9387e9709551fb67cf441bf..3d2e624cee2647f946dc1161e925347b17d910e1 100755 --- a/packaging/tools/makepkg.sh +++ b/packaging/tools/makepkg.sh @@ -9,7 +9,7 @@ build_time=$3 armver=$4 script_dir="$(dirname $(readlink -f $0))" -top_dir="$(readlink -m ${script_dir}/../..)" +top_dir="$(readlink -f ${script_dir}/../..)" # create compressed install file. build_dir="${compile_dir}/build" diff --git a/packaging/tools/post.sh b/packaging/tools/post.sh index a62f7a5eeb44730f4d68d5f018eeea49b807da3a..eea36f4484707e8ae1a0a18b5296f7aa1d899ee0 100755 --- a/packaging/tools/post.sh +++ b/packaging/tools/post.sh @@ -4,7 +4,7 @@ # is required to use systemd to manage services at boot #set -x # -----------------------Variables definition--------------------- -script_dir=$(dirname $(readlink -m "$0")) +script_dir=$(dirname $(readlink -f "$0")) # Dynamic directory data_dir="/var/lib/taos" log_dir="/var/log/taos" diff --git a/packaging/tools/repair_link.sh b/packaging/tools/repair_link.sh index 42b1082a9e848cfbf3320e62fdab3b1d3b48c616..7fd503f27013a9fce7208ece4335a1f427e05c9d 100755 --- a/packaging/tools/repair_link.sh +++ b/packaging/tools/repair_link.sh @@ -17,7 +17,7 @@ done declare -A dirHash for linkFile in $(find -L $linkDir -xtype l); do - targetFile=$(readlink -m $linkFile) + targetFile=$(readlink -f $linkFile) echo "targetFile: ${targetFile}" # TODO : Extract directory part and basename part dirName=$(dirname $(dirname ${targetFile})) diff --git a/src/kit/shell/src/shellLinux.c b/src/kit/shell/src/shellLinux.c index e9e988c6c687a8eaefd858d6628f50f45a142af7..12202f95ac1d32a0e73ee5f521758b06fb509c33 100644 --- a/src/kit/shell/src/shellLinux.c +++ b/src/kit/shell/src/shellLinux.c @@ -130,7 +130,11 @@ void shellParseArgument(int argc, char *argv[], struct arguments *arguments) { argp_parse(&argp, argc, argv, 0, 0, arguments); if (arguments->abort) { - error(10, 0, "ABORTED"); + #ifdef __USE_GNU + error(10, 0, "ABORTED"); + #else + abort(); + #endif } } diff --git a/src/kit/taosdemo/taosdemo.c b/src/kit/taosdemo/taosdemo.c index 40fbabe1f76027860c8f3b863618f870b833a91f..d95a27548c94a0595349a80ab6a164e9e7239e63 100644 --- a/src/kit/taosdemo/taosdemo.c +++ b/src/kit/taosdemo/taosdemo.c @@ -17,7 +17,10 @@ #include #include +#if !defined (__USE_GNU) && defined (LINUX) +#else #include +#endif #include #include #include @@ -309,7 +312,13 @@ int main(int argc, char *argv[]) { argp_parse(&argp, argc, argv, 0, 0, &arguments); - if (arguments.abort) error(10, 0, "ABORTED"); + if (arguments.abort) { + #ifdef __USE_GNU + error(10, 0, "ABORTED"); + #else + abort(); + #endif + } enum MODE query_mode = arguments.mode; char *ip_addr = arguments.host; diff --git a/src/kit/taosdump/taosdump.c b/src/kit/taosdump/taosdump.c index c8ef3bc0481c72d284485d7c369db97de6d780e9..ba2c6c107466a103c6390087241f06d6e361577b 100644 --- a/src/kit/taosdump/taosdump.c +++ b/src/kit/taosdump/taosdump.c @@ -15,7 +15,10 @@ #include #include +#if !defined (__USE_GNU) && defined (LINUX) +#else #include +#endif #include #include #include @@ -335,7 +338,13 @@ int main(int argc, char *argv[]) { reflected in arguments. */ argp_parse(&argp, argc, argv, 0, 0, &arguments); - if (arguments.abort) error(10, 0, "ABORTED"); + if (arguments.abort) { + #ifdef __USE_GNU + error(10, 0, "ABORTED"); + #else + abort(); + #endif + } if (taosCheckParam(&arguments) < 0) { exit(EXIT_FAILURE); diff --git a/src/os/linux/inc/os.h b/src/os/linux/inc/os.h index 68ae7c09eafe6c76e745e9c5333827294eb72ece..1cefe5b587e42505b855b5feb4b5a44f3076a6a5 100644 --- a/src/os/linux/inc/os.h +++ b/src/os/linux/inc/os.h @@ -229,6 +229,14 @@ void taosSetCoreDump(); void taosBlockSIGPIPE(); +#ifndef __USE_GNU + typedef int(*__compar_fn_t)(const void *, const void *); + void error (int, int, const char *); + #ifndef PTHREAD_MUTEX_RECURSIVE_NP + #define PTHREAD_MUTEX_RECURSIVE_NP PTHREAD_MUTEX_RECURSIVE + #endif +#endif + #define BUILDIN_CLZL(val) __builtin_clzl(val) #define BUILDIN_CLZ(val) __builtin_clz(val) #define BUILDIN_CTZL(val) __builtin_ctzl(val) diff --git a/src/os/linux/src/tlinux.c b/src/os/linux/src/tlinux.c index a23919e458709490d45a5bcadebf84ee5fed743d..1591806d368e374a1550c2fa8eb7ff018c785f35 100644 --- a/src/os/linux/src/tlinux.c +++ b/src/os/linux/src/tlinux.c @@ -234,8 +234,15 @@ void *taosProcessAlarmSignal(void *tharg) { timer_t timerId; struct sigevent sevent; - sevent.sigev_notify = SIGEV_THREAD_ID; - sevent._sigev_un._tid = syscall(__NR_gettid); + + #ifndef __USE_GNU + sevent.sigev_notify = SIGEV_THREAD; + sevent.sigev_value.sival_int = syscall(__NR_gettid); + #else + sevent.sigev_notify = SIGEV_THREAD_ID; + sevent._sigev_un._tid = syscall(__NR_gettid); + #endif + sevent.sigev_signo = SIGALRM; if (timer_create(CLOCK_REALTIME, &sevent, &timerId) == -1) { diff --git a/src/os/linux/src/tsystem.c b/src/os/linux/src/tsystem.c index 055a67e0772f1a9595fa2825514358e9ef16083c..afb595552ff7afd87660acdf7d563649bb9e13ac 100644 --- a/src/os/linux/src/tsystem.c +++ b/src/os/linux/src/tsystem.c @@ -27,12 +27,15 @@ #include #include #include -#include -#include #include #include #include + +#ifndef __USE_GNU #include +#else +#include +#endif #include "tglobalcfg.h" #include "tlog.h" diff --git a/src/system/detail/inc/dnodeSystem.h b/src/system/detail/inc/dnodeSystem.h index 632b723ac0741a4cfe36533e29da2b3f0971f873..96e5699464af1095ae92e74b4e96dd67ae11c81d 100644 --- a/src/system/detail/inc/dnodeSystem.h +++ b/src/system/detail/inc/dnodeSystem.h @@ -21,6 +21,7 @@ extern "C" { #endif #include +#include #define tsetModuleStatus(mod) \ { tsModuleStatus |= (1 << mod); } diff --git a/src/system/detail/src/vnodeImport.c b/src/system/detail/src/vnodeImport.c index 6bf543e47068cbcce3aca822885b646689b175a4..8d9e741c9831fa1432c96fd83e98539ce88f40df 100644 --- a/src/system/detail/src/vnodeImport.c +++ b/src/system/detail/src/vnodeImport.c @@ -579,7 +579,7 @@ static int vnodeCloseImportFiles(SMeterObj *pObj, SImportHandle *pHandle) { SVnodeObj *pVnode = vnodeList + pObj->vnode; char dpath[TSDB_FILENAME_LEN] = "\0"; SCompInfo compInfo; - __off_t offset = 0; + off_t offset = 0; if (pVnode->nfd > 0) { offset = lseek(pVnode->nfd, 0, SEEK_CUR);