commit: edfd404ac6079b16b144fde5165e2e0dccd35ced Author: Mike Frysinger <vapier <AT> gentoo <DOT> org> AuthorDate: Wed Dec 16 23:00:29 2015 +0000 Commit: Mike Frysinger <vapier <AT> gentoo <DOT> org> CommitDate: Wed Dec 16 23:00:29 2015 +0000 URL: https://gitweb.gentoo.org/proj/pax-utils.git/commit/?id=edfd404a
enable travis build support .travis.yml | 31 +++++++++++++++++++++++++++++++ autogen.sh | 5 +++-- travis/autotools.tar.xz | Bin 0 -> 9208 bytes travis/lib.sh | 38 ++++++++++++++++++++++++++++++++++++++ travis/main.sh | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 120 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..4f5f843 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,31 @@ +# Travis build integration. +# https://docs.travis-ci.com/ + +language: c +compiler: + - clang + - gcc + +sudo: false + +os: + - linux +# Travis currently runs on OS X 10.9 which does not include *at funcs. +# Disable until they update or we include autotools support. + - osx + +# Travis currently uses Ubuntu 12.04 (Precise) which is too old: it does +# not include pyelftools. Disable until they update. +env: + - USE_PYTHON=no +# Note: OS X deps are maintained in .travis.sh until Travis supports it here. +addons: + apt: + packages: + - autoconf-archive + - gnulib + - xmlto + - python-pyelftools + - python3-pyelftools + +script: ./travis/main.sh diff --git a/autogen.sh b/autogen.sh index 622ab16..3d49418 100755 --- a/autogen.sh +++ b/autogen.sh @@ -1,6 +1,6 @@ #!/bin/bash -e -v() { echo "$@"; "$@"; } +. "${0%/*}"/travis/lib.sh m4dir="autotools/m4" @@ -33,12 +33,13 @@ mods=" utimensat vasprintf-posix " -v gnulib-tool \ +v --fold="gnulib-tool" gnulib-tool \ --source-base=autotools/gnulib --m4-base=autotools/m4 \ --import \ ${mods} # not everyone has sys-devel/autoconf-archive installed +v tar xf travis/autotools.tar.xz for macro in $(grep -o '\<AX[A-Z_]*\>' configure.ac | sort -u) ; do if m4=$(grep -rl "\[${macro}\]" /usr/share/aclocal/) ; then v cp $m4 ${m4dir}/ diff --git a/travis/autotools.tar.xz b/travis/autotools.tar.xz new file mode 100644 index 0000000..1c0c854 Binary files /dev/null and b/travis/autotools.tar.xz differ diff --git a/travis/lib.sh b/travis/lib.sh new file mode 100644 index 0000000..687ed41 --- /dev/null +++ b/travis/lib.sh @@ -0,0 +1,38 @@ +#!/bin/bash +# Common funcs for working w/Travis. + +travis_fold() { + if [[ -n ${TRAVIS_OS_NAME} ]] ; then + printf 'travis_fold:%s:%s\r\n' "$@" | sed 's: :_:g' + fi +} + +if [[ -n ${TRAVIS_OS_NAME} ]] ; then + whitebg=$(tput setab 7) + blackfg=$(tput setaf 0) + normal=$(tput sgr0) +else + whitebg= + blackbg= + normal= +fi +v() { + local fold="" + case $1 in + --fold=*) fold=${1:7}; shift;; + esac + if [[ -n ${fold} ]] ; then + travis_fold start "${fold}" + echo "\$ $*" + "$@" + travis_fold end "${fold}" + else + echo "${whitebg}${blackfg}\$ $*${normal}" + "$@" + fi +} + +ncpus=$(getconf _NPROCESSORS_ONLN) +m() { + v make -j${ncpus} "$@" +} diff --git a/travis/main.sh b/travis/main.sh new file mode 100755 index 0000000..58b4ddf --- /dev/null +++ b/travis/main.sh @@ -0,0 +1,48 @@ +#!/bin/bash -e + +. "${0%/*}"/lib.sh + +main() { + if [[ ${TRAVIS_OS_NAME} == "osx" ]] ; then + # Note: Linux deps are maintained in .travis.yml. + v --fold="brew_update" brew update + v --fold="brew_install" brew install xmlto xz + fi + + # See if we have to bootstrap gnulib. This is the case on OS X, and on + # Linux until they whitelist the package: + # https://github.com/travis-ci/apt-package-whitelist/issues/727 + if ! gnulib-tool --version >&/dev/null ; then + if [[ ! -d ../gnulib ]] ; then + v --fold="git_clone_gnulib" \ + git clone --depth=1 https://github.com/coreutils/gnulib.git ../gnulib + else + pushd ../gnulib + v --fold="git_pull_gnulib" git pull + popd + fi + export PATH="${PATH}:${PWD}/../gnulib" + fi + + if [[ ${TRAVIS_OS_NAME} == "linux" ]] ; then + # Standard optimized build. + m + m check + + # Debug build w/ASAN and such enabled. + m debug + m check + fi + + # Autotools based build. + v ./autogen.sh + if [[ ${TRAVIS_OS_NAME} == "linux" ]] ; then + v --fold="configure" ./configure + m V=1 distcheck + else + # ELF checks don't work on OS X -- no ELFs! + v ./configure + m V=1 + fi +} +main "$@"