diff --git a/CMakeLists.txt b/CMakeLists.txt index 9c446b19a5..938997b23e 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 5c2df734fa..1cd45cfb97 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 70f7af652f..7297eb1d81 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 aef01875cb..f885c65cdd 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 0000000000..13f9f63228 --- /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 e1bcce401d..ea3e16d345 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 7560ebca41..78d7b75045 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 b461d5c46d..25ab397775 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 f8d21e202b..4ff360a1af 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 714b74dbe6..3d2e624cee 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 a62f7a5eeb..eea36f4484 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 42b1082a9e..7fd503f270 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 e9e988c6c6..12202f95ac 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 40fbabe1f7..d95a27548c 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 c8ef3bc048..ba2c6c1074 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 68ae7c09ea..1cefe5b587 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 a23919e458..1591806d36 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 055a67e077..afb595552f 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 632b723ac0..96e5699464 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 6bf543e470..8d9e741c98 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);