| 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-* |