Initial commit
[yaffs-website] / node_modules / node-sass / src / libsass / script / ci-build-libsass
1 #!/bin/bash
2
3 set -e
4
5 script/bootstrap
6
7 # export this path right here (was in script/spec before)
8 export SASS_LIBSASS_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )"/../ && pwd )"
9
10 # use some defaults if not running under travis ci
11 if [ "x$CONTINUOUS_INTEGRATION" == "x" ]; then export CONTINUOUS_INTEGRATION=true; fi
12 if [ "x$TRAVIS_BUILD_DIR" == "x" ]; then export TRAVIS_BUILD_DIR=$(pwd); fi
13 if [ "x$SASS_SASSC_PATH" == "x" ]; then export SASS_SASSC_PATH=$(pwd)/sassc; fi
14 if [ "x$SASS_SPEC_PATH" == "x" ]; then export SASS_SPEC_PATH=$(pwd)/sass-spec; fi
15
16 # try to get the os name from uname (and filter via perl - probably not the most portable way?)
17 if [ "x$TRAVIS_OS_NAME" == "x" ]; then export TRAVIS_OS_NAME=`uname -s | perl -ne 'print lc \$1 if\(/^([a-zA-Z]+)/'\)`; fi
18
19 if [ "x$COVERAGE" == "xyes" ]; then
20   COVERAGE_OPT="--enable-coverage"
21   export EXTRA_CFLAGS="-fprofile-arcs -ftest-coverage"
22   export EXTRA_CXXFLAGS="-fprofile-arcs -ftest-coverage"
23   if [ "$TRAVIS_OS_NAME" == "osx" ]; then
24     # osx doesn't seem to know gcov lib?
25     export EXTRA_LDFLAGS="--coverage"
26   else
27     export EXTRA_LDFLAGS="-lgcov --coverage"
28   fi
29 else
30   COVERAGE_OPT="--disable-coverage"
31 fi
32
33 if [ "x$BUILD" == "xstatic" ]; then
34   SHARED_OPT="--disable-shared --enable-static"
35   MAKE_TARGET="static"
36 else
37   # Makefile of sassc wants to link to static
38   SHARED_OPT="--enable-shared --enable-static"
39   MAKE_TARGET="shared"
40 fi
41
42 if [ "$(expr substr $(uname -s) 1 10)" == "MINGW32_NT" ]; then
43   MAKE_OPTS="$MAKE_OPTS -j1 V=1"
44 else
45   MAKE_OPTS="$MAKE_OPTS -j5 V=1"
46 fi
47
48 if [ "x$PREFIX" == "x" ]; then
49   if [ "x$TRAVIS_BUILD_DIR" == "x" ]; then
50     PREFIX=$SASS_LIBSASS_PATH/build
51   else
52     PREFIX=$TRAVIS_BUILD_DIR/build
53   fi
54 fi
55
56 # enable address sanitation
57 # https://en.wikipedia.org/wiki/AddressSanitizer
58 if [ "x$CC" == "xclang" ]; then
59   if [ "x$COVERAGE" != "xyes" ]; then
60     if [ "$TRAVIS_OS_NAME" == "linux" ]; then
61       export EXTRA_CFLAGS="$EXTRA_CFLAGS -fsanitize=address"
62       export EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS -fsanitize=address"
63       export EXTRA_LDFLAGS="$EXTRA_LDFLAGS -fsanitize=address"
64     fi
65   fi
66 fi
67
68 echo SASS_LIBSASS_PATH: $SASS_LIBSASS_PATH
69 echo TRAVIS_BUILD_DIR: $TRAVIS_BUILD_DIR
70 echo SASS_SASSC_PATH: $SASS_SASSC_PATH
71 echo SASS_SPEC_PATH: $SASS_SPEC_PATH
72 echo INSTALL_LOCATION: $PREFIX
73
74 if [ "x$AUTOTOOLS" == "xyes" ]; then
75
76   echo -en 'travis_fold:start:configure\r'
77   autoreconf --force --install
78   ./configure --enable-tests $COVERAGE_OPT \
79     --disable-silent-rules \
80     --with-sassc-dir=$SASS_SASSC_PATH \
81     --with-sass-spec-dir=$SASS_SPEC_PATH \
82     --prefix=$PREFIX \
83     ${SHARED_OPT}
84   echo -en 'travis_fold:end:configure\r'
85
86   make $MAKE_OPTS clean
87
88   # install to prefix directory
89   PREFIX="$PREFIX" make $MAKE_OPTS install
90
91 else
92
93   make $MAKE_OPTS clean
94
95 fi
96
97 # install to prefix directory
98 PREFIX="$PREFIX" make $MAKE_OPTS install
99
100 ls -la $PREFIX/*
101
102 echo successfully compiled libsass
103 echo AUTOTOOLS=$AUTOTOOLS COVERAGE=$COVERAGE BUILD=$BUILD
104
105 if [ "$CONTINUOUS_INTEGRATION" == "true" ] && [ "$TRAVIS_PULL_REQUEST" != "false" ] && [ "x$TRAVIS_PULL_REQUEST" != "x" ] &&
106    ([ "$TRAVIS_OS_NAME" == "linux" ] || [ "$TRAVIS_OS_NAME" == "osx" ] || [ "$TRAVIS_OS_NAME" == "cygwin" ]);
107 then
108
109   echo "Fetching PR $TRAVIS_PULL_REQUEST"
110
111   JSON=$(curl -L -sS https://api.github.com/repos/sass/libsass/pulls/$TRAVIS_PULL_REQUEST)
112
113   if [[ $JSON =~ "API rate limit exceeded" ]];
114   then
115     echo "Travis rate limit on github exceeded"
116     echo "Retrying via 'special purpose proxy'"
117     JSON=$(curl -L -sS http://libsass.ocbnet.ch/libsass-spec-pr.psgi/$TRAVIS_PULL_REQUEST)
118   fi
119
120   RE_SPEC_PR="sass\/sass-spec(#|\/pull\/)([0-9]+)"
121
122   if [[ $JSON =~ $RE_SPEC_PR ]];
123   then
124     SPEC_PR="${BASH_REMATCH[2]}"
125     echo "Fetching Sass Spec PR $SPEC_PR"
126     git -C sass-spec fetch -u origin pull/$SPEC_PR/head:ci-spec-pr-$SPEC_PR
127     git -C sass-spec checkout --force ci-spec-pr-$SPEC_PR
128     LD_LIBRARY_PATH="$PREFIX/lib/" make $MAKE_OPTS test_probe
129   else
130     LD_LIBRARY_PATH="$PREFIX/lib/" make $MAKE_OPTS test_probe
131   fi
132 else
133   LD_LIBRARY_PATH="$PREFIX/lib/" make $MAKE_OPTS test_probe
134 fi