diff --git a/meson.build b/meson.build index c7c0c3ffd0..cd2fbd5796 100644 --- a/meson.build +++ b/meson.build @@ -2928,6 +2928,16 @@ endforeach ############################################################ +check_directives_sh = find_program('tools/check-directives.sh') + +if want_tests != 'false' + test('check-directives', + check_directives_sh, + args : project_source_root) +endif + +############################################################ + # Enable tests for all supported sanitizers foreach tuple : sanitizers sanitizer = tuple[0] diff --git a/tools/check-directives.sh b/tools/check-directives.sh index 46f770222f..a90fb604ae 100755 --- a/tools/check-directives.sh +++ b/tools/check-directives.sh @@ -1,6 +1,8 @@ #!/bin/bash set -e +which perl &>/dev/null || exit 77 + function generate_directives() { perl -aF'/[\s,]+/' -ne ' if (my ($s, $d) = ($F[0] =~ /^([^\s\.]+)\.([^\s\.]+)$/)) { $d{$s}{"$d="} = 1; } @@ -11,22 +13,22 @@ function generate_directives() { ret=0 if ! diff \ - <(generate_directives src/network/networkd-network-gperf.gperf | sort) \ - <(cat test/fuzz/fuzz-network-parser/directives.network | sort); then + <(generate_directives "$1"/src/network/networkd-network-gperf.gperf | sort) \ + <(cat "$1"/test/fuzz/fuzz-network-parser/directives.network | sort); then echo "Looks like test/fuzz/fuzz-network-parser/directives.network hasn't been updated" ret=1 fi if ! diff \ - <(generate_directives src/network/netdev/netdev-gperf.gperf | sort) \ - <(cat test/fuzz/fuzz-netdev-parser/directives.netdev | sort); then + <(generate_directives "$1"/src/network/netdev/netdev-gperf.gperf | sort) \ + <(cat "$1"/test/fuzz/fuzz-netdev-parser/directives.netdev | sort); then echo "Looks like test/fuzz/fuzz-netdev-parser/directives.netdev hasn't been updated" ret=1 fi if ! diff \ - <(generate_directives src/udev/net/link-config-gperf.gperf | sort) \ - <(cat test/fuzz/fuzz-link-parser/directives.link | sort) ; then + <(generate_directives "$1"/src/udev/net/link-config-gperf.gperf | sort) \ + <(cat "$1"/test/fuzz/fuzz-link-parser/directives.link | sort) ; then echo "Looks like test/fuzz/fuzz-link-parser/directives.link hasn't been updated" ret=1 fi diff --git a/travis-ci/managers/debian.sh b/travis-ci/managers/debian.sh index df26b16e2c..dd9b816c98 100755 --- a/travis-ci/managers/debian.sh +++ b/travis-ci/managers/debian.sh @@ -15,7 +15,10 @@ CONT_NAME="${CONT_NAME:-debian-$DEBIAN_RELEASE-$RANDOM}" DOCKER_EXEC="${DOCKER_EXEC:-docker exec -it $CONT_NAME}" DOCKER_RUN="${DOCKER_RUN:-docker run}" REPO_ROOT="${REPO_ROOT:-$PWD}" -ADDITIONAL_DEPS=(python3-libevdev python3-pyparsing clang) +ADDITIONAL_DEPS=(python3-libevdev + python3-pyparsing + clang + perl) function info() { echo -e "\033[33;1m$1\033[0m" @@ -47,7 +50,6 @@ for phase in "${PHASES[@]}"; do docker exec $ENV_VARS -it $CONT_NAME meson --werror -Dtests=unsafe -Dslow-tests=true -Dsplit-usr=true -Dman=true build $DOCKER_EXEC ninja -v -C build docker exec -e "TRAVIS=$TRAVIS" -it $CONT_NAME ninja -C build test - $DOCKER_EXEC tools/check-directives.sh ;; RUN_ASAN|RUN_CLANG_ASAN) if [[ "$phase" = "RUN_CLANG_ASAN" ]]; then diff --git a/travis-ci/managers/fedora.sh b/travis-ci/managers/fedora.sh index f821ee2640..38cb3d3158 100755 --- a/travis-ci/managers/fedora.sh +++ b/travis-ci/managers/fedora.sh @@ -15,7 +15,15 @@ CONT_NAME="${CONT_NAME:-fedora-$FEDORA_RELEASE-$RANDOM}" DOCKER_EXEC="${DOCKER_EXEC:-docker exec -it $CONT_NAME}" DOCKER_RUN="${DOCKER_RUN:-docker run}" REPO_ROOT="${REPO_ROOT:-$PWD}" -ADDITIONAL_DEPS=(dnf-plugins-core python2 iputils hostname libasan python3-pyparsing python3-evdev libubsan clang llvm) +ADDITIONAL_DEPS=(dnf-plugins-core + python2 iputils + hostname libasan + python3-pyparsing + python3-evdev + libubsan + clang + llvm + perl) function info() { echo -e "\033[33;1m$1\033[0m" @@ -50,7 +58,6 @@ for phase in "${PHASES[@]}"; do $DOCKER_EXEC meson --werror -Dtests=unsafe -Dslow-tests=true build $DOCKER_EXEC ninja -v -C build $DOCKER_EXEC ninja -C build test - $DOCKER_EXEC tools/check-directives.sh ;; RUN_CLANG) docker exec -e CC=clang -e CXX=clang++ -it $CONT_NAME meson --werror -Dtests=unsafe -Dslow-tests=true -Dman=true build diff --git a/travis-ci/managers/xenial.sh b/travis-ci/managers/xenial.sh index 8995a51f84..475a1510aa 100755 --- a/travis-ci/managers/xenial.sh +++ b/travis-ci/managers/xenial.sh @@ -2,14 +2,48 @@ set -e set -x +PACKAGES=(cryptsetup-bin + gettext + iptables-dev + iputils-ping + isc-dhcp-client + itstool + kbd + libblkid-dev + libcap-dev + libcurl4-gnutls-dev + libgpg-error-dev + liblz4-dev + liblzma-dev + libmicrohttpd-dev + libmount-dev + libmount-dev + libqrencode-dev + libxkbcommon-dev + linux-image-virtual + mount + net-tools + ninja-build + perl + python-lxml + python3-evdev + python3-lxml + python3-pip + python3-pyparsing + python3-setuptools + qemu-system-x86 + strace + unifont + util-linux) + bash -c "echo 'deb-src http://archive.ubuntu.com/ubuntu/ xenial main restricted universe multiverse' >>/etc/apt/sources.list" + apt-get update apt-get build-dep systemd -y -apt-get install -y util-linux libmount-dev libblkid-dev liblzma-dev libqrencode-dev libmicrohttpd-dev iptables-dev liblz4-dev libcurl4-gnutls-dev unifont itstool kbd cryptsetup-bin net-tools isc-dhcp-client iputils-ping strace qemu-system-x86 linux-image-virtual mount libgpg-error-dev libxkbcommon-dev python-lxml python3-lxml python3-pip libcap-dev -apt-get install -y gettext python3-evdev python3-pyparsing libmount-dev python3-setuptools ninja-build +apt-get install -y "${PACKAGES[@]}" pip3 install meson -cd ${REPO_ROOT:-$(pwd)} +cd ${REPO_ROOT:-$PWD} sed -i 's/2\.30/2.27/' meson.build diff --git a/travis-ci/requirements.txt b/travis-ci/requirements.txt index 9928e3fc87..5ef30d5d3f 100644 --- a/travis-ci/requirements.txt +++ b/travis-ci/requirements.txt @@ -1,4 +1,5 @@ dnf-plugins-core meson ninja-build +perl python