diff options
Diffstat (limited to '')
-rw-r--r-- | .travis-functions.sh | 166 |
1 files changed, 166 insertions, 0 deletions
diff --git a/.travis-functions.sh b/.travis-functions.sh new file mode 100644 index 0000000..f852b28 --- /dev/null +++ b/.travis-functions.sh @@ -0,0 +1,166 @@ +#!/bin/bash +# +# .travis-functions.sh: +# - helper functions to be sourced from .travis.yml +# - designed to respect travis' environment but testing locally is possible +# - modified copy from util-linux project +# + +if [ ! -f "configure.ac" ]; then + echo ".travis-functions.sh must be sourced from source dir" >&2 + return 1 || exit 1 +fi + +## some config settings +# travis docs say we get 1.5 CPUs +MAKE="make -j2" +DUMP_CONFIG_LOG="short" +export TS_OPT_parsable="yes" + +function configure_travis +{ + ./configure "$@" + err=$? + if [ "$DUMP_CONFIG_LOG" = "short" ]; then + grep -B1 -A10000 "^## Output variables" config.log | grep -v "_FALSE=" + elif [ "$DUMP_CONFIG_LOG" = "full" ]; then + cat config.log + fi + return $err +} + +function check_nonroot +{ + local cfg_opts="$1" + + [ -z "$cfg_opts" ] && return + + configure_travis \ + --enable-cryptsetup-reencrypt \ + --enable-internal-sse-argon2 \ + "$cfg_opts" \ + || return + + $MAKE || return + + make check +} + +function check_root +{ + local cfg_opts="$1" + + [ -z "$cfg_opts" ] && return + + configure_travis \ + --enable-cryptsetup-reencrypt \ + --enable-internal-sse-argon2 \ + "$cfg_opts" \ + || return + + $MAKE || return + + # FIXME: we should use -E option here + sudo make check +} + +function check_nonroot_compile_only +{ + local cfg_opts="$1" + + [ -z "$cfg_opts" ] && return + + configure_travis \ + --enable-cryptsetup-reencrypt \ + --enable-internal-sse-argon2 \ + "$cfg_opts" \ + || return + + $MAKE +} + +function travis_install_script +{ + # install some packages from Ubuntu's default sources + sudo apt-get -qq update + sudo apt-get install -qq >/dev/null \ + sharutils \ + libgcrypt20-dev \ + libssl-dev \ + libdevmapper-dev \ + libpopt-dev \ + uuid-dev \ + libsepol1-dev \ + libtool \ + dmsetup \ + autoconf \ + automake \ + pkg-config \ + autopoint \ + gettext \ + expect \ + keyutils \ + libjson-c-dev \ + libblkid-dev \ + dkms \ + linux-headers-$(uname -r) \ + linux-modules-extra-$(uname -r) \ + || return + + # For VeraCrypt test + sudo apt-get install gost-crypto-dkms +} + +function travis_before_script +{ + set -o xtrace + + ./autogen.sh + ret=$? + + set +o xtrace + return $ret +} + +function travis_script +{ + local ret + set -o xtrace + + case "$MAKE_CHECK" in + gcrypt) + check_nonroot "--with-crypto_backend=gcrypt" && \ + check_root "--with-crypto_backend=gcrypt" + ;; + gcrypt_compile) + check_nonroot_compile_only "--with-crypto_backend=gcrypt" + ;; + openssl) + check_nonroot "--with-crypto_backend=openssl" && \ + check_root "--with-crypto_backend=openssl" + ;; + openssl_compile) + check_nonroot_compile_only "--with-crypto_backend=openssl" + ;; + kernel) + check_nonroot "--with-crypto_backend=kernel" && \ + check_root "--with-crypto_backend=kernel" + ;; + kernel_compile) + check_nonroot_compile_only "--with-crypto_backend=kernel" + ;; + *) + echo "error, check environment (travis.yml)" >&2 + false + ;; + esac + + ret=$? + set +o xtrace + return $ret +} + +function travis_after_script +{ + return 0 +} |