eSpeak NG is an open source speech synthesizer that supports more than hundred languages and accents.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ci.yml 5.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. name: CI
  2. on:
  3. workflow_dispatch:
  4. push:
  5. branches: [ master ]
  6. pull_request:
  7. branches: [ master ]
  8. jobs:
  9. build:
  10. runs-on: ubuntu-latest
  11. name: Build with ${{ matrix.sanitizer }} sanitizer on ${{ matrix.arch }}
  12. strategy:
  13. fail-fast: false
  14. matrix:
  15. arch: [x86-32, x86-64]
  16. sanitizer: [no, address, leak, memory, thread, undefined, valgrind]
  17. include:
  18. - sanitizer: "no"
  19. deps: ""
  20. configflags: ""
  21. config: ""
  22. build_env: ""
  23. check_env: ""
  24. - sanitizer: "address"
  25. deps: ""
  26. configflags: "-fsanitize=address -g -Og"
  27. config: ""
  28. build_env: "ASAN_OPTIONS=detect_leaks=0"
  29. check_env: "ASAN_OPTIONS=detect_leaks=0"
  30. - sanitizer: "leak"
  31. deps: ""
  32. configflags: '-fsanitize=leak -g -Og'
  33. config: ""
  34. build_env: "LSAN_OPTIONS=fast_unwind_on_malloc=0"
  35. check_env: "LSAN_OPTIONS=fast_unwind_on_malloc=0"
  36. - sanitizer: "memory"
  37. deps: "clang"
  38. configenv: "CC=clang CXX=clang++"
  39. configflags: "-fsanitize=memory -fsanitize-memory-track-origins=2 -g -Og"
  40. config: "--without-pcaudiolib"
  41. build_env: "MSAN_OPTIONS=exitcode=42"
  42. check_env: "MSAN_OPTIONS=exitcode=42"
  43. - sanitizer: "thread"
  44. deps: ""
  45. configflags: "-fsanitize=thread -g -Og"
  46. config: ""
  47. build_env: ""
  48. check_env: ""
  49. - sanitizer: "undefined"
  50. deps: ""
  51. configflags: "-fsanitize=undefined -g -Og"
  52. config: ""
  53. build_env: "UBSAN_OPTIONS=halt_on_error=1"
  54. check_env: "UBSAN_OPTIONS=halt_on_error=1"
  55. - sanitizer: "valgrind"
  56. deps: "libtool-bin valgrind"
  57. configflags: '-g -Og'
  58. config: ""
  59. build_env: 'VALGRIND="libtool --mode=execute valgrind --track-origins=yes --leak-check=full --error-exitcode=1" '
  60. check_env: 'VALGRIND="libtool --mode=execute valgrind --track-origins=yes --leak-check=full --error-exitcode=1" '
  61. - arch: x86-32
  62. archdeps: "gcc-multilib g++-multilib libpcaudio-dev:i386 libsonic-dev:i386 libc6-dbg:i386"
  63. archconfigflags: "-m32"
  64. - arch: x86-64
  65. archdeps: ""
  66. archconfigflags: ''
  67. exclude:
  68. # These are not supported on 32bit
  69. - arch: x86-32
  70. sanitizer: leak
  71. - arch: x86-32
  72. sanitizer: memory
  73. - arch: x86-32
  74. sanitizer: thread
  75. steps:
  76. - uses: actions/checkout@v2
  77. - name: enable 32bit architecture
  78. run: sudo dpkg --add-architecture i386
  79. if: matrix.arch == 'x86-32'
  80. - name: dependencies
  81. run: sudo apt-get update && sudo apt-get install libpcaudio-dev libsonic-dev ronn kramdown ${{ matrix.deps }} ${{ matrix.archdeps }}
  82. - name: autoconf
  83. run: ./autogen.sh ; chmod -x INSTALL m4/*.m4
  84. - name: configure
  85. run: ${{ matrix.configenv }}
  86. CFLAGS="${{ matrix.configflags }} ${{ matrix.archconfigflags }}"
  87. CXXFLAGS="${{ matrix.configflags }} ${{ matrix.archconfigflags }}"
  88. ./configure ${{ matrix.config }}
  89. - name: Store the config
  90. if: ${{ failure() }}
  91. uses: actions/upload-artifact@v2
  92. with:
  93. name: config-${{ matrix.arch }}-${{ matrix.sanitizer }}.log
  94. path: config.log
  95. - name: make
  96. run: ${{ matrix.build_env }} make
  97. - name: make check
  98. run: ${{ matrix.check_env }} make check
  99. reprotest:
  100. runs-on: ubuntu-latest
  101. name: Build with reprotest on ${{ matrix.arch }}
  102. strategy:
  103. fail-fast: false
  104. matrix:
  105. arch: [x86-32, x86-64]
  106. include:
  107. - arch: x86-32
  108. archdeps: "gcc-multilib g++-multilib libpcaudio-dev:i386 libsonic-dev:i386 libc6-dbg:i386"
  109. archconfigflags: "-m32"
  110. - arch: x86-64
  111. archdeps: ""
  112. archconfigflags: ''
  113. steps:
  114. - uses: actions/checkout@v2
  115. - name: enable 32bit architecture
  116. run: sudo dpkg --add-architecture i386
  117. if: matrix.arch == 'x86-32'
  118. - name: dependencies
  119. run: sudo apt-get update && sudo apt-get install libpcaudio-dev libsonic-dev ronn kramdown reprotest ${{ matrix.archdeps }}
  120. - name: autoconf
  121. run: ./autogen.sh ; chmod -x INSTALL m4/*.m4
  122. - name: run
  123. run: reprotest 'CFLAGS="${{ matrix.archconfigflags }}" CXXFLAGS="${{ matrix.archconfigflags }}" ./configure --without-gradle && make clean && make && make check && touch success' success
  124. distcheck:
  125. runs-on: ubuntu-latest
  126. name: Run distcheck
  127. steps:
  128. - uses: actions/checkout@v2
  129. - name: dependencies
  130. run: sudo apt-get update && sudo apt-get install libpcaudio-dev libsonic-dev ronn kramdown
  131. - name: autoconf
  132. run: ./autogen.sh ; chmod -x INSTALL m4/*.m4
  133. - name: configure
  134. run: ./configure
  135. - name: make
  136. run: make
  137. - name: make check
  138. run: make check
  139. - name: make dist
  140. run: make dist
  141. - name: unpack
  142. run: mkdir unpack && tar -C unpack -xf *.tar.gz
  143. - name: re-configure
  144. run: cd unpack/espeak-ng-* && ./configure
  145. - name: re-make
  146. run: cd unpack/espeak-ng-* && make
  147. - name: re-make check
  148. run: cd unpack/espeak-ng-* && make check