1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156
|
# This is for forcibly stopping the job from a subshell (see test
# below).
trap "exit 1" TERM
export TOP_PID=$$
set -e
# Known problems : does not fare well with interrupted, partial
# compilations. We should perhaps have a multi-dependency version
# of do_i_have below
LOGGINGDIR="$WORKSPACE/logs"
mkdir -p $LOGGINGDIR
unset SBT_HOME
SBT_HOME="$WORKSPACE/.sbt"
mkdir -p $SBT_HOME
IVY_CACHE="$WORKSPACE/.ivy2"
mkdir -p $IVY_CACHE
rm -rf $IVY_CACHE/cache/org.scala-lang
SBT_CMD=${sbtCmd-sbt}
SBT_CMD="$SBT_CMD -sbt-version 0.13.12"
# temp dir where all 'non-build' operation are performed
TMP_ROOT_DIR=$(mktemp -d -t pr-scala.XXXX)
TMP_DIR="${TMP_ROOT_DIR}/tmp"
mkdir "${TMP_DIR}"
# detect sed version and how to enable extended regexes
SEDARGS="-n$(if (echo "a" | sed -nE "s/a/b/" &> /dev/null); then echo E; else echo r; fi)"
# :docstring test:
# Usage: test <argument ..>
# Executes <argument ..>, logging the launch of the command to the
# main log file, and kills global script execution with the TERM
# signal if the commands ends up failing.
# DO NOT USE ON FUNCTIONS THAT DECLARE VARIABLES,
# AS YOU'LL BE RUNNING IN A SUBSHELL AND VARIABLE DECLARATIONS WILL BE LOST
# :end docstring:
function test() {
echo "### $@"
"$@"
status=$?
if [ $status -ne 0 ]; then
say "### ERROR with $1"
kill -s TERM $TOP_PID
fi
}
# :docstring say:
# Usage: say <argument ..>
# Prints <argument ..> to both console and the main log file.
# :end docstring:
function say(){
(echo "$@") | tee -a $LOGGINGDIR/compilation-$SCALADATE-$SCALAHASH.log
}
# General debug logging
# $* - message
function debug () {
echo "----- $*"
}
function parseScalaProperties(){
propFile="$baseDir/$1"
if [ ! -f $propFile ]; then
echo "Property file $propFile not found."
exit 1
else
awk -f "$scriptsDir/readproperties.awk" "$propFile" > "$propFile.sh"
. "$propFile.sh" # yeah yeah, not that secure, improvements welcome (I tried, but bash made me cry again)
fi
}
## TAKEN FROM UBER-BUILD, except that it "returns" (via $RES) true/false
# Check if an artifact is available
# $1 - groupId
# $2 - artifacId
# $3 - version
# $4 - extra repository to look in (optional)
# return value in $RES
function checkAvailability () {
pushd "${TMP_DIR}"
rm -rf *
# pom file for the test project
cat > pom.xml << EOF
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.typesafe</groupId>
<artifactId>typesafeDummy</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>Dummy</name>
<url>http://127.0.0.1</url>
<dependencies>
<dependency>
<groupId>$1</groupId>
<artifactId>$2</artifactId>
<version>$3</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>sonatype.snapshot</id>
<name>Sonatype maven snapshot repository</name>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<snapshots>
<updatePolicy>daily</updatePolicy>
</snapshots>
</repository>
EOF
if [ -n "$4" ]
then
# adds the extra repository
cat >> pom.xml << EOF
<repository>
<id>extrarepo</id>
<name>extra repository</name>
<url>$4</url>
</repository>
EOF
fi
cat >> pom.xml << EOF
</repositories>
</project>
EOF
set +e
mvn "${MAVEN_ARGS[@]}" compile &> "${TMP_DIR}/mvn.log"
RES=$?
# Quiet the maven, but allow diagnosing problems.
grep -i downloading "${TMP_DIR}/mvn.log"
grep -i exception "${TMP_DIR}/mvn.log"
grep -i error "${TMP_DIR}/mvn.log"
set -e
# log the result
if [ ${RES} == 0 ]
then
debug "$1:$2:jar:$3 found !"
RES=true
else
debug "$1:$2:jar:$3 not found !"
RES=false
fi
popd
}
|