]> git.ipfire.org Git - thirdparty/util-linux.git/blobdiff - .travis-functions.sh
hwclock: remove sysexits.h
[thirdparty/util-linux.git] / .travis-functions.sh
index e4318d6a60d7c80eaf77413f020f048689fcf7c4..f0a0d8990f474825fcccd5efafddc2a2fb7aa0ee 100755 (executable)
@@ -17,9 +17,16 @@ MAKE="make -j2"
 DUMP_CONFIG_LOG="short"
 export TS_OPT_parsable="yes"
 
+# workaround ugly warning on travis OSX,
+# see https://github.com/direnv/direnv/issues/210
+shell_session_update() { :; }
+
 function xconfigure
 {
-       ./configure "$@"
+       which "$CC"
+       "$CC" --version
+
+       ./configure "$@" $OSX_CONFOPTS
        err=$?
        if [ "$DUMP_CONFIG_LOG" = "short" ]; then
                grep -B1 -A10000 "^## Output variables" config.log | grep -v "_FALSE="
@@ -29,33 +36,51 @@ function xconfigure
        return $err
 }
 
+# TODO: integrate checkusage into our regular tests and remove this function
+function make_checkusage
+{
+       local tmp
+       if ! tmp=$($MAKE checkusage 2>&1) || test -n "$tmp"; then
+               echo "$tmp"
+               echo "make checkusage failed" >&2
+               return 1
+       fi
+}
+
 function check_nonroot
 {
-       local opts="$MAKE_CHECK_OPTS"
+       local opts="$MAKE_CHECK_OPTS --show-diff"
 
        xconfigure \
                --disable-use-tty-group \
-               --with-python \
+               --disable-makeinstall-chown \
                --enable-all-programs \
-               --enable-gtk-doc \
                || return
        $MAKE || return
+
+       osx_prepare_check
        $MAKE check TS_OPTS="$opts" || return
+
+       make_checkusage || return
+
        $MAKE install DESTDIR=/tmp/dest || return
 }
 
 function check_root
 {
-       local opts="$MAKE_CHECK_OPTS --parallel=1"
+       local opts="$MAKE_CHECK_OPTS --parallel=1 --show-diff"
 
        xconfigure \
-               --with-python \
                --enable-all-programs \
                || return
        $MAKE || return
+
        $MAKE check TS_COMMAND="true" || return
+       osx_prepare_check
        sudo -E $MAKE check TS_OPTS="$opts" || return
-       sudo $MAKE install || return
+
+       # keep PATH to make sure sudo would find $CC
+       sudo env "PATH=$PATH" $MAKE install || return
 }
 
 function check_dist
@@ -67,13 +92,19 @@ function check_dist
 
 function travis_install_script
 {
-       # install some packages from Ubuntu's default sources
-       sudo apt-get -qq update || return
+       if [ "$TRAVIS_OS_NAME" = "osx" ]; then
+               osx_install_script
+               return
+       fi
+
+       # install required packages
+       sudo apt-get -qq update --fix-missing
        sudo apt-get install -qq >/dev/null \
                bc \
                btrfs-tools \
                dnsutils \
                libcap-ng-dev \
+               libncursesw5-dev \
                libpam-dev \
                libudev-dev \
                gtk-doc-tools \
@@ -89,6 +120,43 @@ function travis_install_script
                || true
 }
 
+function osx_install_script
+{
+       brew update >/dev/null
+       brew tap homebrew/dupes
+
+       brew install gettext ncurses socat xz
+       brew link --force gettext
+       brew link --force ncurses
+
+       OSX_CONFOPTS="
+               --disable-ipcrm \
+               --disable-ipcs \
+       "
+
+       # workaround: glibtoolize could not find sed
+       export SED="sed"
+}
+
+function osx_prepare_check
+{
+       [ "$TRAVIS_OS_NAME" = "osx" ] || return 0
+
+       # these ones only need to be gnu for our test-suite
+       brew install coreutils findutils gnu-tar gnu-sed
+
+       # symlink minimally needed gnu commands into PATH
+       mkdir ~/bin
+       for cmd in readlink seq timeout truncate find xargs tar sed; do
+               ln -s /usr/local/bin/g$cmd $HOME/bin/$cmd
+       done
+       hash -r
+
+       export TS_OPT_col_multibyte_known_fail=yes
+       export TS_OPT_colcrt_regressions_known_fail=yes
+       export TS_OPT_column_invalid_multibyte_known_fail=yes
+}
+
 function travis_before_script
 {
        set -o xtrace