diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index b1bcbc9f9dd1c379939fc26be69cbca9654b11b3..731b671b5ec74f5201892c60aae195419c5c0085 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -64,3 +64,11 @@ jobs:
             . ./prepare-and-run-flake8.sh pyopencl test
 
         displayName: 'Flake8'
+
+schedules:
+-
+    cron: "0 0 * * 0"
+    displayName: Weekly build
+    branches:
+        include:
+        - master
diff --git a/pyopencl/__init__.py b/pyopencl/__init__.py
index 683382d6bcb464540e62e0832c9a950a41b01d76..d44604e739db93b9b0c7fa9692fc175f83a96d09 100644
--- a/pyopencl/__init__.py
+++ b/pyopencl/__init__.py
@@ -381,6 +381,7 @@ class Program(object):
         if arg2 is None:
             # 1-argument form: program
             self._prg = arg1
+            self._context = self._prg.get_info(program_info.CONTEXT)
 
         elif arg3 is None:
             # 2-argument form: context, source
@@ -422,7 +423,6 @@ class Program(object):
                     stacklevel=3)
 
             self._prg = _cl._Program(self._context, self._source)
-            del self._context
             return self._prg
 
     def get_info(self, arg):