config.yml 11.1 KB
Newer Older
1
version: 2
2

3 4
jobs:

5 6 7 8 9 10 11 12 13 14 15 16 17
  macos-llvm-gcc-4.2:
    macos:
      xcode: "8.3.3"
    steps:
      - checkout
      - run: brew update-reset
      - run: brew install wget pkg-config libtool ragel freetype glib cairo
      - run: wget https://packages.macports.org/llvm-gcc42/llvm-gcc42-2336.11_3+universal.darwin_15.i386-x86_64.tbz2 && tar zxvf llvm-gcc42-2336.11_3+universal.darwin_15.i386-x86_64.tbz2
      - run: CC=$PWD/opt/local/bin/llvm-gcc-4.2 CXX=$PWD/opt/local/bin/llvm-g++-4.2 ./autogen.sh --with-freetype --with-glib --with-gobject --with-cairo
      # Ignoring assembler complains, https://stackoverflow.com/a/39867021
      - run: make 2>&1 | grep -v -e '^/var/folders/*' -e '^[[:space:]]*\.section' -e '^[[:space:]]*\^[[:space:]]*~*'
      - run: make check || .ci/fail.sh

18 19 20 21 22 23 24 25 26 27 28 29
  macos-notest-apple-gcc-i686-4.2:
    macos:
      xcode: "8.3.3"
    steps:
      - checkout
      - run: brew update-reset
      - run: brew install wget pkg-config libtool ragel
      - run: wget https://packages.macports.org/apple-gcc42/apple-gcc42-5666.3_15+universal.darwin_15.i386-x86_64.tbz2 && tar zxvf apple-gcc42-5666.3_15+universal.darwin_15.i386-x86_64.tbz2
      - run: CPP=$PWD/opt/local/bin/i686-apple-darwin15-cpp-apple-4.2.1 CC=$PWD/opt/local/bin/i686-apple-darwin15-gcc-apple-4.2.1 CXX=$PWD/opt/local/bin/i686-apple-darwin15-g++-apple-4.2.1 ./autogen.sh
      # Ignoring assembler complains, https://stackoverflow.com/a/39867021
      - run: make 2>&1 | grep -v -e '^/var/folders/*' -e '^[[:space:]]*\.section' -e '^[[:space:]]*\^[[:space:]]*~*'

30
  distcheck:
31
    docker:
E
Ebrahim Byagowi 已提交
32
      - image: ubuntu:17.10
33 34
    steps:
      - checkout
35 36
      - run: apt update && apt install -y ninja-build binutils libtool autoconf automake make cmake gcc g++ pkg-config ragel gtk-doc-tools libfreetype6-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev python python-pip
      - run: pip install fonttools
K
Khaled Hosny 已提交
37 38 39 40
      - run: ./autogen.sh
      - run: make
      - run: make distcheck || .ci/fail.sh
      - run: rm -rf harfbuzz-*
E
Ebrahim Byagowi 已提交
41
      - run: make distdir && cd harfbuzz-* && cmake -DHB_CHECK=ON -Bbuild -H. -GNinja && ninja -Cbuild && CTEST_OUTPUT_ON_FAILURE=1 ninja -Cbuild test && ninja -Cbuild install
42

43
  alpine-O3-NOMMAP:
E
ebraminio 已提交
44
    docker:
45
      - image: alpine
E
ebraminio 已提交
46 47
    steps:
      - checkout
48
      - run: apk update && apk add ragel make pkgconfig libtool autoconf automake gettext gcc g++ glib-dev freetype-dev cairo-dev
49
      # C??FLAGS are not needed for a regular build
50
      - run: CFLAGS="-O3" CXXFLAGS="-O3 -DHB_NO_MMAP" ./autogen.sh
K
Khaled Hosny 已提交
51 52
      - run: make
      - run: make check || .ci/fail.sh
E
ebraminio 已提交
53

54
  archlinux-debug-O0-py3:
E
ebraminio 已提交
55 56 57 58
    docker:
      - image: base/devel
    steps:
      - checkout
59 60
      - run: pacman --noconfirm -Syu freetype2 cairo icu gettext gobject-introspection gcc gcc-libs glib2 graphite pkg-config ragel python python-pip
      - run: pip install fonttools
61 62
      # C??FLAGS are not needed for a regular build
      - run: CFLAGS="-O0" CXXFLAGS="-O0" CPPFLAGS="-DHB_DEBUG" ./autogen.sh --with-freetype --with-glib --with-gobject --with-cairo --with-icu --with-graphite2
K
Khaled Hosny 已提交
63 64
      - run: make
      - run: make check || .ci/fail.sh
E
ebraminio 已提交
65

66 67 68 69 70
  clang-O3-O0:
    docker:
      - image: multiarch/crossbuild
    steps:
      - checkout
71 72
      - run: apt update || true
      - run: apt install -y ragel libfreetype6-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev python python-pip
73 74 75 76 77 78 79 80 81
      - run: pip install fonttools
      - run: wget http://download.savannah.gnu.org/releases/freetype/freetype-2.9.tar.bz2 && tar xf freetype-2.9.tar.bz2 && cd freetype-2.9 && ./autogen.sh && ./configure && make -j4 && cd ..
      - run: CFLAGS="-O3" CXXFLAGS="-O3" CC=clang CXX=clang++ ./autogen.sh --with-freetype --with-glib --with-cairo --with-icu --with-graphite2
      - run: make
      - run: LD_LIBRARY_PATH="$PWD/freetype-2.9/objs/.libs" make check || .ci/fail.sh
      - run: CFLAGS="-O0" CXXFLAGS="-O0" CC=clang CXX=clang++ ./autogen.sh --with-freetype --with-glib --with-cairo --with-icu --with-graphite2
      - run: make
      - run: LD_LIBRARY_PATH="$PWD/freetype-2.9/objs/.libs" make check || .ci/fail.sh

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
  clang-asan:
    docker:
      - image: ubuntu:18.04
    steps:
      - checkout
      - run: apt update || true
      - run: apt install -y clang-6.0 binutils libtool autoconf automake make pkg-config gtk-doc-tools ragel libfreetype6-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev python python-pip
      - run: pip install fonttools
      - run: CPPFLAGS="-fsanitize=address" LDFLAGS="-fsanitize=address" CC=clang-6.0 CXX=clang++-6.0 ./autogen.sh --with-freetype --with-glib --with-cairo --with-icu --with-graphite2
      - run: make
      - run: make check || .ci/fail.sh

  clang-msan:
    docker:
      - image: ubuntu:18.04
    steps:
      - checkout
      - run: apt update || true
      - run: apt install -y clang-6.0 binutils libtool autoconf automake make pkg-config ragel libfreetype6-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev python python-pip
      - run: pip install fonttools
      - run: CPPFLAGS="-fsanitize=memory" LDFLAGS="-fsanitize=memory" CC=clang-6.0 CXX=clang++-6.0 ./autogen.sh --with-freetype --with-glib --with-cairo --with-icu --with-graphite2
      - run: make
      - run: make check || .ci/fail.sh

  clang-tsan:
    docker:
      - image: ubuntu:18.04
    steps:
      - checkout
      - run: apt update || true
      - run: apt install -y clang-6.0 binutils libtool autoconf automake make pkg-config ragel libfreetype6-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev python python-pip
      - run: pip install fonttools
      - run: CPPFLAGS="-fsanitize=thread" LDFLAGS="-fsanitize=thread" CC=clang-6.0 CXX=clang++-6.0 ./autogen.sh --with-freetype --with-glib --with-cairo --with-icu --with-graphite2
      - run: make
      - run: make check || .ci/fail.sh

  clang-ubsan:
    docker:
      - image: ubuntu:18.04
    steps:
      - checkout
      - run: apt update || true
      - run: apt install -y clang-6.0 binutils libtool autoconf automake make pkg-config ragel libfreetype6-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev python python-pip
      - run: pip install fonttools
      - run: CPPFLAGS="-fsanitize=undefined" LDFLAGS="-fsanitize=undefined" CC=clang-6.0 CXX=clang++-6.0 ./autogen.sh --with-freetype --with-glib --with-cairo --with-icu --with-graphite2
      - run: make
      - run: make check || .ci/fail.sh

130
  fedora-outoftreebuild:
E
ebraminio 已提交
131
    docker:
132
      - image: fedora
E
ebraminio 已提交
133 134
    steps:
      - checkout
135
      - run: dnf install -y pkg-config ragel gcc gcc-c++ automake autoconf libtool make which glib2-devel freetype-devel cairo-devel libicu-devel gobject-introspection-devel graphite2-devel redhat-rpm-config python || true
136
      - run: NOCONFIGURE=1 ./autogen.sh --with-freetype --with-glib --with-gobject --with-cairo --with-icu --with-graphite2
K
Khaled Hosny 已提交
137
      - run: mkdir build && cd build && ../configure && make && (make check || ../.ci/fail.sh)
E
ebraminio 已提交
138

139
  cmake-gcc:
140
    docker:
E
Ebrahim Byagowi 已提交
141
      - image: ubuntu:17.10
142 143
    steps:
      - checkout
144 145
      - run: apt update && apt install -y ninja-build binutils cmake gcc g++ pkg-config ragel gtk-doc-tools libfreetype6-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev python python-pip
      - run: pip install fonttools
146
      - run: cmake -DHB_CHECK=ON -Bbuild -H. -GNinja
K
Khaled Hosny 已提交
147
      - run: ninja -Cbuild
148
      - run: CTEST_OUTPUT_ON_FAILURE=1 ninja -Cbuild test
E
ebraminio 已提交
149
      - run: ninja -Cbuild install
150

151
  cmake-oracledeveloperstudio:
152
    docker:
153
      - image: fedora
154 155
    steps:
      - checkout
E
Ebrahim Byagowi 已提交
156
      - run: dnf install -y gcc ragel cmake make which glib2-devel freetype-devel cairo-devel libicu-devel graphite2-devel wget tar bzip2 python libnsl || true
157
      - run: wget http://$ODSUSER:$ODSPASS@behdad.org/harfbuzz-private/OracleDeveloperStudio12.6-linux-x86-bin.tar.bz2 && tar xf OracleDeveloperStudio12.6-linux-x86-bin.tar.bz2 --owner root --group root --no-same-owner
E
Ebrahim Byagowi 已提交
158
      - run: CC=/root/project/OracleDeveloperStudio12.6-linux-x86-bin/developerstudio12.6/bin/suncc CXX=/root/project/OracleDeveloperStudio12.6-linux-x86-bin/developerstudio12.6/bin/sunCC cmake -DHB_HAVE_GRAPHITE2=ON -DHB_BUILTIN_UCDN=ON -DHB_HAVE_GLIB=ON -DHB_HAVE_FREETYPE=ON -Bbuild -H.
159
      - run: make -Cbuild
160
      - run: CTEST_OUTPUT_ON_FAILURE=1 make -Cbuild test
161 162 163 164 165 166 167 168 169 170
      - run: make -Cbuild install

  crosscompile-notest-djgpp:
    docker:
      - image: quay.io/ebraminio/djgpp
    steps:
      - checkout
      - run: apt update && apt install -y ragel pkg-config libtool autoconf
      - run: CFLAGS="-Wno-attributes" CXXFLAGS="-Wno-attributes" ./autogen.sh --prefix=/usr/local/djgpp --host=i586-pc-msdosdjgpp
      - run: make
171

172 173 174 175 176 177 178 179 180 181
  crosscompile-notest-freebsd9:
    docker:
      - image: donbowman/freebsd-cross-build
    steps:
      - checkout
      - run: apt update && apt install -y pkg-config ragel
      - run: ./autogen.sh --prefix=/freebsd --host=x86_64-pc-freebsd9
      - run: make

  crosscompile-notest-psvita:
182 183 184 185 186 187
    docker:
      - image: dockcross/base
    steps:
      - checkout
      - run: apt update && apt install ragel
      - run: git clone https://github.com/vitasdk/vdpm && cd vdpm && ./bootstrap-vitasdk.sh
188 189
      - run: ./autogen.sh --prefix=/usr/local/vitasdk/arm-vita-eabi --host=arm-vita-eabi
      - run: make
190

191
  crosscompile-cmake-notest-android-arm:
192 193 194 195 196
    docker:
      - image: dockcross/android-arm
    steps:
      - checkout
      - run: apt update && apt install ragel
197 198
      - run: cmake -Bbuild -H. -GNinja
      - run: ninja -Cbuild
199

200
  crosscompile-cmake-notest-browser-asmjs:
201 202 203 204 205
    docker:
      - image: dockcross/browser-asmjs
    steps:
      - checkout
      - run: apt update && apt install ragel
206 207
      - run: cmake -Bbuild -H. -GNinja
      - run: ninja -Cbuild
208

209
  crosscompile-cmake-notest-linux-arm64:
210
    docker:
B
Behdad Esfahbod 已提交
211
      - image: dockcross/linux-arm64
212 213 214
    steps:
      - checkout
      - run: apt update && apt install ragel
215 216
      - run: cmake -Bbuild -H. -GNinja
      - run: ninja -Cbuild
217

218
  crosscompile-cmake-notest-linux-mips:
219 220 221 222 223
    docker:
      - image: dockcross/linux-mips
    steps:
      - checkout
      - run: apt update && apt install ragel
224 225
      - run: cmake -Bbuild -H. -GNinja
      - run: ninja -Cbuild
226

227
  crosscompile-cmake-notest-windows-x64:
228 229 230 231 232
    docker:
      - image: dockcross/windows-x64
    steps:
      - checkout
      - run: apt update && apt install ragel
233 234 235
      - run: cmake -Bbuild -H. -GNinja
      - run: ninja -Cbuild

236 237 238 239
workflows:
  version: 2
  build:
    jobs:
240 241
      # macOS
      - macos-llvm-gcc-4.2
242
      - macos-notest-apple-gcc-i686-4.2
243

244
      # both autotools and cmake
E
Ebrahim Byagowi 已提交
245
      - distcheck
246 247

      # autotools based builds
248
      - alpine-O3-NOMMAP
249
      - archlinux-debug-O0-py3
250
      - clang-O3-O0
251
      - clang-asan
252
      #- clang-msan
253
      - clang-tsan
254
      #- clang-ubsan
255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273
      - fedora-outoftreebuild

      # cmake based builds
      - cmake-gcc
      - cmake-oracledeveloperstudio

      # crosscompiles
      # they can't be test thus are without tests
      ## autotools
      - crosscompile-notest-djgpp
      - crosscompile-notest-freebsd9
      - crosscompile-notest-psvita

      ## cmake
      - crosscompile-cmake-notest-android-arm
      - crosscompile-cmake-notest-browser-asmjs
      - crosscompile-cmake-notest-linux-arm64
      - crosscompile-cmake-notest-linux-mips
      - crosscompile-cmake-notest-windows-x64