############################################################
+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]
#!/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; }
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
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"
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
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"
$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
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
dnf-plugins-core
meson
ninja-build
+perl
python