diff --git a/.lgtm.yml b/.lgtm.yml new file mode 100644 index 0000000000000000000000000000000000000000..6a3b304e2d97c6b418209af2ef52e72f7f11f3e1 --- /dev/null +++ b/.lgtm.yml @@ -0,0 +1,130 @@ +sudo: required +language: bash +dist: focal +services: + - docker + +env: + global: + - PROJECT_NAME='libbpf' + - AUTHOR_EMAIL="$(git log -1 --pretty=\"%aE\")" + - REPO_ROOT="$TRAVIS_BUILD_DIR" + - CI_ROOT="$REPO_ROOT/travis-ci" + - VMTEST_ROOT="$CI_ROOT/vmtest" + +addons: + apt: + packages: + - qemu-kvm + - zstd + - binutils-dev + - elfutils + - libcap-dev + - libelf-dev + - libdw-dev + +stages: + # Run Coverity periodically instead of for each PR for following reasons: + # 1) Coverity jobs are heavily rate-limited + # 2) Due to security restrictions of encrypted environment variables + # in Travis CI, pull requests made from forks can't access encrypted + # env variables, making Coverity unusable + # See: https://docs.travis-ci.com/user/pull-requests#pull-requests-and-security-restrictions + - name: Coverity + if: type = cron + +jobs: + include: + - stage: Builds & Tests + name: Kernel 5.5.0 + selftests + language: bash + env: KERNEL=5.5.0 + script: $CI_ROOT/vmtest/run_vmtest.sh || travis_terminate 1 + + - name: Kernel LATEST + selftests + language: bash + env: KERNEL=LATEST + script: $CI_ROOT/vmtest/run_vmtest.sh || travis_terminate 1 + + - name: Kernel 4.9.0 + selftests + language: bash + env: KERNEL=4.9.0 + script: $CI_ROOT/vmtest/run_vmtest.sh || travis_terminate 1 + + - name: Debian Build + language: bash + install: $CI_ROOT/managers/debian.sh SETUP + script: $CI_ROOT/managers/debian.sh RUN || travis_terminate 1 + after_script: $CI_ROOT/managers/debian.sh CLEANUP + + - name: Debian Build (ASan+UBSan) + language: bash + install: $CI_ROOT/managers/debian.sh SETUP + script: $CI_ROOT/managers/debian.sh RUN_ASAN || travis_terminate 1 + after_script: $CI_ROOT/managers/debian.sh CLEANUP + + - name: Debian Build (clang) + language: bash + install: $CI_ROOT/managers/debian.sh SETUP + script: $CI_ROOT/managers/debian.sh RUN_CLANG || travis_terminate 1 + after_script: $CI_ROOT/managers/debian.sh CLEANUP + + - name: Debian Build (clang ASan+UBSan) + language: bash + install: $CI_ROOT/managers/debian.sh SETUP + script: $CI_ROOT/managers/debian.sh RUN_CLANG_ASAN || travis_terminate 1 + after_script: $CI_ROOT/managers/debian.sh CLEANUP + + - name: Debian Build (gcc-10) + language: bash + install: $CI_ROOT/managers/debian.sh SETUP + script: $CI_ROOT/managers/debian.sh RUN_GCC10 || travis_terminate 1 + after_script: $CI_ROOT/managers/debian.sh CLEANUP + + - name: Debian Build (gcc-10 ASan+UBSan) + language: bash + install: $CI_ROOT/managers/debian.sh SETUP + script: $CI_ROOT/managers/debian.sh RUN_GCC10_ASAN || travis_terminate 1 + after_script: $CI_ROOT/managers/debian.sh CLEANUP + + - name: Ubuntu Focal Build + language: bash + script: sudo $CI_ROOT/managers/ubuntu.sh || travis_terminate 1 + + - name: Ubuntu Focal Build (arm) + arch: arm64 + language: bash + script: sudo $CI_ROOT/managers/ubuntu.sh || travis_terminate 1 + + - name: Ubuntu Focal Build (s390x) + arch: s390x + language: bash + script: sudo $CI_ROOT/managers/ubuntu.sh || travis_terminate 1 + + - name: Ubuntu Focal Build (ppc64le) + arch: ppc64le + language: bash + script: sudo $CI_ROOT/managers/ubuntu.sh || travis_terminate 1 + + - stage: Coverity + language: bash + env: + # Coverity configuration + # COVERITY_SCAN_TOKEN=xxx + # Encrypted using `travis encrypt --repo libbpf/libbpf COVERITY_SCAN_TOKEN=xxx` + - secure: "I9OsMRHbb82IUivDp+I+w/jEQFOJgBDAqYqf1ollqCM1QhocxMcS9bwIAgfPhdXi2hohV7sRrVMZstahY67FAvJLGxNopi4tAPDIAaIFxgO0yDxMhaTMx5xDfMwlIm2FOP/9gB9BQsd6M7CmoQZgXYwBIv7xd1ooxoQrh2rOK1YrRl7UQu3+c3zPTjDfIYZzR3bFttMqZ9/c4U0v8Ry5IFXrel3hCshndHA1TtttJrUSrILlZcmVc1ch7JIy6zCbCU/2lGv0B/7rWXfF8MT7O9jPtFOhJ1DEcd2zhw2n4j9YT3a8OhtnM61LA6ask632mwCOsxpFLTun7AzuR1Cb5mdPHsxhxnCHcXXARa2mJjem0QG1NhwxwJE8sbRDapojexxCvweYlEN40ofwMDSnj/qNt95XIcrk0tiIhGFx0gVNWvAdmZwx+N4mwGPMTAN0AEOFjpgI+ZdB89m+tL/CbEgE1flc8QxUxJhcp5OhH6yR0z9qYOp0nXIbHsIaCiRvt/7LqFRQfheifztWVz4mdQlCdKS9gcOQ09oKicPevKO1L0Ue3cb7Ug7jOpMs+cdh3XokJtUeYEr1NijMHT9+CTAhhO5RToWXIZRon719z3fwoUBNDREATwVFMlVxqSO/pbYgaKminigYbl785S89YYaZ6E5UvaKRHM6KHKMDszs=" + - COVERITY_SCAN_PROJECT_NAME="libbpf" + - COVERITY_SCAN_NOTIFICATION_EMAIL="${AUTHOR_EMAIL}" + - COVERITY_SCAN_BRANCH_PATTERN="$TRAVIS_BRANCH" + # Note: `make -C src/` as a BUILD_COMMAND will not work here + - COVERITY_SCAN_BUILD_COMMAND_PREPEND="cd src/" + - COVERITY_SCAN_BUILD_COMMAND="make" + install: + - sudo echo 'deb-src http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse' >>/etc/apt/sources.list + - sudo apt-get update + - sudo apt-get -y build-dep libelf-dev + - sudo apt-get install -y libelf-dev pkg-config + script: + - scripts/coverity.sh || travis_terminate 1 + allow_failures: + - env: KERNEL=x.x.x \ No newline at end of file diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000000000000000000000000000000000000..02774fec28eefbf9b4fee12c574a7ff7523a0a77 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,14 @@ +# vi: set ts=2 sw=2: +extraction: + cpp: + prepare: + packages: + - libelf-dev + - pkg-config + after_prepare: + # As the buildsystem detection by LGTM is performed _only_ during the + # 'configure' phase, we need to trick LGTM we use a supported build + # system (configure, meson, cmake, etc.). This way LGTM correctly detects + # that our sources are in the src/ subfolder. + - touch src/configure + - chmod +x src/configure \ No newline at end of file