Commit 1415a83a authored by Rémi Cailletaud's avatar Rémi Cailletaud
Browse files

another try with ccache on Travis

parent 587398b9
......@@ -19,7 +19,7 @@ before_script:
- export PATH=/usr/bin:$PATH
- cmake -DUSE_QT5=0 -DCMAKE_CXX_FLAGS=-frounding-math -DCMAKE_INSTALL_PREFIX=./../inst -DSUFFIX=-trunk ..
- make -j 2
- ../trunk/scripts/ make -j 2
- make install
- ./../inst/bin/yade-trunk --test
- ./../inst/bin/yade-trunk --check
# Author: Patrick Ohly <>
# Copyright: Copyright (C) 2015 Intel Corporation
# This file is licensed under the MIT license, see COPYING.MIT in
# this source distribution for the terms.
# Runs a command, pipes its output to stdout, and injects status
# reports at regular time interval.
# This ensures that TravisCI does not abort the command just because
# it is silent for more than 10 minutes, as it can happen with bitbake
# when working on a single complex task, like "bitbake linux-yocto".
# Piping bitbake stdout has the advantage that bitbake enters
# non-interactive output mode, which it would do when run by TravisCI
# directly.
# Finally, the default status messages give some sense of memory
# and disk usage, which is critical in the rather constrained
# TravisCI environments.
import errno
import optparse
import signal
import subprocess
import sys
import time
parser = optparse.OptionParser()
parser.add_option("-s", "--status",
help="invoked in a shell when it is time for a status report",
# 200 columns is readable in the TravisCI Web UI without wrapping.
# Depends of course on screen and font size. Resizing top output
# only works (and is needed) on the more recent Trusty TravisCI
# environment.
default="date; free; df -h .; COLUMNS=200 LINES=30 top -w -b -n 1 2>/dev/null || top -n 1; ps x --cols 200 --forest",
parser.add_option("-i", "--interval",
help="repeat status at intervals of this amount of seconds, 0 to disable",
metavar="SECONDS", type="int")
parser.add_option("-d", "--deadline",
help="stop execution when reaching the given time",
metavar="SECONDS-SINCE-EPOCH", type="int")
(options, args) = parser.parse_args()
def check_deadline(now):
if options.deadline > 0 and options.deadline < now:
print "\n\n*** travis-cmd-wrapper: deadline reached, shutting down ***\n\n"
# Set up status alarm. When we have a deadline, we need to check more often
# and/or sooner. Sending a SIGALRM manually will also trigger a status report
# (not really possible in TravisCI, but may be useful elsewhere).
now = time.time()
next_status = now + options.interval
alarm_interval = max(options.interval, 0)
if options.deadline:
if options.deadline < now + 60:
# Wake up a little too late, to be sure that we trigger the if check.
deadline_alarm_interval = max(int(options.deadline + 2 - now), 1)
elif next_status > 60:
deadline_alarm_interval = 60
if deadline_alarm_interval < alarm_interval:
alarm_interval = deadline_alarm_interval
def status(signum, frame):
global next_status
now = time.time()
if options.interval < 0 or now >= next_status:, shell=True)
next_status = now + options.interval
if alarm_interval > 0:
# Run command.
cmd = subprocess.Popen(args, stdout=subprocess.PIPE)
# Arm timer and handler.
signal.signal(signal.SIGALRM, status)
if alarm_interval > 0:
while cmd.poll() is None:
line = cmd.stdout.readline()
except IOError, ex:
if ex.errno != errno.EINTR:
# If we go down, so must our child...
if cmd.poll() is None:
exit(1 if cmd.returncode else 0)
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment