aboutsummaryrefslogtreecommitdiff
path: root/.ci/common.sh
blob: 29c2a17c512cb60a3b5db5e7826f22bc91b9ec46 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
valgrind_check() {
	check_logs "$1" "valgrind-*"
}

asan_check() {
	check_logs "$1" "*san.*"
}

check_logs() {
	check_core_dumps
	# Iterate through each log to remove an useless warning
	for log in $(find "$1" -type f -name "$2"); do
		sed -i "$log" \
			-e '/Warning: noted but unhandled ioctl/d' \
			-e '/could cause spurious value errors to appear/d' \
			-e '/See README_MISSING_SYSCALL_OR_IOCTL for guidance/d'
	done
	# Now do it again, but only consider files with size > 0
	for log in $(find "$1" -type f -name "$2" -size +0); do
		cat "$log"
		err=1
	done
	if [ -n "$err" ]; then
		echo "Runtime errors detected"
		exit 1
	fi
}

check_core_dumps() {
	sleep 2

	if [ "$TRAVIS_OS_NAME" = "osx" ]; then
		cores=/cores/*
	else
		# TODO(fwalch): Will trigger if a file named core.* exists outside of .deps.
		cores="$(find ./ -not -path '*.deps*' -name 'core.*' -print)"
	fi

	if [ -z "$cores" ]; then
		return
	fi
	for c in $cores; do
		gdb -q -n -batch -ex bt build/bin/nvim $c
	done
	exit 1
}

setup_deps() {
	sudo pip install neovim
	if [ "$BUILD_NVIM_DEPS" != "true" ]; then
		eval "$(curl -Ss https://raw.githubusercontent.com/neovim/bot-ci/master/scripts/travis-setup.sh) deps-${1}"
	elif [ "$TRAVIS_OS_NAME" = "linux" ]; then
		sudo apt-get install libtool
	fi
}

tmpdir="$(pwd)/tmp"
rm -rf "$tmpdir"
mkdir -p "$tmpdir"
suppressions="$(pwd)/.valgrind.supp"