Set separate temporary directory for zap cli, to have independent unpacks (#23842)

* Set separate temporary directory for zap cli, to have independent unpacks

* Wait for regen to finish ... should be a no change now
diff --git a/scripts/tools/zap/generate.py b/scripts/tools/zap/generate.py
index 9a10752..bd12075 100755
--- a/scripts/tools/zap/generate.py
+++ b/scripts/tools/zap/generate.py
@@ -19,6 +19,7 @@
 import json
 import os
 from pathlib import Path
+import tempfile
 import subprocess
 import sys
 import urllib.request
@@ -268,7 +269,18 @@
         # Parallel-compatible runs will need separate state
         os.environ["ZAP_TEMPSTATE"] = "1"
 
-    runGeneration(cmdLineArgs.zapFile, cmdLineArgs.zclFile, cmdLineArgs.templateFile, cmdLineArgs.outputDir)
+    # `zap-cli` may extract things into a temporary directory. ensure extraction
+    # does not conflict.
+    with tempfile.TemporaryDirectory(prefix='zap') as temp_dir:
+        old_temp = os.environ['TEMP'] if 'TEMP' in os.environ else None
+        os.environ['TEMP'] = temp_dir
+
+        runGeneration(cmdLineArgs.zapFile, cmdLineArgs.zclFile, cmdLineArgs.templateFile, cmdLineArgs.outputDir)
+
+        if old_temp:
+            os.environ['TEMP'] = old_temp
+        else:
+            del os.environ['TEMP']
 
     prettifiers = [
         runClangPrettifier,