sanitizer: valgrind | sanitizer: valgrind | ||||
steps: | steps: | ||||
- uses: actions/checkout@v2 | |||||
- uses: actions/checkout@v3 | |||||
- name: enable 32bit architecture | - name: enable 32bit architecture | ||||
run: sudo dpkg --add-architecture i386 | run: sudo dpkg --add-architecture i386 | ||||
if: matrix.arch == 'x86-32' | if: matrix.arch == 'x86-32' | ||||
./configure ${{ matrix.config }} | ./configure ${{ matrix.config }} | ||||
- name: Store the config | - name: Store the config | ||||
if: ${{ failure() }} && matrix.arch != 'arm-32' && matrix.arch != 'armel-32' && matrix.arch != 'arm-64' | if: ${{ failure() }} && matrix.arch != 'arm-32' && matrix.arch != 'armel-32' && matrix.arch != 'arm-64' | ||||
uses: actions/upload-artifact@v2 | |||||
uses: actions/upload-artifact@v3 | |||||
with: | with: | ||||
name: config-${{ matrix.arch }}-${{ matrix.sanitizer }}.log | name: config-${{ matrix.arch }}-${{ matrix.sanitizer }}.log | ||||
path: config.log | path: config.log | ||||
CFLAGS="${{ matrix.configflags }} ${{ matrix.archconfigflags }}" CXXFLAGS="${{ matrix.configflags }} ${{ matrix.archconfigflags }}" ./configure ${{ matrix.config }} | CFLAGS="${{ matrix.configflags }} ${{ matrix.archconfigflags }}" CXXFLAGS="${{ matrix.configflags }} ${{ matrix.archconfigflags }}" ./configure ${{ matrix.config }} | ||||
${{ matrix.build_env }} make | ${{ matrix.build_env }} make | ||||
${{ matrix.check_env }} make check | ${{ matrix.check_env }} make check | ||||
reprotest: | |||||
runs-on: ubuntu-latest | |||||
name: Build with reprotest on ${{ matrix.arch }} | |||||
strategy: | |||||
fail-fast: false | |||||
matrix: | |||||
arch: [x86-64, x86-32] | |||||
include: | |||||
- arch: x86-32 | |||||
archdeps: "gcc-multilib g++-multilib libpcaudio-dev:i386 libsonic-dev:i386 libc6-dbg:i386" | |||||
archconfigflags: "-m32" | |||||
- arch: x86-64 | |||||
archdeps: "" | |||||
archconfigflags: '' | |||||
steps: | |||||
- uses: actions/checkout@v2 | |||||
- name: enable 32bit architecture | |||||
run: sudo dpkg --add-architecture i386 | |||||
if: matrix.arch == 'x86-32' | |||||
- name: dependencies | |||||
run: sudo apt-get update && sudo apt-get install ${{ env.deps }} reprotest ${{ matrix.archdeps }} | |||||
- name: autoconf | |||||
run: ./autogen.sh ; chmod -x INSTALL m4/*.m4 | |||||
- name: run | |||||
run: reprotest 'CFLAGS="${{ matrix.archconfigflags }}" CXXFLAGS="${{ matrix.archconfigflags }}" ./configure --without-gradle && make clean && make && make check && touch success' success | |||||
distcheck: | |||||
runs-on: ubuntu-latest | |||||
name: Run distcheck | |||||
steps: | |||||
- uses: actions/checkout@v2 | |||||
- name: dependencies | |||||
run: sudo apt-get update && sudo apt-get install ${{ env.deps }} | |||||
- name: autoconf | |||||
run: ./autogen.sh ; chmod -x INSTALL m4/*.m4 | |||||
- name: configure | |||||
run: ./configure | |||||
- name: make | |||||
run: make | |||||
- name: make check | |||||
run: make check | |||||
- name: make dist | |||||
run: make dist | |||||
- name: unpack | |||||
run: mkdir unpack && tar -C unpack -xf *.tar.gz | |||||
- name: re-configure | |||||
run: cd unpack/espeak-ng-* && ./configure | |||||
- name: re-make | |||||
run: cd unpack/espeak-ng-* && make | |||||
- name: re-make check | |||||
run: cd unpack/espeak-ng-* && make check |
name: Dist | |||||
on: | |||||
workflow_dispatch: | |||||
push: | |||||
branches: [ master ] | |||||
pull_request: | |||||
branches: [ master ] | |||||
env: | |||||
deps: libpcaudio-dev libsonic-dev ronn kramdown python3 | |||||
jobs: | |||||
reprotest: | |||||
runs-on: ubuntu-latest | |||||
name: Build with reprotest on ${{ matrix.arch }} | |||||
strategy: | |||||
fail-fast: false | |||||
matrix: | |||||
arch: [x86-64, x86-32] | |||||
include: | |||||
- arch: x86-32 | |||||
archdeps: "gcc-multilib g++-multilib libpcaudio-dev:i386 libsonic-dev:i386 libc6-dbg:i386" | |||||
archconfigflags: "-m32" | |||||
- arch: x86-64 | |||||
archdeps: "" | |||||
archconfigflags: '' | |||||
steps: | |||||
- uses: actions/checkout@v3 | |||||
- name: enable 32bit architecture | |||||
run: sudo dpkg --add-architecture i386 | |||||
if: matrix.arch == 'x86-32' | |||||
- name: dependencies | |||||
run: sudo apt-get update && sudo apt-get install ${{ env.deps }} reprotest ${{ matrix.archdeps }} | |||||
- name: autoconf | |||||
run: ./autogen.sh ; chmod -x INSTALL m4/*.m4 | |||||
- name: run | |||||
run: reprotest 'CFLAGS="${{ matrix.archconfigflags }}" CXXFLAGS="${{ matrix.archconfigflags }}" ./configure --without-gradle && make clean && make && make check && touch success' success | |||||
distcheck: | |||||
runs-on: ubuntu-latest | |||||
name: Run distcheck | |||||
steps: | |||||
- uses: actions/checkout@v3 | |||||
- name: dependencies | |||||
run: sudo apt-get update && sudo apt-get install ${{ env.deps }} | |||||
- name: autoconf | |||||
run: ./autogen.sh ; chmod -x INSTALL m4/*.m4 | |||||
- name: configure | |||||
run: ./configure | |||||
- name: make | |||||
run: make | |||||
- name: make check | |||||
run: make check | |||||
- name: make dist | |||||
run: make dist | |||||
- name: unpack | |||||
run: mkdir unpack && tar -C unpack -xf *.tar.gz | |||||
- name: re-configure | |||||
run: cd unpack/espeak-ng-* && ./configure | |||||
- name: re-make | |||||
run: cd unpack/espeak-ng-* && make | |||||
- name: re-make check | |||||
run: cd unpack/espeak-ng-* && make check |
archdeps: "" | archdeps: "" | ||||
archconfigflags: '' | archconfigflags: '' | ||||
steps: | steps: | ||||
- uses: actions/checkout@v2 | |||||
- uses: actions/checkout@v3 | |||||
- name: enable 32bit architecture | - name: enable 32bit architecture | ||||
run: sudo dpkg --add-architecture i386 | run: sudo dpkg --add-architecture i386 | ||||
if: matrix.arch == 'x86-32' | if: matrix.arch == 'x86-32' | ||||
./configure --with-libfuzzer | ./configure --with-libfuzzer | ||||
- name: Store the fuzzer config | - name: Store the fuzzer config | ||||
if: ${{ failure() }} | if: ${{ failure() }} | ||||
uses: actions/upload-artifact@v2 | |||||
uses: actions/upload-artifact@v3 | |||||
with: | with: | ||||
name: config-${{ matrix.arch }}-${{ matrix.lang }}.log | name: config-${{ matrix.arch }}-${{ matrix.lang }}.log | ||||
path: config.log | path: config.log | ||||
run: mkdir tests/fuzzing/CORPUS_DIR ; FUZZ_VOICE=${{ matrix.lang }} tests/fuzzing/synth_fuzzer.test -seed=1 -runs=10000 -max_len=4096 tests/fuzzing/CORPUS_DIR | run: mkdir tests/fuzzing/CORPUS_DIR ; FUZZ_VOICE=${{ matrix.lang }} tests/fuzzing/synth_fuzzer.test -seed=1 -runs=10000 -max_len=4096 tests/fuzzing/CORPUS_DIR | ||||
- name: Store the crash POC | - name: Store the crash POC | ||||
if: ${{ failure() }} | if: ${{ failure() }} | ||||
uses: actions/upload-artifact@v2 | |||||
uses: actions/upload-artifact@v3 | |||||
with: | with: | ||||
name: crash-${{ matrix.arch }}-${{ matrix.lang }}.1 | name: crash-${{ matrix.arch }}-${{ matrix.lang }}.1 | ||||
path: crash-* timeout-* | path: crash-* timeout-* | ||||
run: cp dictsource/${{ matrix.lang }}_* tests/fuzzing/CORPUS_DIR/ || true ; FUZZ_VOICE=${{ matrix.lang }} tests/fuzzing/synth_fuzzer.test -seed=1 -runs=10000 -max_len=4096 tests/fuzzing/CORPUS_DIR | run: cp dictsource/${{ matrix.lang }}_* tests/fuzzing/CORPUS_DIR/ || true ; FUZZ_VOICE=${{ matrix.lang }} tests/fuzzing/synth_fuzzer.test -seed=1 -runs=10000 -max_len=4096 tests/fuzzing/CORPUS_DIR | ||||
- name: Store the crash POC | - name: Store the crash POC | ||||
if: ${{ failure() }} | if: ${{ failure() }} | ||||
uses: actions/upload-artifact@v2 | |||||
uses: actions/upload-artifact@v3 | |||||
with: | with: | ||||
name: crash-${{ matrix.arch }}-${{ matrix.lang }}.2 | name: crash-${{ matrix.arch }}-${{ matrix.lang }}.2 | ||||
path: crash-* timeout-* | path: crash-* timeout-* |