File: .travis.yml

package info (click to toggle)
moarvm 2020.12%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 18,652 kB
  • sloc: ansic: 268,178; perl: 8,186; python: 1,316; makefile: 768; sh: 287
file content (147 lines) | stat: -rw-r--r-- 6,907 bytes parent folder | download | duplicates (2)
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
language: "perl"
os:
  - linux
  - osx
perl:
  - "5.10"
# Do a full clone to be sure we get the tags and can properly retrieve version
git:
  depth: false
before_install:
  |-
    echo "Begin ‘before_install’ section of .travis.yml"
    # If we aren't on MoarVM/MoarVM or it's a pull request we can't decode the deploy key
    if [ ! "$TRAVIS_REPO_SLUG" = 'MoarVM/MoarVM' ] || [ ! "$TRAVIS_PULL_REQUEST" = "false" ]; then
      export COVERAGE=''; export MOCK_COVERAGE=1;
    fi
    if [ "$COVERAGE" ]; then
      # Put github's into known_hosts /* may not need this */
      printf "github.com,192.30.255.112 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==\n" >> ~/.ssh/known_hosts
      # Decrypt deploy_key using Travis *magic* variables
      eval 'openssl aes-256-cbc -K $encrypted_b77ce3a1cc5c_key -iv $encrypted_b77ce3a1cc5c_iv -in ./tools/gh-pages-deploy_key.enc -out deploy_key -d'
      # Now that it's decrypted, clear the keys so it can't leak
      export encrypted_b77ce3a1cc5c_key=""
      export encrypted_b77ce3a1cc5c_iv=""
      chmod 600 deploy_key # Change perms or ssh-agent will get mad at us
      eval $(ssh-agent -s) # Run the code that ssh-agent -s gives back to setup ENV
      # Decrypted key has no password, but it will still ask for one. Use expect program to interact with it non-interactively
      expect -c 'spawn ssh-add ./deploy_key; expect "enter passphrase for"; send "\n"; expect "Identity added:"; interact'
    fi
install:
  - echo "Begin ‘install’ section of .travis.yml"
addons:
  apt:
    sources:
      - sourceline: 'ppa:ubuntu-toolchain-r/test'
    packages:
      - expect
      - libffi-dev
      - gdb
      - llvm
      - clang

before_script:
  - echo "Begin ‘before_script’ section of .travis.yml"
  - uname -a
  - gcc --version
  - clang --version
  # Fun function that finds files in /usr/bin naming as foo-4.2 for example
  # and returns the highest version. Travis CI installs newer versions under
  # their own verison numbers.
  - find_latest_version () { versioned=$(ls /usr/bin | grep -Ee "^$1(\-[0-9.]+)?$" | sort -r | head -n 1;); if [ "$versioned" ]; then printf "%s" "$versioned"; elif [ -f "/usr/bin/$1" ]; then printf "%s" "/usr/bin/$1"; fi; }
  # MacOS's readlink doesn't support -f, so use our own solution
  - resolve_folder      () { O="$(pwd -P)"; D="$(dirname $1)"; T="$(basename $1)"; cd -- "$D" && cd -- "$T" && pwd -P; cd -- "$O" > /dev/null; }
  - find_latest_version llvm-profdata
  - find_latest_version llvm-cov
  # Find the latest clang that is on the system
  - CLANG_LATEST=$(find_latest_version clang)
  - if [ ! "$CLANG_LATEST" = 'clang' ]; then eval "$CLANG_LATEST --version"; fi
  - if [ "$USE_CLANG_LATEST" ]; then echo "Using $CLANG_LATEST due to build setting"; CC="$CLANG_LATEST"; fi
  # Generic debug and optimization settings that are used for all builds except
  # the coverage builds
  - MVM_debug="--debug"; MVM_optimize="--optimize"
  - if [ "$COVERAGE" ] || [ "$MOCK_COVERAGE" ]; then MVM_debug="--debug=3"; MVM_optimize="--optimize=0"; fi
  - if [ "$TRAVIS_OS_NAME" == "linux" ] ; then sudo apt-get update -qq || sudo apt-get update -qq ; fi
  - git clone --depth 1 git://github.com/perl6/nqp

script:
  - echo "Begin ‘script’ section of .travis.yml"
  # Enable coredumps
  - if [ "$TRAVIS_OS_NAME" == "linux" ]; then ulimit -c unlimited; fi
  - export MOAR_PREFIX="/tmp/moar"; export MOAR_FOLDER="$TRAVIS_BUILD_DIR"
  - export NQP_FOLDER="$(resolve_folder ./nqp)"
  # Set location for core dumps
  - if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo bash -c "echo \"${MOAR_PREFIX}/core.%p.%E\" > /proc/sys/kernel/core_pattern"; sudo cat /proc/sys/kernel/core_pattern; fi
  - echo "perl Configure.pl --prefix=$MOAR_PREFIX $MVM_OPTIONS --cc=\"$CC\" $MVM_debug $MVM_optimize;"
  - perl Configure.pl --prefix=$MOAR_PREFIX $MVM_OPTIONS --cc="$CC" $MVM_debug $MVM_optimize;
  - make -j2 install;
  - cd -- "$NQP_FOLDER";
  - echo "perl Configure.pl --prefix=$MOAR_PREFIX --backends=moar;"
  - perl Configure.pl --prefix=$MOAR_PREFIX --backends=moar;
  - make
  - make test;
  - cd -- "$MOAR_FOLDER"
  - if [ "$COVERAGE" ]; then git clone --depth 1 'https://github.com/samcv/MoarVM-cover.git' && cp -v MoarVM-cover/html-cover.sh . && cp -v MoarVM-cover/nqp-profile ./nqp/ && cp -v MoarVM-cover/merge-profraw.sh ./nqp/ && ./html-cover.sh 2; fi

after_success:
  - echo "Begin ‘after_success’ section of .travis.yml"
  - cd "$TRAVIS_BUILD_DIR"
  - if [ "$COVERAGE" ]; then ./tools/update-gh-pages.sh; fi

after_failure:
# On failure, dump all ENV vars, in case we need to look at them (doesn't print if our secrets are defined)
  - if [ ! "$encrypted_b77ce3a1cc5c_key" ] && [ ! "$encrypted_b77ce3a1cc5c_iv" ]; then printenv; fi
  # If we have any coredumps, print out the traces with gdb
  - for i in $(find "${MOAR_PREFIX}" -maxdepth 1 -name 'core*' -print); do gdb "${MOAR_PREFIX}/bin/moar" "${i}" -ex "thread apply all bt" -ex "set pagination 0" -batch; done;

branches:
   only:
    - master
    - coverage
    - /smoke-me/

notifications:
  irc:
    branches:
      except:
        - gh-pages
    channels:
      - "irc.freenode.net#moarvm"
    on_success: change
    on_failure: always

    template:
      - "MoarVM build %{result}. %{author} '%{commit_message}'"
      - "%{build_url} %{compare_url}"

env:
  matrix:
    - MVM_OPTIONS="--no-jit"               CC='gcc'
    - MVM_OPTIONS=""                       CC='gcc'
    - MVM_OPTIONS="--no-jit"               CC='clang'
    - MVM_OPTIONS=""                       CC='clang'
    - MVM_OPTIONS="--has-libffi --no-jit"  CC='gcc'
    - MVM_OPTIONS="--has-libffi"           CC='gcc'
    - MVM_OPTIONS="--has-libffi --no-jit"  CC='clang'
    - MVM_OPTIONS="--has-libffi"           CC='clang'
    - MVM_OPTIONS="--compiler=clang --coverage --optimize=0 --debug=3" COVERAGE=1 USE_CLANG_LATEST=1 CC='clang'

matrix:
  exclude:
  - os: osx
    env: MVM_OPTIONS="--has-libffi --no-jit"  CC='gcc'
  - os: osx
    env: MVM_OPTIONS="--has-libffi"           CC='gcc'
#  - os: osx
#    env: MVM_OPTIONS="--no-jit"               CC='gcc'
#  - os: osx
#    env: MVM_OPTIONS=""                       CC='gcc'
  - os: osx
    env: MVM_OPTIONS="--has-libffi --no-jit"  CC='clang'
  - os: osx
    env: MVM_OPTIONS="--has-libffi"           CC='clang'
  - os: osx
    env: MVM_OPTIONS="--compiler=clang --coverage --optimize=0 --debug=3" COVERAGE=1 USE_CLANG_LATEST=1 CC='clang'
  allow_failures:
  - os: linux
    env: MVM_OPTIONS="--compiler=clang --coverage --optimize=0 --debug=3" COVERAGE=1 USE_CLANG_LATEST=1 CC='clang'