Python 3 Intel CPU:
  script: |
    source /opt/enable-intel-cl.sh
    export PYOPENCL_TEST="intel(r):pu"
    export EXTRA_INSTALL="pybind11 numpy mako"

    curl -L -O https://tiker.net/ci-support-v0
    . ci-support-v0
    build_py_project_in_venv
    test_py_project
  tags:
  - python3
  - intel-cl-cpu
  except:
  - tags
  artifacts:
    reports:
      junit: test/pytest.xml

Python 3 Nvidia Titan X:
  script: |
    export PYOPENCL_TEST=nvi:titan
    export EXTRA_INSTALL="pybind11 numpy mako"

    curl -L -O https://tiker.net/ci-support-v0
    . ci-support-v0
    build_py_project_in_venv
    test_py_project
  tags:
  - python3
  - nvidia-titan-x
  except:
  - tags
  artifacts:
    reports:
      junit: test/pytest.xml

Python 3 Nvidia Titan V:
  script: |
    export PYOPENCL_TEST=nvi:titan
    export EXTRA_INSTALL="pybind11 numpy mako"

    curl -L -O https://tiker.net/ci-support-v0
    . ci-support-v0
    build_py_project_in_venv
    test_py_project
  tags:
  - python3
  - nvidia-titan-v
  except:
  - tags
  artifacts:
    reports:
      junit: test/pytest.xml

Python 3 Nvidia K40:
  script: |
    export PYOPENCL_TEST=nvi:k40
    export EXTRA_INSTALL="pybind11 numpy mako"

    curl -L -O https://tiker.net/ci-support-v0
    . ci-support-v0
    build_py_project_in_venv
    test_py_project
  tags:
  - python3
  - nvidia-k40
  except:
  - tags
  artifacts:
    reports:
      junit: test/pytest.xml

Python 3 AMD GPU:
  allow_failure: true
  script: |
    export PYOPENCL_TEST=amd:gfx803
    export EXTRA_INSTALL="pybind11 numpy mako"

    # https://andreask.cs.illinois.edu/MachineShop/UserNotes
    export OCL_ICD_VENDORS=/etc/OpenCLwithAMD/vendors

    curl -L -O https://tiker.net/ci-support-v0
    . ci-support-v0
    build_py_project_in_venv
    test_py_project
  tags:
  - python3
  - amd-fiji
  except:
  - tags
  artifacts:
    reports:
      junit: test/pytest.xml

Python 3 POCL:
  script: |
    export PYOPENCL_TEST=portable:pthread
    export EXTRA_INSTALL="pybind11 numpy mako"

    curl -L -O https://tiker.net/ci-support-v0
    . ci-support-v0
    build_py_project_in_venv
    test_py_project
  tags:
  - python3
  - pocl
  except:
  - tags
  artifacts:
    reports:
      junit: test/pytest.xml

Python 3 POCL CL 1.1:
  script: |
    export PYOPENCL_TEST=portable:pthread
    export EXTRA_INSTALL="pybind11 numpy mako"
    echo "CL_PRETEND_VERSION = '1.1'" > siteconf.py

    curl -L -O https://tiker.net/ci-support-v0
    . ci-support-v0
    build_py_project_in_venv
    test_py_project
  tags:
  - python3
  - pocl
  except:
  - tags
  artifacts:
    reports:
      junit: test/pytest.xml

Python 3 POCL K40:
  script: |
    export PYOPENCL_TEST=portable:k40
    export EXTRA_INSTALL="pybind11 numpy mako"

    curl -L -O https://tiker.net/ci-support-v0
    . ci-support-v0
    build_py_project_in_venv
    test_py_project
  tags:
  - python3
  - pocl
  - nvidia-k40
  except:
  - tags
  artifacts:
    reports:
      junit: test/pytest.xml

Python 3 POCL Titan V:
  script: |
    export PYOPENCL_TEST=portable:titan
    export EXTRA_INSTALL="pybind11 numpy mako"

    curl -L -O https://tiker.net/ci-support-v0
    . ci-support-v0
    build_py_project_in_venv
    test_py_project
  tags:
  - python3
  - pocl
  - nvidia-titan-v
  except:
  - tags
  artifacts:
    reports:
      junit: test/pytest.xml

Python 3 POCL (+GL and special functions):
  script: |
    export PYOPENCL_TEST=portable:pthread
    export EXTRA_INSTALL="pybind11 numpy mako scipy pyfmmlib"
    echo "CL_ENABLE_GL = True" > siteconf.py

    curl -L -O https://tiker.net/ci-support-v0
    . ci-support-v0
    build_py_project_in_venv
    test_py_project
  tags:
  - python3
  - pocl
  except:
  - tags
  artifacts:
    reports:
      junit: test/pytest.xml

Python 3 Conda Apple:
  script: |
    # That's where homebrew lives, and it has the curl that doesn't cause
    # cert errors from the OS being too old.
    export PATH="/usr/local/opt/curl/bin:$PATH"

    export CONDA_ENVIRONMENT=.test-conda-env.yml
    grep -v ocl-icd .test-conda-env-py3.yml > $CONDA_ENVIRONMENT
    export CC=gcc

    curl -L -O https://tiker.net/ci-support-v0
    . ci-support-v0
    ./configure.py --cxxflags= --ldflags= --cl-libname=OpenCL
    build_py_project_in_conda_env
    test_py_project
  tags:
  - apple
  except:
  - tags
  artifacts:
    reports:
      junit: test/pytest.xml

PyPy3 POCL:
  script: |
    export PY_EXE=pypy3
    export PYOPENCL_TEST=portable:pthread
    export NO_DOCTESTS=1

    # On pypy, this seems to install old versions from the package index
    # independently of whether newer ones are already present.
    rm -f pyproject.toml
    export EXTRA_INSTALL="pybind11 numpy mako"

    curl -L -O https://tiker.net/ci-support-v0
    . ci-support-v0
    build_py_project_in_venv
    test_py_project

  tags:
  - pypy
  - pocl
  except:
  - tags
  artifacts:
    reports:
      junit: test/pytest.xml

Flake8:
  script: |
    curl -L -O https://tiker.net/ci-support-v0
    . ci-support-v0
    build_py_project_in_venv
    install_and_run_flake8 "$(get_proj_name)" examples/*.py test/*.py
  tags:
  - python3
  except:
  - tags

Pylint:
  script: |
    export EXTRA_INSTALL="pybind11 numpy mako matplotlib PyOpenGl IPython"

    curl -L -O https://tiker.net/ci-support-v0
    . ci-support-v0
    build_py_project_in_venv
    run_pylint "$(get_proj_name)" test/*.py
  tags:
  - python3
  except:
  - tags

Mypy:
  script: |
    export EXTRA_INSTALL="pybind11 numpy mako mypy types-setuptools"

    curl -L -O https://tiker.net/ci-support-v0
    . ci-support-v0
    build_py_project_in_venv
    python -m mypy --show-error-codes pyopencl test
  tags:
  - python3
  except:
  - tags

Documentation:
  script: |
    export EXTRA_INSTALL="pybind11 numpy mako"

    curl -L -O https://tiker.net/ci-support-v0
    . ci-support-v0
    build_py_project_in_venv
    build_docs
  tags:
  - linux

Examples:
  script: |
    export EXTRA_INSTALL="pillow cgen mako imageio"

    curl -L -O https://tiker.net/ci-support-v0
    . ci-support-v0
    build_py_project_in_venv
    (cd examples; rm -f gl_*)
    run_examples --no-require-main
  except:
  - tags
  tags:
  - python3
  - pocl

Downstream:
  parallel:
    matrix:
    - DOWNSTREAM_PROJECT: [loopy, boxtree, meshmode]
  tags:
  - large-node
  - "docker-runner"
  script: |
    curl -L -O https://tiker.net/ci-support-v0
    . ci-support-v0

    export TEST_ENV_ROOT="$(pwd)/$DOWNSTREAM_PROJECT/.miniforge3/envs/testing"
    ./configure.py --cl-inc-dir="$TEST_ENV_ROOT/include" --cl-lib-dir="$TEST_ENV_ROOT/lib"
    git add -f siteconf.py

    prepare_downstream_build "https://github.com/inducer/$DOWNSTREAM_PROJECT.git"
    sed -i 's/pyopencl/ocl-icd/' .test-conda-env-py3.yml
    build_py_project_in_conda_env
    test_py_project

# vim: sw=2
