From 1b140eb5aac99a88a1a75448304364ecc7b47884 Mon Sep 17 00:00:00 2001 From: Mike Gabriel Date: Tue, 27 Apr 2021 09:25:44 +0200 Subject: Travis-CI: Initial draft for CI builds. --- .build.yml | 113 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ .travis.yml | 43 +++++++++++++++++++++++ 2 files changed, 156 insertions(+) create mode 100644 .build.yml create mode 100644 .travis.yml diff --git a/.build.yml b/.build.yml new file mode 100644 index 0000000..75c7018 --- /dev/null +++ b/.build.yml @@ -0,0 +1,113 @@ +######################################################### +# THE FOLLOWING LINES IS USED BY docker-build +########################################################## +requires: + archlinux: + # Useful URL: https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=ayatana-indicator-keyboard + - clang + - gcc + - git + - make + - startup-notification + - which + - cmake + - cmake-extras + - mate-common + - cmake + - intltool + - glib2 + - systemd + + debian: + # Useful URL: https://salsa.debian.org/debian-ayatana-team/ayatana-ido + - autopoint + - clang + - clang-tools + - g++ + - cppcheck + - git + - cmake + - cmake-extras + - mate-common + - intltool + - libglib2.0-dev + - liblomiri-url-dispatcher-dev + - libgtest-dev + - dbus + + ubuntu: + - autopoint + - clang + - clang-tools + - g++ + - git + - cmake + - cmake-extras + - mate-common + - intltool + - libglib2.0-dev + - libgtest-dev + - liblomiri-url-dispatcher-dev + +variables: + - 'CHECKERS=" + -enable-checker deadcode.DeadStores + -enable-checker alpha.deadcode.UnreachableCode + -enable-checker alpha.core.CastSize + -enable-checker alpha.core.CastToStruct + -enable-checker alpha.core.IdenticalExpr + -enable-checker alpha.core.SizeofPtr + -enable-checker alpha.security.ArrayBoundV2 + -enable-checker alpha.security.MallocOverflow + -enable-checker alpha.security.ReturnPtrRange + -enable-checker alpha.unix.SimpleStream + -enable-checker alpha.unix.cstring.BufferOverlap + -enable-checker alpha.unix.cstring.NotNullTerminated + -enable-checker alpha.unix.cstring.OutOfBounds + -enable-checker alpha.core.FixedAddr + -enable-checker security.insecureAPI.strcpy"' + +build_scripts: + - if [ ${DISTRO_NAME} == "debian" ];then + - export CFLAGS+=" -Wsign-compare -Wunused-parameter" + - cppcheck --enable=warning,style,performance,portability,information,missingInclude . + - fi + - + - if [ -e ./autogen.sh ]; then + - NOCONFIGURE=1 ./autogen.sh + - scan-build $CHECKERS ./configure --prefix=/usr --enable-gtk-doc --enable-compile-warnings=maximum + - elif [ -e ./CMakeLists.txt ]; then + - if [ ${DISTRO_NAME} == "debian" ];then + - scan-build $CHECKERS cmake . -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_TESTS=ON + - else + - scan-build $CHECKERS cmake . -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_VERBOSE_MAKEFILE=ON + - fi + - else + - exit 1 + - fi + - + - if [ $CPU_COUNT -gt 1 ]; then + - if [ ${DISTRO_NAME} == "debian" ];then + - scan-build $CHECKERS --keep-cc --use-cc=clang --use-c++=clang++ -o html-report make -j $CPU_COUNT + - make clean + - fi + - scan-build $CHECKERS --keep-cc -o html-report make -j $CPU_COUNT + - else + - if [ ${DISTRO_NAME} == "debian" ];then + - scan-build $CHECKERS --keep-cc --use-cc=clang --use-c++=clang++ -o html-report make + - make clean + - fi + - scan-build $CHECKERS --keep-cc -o html-report make + - fi + +after_scripts: + - if [ ${BUILD_TYPE} == "scripts" ];then + - XVFB_RUN="$(which xvfb-run || true)" + - if [ ${DISTRO_NAME} == "debian" ];then + - if [ -e ./autogen.sh ]; then + - ${XVFB_RUN} make check + - elif [ -e ./CMakeLists.txt ]; then + - ${XVFB_RUN} make test + - fi + - fi + - fi diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..4d688af --- /dev/null +++ b/.travis.yml @@ -0,0 +1,43 @@ +# vim: set ts=2 sts=2 sw=2 expandtab : +dist: bionic +language: shell +os: linux + +arch: + - amd64 + - ppc64le + +services: + - docker + +addons: + apt: + packages: + - python3-pip + - python3-setuptools + +before_install: + # let's use the MATE project's docker build script... + - curl -Ls -o docker-build https://github.com/mate-desktop/mate-dev-scripts/raw/master/travis/docker-build + - chmod +x docker-build + +install: + - pip3 install wheel + - pip3 install PyGithub + - ./docker-build --name ${DISTRO} --config .build.yml --install + +script: + - ./docker-build --name ${DISTRO} --verbose --config .build.yml --build scripts --build autotools + +env: +# temp disable of archlinux builds, see https://gitlab.archlinux.org/archlinux/archlinux-docker/-/issues/56 +# - DISTRO="archlinux:latest" + - DISTRO="debian:testing" + - DISTRO="debian:stable" +# - DISTRO="ubuntu:rolling" + - DISTRO="ubuntu:focal" + +jobs: + exclude: + - env: DISTRO="archlinux:latest" + arch: ppc64le -- cgit v1.2.3 From 52f9bbbeb979b980256864cf926feb65138c8758 Mon Sep 17 00:00:00 2001 From: Mike Gabriel Date: Tue, 27 Apr 2021 20:13:47 +0200 Subject: CMakeLists.txt: Rename enable_tests to ENABLE_TESTS (disabled by default) and enable_lcov to ENABLE_COVERAGE (disabled by default). --- CMakeLists.txt | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7202bb6..80a2ec1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,8 +7,15 @@ set (PROJECT_VERSION "0.8.2") set (PACKAGE ${CMAKE_PROJECT_NAME}) set (GETTEXT_PACKAGE "ayatana-indicator-session") -option (enable_tests "Build the package's automatic tests." ON) -option (enable_lcov "Generate lcov code coverage reports." ON) +option (ENABLE_TESTS "Build the package's automatic tests." OFF) +option (ENABLE_COVERAGE "Generate lcov code coverage reports." OFF) + +if(ENABLE_COVERAGE) + set(ENABLE_TESTS ON) + set(CMAKE_BUILD_TYPE "Coverage") +else() + set(CMAKE_BUILD_TYPE "Release") +endif() ## ## GNU standard installation directories @@ -53,12 +60,12 @@ include_directories (${CMAKE_CURRENT_SOURCE_DIR}/src) include_directories (${CMAKE_CURRENT_BINARY_DIR}/src) # testing & coverage -if (${enable_tests}) +if (${ENABLE_TESTS}) set (GTEST_SOURCE_DIR /usr/src/gtest/src) set (GTEST_INCLUDE_DIR ${GTEST_SOURCE_DIR}/..) set (GTEST_LIBS -lpthread) enable_testing () - if (${enable_lcov}) + if (${ENABLE_COVERAGE}) include(GCov) endif () endif () @@ -66,6 +73,6 @@ endif () add_subdirectory (src) add_subdirectory (data) add_subdirectory (po) -if (${enable_tests}) +if (${ENABLE_TESTS}) add_subdirectory (tests) endif () -- cgit v1.2.3 From 6b7d310d49918201adce996beb0c98372e399b57 Mon Sep 17 00:00:00 2001 From: Mike Gabriel Date: Tue, 27 Apr 2021 21:46:53 +0200 Subject: debian/rules: Explicitly enable unit tests during/after build. --- debian/rules | 3 +++ 1 file changed, 3 insertions(+) diff --git a/debian/rules b/debian/rules index 68ec87b..7c62e62 100755 --- a/debian/rules +++ b/debian/rules @@ -9,6 +9,9 @@ include /usr/share/dpkg/buildflags.mk %: dh $@ --with systemd +override_dh_auto_configure: + dh_auto_configure -- -DENABLE_TESTS=ON + override_dh_install: find debian/ayatana-indicator-session/usr/lib -name *.la -delete find debian/ayatana-indicator-session/usr/lib -name *.a -delete -- cgit v1.2.3 From dc0247dc924387796d1e3864e50a2389f9702f54 Mon Sep 17 00:00:00 2001 From: Mike Gabriel Date: Tue, 27 Apr 2021 20:14:37 +0200 Subject: tests/backend-dbus/CMakeLists.txt: Fix dependecy name: dbusbackend -> backenddbus). --- tests/backend-dbus/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/backend-dbus/CMakeLists.txt b/tests/backend-dbus/CMakeLists.txt index 5ffdbd9..5a218f8 100644 --- a/tests/backend-dbus/CMakeLists.txt +++ b/tests/backend-dbus/CMakeLists.txt @@ -32,7 +32,7 @@ add_library (desktopmock STATIC mock-webcredentials.cc mock-webcredentials.h) -add_dependencies(desktopmock dbusbackend) +add_dependencies(desktopmock backenddbus) include_directories (${SERVICE_INCLUDE_DIRS}) include_directories (${CMAKE_SOURCE_DIR}/src) -- cgit v1.2.3 From e1711fc79349a53517debfe87619d3d0b4b9b814 Mon Sep 17 00:00:00 2001 From: Mike Gabriel Date: Tue, 27 Apr 2021 21:35:49 +0200 Subject: .travis.yml: Use AyatanaIndicators version of docker-build script. --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 4d688af..2efd2f4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -18,7 +18,7 @@ addons: before_install: # let's use the MATE project's docker build script... - - curl -Ls -o docker-build https://github.com/mate-desktop/mate-dev-scripts/raw/master/travis/docker-build + - curl -Ls -o docker-build https://github.com/AyatanaIndicators/ayatana-dev-scripts/raw/master/travis/docker-build - chmod +x docker-build install: -- cgit v1.2.3 From 0534fb8c96ec4ed537c66066723ae4bbd369eeef Mon Sep 17 00:00:00 2001 From: Mike Gabriel Date: Tue, 27 Apr 2021 21:36:13 +0200 Subject: .build.yml: Use special set of build requirements for ubuntu:focal and debian:stable. --- .build.yml | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/.build.yml b/.build.yml index 75c7018..1863229 100644 --- a/.build.yml +++ b/.build.yml @@ -35,6 +35,22 @@ requires: - libgtest-dev - dbus + debian:stable: + # Useful URL: https://salsa.debian.org/debian-ayatana-team/ayatana-ido + - autopoint + - clang + - clang-tools + - g++ + - cppcheck + - git + - cmake + - cmake-extras + - mate-common + - intltool + - libglib2.0-dev + - libgtest-dev + - dbus + ubuntu: - autopoint - clang @@ -49,6 +65,19 @@ requires: - libgtest-dev - liblomiri-url-dispatcher-dev + ubuntu:focal: + - autopoint + - clang + - clang-tools + - g++ + - git + - cmake + - cmake-extras + - mate-common + - intltool + - libglib2.0-dev + - libgtest-dev + variables: - 'CHECKERS=" -enable-checker deadcode.DeadStores -- cgit v1.2.3 From 754308033dc778ce12444137c622e7a4c2abf2a2 Mon Sep 17 00:00:00 2001 From: Mike Gabriel Date: Tue, 27 Apr 2021 21:45:43 +0200 Subject: tests/CMakeLists.txt: Only copy test .gschema.xml files, if source and target folder differ. --- tests/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 7c06881..2b4bdcc 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -18,7 +18,7 @@ add_custom_command (OUTPUT gschemas.compiled ${CMAKE_SOURCE_DIR}/tests/org.gnome.desktop.lockdown.gschema.xml ${CMAKE_SOURCE_DIR}/tests/org.gnome.settings-daemon.plugins.media-keys.gschema.xml COMMAND cp -f ${CMAKE_BINARY_DIR}/data/*gschema.xml ${SCHEMA_DIR} - COMMAND cp -f ${CMAKE_SOURCE_DIR}/tests/*gschema.xml ${SCHEMA_DIR} + COMMAND if [ \"x${CMAKE_SOURCE_DIR}/tests\" != \"x${SCHEMA_DIR}\" ]; then cp -f \"${CMAKE_SOURCE_DIR}/tests/\"*gschema.xml \"${SCHEMA_DIR}\"\; fi COMMAND ${COMPILE_SCHEMA_EXECUTABLE} ${SCHEMA_DIR}) # DBus Activation -- cgit v1.2.3 From f25aaab75f97e420c4eeda7bcb5dd591f3de5213 Mon Sep 17 00:00:00 2001 From: Mike Gabriel Date: Tue, 27 Apr 2021 22:14:21 +0200 Subject: .build.yml: Produce verbose test output on test failures. --- .build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.build.yml b/.build.yml index 1863229..647d9b0 100644 --- a/.build.yml +++ b/.build.yml @@ -136,7 +136,7 @@ after_scripts: - if [ -e ./autogen.sh ]; then - ${XVFB_RUN} make check - elif [ -e ./CMakeLists.txt ]; then - - ${XVFB_RUN} make test + - ${XVFB_RUN} env CTEST_OUTPUT_ON_FAILURE=1 make test - fi - fi - fi -- cgit v1.2.3 From 651a8c3ec03a2e8dff43381d42a7586785623088 Mon Sep 17 00:00:00 2001 From: Mike Gabriel Date: Wed, 28 Apr 2021 13:15:37 +0200 Subject: CMakeLists.txt: Check for path variation on where to find googletest source files. --- CMakeLists.txt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 80a2ec1..c9a76fb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -61,7 +61,12 @@ include_directories (${CMAKE_CURRENT_BINARY_DIR}/src) # testing & coverage if (${ENABLE_TESTS}) - set (GTEST_SOURCE_DIR /usr/src/gtest/src) + + if (EXISTS /usr/src/googletest/src) + set (GTEST_SOURCE_DIR /usr/src/googletest/src) + else () + set (GTEST_SOURCE_DIR /usr/src/gtest/src) + endif () set (GTEST_INCLUDE_DIR ${GTEST_SOURCE_DIR}/..) set (GTEST_LIBS -lpthread) enable_testing () -- cgit v1.2.3