File: ci-build-libsass

package info (click to toggle)
golang-github-bep-golibsass 0.7.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 2,808 kB
  • sloc: cpp: 30,398; ansic: 848; sh: 662; makefile: 340; perl: 56
file content (135 lines) | stat: -rwxr-xr-x 4,024 bytes parent folder | download | duplicates (3)
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
#!/bin/bash

set -e

script/bootstrap

# export this path right here (was in script/spec before)
export SASS_LIBSASS_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )"/../ && pwd )"

# use some defaults if not running under travis ci
if [ "x$CONTINUOUS_INTEGRATION" == "x" ]; then export CONTINUOUS_INTEGRATION=true; fi
if [ "x$TRAVIS_BUILD_DIR" == "x" ]; then export TRAVIS_BUILD_DIR=$(pwd); fi
if [ "x$SASS_SASSC_PATH" == "x" ]; then export SASS_SASSC_PATH=$(pwd)/sassc; fi
if [ "x$SASS_SPEC_PATH" == "x" ]; then export SASS_SPEC_PATH=$(pwd)/sass-spec; fi

# try to get the os name from uname (and filter via perl - probably not the most portable way?)
if [ "x$TRAVIS_OS_NAME" == "x" ]; then export TRAVIS_OS_NAME=`uname -s | perl -ne 'print lc \$1 if\(/^([a-zA-Z]+)/'\)`; fi

if [ "x$COVERAGE" == "xyes" ]; then
  COVERAGE_OPT="--enable-coverage"
  export EXTRA_CFLAGS="-fprofile-arcs -ftest-coverage"
  export EXTRA_CXXFLAGS="-fprofile-arcs -ftest-coverage"
  if [ "$TRAVIS_OS_NAME" == "osx" ]; then
    # osx doesn't seem to know gcov lib?
    export EXTRA_LDFLAGS="--coverage"
  else
    export EXTRA_LDFLAGS="-lgcov --coverage"
  fi
else
  COVERAGE_OPT="--disable-coverage"
fi

if [ "x$BUILD" == "xstatic" ]; then
  SHARED_OPT="--disable-shared --enable-static"
  MAKE_TARGET="static"
else
  # Makefile of sassc wants to link to static
  SHARED_OPT="--enable-shared --enable-static"
  MAKE_TARGET="shared"
fi

if [ "$(expr substr $(uname -s) 1 10)" == "MINGW32_NT" ]; then
  MAKE_OPTS="$MAKE_OPTS -j1 V=1"
else
  MAKE_OPTS="$MAKE_OPTS -j5 V=1"
fi

if [ "x$PREFIX" == "x" ]; then
  if [ "x$TRAVIS_BUILD_DIR" == "x" ]; then
    PREFIX=$SASS_LIBSASS_PATH/build
  else
    PREFIX=$TRAVIS_BUILD_DIR/build
  fi
fi

# enable address sanitation
# https://en.wikipedia.org/wiki/AddressSanitizer
if [ "x$CC" == "xclang" ]; then
  if [ "x$COVERAGE" != "xyes" ]; then
    if [ "$TRAVIS_OS_NAME" == "linux" ]; then
      export EXTRA_CFLAGS="$EXTRA_CFLAGS -fsanitize=address"
      export EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS -fsanitize=address"
      export EXTRA_LDFLAGS="$EXTRA_LDFLAGS -fsanitize=address"
    fi
  fi
fi

echo SASS_LIBSASS_PATH: $SASS_LIBSASS_PATH
echo TRAVIS_BUILD_DIR: $TRAVIS_BUILD_DIR
echo SASS_SASSC_PATH: $SASS_SASSC_PATH
echo SASS_SPEC_PATH: $SASS_SPEC_PATH
echo INSTALL_LOCATION: $PREFIX

if [ "x$AUTOTOOLS" == "xyes" ]; then

  echo -en 'travis_fold:start:configure\r'
  autoreconf --force --install
  ./configure --enable-tests $COVERAGE_OPT \
    --disable-silent-rules \
    --with-sassc-dir=$SASS_SASSC_PATH \
    --with-sass-spec-dir=$SASS_SPEC_PATH \
    --prefix=$PREFIX \
    ${SHARED_OPT}
  echo -en 'travis_fold:end:configure\r'

  make $MAKE_OPTS clean

else

  make $MAKE_OPTS clean

  # Run C++ unit tests
  make -C test clean
  make -C test test

fi

# install to prefix directory
PREFIX="$PREFIX" make $MAKE_OPTS install

ls -la $PREFIX/*

echo successfully compiled libsass
echo AUTOTOOLS=$AUTOTOOLS COVERAGE=$COVERAGE BUILD=$BUILD

if [ "$CONTINUOUS_INTEGRATION" == "true" ] && [ "$TRAVIS_PULL_REQUEST" != "false" ] && [ "x$TRAVIS_PULL_REQUEST" != "x" ] &&
   ([ "$TRAVIS_OS_NAME" == "linux" ] || [ "$TRAVIS_OS_NAME" == "osx" ] || [ "$TRAVIS_OS_NAME" == "cygwin" ]);
then

  echo "Fetching PR $TRAVIS_PULL_REQUEST"

  JSON=$(curl -L -sS https://api.github.com/repos/sass/libsass/pulls/$TRAVIS_PULL_REQUEST)

  if [[ $JSON =~ "API rate limit exceeded" ]];
  then
    echo "Travis rate limit on github exceeded"
    echo "Retrying via 'special purpose proxy'"
    JSON=$(curl -L -sS https://github-api-reverse-proxy.herokuapp.com/repos/sass/libsass/pulls/$TRAVIS_PULL_REQUEST)
  fi

  RE_SPEC_PR="sass\/sass-spec(#|\/pull\/)([0-9]+)"

  if [[ $JSON =~ $RE_SPEC_PR ]];
  then
    SPEC_PR="${BASH_REMATCH[2]}"
    echo "Fetching Sass Spec PR $SPEC_PR"
    git -C sass-spec fetch -u origin pull/$SPEC_PR/head:ci-spec-pr-$SPEC_PR
    git -C sass-spec checkout --force ci-spec-pr-$SPEC_PR
    make $MAKE_OPTS test_probe
  else
    make $MAKE_OPTS test_probe
  fi
else
  make $MAKE_OPTS test_probe
fi