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 4.5KB

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