Mercurial > octave
view .github/workflows/make.yaml @ 29894:2a14420440b8
fix regression from cset 7f22f024afdf
* octave-doc-widget.cc (label_dock_widget::label_dock_widget): connect
parents signal, not from the main windw
author | Torsten Lilge <ttl-octave@mailbox.org> |
---|---|
date | Mon, 19 Jul 2021 18:46:40 +0200 |
parents | f2c6ea6c4abc |
children | 39780b2456a8 |
line wrap: on
line source
name: make on: [push] concurrency: ci-${{ github.ref }} jobs: ubuntu: runs-on: ${{ matrix.os }} strategy: # Allow other runners in the matrix to continue if some fail fail-fast: false matrix: # For available GitHub-hosted runners, see: # https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners os: [ubuntu-20.04, ubuntu-18.04] compiler: [gcc, clang] include: - compiler: gcc compiler-pkgs: "g++ gcc" cc: "gcc" cxx: "g++" - compiler: clang compiler-pkgs: "clang" cc: "clang" cxx: "clang++" # "ccache" on Ubuntu 20.04 with gcc seems to require much more cache # storage than on the other runners to work effectively. - ccache-max: 3G - os: ubuntu-20.04 compiler: gcc ccache-max: 6G steps: - name: checkout repository uses: actions/checkout@v2 - name: install dependencies env: COMPILER_PKGS: ${{ matrix.compiler-pkgs }} run: | sudo apt -qq update sudo apt install -y $COMPILER_PKGS autoconf automake bison ccache \ dvipng epstool fig2dev flex gfortran gnuplot-x11 gperf gzip \ icoutils libarpack2-dev libblas-dev libcurl4-gnutls-dev \ libfftw3-dev libfltk1.3-dev libfontconfig1-dev libfreetype6-dev \ libgl1-mesa-dev libgl2ps-dev libglpk-dev libgraphicsmagick++1-dev \ libhdf5-dev liblapack-dev libosmesa6-dev libpcre3-dev \ libqhull-dev libqscintilla2-qt5-dev libqrupdate-dev \ libreadline-dev librsvg2-bin libsndfile1-dev libsuitesparse-dev \ libsundials-dev libtool libxft-dev llvm-dev make openjdk-8-jdk \ perl portaudio19-dev pstoedit qtbase5-dev qttools5-dev \ qttools5-dev-tools rapidjson-dev rsync tar texinfo \ texlive-latex-extra xvfb zlib1g-dev - name: prepare ccache # create human readable timestamp id: ccache_cache_timestamp run: | echo "::set-output name=TIMESTAMP::$(date +"%Y-%m-%d_%H-%M-%S")" - name: setup ccache # setup the github cache used to maintain the ccache from one job to the next # uses: actions/cache@v2 # The original action doesn't upload on error. Use this fork instead. # FIXME: Consider reverting to the original action when it allows uploading on error. # See: https://github.com/actions/cache/issues/92 uses: pat-s/always-upload-cache@v2 with: path: ~/.ccache key: ccache:${{ matrix.os }}:${{ matrix.compiler }}:${{ github.ref }}:${{ steps.ccache_cache_timestamp.outputs.timestamp }}:${{ github.sha }} restore-keys: | ccache:${{ matrix.os }}:${{ matrix.compiler }}:${{ github.ref }} ccache:${{ matrix.os }}:${{ matrix.compiler }} - name: configure ccache env: CCACHE_MAX: ${{ matrix.ccache-max }} run: | test -d ~/.ccache || mkdir ~/.ccache echo "max_size = $CCACHE_MAX" >> ~/.ccache/ccache.conf ccache -s - name: bootstrap run: ./bootstrap - name: configure timeout-minutes: 30 env: MY_CC: ${{ matrix.cc }} MY_CXX: ${{ matrix.cxx }} run: | echo $MY_CC --version $MY_CC --version echo $MY_CXX --version $MY_CXX --version mkdir .build cd .build && ../configure \ CC="ccache $MY_CC" \ CXX="ccache $MY_CXX" \ F77="ccache gfortran" \ CPPFLAGS="-I/usr/include/hdf5/serial -I/usr/include/suitesparse" \ LDFLAGS="-L/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)/hdf5/serial" - name: build # Parallel make seems to fail intermittently when creating the figures # for the manual. The error message says it fails to connect to a # display. Maybe an xvfb issue? # Use single job make for now which seems to work more reliably. run: XDG_RUNTIME_DIR=$RUNNER_TEMP xvfb-run -a make -C ./.build all V=1 - name: ccache status run: ccache -s - name: check timeout-minutes: 60 run: XDG_RUNTIME_DIR=$RUNNER_TEMP xvfb-run -a make -C ./.build check | tee ./test-suite.log - name: display test log continue-on-error: true # Displaying the log shouldn't take long. Cancel the step if it does. timeout-minutes: 5 run: cat ./.build/test/fntests.log - name: analyze test suite results # Make sure the test summary lists 0 "FAIL"s and no "REGRESSION" run: | [ -n "$(grep -e "FAIL\s*0" ./test-suite.log)" ] || exit 1 [ -z "$(grep -e "REGRESSION" ./test-suite.log)" ] || exit 1 echo No unknown failing tests. macos: runs-on: ${{ matrix.os }} strategy: matrix: # For available GitHub-hosted runners, see: https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners os: [macos-10.15] # Most (or all) homebrew packages are compiled with clang and link # against libc++. So we also use clang to avoid issues with symbols # that don't match. # compiler: [real-gcc, clang] compiler: [clang] include: # - compiler: real-gcc # cc: "/usr/local/bin/gcc-10" # cxx: "/usr/local/bin/g++-10" # cppflags: "-I/usr/local/opt/hdf5/include -I/usr/local/opt/gl2ps/include -I/usr/local/opt/glpk/include -I/usr/local/opt/pcre/include -I/usr/local/opt/qscintilla2/include -I/usr/local/opt/suite-sparse/include -I/usr/local/opt/sundials/include" # ldflags: "-L/usr/local/opt/hdf5/lib -L/usr/local/opt/gl2ps/lib -L/usr/local/opt/glpk/lib -L/usr/local/opt/pcre/lib -L/usr/local/opt/qscintilla2/lib -L/usr/local/opt/suite-sparse/lib -L/usr/local/opt/sundials/lib" - compiler: clang cc: "clang" cxx: "clang++" env: MY_PATH: "/usr/local/opt/gnu-sed/libexec/gnubin:/usr/local/opt/bison/bin:/usr/local/opt/texinfo/bin:/usr/local/opt/qt@5/bin:/Library/TeX/texbin" steps: - name: checkout repository uses: actions/checkout@v2 - name: install dependencies # It looks like "gfortran" isn't working correctly unless "gcc" is # re-installed. # See also: https://formulae.brew.sh/formula/octave#default # The packages are listed in (alphabetically sorted) blocks: # The first block is for "direct" dependencies. # The second block is for additional dependencies needed when building from a release tarball. # The third block is for additional dependencies needed when building from a repository checkout. run: | brew update brew reinstall gcc brew install arpack epstool fftw fig2dev fltk fontconfig freetype \ ghostscript gl2ps glpk gnuplot graphicsmagick hdf5 libsndfile \ libtool openblas pcre portaudio pstoedit qhull qrupdate \ qscintilla2 qt@5 rapidjson readline suite-sparse sundials texinfo \ ccache gnu-sed openjdk pkg-config \ automake autoconf bison gettext icoutils librsvg mactex-no-gui eval "$(/usr/libexec/path_helper)" - name: prepare ccache # create human readable timestamp id: ccache_cache_timestamp run: | echo "::set-output name=TIMESTAMP::$(date +"%Y-%m-%d_%H-%M-%S")" - name: setup ccache # setup the github cache used to maintain the ccache from one job to the next uses: actions/cache@v2 with: path: /Users/runner/Library/Caches/ccache key: ccache:${{ matrix.os }}:${{ matrix.compiler }}:${{ github.ref }}:${{ steps.ccache_cache_timestamp.outputs.timestamp }}:${{ github.sha }} restore-keys: | ccache:${{ matrix.os }}:${{ matrix.compiler }}:${{ github.ref }} ccache:${{ matrix.os }}:${{ matrix.compiler }} - name: configure ccache # The cache doesn't seem to compress well on macOS. Is it already compressed? # Limit the maximum size to avoid exceeding the total cache limits. run: | test -d /Users/runner/Library/Preferences/ccache || mkdir /Users/runner/Library/Preferences/ccache echo "max_size = 1.5G" >> /Users/runner/Library/Preferences/ccache/ccache.conf ccache -s - name: bootstrap run: | export PATH="$MY_PATH:$PATH" ./bootstrap - name: configure timeout-minutes: 30 env: MY_CC: ${{ matrix.cc }} MY_CXX: ${{ matrix.cxx }} MY_CPPFLAGS: ${{ matrix.cppflags }} MY_LDFLAGS: ${{ matrix.ldflags }} # This is a hodgepodge of configure flags put together from the # buildbot rules: # https://hg.octave.org/octave-buildbot/file/tip/master.cfg#l543 # And the homebrew formula: # https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/octave.rb # Amended with additional flags that seem to be needed. # Not all of those might be needed or be correct. run: | export PATH="$MY_PATH:$PATH" echo $PATH echo $MY_CC --version $MY_CC --version echo $MY_CXX --version $MY_CXX --version mkdir .build cd .build && ../configure \ CC="ccache $MY_CC" \ CXX="ccache $MY_CXX" \ F77="ccache gfortran" \ CPPFLAGS="-I/usr/local/opt/gettext/include -I/usr/local/opt/icu4c/include -I/usr/local/opt/qt@5/include -I/usr/local/opt/readline/include -I/usr/local/opt/sqlite/include $MY_CPPFLAGS" \ CXXFLAGS="-O2 -g -std=c++11" \ LDFLAGS="-L/usr/local/lib -L/usr/local/opt/bison/lib -L/usr/local/opt/gettext/lib -L/usr/local/opt/icu4c/lib -L/usr/local/opt/readline/lib -L/usr/local/opt/sqlite/lib $MY_LDFLAGS" \ PKG_CONFIG_PATH="/usr/local/opt/openblas/lib/pkgconfig:/usr/local/opt/icu4c/lib/pkgconfig:/usr/local/opt/qt@5/lib/pkgconfig" \ QCOLLECTIONGENERATOR="qhelpgenerator" \ --with-x=no \ --with-blas="-L/usr/local/opt/openblas/lib -lopenblas" \ --with-java-homedir="/usr/local/opt/openjdk" \ --prefix="${HOME}/usr" - name: build run: | export PATH="$MY_PATH:$PATH" make -C ./.build all -j3 V=1 - name: ccache status run: ccache -s - name: check # Continuing on error in this step means that jobs will be "green" even # if the test suite crashes. But if we don't continue, we'll loose the # ccache and other jobs will be cancelled, too. # It would be nice if we could mark the job as "yellow" (and continue) # in that case. # It would also be nice if we could analyze the test suite results # automatically. continue-on-error: true timeout-minutes: 60 run: make -C ./.build check - name: display test log continue-on-error: true # Displaying the log shouldn't take long. Cancel the step if it does. timeout-minutes: 5 run: cat ./.build/test/fntests.log windows: runs-on: ${{ matrix.os }} defaults: run: # Use pre-installed MSYS2 as default shell shell: C:/msys64/usr/bin/bash.exe --login -eo pipefail "{0}" strategy: # Allow other runners in the matrix to continue if some fail fail-fast: false matrix: # For available GitHub-hosted runners, see: https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners os: [windows-2019] compiler: [gcc] target: [x86_64, i686] include: - compiler: gcc target: x86_64 target-triplet: x86_64-w64-mingw32 target-prefix: mingw-w64-x86_64 msystem: MINGW64 mingw-prefix: mingw64 cc: x86_64-w64-mingw32-gcc cxx: x86_64-w64-mingw32-g++ f77: x86_64-w64-mingw32-gfortran - compiler: gcc target: i686 target-triplet: i686-w64-mingw32 target-prefix: mingw-w64-i686 msystem: MINGW32 mingw-prefix: mingw32 cc: i686-w64-mingw32-gcc cxx: i686-w64-mingw32-g++ f77: i686-w64-mingw32-gfortran env: MSYSTEM: ${{ matrix.msystem }} CHERE_INVOKING: 1 CC: ${{ matrix.cc }} CXX: ${{ matrix.cxx }} F77: ${{ matrix.f77 }} TARGET_TRIPLET: ${{ matrix.target-triplet }} TARGET_PREFIX: ${{ matrix.target-prefix }} # perl uses cmd shell by default PERL5SHELL: bash -l -c steps: - name: update MSYS2 # This step might update the runtime which requires a console restart # In this case, it will kill the console which shouldn't count as an error. continue-on-error: true run: pacman --noconfirm -Syu - name: install dependencies # The packages are listed in (alphabetically sorted) blocks: # The first block is for mandatory dependencies. # The second block is for optional dependencies needed when building from a release tarball. # The third block is for additional dependencies needed when building from a repository checkout. # The fourth block is for additional run-time dependencies that aren't needed to build (to run test suite) run: | pacman --noconfirm -Syu pacman --noconfirm -S --needed --overwrite * \ base-devel ${TARGET_PREFIX}-toolchain ${TARGET_PREFIX}-lapack ${TARGET_PREFIX}-openblas ${TARGET_PREFIX}-pcre \ ${TARGET_PREFIX}-arpack ${TARGET_PREFIX}-curl ${TARGET_PREFIX}-cvode ${TARGET_PREFIX}-fftw ${TARGET_PREFIX}-fltk ${TARGET_PREFIX}-gl2ps ${TARGET_PREFIX}-glpk ${TARGET_PREFIX}-ghostscript ${TARGET_PREFIX}-gnuplot ${TARGET_PREFIX}-graphicsmagick ${TARGET_PREFIX}-hdf5 ${TARGET_PREFIX}-libsndfile ${TARGET_PREFIX}-portaudio ${TARGET_PREFIX}-qhull ${TARGET_PREFIX}-qrupdate ${TARGET_PREFIX}-qscintilla ${TARGET_PREFIX}-qt5 ${TARGET_PREFIX}-rapidjson ${TARGET_PREFIX}-suitesparse \ git ${TARGET_PREFIX}-ccache ${TARGET_PREFIX}-icoutils ${TARGET_PREFIX}-librsvg texinfo \ unzip zip - name: checkout repository uses: actions/checkout@v2 - name: prepare ccache # Create human readable timestamp id: ccache_cache_timestamp run: | echo "::set-output name=TIMESTAMP::$(date +"%Y-%m-%d_%H-%M-%S")" - name: setup ccache # Setup the github cache used to maintain the ccache from one job to the next uses: actions/cache@v2 with: path: C:/msys64/home/runneradmin/.ccache key: ccache:${{ matrix.os }}:${{ matrix.compiler }}:${{ matrix.target }}:${{ github.ref }}:${{ steps.ccache_cache_timestamp.outputs.timestamp }}:${{ github.sha }} restore-keys: | ccache:${{ matrix.os }}:${{ matrix.compiler }}:${{ matrix.target }}:${{ github.ref }} ccache:${{ matrix.os }}:${{ matrix.compiler }}:${{ matrix.target }} - name: configure ccache # Limit the maximum size and switch on compression to avoid exceeding the total disk or cache quota. run: | which ccache test -d ~/.ccache || mkdir -p ~/.ccache echo "max_size = 1.2G" > ~/.ccache/ccache.conf echo "compression = true" >> ~/.ccache/ccache.conf ccache -s # create ccache helper script for Fortran compiler echo -e '#!/bin/bash\nccache '$MINGW_PREFIX'/bin/'$F77' "$@"' > $MINGW_PREFIX/lib/ccache/bin/$F77 # prepend path to ccache helper scripts to PATH echo 'export PATH="$MINGW_PREFIX/lib/ccache/bin:$PATH"' >> ~/.bash_profile - name: bootstrap run: | ./bootstrap - name: configure # configure sometimes hangs while compiling 32bit Fortran. # It should take much less than 30 minutes. Cancel the step if it takes longer. timeout-minutes: 30 # PortAudio requires linking to libuuid. But its pkg-config file doesn't reference the path to that library. # FIXME: Fix building with Java support. Override JAVA_HOME for now. # FIXME: How do we get a working TeX environment in MSYS2? Disable building the documentation for now. # Linking with ncurses fails. Use termcap library instead. run: | which $CC echo $CC --version $CC --version which $CXX echo $CXX --version $CXX --version which $F77 echo $F77 --version $F77 --version mkdir .build cd .build && ../configure \ JAVA_HOME="" \ --disable-docs \ ac_cv_search_tputs=-ltermcap - name: build # Spawning processes seems to have a big overhead on this platform. Use a somewhat larger number of parallel processes to compensate for that. # MSYS2's "fltk-config" returns wrong LIBS. Override them for make. # See: https://github.com/msys2/MINGW-packages/issues/8806 # MSYS2's "portaudio" doesn't depend on uuid. But its package-config file still contains "-luuid". Override the flags for make. # See: https://github.com/msys2/MINGW-packages/issues/8805 run: | make -C ./.build all -j8 V=1 \ FLTK_LIBS="-lfltk_gl -lopengl32 -lglu32 -lfltk -lpthread" \ PORTAUDIO_LIBS="-lportaudio -ldsound -lsetupapi -lwinmm -lm -lole32" - name: ccache status continue-on-error: true run: ccache -s - name: install # Install Octave # Create symlinks to the libexec binaries in bin (or they won't find their libraries?) run: | make -C ./.build install V=1 ln -sf ${MINGW_PREFIX}/libexec/octave/7.0.0/exec/${TARGET_TRIPLET}/octave-gui.exe ${MINGW_PREFIX}/bin/octave-gui.exe ln -sf ${MINGW_PREFIX}/libexec/octave/7.0.0/exec/${TARGET_TRIPLET}/octave-svgconvert.exe ${MINGW_PREFIX}/bin/octave-svgconvert.exe - name: check # Continuing on error in this step means that jobs will be "green" even # if the test suite crashes. But if we don't continue, we'll loose the # ccache and other jobs will be cancelled, too. # It would be nice if we could mark the job as "yellow" (and continue) # in that case. # It would also be nice if we could analyze the test suite results # automatically. continue-on-error: true timeout-minutes: 60 # We cannot run "make check" in the MSYS2 shell because it will fail with backslash as a file separator. # Instead, use the CMD shell and set up the environment to pick up what we just built. shell: cmd env: MSYS_PATH: C:\msys64\${{ matrix.mingw-prefix }}\bin;C:\msys64\usr\bin MSYSTEM: ${{ matrix.msystem }} TERM: cygwin GNUTERM: wxt GS: gs.exe # Also, install .bat file for "makeinfo" so that it can be called from that shell. run: | set PATH=%MSYS_PATH%;%PATH% echo @echo off > C:/msys64/usr/bin/makeinfo.bat echo %%~d0 >> C:/msys64/usr/bin/makeinfo.bat echo cd "%%~dp0" >> C:/msys64/usr/bin/makeinfo.bat echo perl "%%~n0" %%* >> C:/msys64/usr/bin/makeinfo.bat rem Start Octave and run test suite octave-gui --eval "__run_test_suite__" - name: display test log continue-on-error: true # Displaying the log shouldn't take long. Cancel the step if it does. timeout-minutes: 5 run: cat fntests.log