diff --git a/.github/workflows/custom-branch.yml b/.github/workflows/custom-branch.yml new file mode 100644 index 00000000..f19df10e --- /dev/null +++ b/.github/workflows/custom-branch.yml @@ -0,0 +1,90 @@ +name: Run tests on custom libsemigroups branch +on: + workflow_dispatch: + inputs: + branch: + description: "The branch of libsemigroups to clone" + required: true + type: string + fork: + description: "The fork of libsemigroups to clone" + required: false + type: string + default: libsemigroups/libsemigroups + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + run-tests: + name: "${{ inputs.branch }}, ${{ matrix.os }}, Python 3.13" + strategy: + fail-fast: false + matrix: + os: ["ubuntu-latest", "macOS-latest"] + include: + - os: "ubuntu-latest" + compiler: "ccache g++" + - os: "macOS-latest" + compiler: "ccache clang++" + runs-on: ${{ matrix.os }} + timeout-minutes: 15 + steps: + - uses: actions/checkout@v4 + - name: "Setup ccache . . ." + uses: Chocobo1/setup-ccache-action@v1 + with: + update_packager_index: false + install_ccache: true + - name: "Create micromamba environment . . ." + uses: mamba-org/setup-micromamba@v2 + with: + environment-name: libsemigroups + cache-environment: true + create-args: >- + python=3.13 + pip + fmt + eigen + - name: "Set environment variables . . ." + run: | + echo "PKG_CONFIG_PATH=$MAMBA_ROOT_PREFIX/envs/libsemigroups/lib/pkgconfig:$MAMBA_ROOT_PREFIX/envs/libsemigroups/share/pkgconfig:/usr/local/lib/pkgconfig" >> $GITHUB_ENV + echo "LD_LIBRARY_PATH=$MAMBA_ROOT_PREFIX/envs/libsemigroups/lib:/usr/local/lib:$LD_LIBRARY_PATH" >> $GITHUB_ENV + echo "PATH=$MAMBA_ROOT_PREFIX/envs/libsemigroups/bin:$PATH" >> $GITHUB_ENV + - name: "Check Python version . . ." + run: | + python --version + pip --version + - name: "Install make requirements (Mac only) . . ." + if: ${{ matrix.os == 'macOS-latest' }} + run: brew install autoconf automake libtool + - name: "Install libsemigroups . . ." + run: | + git clone --depth 1 --branch ${{ inputs.branch }} https://github.com/${{ inputs.fork }}.git + cd libsemigroups + ./autogen.sh + ./configure CXX="${{ matrix.compiler }}" CXXFLAGS="-O2 -g" --disable-hpcombi --with-external-fmt --with-external-eigen + sudo make install -j8 + ccache -s + - name: "Install requirements libsemigroups . . ." + run: pip install -r requirements.txt + - name: "Pip install libsemigroups_pybind11 . . ." + run: | + CXX="${{ matrix.compiler }}" pip install . -v + ccache -s + - name: "Run tests . . ." + run: | + python -m pytest -vv tests/test_*.py + - name: "Run doc tests . . ." + run: | + etc/make-doc.sh # so that all files are generated! + cd docs + python -m sphinx -b doctest -d _build/doctrees source _build/doctest + - name: "Pip install pylint + cpplint . . ." + run: | + pip install pylint cpplint + - name: "Run pylint and cpplint . . ." + run: | + python -m pylint setup.py tests/*.py libsemigroups_pybind11/*.py + python -m cpplint src/*.hpp src/*.cpp diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 1dfaa4b9..b9d43a1e 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -6,55 +6,51 @@ concurrency: cancel-in-progress: true jobs: - ubuntu: + conda-version: + name: "Conda, ${{ matrix.os }}, Python ${{ matrix.python_version }}" strategy: fail-fast: false matrix: python_version: ["3.9", "3.10", "3.11", "3.12", "3.13"] - runs-on: ubuntu-latest + os: ["ubuntu-latest", "macOS-latest"] + include: + - os: "ubuntu-latest" + compiler: "ccache g++" + - os: "macOS-latest" + compiler: "ccache clang++" + runs-on: ${{ matrix.os }} timeout-minutes: 15 - defaults: - run: - shell: bash -l {0} - env: - CXX: "ccache g++" - CXXFLAGS: "-O2 -g" steps: - uses: actions/checkout@v4 - - name: "Create micromamba environment" - uses: mamba-org/setup-micromamba@v1 + - name: "Setup ccache . . ." + uses: Chocobo1/setup-ccache-action@v1 + with: + update_packager_index: false + install_ccache: true + - name: "Create micromamba environment . . ." + uses: mamba-org/setup-micromamba@v2 with: environment-name: libsemigroups + cache-environment: true create-args: >- python=${{ matrix.python_version }} - fmt + pip + libsemigroups - name: "Set environment variables . . ." run: | echo "PKG_CONFIG_PATH=$MAMBA_ROOT_PREFIX/envs/libsemigroups/lib/pkgconfig:$MAMBA_ROOT_PREFIX/envs/libsemigroups/share/pkgconfig:/usr/local/lib/pkgconfig" >> $GITHUB_ENV - echo "LD_LIBRARY_PATH=$MAMBA_ROOT_PREFIX/envs/libsemigroups/lib:/usr/local/lib" >> $GITHUB_ENV - - name: "Setup ccache . . ." - uses: Chocobo1/setup-ccache-action@v1 - with: - update_packager_index: false - install_ccache: true - - name: "Install libsemigroups . . ." - run: | - git clone --depth 1 --branch stable-3.0 https://github.com/libsemigroups/libsemigroups.git - cd libsemigroups - ./autogen.sh && ./configure CXX="$CXX" CXXFLAGS="$CXXFLAGS" --disable-hpcombi --with-external-fmt && sudo make install -j8 - ccache -s - - name: "Python version . . ." + echo "PATH=$MAMBA_ROOT_PREFIX/envs/libsemigroups/bin:$PATH" >> $GITHUB_ENV + - name: "Check Python version . . ." run: | python --version - pip3 --version - - name: "Pip installing requirements.txt . . ." - run: | - pip3 install -r requirements.txt - - name: "Pip3 installing libsemigroups_pybind11 . . ." + pip --version + - name: "Install requirements . . ." + run: pip install -r requirements.txt + - name: "Pip install libsemigroups_pybind11 . . ." run: | - echo $PKG_CONFIG_PATH - pip3 install . -v - - name: "python -m pytest -vv tests/test_*.py . . ." + CXX="${{ matrix.compiler }}" pip install . -v + ccache -s + - name: "Run tests . . ." run: | python -m pytest -vv tests/test_*.py - name: "Run doc tests . . ." @@ -62,64 +58,70 @@ jobs: etc/make-doc.sh # so that all files are generated! cd docs python -m sphinx -b doctest -d _build/doctrees source _build/doctest - - name: "Pip3 installing pylint + cpplint . . ." + - name: "Pip install pylint + cpplint . . ." run: | pip3 install pylint cpplint - - name: "Running pylint and cpplint . . ." + - name: "Run pylint and cpplint . . ." run: | python -m pylint setup.py tests/*.py libsemigroups_pybind11/*.py python -m cpplint src/*.hpp src/*.cpp - macosx: + main-branch: + name: "Main, ${{ matrix.os }}, Python 3.13" strategy: fail-fast: false matrix: - python_version: ["3.9", "3.10", "3.11", "3.12", "3.13"] - runs-on: macOS-latest + os: ["ubuntu-latest", "macOS-latest"] + include: + - os: "ubuntu-latest" + compiler: "ccache g++" + - os: "macOS-latest" + compiler: "ccache clang++" + runs-on: ${{ matrix.os }} timeout-minutes: 15 - env: - CXX: "ccache clang++" - CXXFLAGS: "-O2 -g" steps: - uses: actions/checkout@v4 - - name: "Create micromamba environment" - uses: mamba-org/setup-micromamba@v1 + - name: "Setup ccache . . ." + uses: Chocobo1/setup-ccache-action@v1 + with: + update_packager_index: false + install_ccache: true + - name: "Create micromamba environment . . ." + uses: mamba-org/setup-micromamba@v2 with: environment-name: libsemigroups + cache-environment: true create-args: >- - python=${{ matrix.python_version }} + python=3.13 + pip fmt + eigen - name: "Set environment variables . . ." run: | echo "PKG_CONFIG_PATH=$MAMBA_ROOT_PREFIX/envs/libsemigroups/lib/pkgconfig:$MAMBA_ROOT_PREFIX/envs/libsemigroups/share/pkgconfig:/usr/local/lib/pkgconfig" >> $GITHUB_ENV - echo "LD_LIBRARY_PATH=$MAMBA_ROOT_PREFIX/envs/libsemigroups/lib:/usr/local/lib" >> $GITHUB_ENV + echo "LD_LIBRARY_PATH=$MAMBA_ROOT_PREFIX/envs/libsemigroups/lib:/usr/local/lib:$LD_LIBRARY_PATH" >> $GITHUB_ENV echo "PATH=$MAMBA_ROOT_PREFIX/envs/libsemigroups/bin:$PATH" >> $GITHUB_ENV - - name: "Install libsemigroups dependencies . . ." + - name: "Check Python version . . ." + run: | + python --version + pip --version + - name: "Install make requirements (Mac only) . . ." + if: ${{ matrix.os == 'macOS-latest' }} run: brew install autoconf automake libtool - - name: "Setup ccache . . ." - uses: Chocobo1/setup-ccache-action@v1 - with: - update_packager_index: false - install_ccache: true - name: "Install libsemigroups . . ." run: | - git clone --depth 1 --branch stable-3.0 https://github.com/libsemigroups/libsemigroups.git + git clone --depth 1 --branch main https://github.com/libsemigroups/libsemigroups.git cd libsemigroups - ./autogen.sh - ./configure CXX="$CXX" CXXFLAGS="$CXXFLAGS" --disable-hpcombi --with-external-fmt + ./autogen.sh + ./configure CXX="${{ matrix.compiler }}" CXXFLAGS="-O2 -g" --disable-hpcombi --with-external-fmt --with-external-eigen sudo make install -j8 ccache -s - - name: "Python version . . ." + - name: "Install requirements libsemigroups . . ." + run: pip install -r requirements.txt + - name: "Pip install libsemigroups_pybind11 . . ." run: | - python --version - pip3 --version - - name: "Pip installing requirements.txt . . ." - run: | - pip3 install -r requirements.txt - - name: "Pip3 installing libsemigroups_pybind11 . . ." - run: | - echo $PKG_CONFIG_PATH - pip3 install . -v - - name: "python -m pytest -vv tests/test_*.py . . ." + CXX="${{ matrix.compiler }}" pip install . -v + ccache -s + - name: "Run tests . . ." run: | python -m pytest -vv tests/test_*.py - name: "Run doc tests . . ." @@ -127,10 +129,10 @@ jobs: etc/make-doc.sh # so that all files are generated! cd docs python -m sphinx -b doctest -d _build/doctrees source _build/doctest - - name: "Pip3 installing pylint + cpplint . . ." + - name: "Pip install pylint + cpplint . . ." run: | - pip3 install pylint cpplint - - name: "Running pylint and cpplint . . ." + pip install pylint cpplint + - name: "Run pylint and cpplint . . ." run: | python -m pylint setup.py tests/*.py libsemigroups_pybind11/*.py python -m cpplint src/*.hpp src/*.cpp