From 901ce0210cd67ea7ce9f695ca1c7cd671691a1b6 Mon Sep 17 00:00:00 2001
From: Andreas Kloeckner <inform@tiker.net>
Date: Sat, 2 Jul 2011 22:28:01 -0400
Subject: [PATCH] Fix cache handling of header dependencies. (reported by
 Sebastian Nowozin)

---
 pyopencl/cache.py    |  4 ++--
 test/test_wrapper.py | 11 +++++++++++
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/pyopencl/cache.py b/pyopencl/cache.py
index 3992c71a..a84413d1 100644
--- a/pyopencl/cache.py
+++ b/pyopencl/cache.py
@@ -156,7 +156,7 @@ def get_dependencies(src, include_path):
 
     _inner(src)
 
-    result = list(result.iteritems())
+    result = list((name,) + vals for name, vals in result.iteritems())
     result.sort()
 
     return result
@@ -294,7 +294,7 @@ def _create_built_program_from_source_cached(ctx, src, options, devices, cache_d
         from tempfile import gettempdir
         import getpass
         cache_dir = join(gettempdir(),
-                "pyopencl-compiler-cache-v1-uid%s-py%s" % (
+                "pyopencl-compiler-cache-v2-uid%s-py%s" % (
                     getpass.getuser(), ".".join(str(i) for i in sys.version_info)))
 
     # {{{ ensure cache directory exists
diff --git a/test/test_wrapper.py b/test/test_wrapper.py
index bce224f7..80c77457 100644
--- a/test/test_wrapper.py
+++ b/test/test_wrapper.py
@@ -339,6 +339,17 @@ class TestCL:
 
         assert (dest == x).all()
 
+    @pytools.test.mark_test.opencl
+    def test_header_dep_handling(self, ctx_getter):
+        context = ctx_getter()
+        queue = cl.CommandQueue(context)
+
+        kernel_src = """
+        #include <empty-header.h>
+        kernel void zonk() {}
+        """
+        cl.Program(context, kernel_src).build('-I.')
+        cl.Program(context, kernel_src).build('-I.')
 
 
 
-- 
GitLab