aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.build.yml142
-rw-r--r--.travis.yml43
-rw-r--r--CMakeLists.txt24
-rwxr-xr-xdebian/rules3
-rw-r--r--tests/CMakeLists.txt2
-rw-r--r--tests/backend-dbus/CMakeLists.txt2
6 files changed, 208 insertions, 8 deletions
diff --git a/.build.yml b/.build.yml
new file mode 100644
index 0000000..647d9b0
--- /dev/null
+++ b/.build.yml
@@ -0,0 +1,142 @@
+#########################################################
+# 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
+
+ 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
+ - clang-tools
+ - g++
+ - git
+ - cmake
+ - cmake-extras
+ - mate-common
+ - intltool
+ - libglib2.0-dev
+ - 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
+ -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} env CTEST_OUTPUT_ON_FAILURE=1 make test
+ - fi
+ - fi
+ - fi
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..2efd2f4
--- /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/AyatanaIndicators/ayatana-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
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7202bb6..c9a76fb 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,17 @@ include_directories (${CMAKE_CURRENT_SOURCE_DIR}/src)
include_directories (${CMAKE_CURRENT_BINARY_DIR}/src)
# testing & coverage
-if (${enable_tests})
- set (GTEST_SOURCE_DIR /usr/src/gtest/src)
+if (${ENABLE_TESTS})
+
+ 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 ()
- if (${enable_lcov})
+ if (${ENABLE_COVERAGE})
include(GCov)
endif ()
endif ()
@@ -66,6 +78,6 @@ endif ()
add_subdirectory (src)
add_subdirectory (data)
add_subdirectory (po)
-if (${enable_tests})
+if (${ENABLE_TESTS})
add_subdirectory (tests)
endif ()
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
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
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)