summaryrefslogtreecommitdiff
path: root/ci
diff options
context:
space:
mode:
authorDmitry V. Levin <ldv@altlinux.org>2018-03-13 13:19:02 +0000
committerDmitry V. Levin <ldv@altlinux.org>2018-03-13 13:19:02 +0000
commit8c00b612e5a35905ca5caa23cec207bd55e011be (patch)
tree56544b4bb3cae9d9f225f2802849ac983e53acd5 /ci
parent3de1462ed8a6e0820e2018aa67197c15f291ab16 (diff)
downloadstrace-8c00b612e5a35905ca5caa23cec207bd55e011be.tar.gz
ci: rename travis-build.sh and travis-install.sh scripts
* travis-build.sh: Rename to ci/run-build-and-tests.sh, all callers updated. * travis-install.sh: Rename to ci/install-dependencies.sh, all callers updated.
Diffstat (limited to 'ci')
-rwxr-xr-xci/install-dependencies.sh76
-rwxr-xr-xci/run-build-and-tests.sh100
2 files changed, 176 insertions, 0 deletions
diff --git a/ci/install-dependencies.sh b/ci/install-dependencies.sh
new file mode 100755
index 000000000..2fbd275b4
--- /dev/null
+++ b/ci/install-dependencies.sh
@@ -0,0 +1,76 @@
+#!/bin/sh -ex
+
+type sudo >/dev/null 2>&1 && sudo=sudo || sudo=
+common_packages='autoconf automake file gawk gcc-multilib git gzip make xz-utils'
+
+updated=
+apt_get_install()
+{
+ [ -n "$updated" ] || {
+ $sudo apt-get -qq update
+ updated=1
+ }
+ $sudo apt-get -qq --no-install-suggests --no-install-recommends \
+ install -y "$@"
+}
+
+case "$KHEADERS" in
+ */*)
+ git clone --depth=1 https://github.com/"$KHEADERS" kernel
+ $sudo make -C kernel headers_install INSTALL_HDR_PATH=/opt/kernel
+ $sudo rm -rf kernel
+ KHEADERS_INC=/opt/kernel/include
+ ;;
+ *)
+ KHEADERS_INC=/usr/include
+ ;;
+esac
+
+case "$CC" in
+ gcc)
+ apt_get_install $common_packages
+ ;;
+ gcc-*)
+ $sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
+ apt_get_install $common_packages "$CC"-multilib
+ ;;
+ clang*)
+ apt_get_install $common_packages "$CC"
+ ;;
+ musl-gcc)
+ apt_get_install $common_packages ca-certificates
+ git clone --depth=1 https://github.com/strace/musl
+ cd musl
+ CC=gcc
+ build=
+ case "${TARGET-}" in
+ x32)
+ CC="$CC -mx32"
+ ;;
+ x86)
+ CC="$CC -m32"
+ build='--build=i686-pc-linux-gnu --target=i686-pc-linux-gnu'
+ ;;
+ esac
+ ./configure --prefix=/opt/musl --exec-prefix=/usr ${build}
+ make
+ $sudo make install
+ cd -
+ rm -rf musl
+ $sudo ln -s \
+ $KHEADERS_INC/asm* \
+ $KHEADERS_INC/linux \
+ $KHEADERS_INC/mtd \
+ /opt/musl/include/
+ ;;
+esac
+
+case "${CHECK-}" in
+ coverage)
+ apt_get_install lcov
+ pip install --user codecov
+ ;;
+ valgrind)
+ apt_get_install valgrind
+ ;;
+esac
diff --git a/ci/run-build-and-tests.sh b/ci/run-build-and-tests.sh
new file mode 100755
index 000000000..55bd84040
--- /dev/null
+++ b/ci/run-build-and-tests.sh
@@ -0,0 +1,100 @@
+#!/bin/sh -ex
+
+DISTCHECK_CONFIGURE_FLAGS='--disable-dependency-tracking'
+export DISTCHECK_CONFIGURE_FLAGS
+
+case "$CC" in
+ gcc*)
+ DISTCHECK_CONFIGURE_FLAGS="$DISTCHECK_CONFIGURE_FLAGS --enable-gcc-Werror"
+ ;;
+ clang-*)
+ # clang -mx32 fails with the following error:
+ # clang: error: clang frontend command failed with exit code 70 (use -v to see invocation)
+ export st_cv_mx32_runtime=no
+ ;;
+esac
+
+case "${TARGET-}" in
+ x32)
+ CC="$CC -mx32"
+ ;;
+ x86)
+ CC="$CC -m32"
+ DISTCHECK_CONFIGURE_FLAGS="$DISTCHECK_CONFIGURE_FLAGS --build=i686-pc-linux-gnu --target=i686-pc-linux-gnu"
+ ;;
+esac
+
+case "$KHEADERS" in
+ */*)
+ CPPFLAGS='-isystem /opt/kernel/include'
+ export CPPFLAGS
+ ;;
+esac
+
+case "${CHECK-}" in
+ coverage)
+ DISTCHECK_CONFIGURE_FLAGS="$DISTCHECK_CONFIGURE_FLAGS --enable-code-coverage"
+ CFLAGS='-g -O0'
+ CFLAGS_FOR_BUILD="$CFLAGS"
+ export CFLAGS CFLAGS_FOR_BUILD
+ ;;
+ valgrind)
+ DISTCHECK_CONFIGURE_FLAGS="$DISTCHECK_CONFIGURE_FLAGS --enable-valgrind"
+ ;;
+esac
+
+echo 'BEGIN OF BUILD ENVIRONMENT INFORMATION'
+uname -a |head -1
+libc="$(ldd /bin/sh |sed -n 's|^[^/]*\(/[^ ]*/libc\.so[^ ]*\).*|\1|p' |head -1)"
+$libc |head -1
+file -L /bin/sh
+$CC --version |head -1
+$CC -print-multi-lib ||:
+make --version |head -1
+autoconf --version |head -1
+automake --version |head -1
+kver="$(printf '%s\n%s\n' '#include <linux/version.h>' 'LINUX_VERSION_CODE' | $CC -E -P -)"
+printf 'kernel-headers %s.%s.%s\n' $(($kver/65536)) $(($kver/256%256)) $(($kver%256))
+echo 'END OF BUILD ENVIRONMENT INFORMATION'
+
+export CC_FOR_BUILD="$CC"
+
+./git-set-file-times
+./bootstrap
+./configure --enable-maintainer-mode \
+ ${DISTCHECK_CONFIGURE_FLAGS-} \
+ || {
+ rc=$?
+ cat config.log
+ exit $rc
+}
+
+j=-j`getconf _NPROCESSORS_ONLN 2> /dev/null` || j=
+
+case "${CHECK-}" in
+ coverage)
+ make -k $j all VERBOSE=${VERBOSE-}
+ make -k $j check VERBOSE=${VERBOSE-}
+ codecov --gcov-args=-abcp ||:
+ echo 'BEGIN OF TEST SUITE INFORMATION'
+ tail -n 99999 -- tests*/test-suite.log tests*/ksysent.log
+ echo 'END OF TEST SUITE INFORMATION'
+ ;;
+ valgrind)
+ make -k $j all VERBOSE=${VERBOSE-}
+ rc=$?
+ for n in ${VALGRIND_TOOLS:-memcheck helgrind drd}; do
+ make -k $j -C "${VALGRIND_TESTDIR:-.}" \
+ check-valgrind-$n VERBOSE=${VERBOSE-} ||
+ rc=$?
+ done
+ echo 'BEGIN OF TEST SUITE INFORMATION'
+ tail -n 99999 -- tests*/test-suite*.log tests*/ksysent.log ||
+ rc=$?
+ echo 'END OF TEST SUITE INFORMATION'
+ [ "$rc" -eq 0 ]
+ ;;
+ *)
+ make -k $j distcheck VERBOSE=${VERBOSE-}
+ ;;
+esac