diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 3acb8453da3c6cfbe4e2153385bcc075f306a509..3f2cf879388c49137d98afca20fbe9eecdaa5530 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,288 +1,290 @@
-"Python 2.7 AMD CPU":
-  script:
-  - export PY_EXE=python2.7
-  - export PYOPENCL_TEST=amd:pu
-  - export EXTRA_INSTALL="pybind11 numpy mako"
-  - curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/build-and-test-py-project.sh
-  - ". ./build-and-test-py-project.sh"
-  allow_failure: true
-  tags:
-  - python2.7
-  - amd-cl-cpu
-  - opengl
-  except:
-  - tags
-  artifacts:
-    reports:
-      junit: test/pytest.xml
-
-Python 3 Intel CPU:
-  script:
-  - export PY_EXE=python3
-  - export PYOPENCL_TEST="intel(r):pu"
-  - export EXTRA_INSTALL="pybind11 numpy mako"
-  - curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/build-and-test-py-project.sh
-  - ". ./build-and-test-py-project.sh"
-  allow_failure: true
-  tags:
-  - python3
-  - intel-cl-cpu
-  except:
-  - tags
-  artifacts:
-    reports:
-      junit: test/pytest.xml
-
-Python 3 AMD CPU:
-  script:
-  - export PY_EXE=python3
-  - export PYOPENCL_TEST=amd:pu
-  - export EXTRA_INSTALL="pybind11 numpy mako"
-  - curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/build-and-test-py-project.sh
-  - ". ./build-and-test-py-project.sh"
-  allow_failure: true
-  tags:
-  - python3
-  - amd-cl-cpu
-  except:
-  - tags
-  artifacts:
-    reports:
-      junit: test/pytest.xml
-
-Python 3 Titan X:
-  script:
-  - export PY_EXE=python3
-  - export PYOPENCL_TEST=nvi:titan
-  - export EXTRA_INSTALL="pybind11 numpy mako"
-  - curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/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 Titan V:
-  script:
-  - export PY_EXE=python3
-  - export PYOPENCL_TEST=nvi:titan
-  - export EXTRA_INSTALL="pybind11 numpy mako"
-  - curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/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 K40:
-  script:
-  - export PY_EXE=python3
-  - export PYOPENCL_TEST=nvi:k40
-  - export EXTRA_INSTALL="pybind11 numpy mako"
-  - curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/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:
-  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 -k https://gitlab.tiker.net/inducer/ci-support/raw/master/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 2.7 POCL:
-  script:
-  - export PY_EXE=python2.7
-  - export PYOPENCL_TEST=portable
-  - export EXTRA_INSTALL="pybind11 numpy mako"
-  - curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/build-and-test-py-project.sh
-  - ". ./build-and-test-py-project.sh"
-  tags:
-  - python2.7
-  - pocl
-  except:
-  - tags
-  artifacts:
-    reports:
-      junit: test/pytest.xml
-
-Python 3 POCL:
-  script:
-  - export PY_EXE=python3
-  - export PYOPENCL_TEST=portable
-  - export EXTRA_INSTALL="pybind11 numpy mako"
-  - curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/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
-  - export EXTRA_INSTALL="pybind11 numpy mako"
-  - curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/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:
-  script:
-  - export PY_EXE=python3
-  - export PYOPENCL_TEST=portable
-  - export EXTRA_INSTALL="pybind11 numpy mako"
-  - curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/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 (+GL and special functions):
-  script:
-  - export PY_EXE=python3
-  - export PYOPENCL_TEST=portable
-  - export EXTRA_INSTALL="pybind11 numpy mako scipy pyfmmlib"
-  - echo "CL_ENABLE_GL = True" > siteconf.py
-  - curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/build-and-test-py-project.sh
-  - ". ./build-and-test-py-project.sh"
-  tags:
-  - python3
-  - pocl
-  except:
-  - tags
-  artifacts:
-    reports:
-      junit: test/pytest.xml
-
-Python 2.7 Apple:
-  script:
-  - export PY_EXE=python2.7
-  - export PYOPENCL_TEST=app:cpu
-  - export EXTRA_INSTALL="pybind11 numpy mako"
-  - export PKG_CONFIG_PATH=/usr/local/opt/libffi/lib/pkgconfig
-  - curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/build-and-test-py-project.sh
-  - ". ./build-and-test-py-project.sh"
-  tags:
-  - python2.7
-  - apple
-  except:
-  - tags
-  artifacts:
-    reports:
-      junit: test/pytest.xml
-
-Python 3 Conda Apple:
-  script:
-  - CONDA_ENVIRONMENT=.test-conda-env-py3.yml
-  - export CC=gcc
-  - curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/build-and-test-py-project-within-miniconda.sh
-  - ". ./build-and-test-py-project-within-miniconda.sh"
-  tags:
-  - apple
-  except:
-  - tags
-  artifacts:
-    reports:
-      junit: test/pytest.xml
-
-PyPy POCL:
-  script:
-  - export PY_EXE=pypy
-  - export PYOPENCL_TEST=portable
-
-  # https://github.com/pybind/pybind11/pull/1494
-  - export EXTRA_INSTALL="git+https://github.com/inducer/pybind11 numpy mako"
-
-  - export NO_DOCTESTS=1
-  - curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/build-and-test-py-project.sh
-  - ". ./build-and-test-py-project.sh"
-
-  tags:
-  - pypy
-  - pocl
-  except:
-  - tags
-  artifacts:
-    reports:
-      junit: test/pytest.xml
-
+# "Python 2.7 AMD CPU":
+#   script:
+#   - export PY_EXE=python2.7
+#   - export PYOPENCL_TEST=amd:pu
+#   - export EXTRA_INSTALL="pybind11 numpy mako"
+#   - curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/build-and-test-py-project.sh
+#   - ". ./build-and-test-py-project.sh"
+#   allow_failure: true
+#   tags:
+#   - python2.7
+#   - amd-cl-cpu
+#   - opengl
+#   except:
+#   - tags
+#   artifacts:
+#     reports:
+#       junit: test/pytest.xml
+# 
+# Python 3 Intel CPU:
+#   script:
+#   - export PY_EXE=python3
+#   - export PYOPENCL_TEST="intel(r):pu"
+#   - export EXTRA_INSTALL="pybind11 numpy mako"
+#   - curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/build-and-test-py-project.sh
+#   - ". ./build-and-test-py-project.sh"
+#   allow_failure: true
+#   tags:
+#   - python3
+#   - intel-cl-cpu
+#   except:
+#   - tags
+#   artifacts:
+#     reports:
+#       junit: test/pytest.xml
+# 
+# Python 3 AMD CPU:
+#   script:
+#   - export PY_EXE=python3
+#   - export PYOPENCL_TEST=amd:pu
+#   - export EXTRA_INSTALL="pybind11 numpy mako"
+#   - curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/build-and-test-py-project.sh
+#   - ". ./build-and-test-py-project.sh"
+#   allow_failure: true
+#   tags:
+#   - python3
+#   - amd-cl-cpu
+#   except:
+#   - tags
+#   artifacts:
+#     reports:
+#       junit: test/pytest.xml
+# 
+# Python 3 Titan X:
+#   script:
+#   - export PY_EXE=python3
+#   - export PYOPENCL_TEST=nvi:titan
+#   - export EXTRA_INSTALL="pybind11 numpy mako"
+#   - curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/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 Titan V:
+#   script:
+#   - export PY_EXE=python3
+#   - export PYOPENCL_TEST=nvi:titan
+#   - export EXTRA_INSTALL="pybind11 numpy mako"
+#   - curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/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 K40:
+#   script:
+#   - export PY_EXE=python3
+#   - export PYOPENCL_TEST=nvi:k40
+#   - export EXTRA_INSTALL="pybind11 numpy mako"
+#   - curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/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:
+#   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 -k https://gitlab.tiker.net/inducer/ci-support/raw/master/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 2.7 POCL:
+#   script:
+#   - export PY_EXE=python2.7
+#   - export PYOPENCL_TEST=portable
+#   - export EXTRA_INSTALL="pybind11 numpy mako"
+#   - curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/build-and-test-py-project.sh
+#   - ". ./build-and-test-py-project.sh"
+#   tags:
+#   - python2.7
+#   - pocl
+#   except:
+#   - tags
+#   artifacts:
+#     reports:
+#       junit: test/pytest.xml
+# 
+# Python 3 POCL:
+#   script:
+#   - export PY_EXE=python3
+#   - export PYOPENCL_TEST=portable
+#   - export EXTRA_INSTALL="pybind11 numpy mako"
+#   - curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/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
+#   - export EXTRA_INSTALL="pybind11 numpy mako"
+#   - curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/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:
+#   script:
+#   - export PY_EXE=python3
+#   - export PYOPENCL_TEST=portable
+#   - export EXTRA_INSTALL="pybind11 numpy mako"
+#   - curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/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 (+GL and special functions):
+#   script:
+#   - export PY_EXE=python3
+#   - export PYOPENCL_TEST=portable
+#   - export EXTRA_INSTALL="pybind11 numpy mako scipy pyfmmlib"
+#   - echo "CL_ENABLE_GL = True" > siteconf.py
+#   - curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/build-and-test-py-project.sh
+#   - ". ./build-and-test-py-project.sh"
+#   tags:
+#   - python3
+#   - pocl
+#   except:
+#   - tags
+#   artifacts:
+#     reports:
+#       junit: test/pytest.xml
+# 
+# Python 2.7 Apple:
+#   script:
+#   - export PY_EXE=python2.7
+#   - export PYOPENCL_TEST=app:cpu
+#   - export EXTRA_INSTALL="pybind11 numpy mako"
+#   - export PKG_CONFIG_PATH=/usr/local/opt/libffi/lib/pkgconfig
+#   - curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/build-and-test-py-project.sh
+#   - ". ./build-and-test-py-project.sh"
+#   tags:
+#   - python2.7
+#   - apple
+#   except:
+#   - tags
+#   artifacts:
+#     reports:
+#       junit: test/pytest.xml
+# 
+# Python 3 Conda Apple:
+#   script:
+#   - CONDA_ENVIRONMENT=.test-conda-env-py3.yml
+#   - export CC=gcc
+#   - curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/build-and-test-py-project-within-miniconda.sh
+#   - ". ./build-and-test-py-project-within-miniconda.sh"
+#   tags:
+#   - apple
+#   except:
+#   - tags
+#   artifacts:
+#     reports:
+#       junit: test/pytest.xml
+# 
+# PyPy POCL:
+#   script:
+#   - export PY_EXE=pypy
+#   - export PYOPENCL_TEST=portable
+# 
+#   # https://github.com/pybind/pybind11/pull/1494
+#   - export EXTRA_INSTALL="git+https://github.com/inducer/pybind11 numpy mako"
+# 
+#   - export NO_DOCTESTS=1
+#   - curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/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"
+  # Pin numpy to 1.15 because of https://github.com/PyCQA/pylint/issues/2721
+  - EXTRA_INSTALL="pybind11 numpy==1.15 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 -k https://gitlab.tiker.net/inducer/ci-support/raw/master/prepare-and-run-pylint.sh
+  - curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/pylint-flexible-config/prepare-and-run-pylint.sh
   - ". ./prepare-and-run-pylint.sh pyopencl test/test_*.py"
   allow_failure: true
   tags:
   - python3
   except:
   - tags
-
-Documentation:
-  script:
-  - EXTRA_INSTALL="pybind11 numpy mako"
-  - curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/build-docs.sh
-  - ". ./build-docs.sh"
-  tags:
-  - linux
-  only:
-  - master
-
-Flake8:
-  script:
-  - curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/prepare-and-run-flake8.sh
-  - ". ./prepare-and-run-flake8.sh pyopencl test"
-  tags:
-  - python3
-  except:
-  - tags
+# 
+# Documentation:
+#   script:
+#   - EXTRA_INSTALL="pybind11 numpy mako"
+#   - curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/build-docs.sh
+#   - ". ./build-docs.sh"
+#   tags:
+#   - linux
+#   only:
+#   - master
+# 
+# Flake8:
+#   script:
+#   - curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/prepare-and-run-flake8.sh
+#   - ". ./prepare-and-run-flake8.sh pyopencl test"
+#   tags:
+#   - python3
+#   except:
+#   - tags
+#