From b576fef470f560336f6e194ca98f53ab8b529665 Mon Sep 17 00:00:00 2001 From: odidev Date: Wed, 17 Jun 2020 13:07:02 +0000 Subject: [PATCH] Added arm64 support to travis-ci 1. put the definitions of variables long_shifts and short_shifts and function shift_crc() in #ifndef _TD_ARM_, because this function and these variables are not used/called for arm64 build in travis. Hence warnings come up as errors. 2. Added arm64 jobs into .travis.yml by adding -DCPUTYPE=aarch64 with cmake command. Signed-off-by: odidev --- .travis.yml | 255 +++++++++++++++++++++++++++++++++++++++++ src/util/src/tcrc32c.c | 8 +- 2 files changed, 259 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 4ae38f5032..06c8b863d3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -260,6 +260,261 @@ matrix: - cmake .. > /dev/null - make > /dev/null + - os: linux + arch: arm64 + dist: bionic + language: c + compiler: clang + env: DESC="linux/clang build" + git: + - depth: 1 + + addons: + apt: + packages: + - build-essential + - cmake + + before_script: + - cd ${TRAVIS_BUILD_DIR} + - mkdir debug + - cd debug + + script: + - if [ "${TRAVIS_CPU_ARCH}" == "arm64" ]; then + cmake .. -DCPUTYPE=aarch64 > /dev/null; + else + cmake .. > /dev/null; + fi + - make > /dev/null + + - os: linux + arch: arm64 + dist: trusty + language: c + git: + - depth: 1 + + addons: + apt: + packages: + - build-essential + - cmake + env: + - DESC="trusty/gcc-4.8 build" + + before_script: + - cd ${TRAVIS_BUILD_DIR} + - mkdir debug + - cd debug + + script: + - if [ "${TRAVIS_CPU_ARCH}" == "arm64" ]; then + cmake .. -DCPUTYPE=aarch64 > /dev/null; + else + cmake .. > /dev/null; + fi + - make > /dev/null + + - os: linux + arch: arm64 + dist: bionic + language: c + compiler: gcc + env: ENV_COVER=true + + git: + - depth: 1 + + addons: + apt: + packages: + - build-essential + - cmake + - net-tools + - python-pip + - python-setuptools + - python3-pip + - python3-setuptools + - lcov + - psmisc + + before_script: + - cd ${TRAVIS_BUILD_DIR} + - mkdir debug + - cd debug + + script: + - if [ "${TRAVIS_CPU_ARCH}" == "arm64" ]; + then cmake -DCOVER=true .. -DCPUTYPE=aarch64 > /dev/null; + else cmake -DCOVER=true .. > /dev/null; + fi + - make > /dev/null + + after_success: + - |- + case $TRAVIS_OS_NAME in + linux) + cd ${TRAVIS_BUILD_DIR}/debug + make install > /dev/null || travis_terminate $? + pip install numpy + pip install --user ${TRAVIS_BUILD_DIR}/src/connector/python/linux/python2/ + pip3 install numpy + pip3 install --user ${TRAVIS_BUILD_DIR}/src/connector/python/linux/python3/ + cd ${TRAVIS_BUILD_DIR}/tests + ./test-all.sh smoke COVER + TEST_RESULT=$? + pkill taosd + sleep 1 + cd ${TRAVIS_BUILD_DIR} + lcov -d . --capture --rc lcov_branch_coverage=1 -o coverage.info + lcov --remove coverage.info '*/tests/*' '*/test/*' '*/deps/*' '*/plugins/*' -o coverage.info + lcov -l --rc lcov_branch_coverage=1 coverage.info || travis_terminate $? + gem install coveralls-lcov + # Color setting + RED='\033[0;31m' + GREEN='\033[1;32m' + GREEN_DARK='\033[0;32m' + GREEN_UNDERLINE='\033[4;32m' + NC='\033[0m' + coveralls-lcov coverage.info + if [ "$?" -eq "0" ]; then + echo -e "${GREEN} ## Uploaded to Coveralls.io! ## ${NC}" + else + echo -e "${RED} ## Coveralls.io not collect coverage report! ## ${NC} " + fi + bash <(curl -s https://codecov.io/bash) -y .codecov.yml -f coverage.info + if [ "$?" -eq "0" ]; then + echo -e "${GREEN} ## Uploaded to Codecov! ## ${NC} " + else + echo -e "${RED} ## Codecov did not collect coverage report! ## ${NC} " + fi + if [ "$TEST_RESULT" -ne "0" ]; then + travis_terminate $? + fi + ;; + esac + + - os: linux + arch: arm64 + dist: bionic + language: c + + git: + - depth: 1 + + compiler: gcc + env: DESC="linux/gcc build and test" + + addons: + apt: + packages: + - build-essential + - cmake + - net-tools + - python-pip + - python-setuptools + - python3-pip + - python3-setuptools + - valgrind + - psmisc + + before_script: + - cd ${TRAVIS_BUILD_DIR} + - mkdir debug + - cd debug + + script: + - if [ "${TRAVIS_CPU_ARCH}" == "arm64" ]; + then cmake .. -DCPUTYPE=aarch64 > /dev/null; + else cmake .. > /dev/null; + fi + - make > /dev/null + + after_success: + - travis_wait 20 + - |- + case $TRAVIS_OS_NAME in + linux) + cd ${TRAVIS_BUILD_DIR}/debug + make install > /dev/null || travis_terminate $? + pip install numpy + pip install --user ${TRAVIS_BUILD_DIR}/src/connector/python/linux/python2/ + pip3 install numpy + pip3 install --user ${TRAVIS_BUILD_DIR}/src/connector/python/linux/python3/ + cd ${TRAVIS_BUILD_DIR}/tests + ./test-all.sh smoke || travis_terminate $? + cd ${TRAVIS_BUILD_DIR}/tests/pytest + ./valgrind-test.sh 2>&1 > mem-error-out.log + sleep 1 + # Color setting + RED='\033[0;31m' + GREEN='\033[1;32m' + GREEN_DARK='\033[0;32m' + GREEN_UNDERLINE='\033[4;32m' + NC='\033[0m' + grep 'start to execute\|ERROR SUMMARY' mem-error-out.log|grep -v 'grep'|uniq|tee uniq-mem-error-out.log + for memError in `grep 'ERROR SUMMARY' uniq-mem-error-out.log | awk '{print $4}'` + do + if [ -n "$memError" ]; then + if [ "$memError" -gt 12 ]; then + echo -e "${RED} ## Memory errors number valgrind reports is $memError.\ + More than our threshold! ## ${NC}" + travis_terminate $memError + fi + fi + done + grep 'start to execute\|definitely lost:' mem-error-out.log|grep -v 'grep'|uniq|tee uniq-definitely-lost-out.log + for defiMemError in `grep 'definitely lost:' uniq-definitely-lost-out.log | awk '{print $7}'` + do + if [ -n "$defiMemError" ]; then + if [ "$defiMemError" -gt 13 ]; then + echo -e "${RED} ## Memory errors number valgrind reports \ + Definitely lost is $defiMemError. More than our threshold! ## ${NC}" + travis_terminate $defiMemError + fi + fi + done + ;; + esac + + - os: linux + arch: arm64 + dist: bionic + language: c + compiler: gcc + env: COVERITY_SCAN=true + git: + - depth: 1 + + script: + - echo "this job is for coverity scan" + + addons: + coverity_scan: + # GitHub project metadata + # ** specific to your project ** + project: + name: TDengine + version: 2.x + description: TDengine + + # Where email notification of build analysis results will be sent + notification_email: sdsang@taosdata.com, slguan@taosdata.com + + # Commands to prepare for build_command + # ** likely specific to your build ** + build_command_prepend: cmake . > /dev/null + + # The command that will be added as an argument to "cov-build" to compile your project for analysis, + # ** likely specific to your build ** + build_command: make + + # Pattern to match selecting branches that will run analysis. We recommend leaving this set to 'coverity_scan'. + # Take care in resource usage, and consider the build frequency allowances per + # https://scan.coverity.com/faq#frequency + branch_pattern: coverity_scan + # - os: osx # language: c # compiler: clang diff --git a/src/util/src/tcrc32c.c b/src/util/src/tcrc32c.c index 546693c4bb..3ef10b1b0d 100644 --- a/src/util/src/tcrc32c.c +++ b/src/util/src/tcrc32c.c @@ -736,7 +736,7 @@ static uint32_t table[16][256] = { 0x9c221d09, 0x6e2e10f7, 0x7dd67004, 0x8fda7dfa} }; - +#ifndef _TD_ARM_ static uint32_t long_shifts[4][256] = { {0x00000000, 0xe040e0ac, 0xc56db7a9, 0x252d5705, 0x8f3719a3, 0x6f77f90f, 0x4a5aae0a, 0xaa1a4ea6, 0x1b8245b7, 0xfbc2a51b, 0xdeeff21e, 0x3eaf12b2, @@ -1090,7 +1090,7 @@ static uint32_t short_shifts[4][256] = { 0x3c3f083d, 0x1984fde6, 0x7748e38b, 0x52f31650, 0xaad0df51, 0x8f6b2a8a, 0xe1a734e7, 0xc41cc13c, 0x140cd014, 0x31b725cf, 0x5f7b3ba2, 0x7ac0ce79, 0x82e30778, 0xa758f2a3, 0xc994ecce, 0xec2f1915}}; - +#endif #if 0 static uint32_t append_trivial(uint32_t crc, crc_stream input, size_t length) { for (size_t i = 0; i < length; ++i) { @@ -1187,13 +1187,13 @@ uint32_t crc32c_sf(uint32_t crci, crc_stream input, size_t length) { } return (uint32_t)crc ^ 0xffffffff; } - +#ifndef _TD_ARM_ /* Apply the zeros operator table to crc. */ static uint32_t shift_crc(uint32_t shift_table[][256], uint32_t crc) { return shift_table[0][crc & 0xff] ^ shift_table[1][(crc >> 8) & 0xff] ^ shift_table[2][(crc >> 16) & 0xff] ^ shift_table[3][crc >> 24]; } - +#endif /* Compute a CRC-32C. If the crc32 instruction is available, use the hardware version. Otherwise, use the software version. */ uint32_t (*crc32c)(uint32_t crci, crc_stream bytes, size_t len) = crc32c_sf; -- GitLab