Python 3 Intel CPU:
  script:
  - export PY_EXE=python3
  - source /opt/enable-intel-cl.sh
  - export PYOPENCL_TEST="intel(r):pu"
  - export EXTRA_INSTALL="pybind11 numpy mako"
  - curl -L -O https://gitlab.tiker.net/inducer/ci-support/raw/main/build-and-test-py-project.sh
  - ". ./build-and-test-py-project.sh"
  tags:
  - python3
  - intel-cl-cpu
  except:
  - tags
  artifacts:
    reports:
      junit: test/pytest.xml

Python 3 Nvidia Titan X:
  script:
  - export PY_EXE=python3
  - export PYOPENCL_TEST=nvi:titan
  - export EXTRA_INSTALL="pybind11 numpy mako"
  - curl -L -O https://gitlab.tiker.net/inducer/ci-support/raw/main/build-and-test-py-project.sh
  - ". ./build-and-test-py-project.sh"
  tags:
  - python3
  - nvidia-titan-x
  except:
  - tags
  artifacts:
    reports:
      junit: test/pytest.xml

Python 3 Nvidia Titan V:
  script:
  - export PY_EXE=python3
  - export PYOPENCL_TEST=nvi:titan
  - export EXTRA_INSTALL="pybind11 numpy mako"
  - curl -L -O https://gitlab.tiker.net/inducer/ci-support/raw/main/build-and-test-py-project.sh
  - ". ./build-and-test-py-project.sh"
  tags:
  - python3
  - nvidia-titan-v
  except:
  - tags
  artifacts:
    reports:
      junit: test/pytest.xml

Python 3 Nvidia K40:
  script:
  - export PY_EXE=python3
  - export PYOPENCL_TEST=nvi:k40
  - export EXTRA_INSTALL="pybind11 numpy mako"
  - curl -L -O https://gitlab.tiker.net/inducer/ci-support/raw/main/build-and-test-py-project.sh
  - ". ./build-and-test-py-project.sh"
  tags:
  - python3
  - nvidia-k40
  except:
  - tags
  artifacts:
    reports:
      junit: test/pytest.xml

Python 3 AMD GPU:
  allow_failure: true
  script:
  - export PY_EXE=python3
  - 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://gitlab.tiker.net/inducer/ci-support/raw/main/build-and-test-py-project.sh
  - ". ./build-and-test-py-project.sh"
  tags:
  - python3
  - amd-fiji
  except:
  - tags
  artifacts:
    reports:
      junit: test/pytest.xml

Python 3 POCL:
  script:
  - export PY_EXE=python3
  - export PYOPENCL_TEST=portable:pthread
  - export EXTRA_INSTALL="pybind11 numpy mako"
  - curl -L -O https://gitlab.tiker.net/inducer/ci-support/raw/main/build-and-test-py-project.sh
  - ". ./build-and-test-py-project.sh"
  tags:
  - python3
  - pocl
  except:
  - tags
  artifacts:
    reports:
      junit: test/pytest.xml

Python 3 POCL CL 1.1:
  script:
  - export PY_EXE=python3
  - export PYOPENCL_TEST=portable:pthread
  - export EXTRA_INSTALL="pybind11 numpy mako"
  - curl -L -O https://gitlab.tiker.net/inducer/ci-support/raw/main/build-and-test-py-project.sh
  - echo "CL_PRETEND_VERSION = '1.1'" > siteconf.py
  - ". ./build-and-test-py-project.sh"
  tags:
  - python3
  - pocl
  except:
  - tags
  artifacts:
    reports:
      junit: test/pytest.xml

Python 3 POCL K40:
  script:
  - export PY_EXE=python3
  - export PYOPENCL_TEST=portable:k40
  - export EXTRA_INSTALL="pybind11 numpy mako"
  - curl -L -O https://gitlab.tiker.net/inducer/ci-support/raw/main/build-and-test-py-project.sh
  - ". ./build-and-test-py-project.sh"
  tags:
  - python3
  - pocl
  - nvidia-k40
  except:
  - tags
  artifacts:
    reports:
      junit: test/pytest.xml

Python 3 POCL Titan V:
  script:
  - export PY_EXE=python3
  - export PYOPENCL_TEST=portable:titan
  - export EXTRA_INSTALL="pybind11 numpy mako"
  - curl -L -O https://gitlab.tiker.net/inducer/ci-support/raw/main/build-and-test-py-project.sh
  - ". ./build-and-test-py-project.sh"
  tags:
  - python3
  - pocl
  - nvidia-titan-v
  except:
  - tags
  artifacts:
    reports:
      junit: test/pytest.xml

Python 3 POCL (+GL and special functions):
  script:
  - export PY_EXE=python3
  - export PYOPENCL_TEST=portable:pthread
  - export EXTRA_INSTALL="pybind11 numpy mako scipy pyfmmlib"
  - echo "CL_ENABLE_GL = True" > siteconf.py
  - curl -L -O https://gitlab.tiker.net/inducer/ci-support/raw/main/build-and-test-py-project.sh
  - ". ./build-and-test-py-project.sh"
  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"

    CONDA_ENVIRONMENT=.test-conda-env.yml
    grep -v ocl-icd .test-conda-env-py3.yml > $CONDA_ENVIRONMENT
    export CC=gcc
    curl -L -O https://gitlab.tiker.net/inducer/ci-support/raw/main/build-and-test-py-project-within-miniconda.sh
    ./configure.py --cxxflags= --ldflags= --cl-libname=OpenCL
    . ./build-and-test-py-project-within-miniconda.sh
  tags:
  - apple
  except:
  - tags
  artifacts:
    reports:
      junit: test/pytest.xml

PyPy3 POCL:
  script:
  - export PY_EXE=pypy3
  - export PYOPENCL_TEST=portable:pthread

  # 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"

  - export NO_DOCTESTS=1
  - curl -L -O https://gitlab.tiker.net/inducer/ci-support/raw/main/build-and-test-py-project.sh
  - ". ./build-and-test-py-project.sh"

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

Pylint:
  script:
  - EXTRA_INSTALL="pybind11 numpy mako matplotlib PyOpenGl IPython"
  - export PY_EXE=python3
  # After installation, PyOpenCL cannot be used from the source directory due
  # to package shadowing. To work around this, build in editable mode so there
  # is only one copy of everything.
  - PROJECT_INSTALL_FLAGS="--editable"
  - curl -L -O https://gitlab.tiker.net/inducer/ci-support/raw/main/prepare-and-run-pylint.sh
  - . ./prepare-and-run-pylint.sh "$CI_PROJECT_NAME" test/test_*.py
  tags:
  - python3
  except:
  - tags

Examples:
  script: |
    curl -L -O https://tiker.net/ci-support-v0
    . ci-support-v0
    EXTRA_INSTALL="pillow cgen mako imageio"
    build_py_project_in_venv
    (cd examples; rm -f gl_*)
    run_examples --no-require-main
  except:
  - tags
  tags:
  - python3
  - pocl

Documentation:
  script:
  - EXTRA_INSTALL="pybind11 numpy mako"
  - curl -L -O https://gitlab.tiker.net/inducer/ci-support/raw/main/build-docs.sh
  - ". ./build-docs.sh"
  tags:
  - linux

Flake8:
  script:
  - curl -L -O https://gitlab.tiker.net/inducer/ci-support/raw/main/prepare-and-run-flake8.sh
  - . ./prepare-and-run-flake8.sh "$CI_PROJECT_NAME" test examples
  tags:
  - python3
  except:
  - tags

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

    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