mirror of
https://github.com/roswell/roswell.git
synced 2026-09-10 07:16:17 -04:00
187 lines
6.9 KiB
YAML
187 lines
6.9 KiB
YAML
language: c
|
|
sudo: false
|
|
dist: trusty
|
|
env:
|
|
global:
|
|
- PATH=~/.roswell/bin:~/.linuxbrew/bin:$PATH
|
|
- ROSWELL_BRANCH=$TRAVIS_BRANCH
|
|
- ROSWELL_INSTALL_DIR=$HOME/.roswell
|
|
- ROSWELL_QUICKLISP_DIST_URI=https://github.com/roswell/quicklisp/releases/download/dist/quicklisp.txt
|
|
matrix:
|
|
- METHOD=ci LISP=sbcl-bin ALLOW_FAILURES=YES
|
|
- METHOD=ci LISP=sbcl-bin ALLOW_FAILURES=NO
|
|
- METHOD=ci LISP=alisp
|
|
- METHOD=ci LISP=cmu-bin/2017-04
|
|
- METHOD=ci LISP=sbcl
|
|
- METHOD=ci LISP=ecl
|
|
- METHOD=ci LISP=clisp
|
|
- METHOD=ci LISP=abcl
|
|
- METHOD=ci LISP=ccl-bin
|
|
- METHOD=brew
|
|
- METHOD=ci LISP=sbcl/1.1.14
|
|
- METHOD=ci LISP=ccl32
|
|
- METHOD=ci LISP=sbcl/git
|
|
|
|
os:
|
|
- osx
|
|
- linux
|
|
|
|
cache:
|
|
directories:
|
|
- $HOME/.rosproxy
|
|
|
|
matrix:
|
|
allow_failures:
|
|
- env: METHOD=brew
|
|
- env: METHOD=ci LISP=sbcl-bin ALLOW_FAILURES=YES
|
|
- env: METHOD=ci LISP=sbcl/git
|
|
- env: METHOD=ci LISP=clisp
|
|
include:
|
|
- sudo: required
|
|
os: linux
|
|
env: METHOD=ci LISP=alisp APT_UNINSTALL="libc6-i386"
|
|
- sudo: required
|
|
os: linux
|
|
env: METHOD=ci LISP=cmucl APT_UNINSTALL="libc6-i386"
|
|
- sudo: required
|
|
os: linux
|
|
env: METHOD=cross XCC=i686-w64-mingw32-gcc HOST="--host=i686-w64-mingw32" PREFIX="--prefix=/usr/i686-w64-mingw32"
|
|
- sudo: required
|
|
os: linux
|
|
env: METHOD=debian
|
|
- sudo: required
|
|
os: linux
|
|
env: METHOD=valgrind XCFLAGS="-g -O0"
|
|
- sudo: required
|
|
os: linux
|
|
env: METHOD=documents
|
|
|
|
#branches:
|
|
# except:
|
|
# - /^v[0-9]/
|
|
|
|
addons:
|
|
apt:
|
|
packages:
|
|
- libc6-i386
|
|
# - gcc-multilib
|
|
# - gcc-mingw-w64-i686
|
|
# - binutils-mingw-w64-i686
|
|
# - wine
|
|
|
|
before_install:
|
|
- date
|
|
- if [ $METHOD = cross ]; then find . \( -name \*.c -o -name \*.h \) -type f|xargs wc -l -c; fi
|
|
- if [ $METHOD = cross ]; then find . \( -name \*.lisp -o -name \*.ros \) -type f|xargs wc -l -c; fi
|
|
- if [ $METHOD = cross ] || [ $METHOD = debian ] || [ $METHOD = documents ] || [ $METHOD = valgrind ]; then
|
|
sudo apt-get -qq update --force-yes > /dev/null; fi
|
|
- if [ $METHOD = brew ] && [ $TRAVIS_OS_NAME = linux ]; then
|
|
yes ""| ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/linuxbrew/go/install)"; fi
|
|
- if [ $METHOD = brew ] || [ $TRAVIS_OS_NAME = osx ]; then brew update;brew --env;brew config; fi
|
|
- if [ $METHOD = brew ]; then brew update;brew doctor || true; fi
|
|
|
|
install:
|
|
- if ! [ -f "$HOME/.rosproxy/proxy" ]; then
|
|
curl -L https://github.com/snmsts/roswell-proxy/releases/download/v0.5/v0.5-$TRAVIS_OS_NAME.tgz |tar xzf -;
|
|
cp proxy $HOME/.rosproxy/proxy;
|
|
fi
|
|
- $HOME/.rosproxy/proxy daemon
|
|
- mkdir ~/.roswell
|
|
- echo "ros.proxy 0 localhost:5000" > ~/.roswell/config
|
|
- echo "proxy.http.only 0 1" >> ~/.roswell/config
|
|
- if [ x$METHOD != xci ]; then
|
|
echo "sbcl-bin-version-uri 0 https://github.com/roswell/sbcl_bin/releases/download/files/build.html" >> ~/.roswell/config;
|
|
echo "sbcl-bin-uri 0 https://github.com/roswell/sbcl_bin/releases/download/" >> ~/.roswell/config;
|
|
fi
|
|
- if [ x$TRAVIS_TAG != x ] && [ $METHOD = cross ]; then sudo apt-get install -qq lcab > /dev/null; fi
|
|
- if [ $METHOD = debian ]; then sudo apt-get install -qq debhelper dh-autoreconf; fi
|
|
- if [ $METHOD = documents ]; then sudo apt-get install -qq pandoc ruby-sass; pandoc -v; fi
|
|
- if [ $METHOD = valgrind ]; then sudo apt-get install -qq valgrind > /dev/null; fi
|
|
- if [ $METHOD = brew ] && [ $TRAVIS_OS_NAME = linux ]; then brew install curl ; fi
|
|
- if [ x$XCC = xi686-w64-mingw32-gcc ]; then sudo apt-get install -qq gcc-mingw-w64-i686 binutils-mingw-w64-i686; fi
|
|
- if [ x$WINE != x ]; then sudo apt-get install -qq wine > /dev/null; fi
|
|
- if [ x$APT_UNINSTALL != x ]; then sudo apt-get purge -qq $APT_UNINSTALL; fi
|
|
|
|
script:
|
|
- if [ "$METHOD" = "documents" ]; then
|
|
rm documents/man/* documents/html/*;
|
|
sh bootstrap;
|
|
./configure --enable-manual-generation --enable-html-generation;
|
|
make;
|
|
sudo make install;
|
|
fi
|
|
- if [ "$METHOD" = "brew" ]; then brew install roswell --HEAD; fi
|
|
- if [ "$METHOD" = "ci" ]; then sh ./scripts/install-for-ci.sh; fi
|
|
- if [ "$METHOD" = "cross" ] || [ "$METHOD" = "valgrind" ] || [ $METHOD = debian ]; then
|
|
sh bootstrap;
|
|
CFLAGS=$XCFLAGS ./configure --disable-dependency-tracking --disable-maintainer-mode;
|
|
make;
|
|
sudo make install;
|
|
make maintainer-clean;
|
|
fi
|
|
- if [ "$METHOD" = "cross" ]; then
|
|
CC=$XCC ./configure ${PREFIX} ${HOST};
|
|
make;
|
|
fi
|
|
- if [ "$METHOD" = "brew" ] || [ "$METHOD" = "ci" ]; then
|
|
ros version;
|
|
ros version=t run;
|
|
ros install prove;
|
|
run-prove roswell-test.asd 2>&1;
|
|
fi
|
|
- if [ "$METHOD" = "ci" ]; then
|
|
ros -q run && [`ros -q run 2>&1` == ""];
|
|
fi
|
|
- if [ $METHOD = debian ]; then
|
|
ros install prove;
|
|
ros ./debian/debian.ros;
|
|
fi
|
|
- if [ "$LISP" = "sbcl-bin" ] && [ x$ALLOW_FAILURES != x ]; then
|
|
if [ $TRAVIS_OS_NAME = osx ]; then
|
|
sudo ros -e '(ignore-errors (with-open-file (o (format nil "/~A" (code-char 12354)) :direction :output)))';
|
|
fi;
|
|
if [ $ALLOW_FAILURES = YES ]; then
|
|
ros sbcl.patchless=t install sbcl;
|
|
else
|
|
ros install sbcl --sbcl-bin;
|
|
[`ros -e "(ros:ignore-shebang)" -e '(loop for x in (directory "src/lisp/*.ros") do (load x))' 2>&1` == ""];
|
|
fi;
|
|
( cd tree-shaker && ./test-tree-shaker.sh ) ;
|
|
fi
|
|
- if [ $METHOD != debian ]; then ros config; fi
|
|
- cat /tmp/proxy-log || true
|
|
|
|
after_success:
|
|
- if [ x$TRAVIS_TAG != x ] && [ $METHOD = cross ]; then
|
|
lcab -q src/ros.exe lisp/* ros-$XCC.cab;
|
|
ros ./scripts/release.ros github ros-$XCC.cab;
|
|
fi
|
|
- if [ x$TRAVIS_TAG != x ] && [ $METHOD = debian ]; then
|
|
ros ./scripts/release.ros debian;
|
|
fi
|
|
- if [ "$METHOD" = "documents" ] || [ $METHOD = brew ]; then
|
|
git config user.email "auto@example.com";
|
|
git config user.name "Travis-CI";
|
|
fi
|
|
- if [ "$METHOD" = "valgrind" ]; then
|
|
ros setup;
|
|
valgrind --leak-check=yes ros config;
|
|
fi
|
|
- if [ "$METHOD" = "documents" ]; then
|
|
git branch;git status;
|
|
git checkout $TRAVIS_BRANCH;git add -u;git add documents/man/* documents/html/*;
|
|
git commit -m "[ci skip] documents update";
|
|
fi
|
|
- if [ "$METHOD" = "documents" ] && [ "$TRAVIS_BRANCH" = "master" ]; then
|
|
git push --force --quiet "https://${GITHUB_OAUTH_TOKEN}:x-oauth-basic@github.com/roswell/roswell.git" $TRAVIS_BRANCH > /dev/null 2>&1; fi
|
|
- if [ "$METHOD" = "documents" ] && [ "$TRAVIS_BRANCH" = "master" ]; then
|
|
git remote rename origin old;
|
|
git remote add origin "https://${GITHUB_OAUTH_TOKEN}:x-oauth-basic@github.com/roswell/roswell.git";
|
|
git fetch origin release;
|
|
git fetch origin master;
|
|
git checkout -b release origin/release;
|
|
git branch -D master;
|
|
git checkout -b master origin/master;
|
|
(git log -n 1 --oneline|grep "bump version to") && (make release-2;);
|
|
fi
|