about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/libstore/build.cc26
1 files changed, 16 insertions, 10 deletions
diff --git a/src/libstore/build.cc b/src/libstore/build.cc
index 40927c063267..5d6fff4e349f 100644
--- a/src/libstore/build.cc
+++ b/src/libstore/build.cc
@@ -2276,18 +2276,24 @@ void DerivationGoal::doExportReferencesGraph()
             }
         }
 
-        /* Write closure info to <fileName>. */
-        writeFile(tmpDir + "/" + fileName,
-            worker.store.makeValidityRegistration(paths, false, false));
+        if (!drv->env.count("__json")) {
+
+            /* Write closure info to <fileName>. */
+            writeFile(tmpDir + "/" + fileName,
+                worker.store.makeValidityRegistration(paths, false, false));
+
+        } else {
+
+            /* Write a more comprehensive JSON serialisation to
+               <fileName>. */
+            std::ostringstream str;
+            {
+                JSONPlaceholder jsonRoot(str, true);
+                worker.store.pathInfoToJSON(jsonRoot, paths, false, true);
+            }
+            writeFile(tmpDir + "/" + fileName, str.str());
 
-        /* Write a more comprehensive JSON serialisation to
-           <fileName>.json. */
-        std::ostringstream str;
-        {
-            JSONPlaceholder jsonRoot(str, true);
-            worker.store.pathInfoToJSON(jsonRoot, paths, false, true);
         }
-        writeFile(tmpDir + "/" + fileName + ".json", str.str());
     }
 }