Modified a number of custom scripts (and corresponding calls to the
scripts in the sky130 Makefile) to do the following: (1) Revert the
change to use the "tempfile" library because this just causes an
additional error when the /tmp directory is not in the same filesystem
as the staging area (especially as the original method was working
fine except for problem #2), and (2) Fix a number of custom scripts
to use the correct path to either sky130A or sky130B depending, when
needed, on an option passed to the script.  Standalone scripts need
the option; filter scripts can divine the name of the PDK from the
target path.
diff --git a/common/foundry_install.py b/common/foundry_install.py
index 9a4625e..a9493ef 100755
--- a/common/foundry_install.py
+++ b/common/foundry_install.py
@@ -415,10 +415,9 @@
             # Make sure this file is writable (as the original may not be)
             makeuserwritable(outfile)
 
+        arguments = [filterscript, targetroot, outfile]
         if ef_format:
-            arguments = [filterscript, targetroot, outfile, '-ef_format']
-        else:
-            arguments = [filterscript, targetroot, outfile]
+            arguments.append('-ef_format')
 
         subprocess_run('filter', arguments)
 
diff --git a/sky130/Makefile.in b/sky130/Makefile.in
index db8e314..8d25736 100644
--- a/sky130/Makefile.in
+++ b/sky130/Makefile.in
@@ -711,10 +711,13 @@
 	fi
 	cp -rp custom/scripts/seal_ring_generator ${MAGIC_STAGING_$*}/.
 	cp -rp custom/scripts/bump_bond_generator ${MAGIC_STAGING_$*}/.
-	cp custom/scripts/generate_fill.py ${MAGIC_STAGING_$*}/.
-	cp custom/scripts/check_density.py ${MAGIC_STAGING_$*}/.
 	cp custom/scripts/run_standard_drc.py ${MAGIC_STAGING_$*}/.
-	cp custom/scripts/check_antenna.py ${MAGIC_STAGING_$*}/.
+	${CPP} ${SKY130$*_DEFS} custom/scripts/generate_fill.py \
+		${MAGIC_STAGING_$*}/generate_fill.py
+	${CPP} ${SKY130$*_DEFS} custom/scripts/check_density.py \
+		${MAGIC_STAGING_$*}/check_density.py
+	${CPP} ${SKY130$*_DEFS} custom/scripts/check_antenna.py \
+		${MAGIC_STAGING_$*}/check_antenna.py
 	${CPP} ${SKY130$*_DEFS} magic/${TECH}.tech ${MAGIC_STAGING_$*}/${SKY130$*}.tech
 	${CPP} ${SKY130$*_DEFS} magic/${TECH}gds.tech ${MAGIC_STAGING_$*}/${SKY130$*}-GDS.tech
 	${CPP} ${SKY130$*_DEFS} magic/${TECH}.magicrc ${MAGIC_STAGING_$*}/${SKY130$*}.magicrc
@@ -1129,14 +1132,14 @@
 		2>&1 | tee -a ${SKY130$*}_make.log || true
 	# Custom:  Parse the (commented out) statistics blocks and generate
 	# ngspice-compatible monte carlo parameters for mismatch and process
-	./custom/scripts/mismatch_params.py ${EF_FORMAT} \
+	./custom/scripts/mismatch_params.py ${EF_FORMAT} -variant=${SKY130$*} \
 		2>&1 | tee -a ${SKY130$*}_make.log || true
-	./custom/scripts/mismatch_params.py ${EF_FORMAT} \
+	./custom/scripts/mismatch_params.py \
 		${STAGING_PATH}/${SKY130$*}/libs.tech/ngspice \
 		2>&1 | tee -a ${SKY130$*}_make.log || true
-	./custom/scripts/process_params.py \
+	./custom/scripts/process_params.py ${EF_FORMAT} -variant=${SKY130$*} \
 		2>&1 | tee -a ${SKY130$*}_make.log || true
-	./custom/scripts/montecarlo_hack.py \
+	./custom/scripts/montecarlo_hack.py -variant=${SKY130$*} \
 		2>&1 | tee -a ${SKY130$*}_make.log || true
 	# Custom:  Change vt to local_vt in one file for Xyce compatibilty
 	./custom/scripts/xyce_hack.py \
@@ -1159,7 +1162,7 @@
 		2>&1 | tee -a ${SKY130$*}_make.log || true
 	# Custom:  Add special device ID layers to bipolar layouts in magic
 	# to make the extraction models correct.
-	./custom/scripts/add_bipolar_ids.py ${EF_FORMAT} \
+	./custom/scripts/add_bipolar_ids.py ${EF_FORMAT} -variant=${SKY130$*} \
 		2>&1 | tee -a ${SKY130$*}_make.log || true
 
 	# Custom:  Add "spinit" file
diff --git a/sky130/custom/scripts/add_bipolar_ids.py b/sky130/custom/scripts/add_bipolar_ids.py
index 611cc71..73e991b 100755
--- a/sky130/custom/scripts/add_bipolar_ids.py
+++ b/sky130/custom/scripts/add_bipolar_ids.py
@@ -10,7 +10,6 @@
 import os
 import re
 import sys
-import tempfile
 
 options = []
 arguments = []
@@ -20,10 +19,17 @@
     else:
         arguments.append(item)
 
-magpath = 'sky130A/libs.ref/sky130_fd_pr/mag'
+variant = 'sky130A'
+magpath = variant + '/libs.ref/sky130_fd_pr/mag'
+
 if len(options) > 0:
-    if options[0] == 'ef_format':
-        magpath = 'sky130A/libs.ref/mag/sky130_fd_pr'
+    for option in options:
+        if option.startswith('variant'):
+            variant = option.split('=')[1]
+    magpath = variant + '/libs.ref/sky130_fd_pr/mag'
+    for option in options:
+        if option == 'ef_format':
+            magpath = variant + '/libs.ref/mag/sky130_fd_pr'
 elif len(arguments) > 0:
     magpath = arguments[0]
 
@@ -51,6 +57,7 @@
 
 for idx, device in enumerate(devlist):
     infile_name = magpath + '/' + device + '.mag'
+    outfile_name = magpath + '/' + device + '_temp.mag'
 
     if not os.path.exists(infile_name):
         print('Error:  Cannot find file ' + infile_name)
@@ -61,8 +68,7 @@
     type = typelist[idx]
     is_baserect = False
     infile = open(infile_name, 'r')
-    handle, outfile_name = tempfile.mkstemp()
-    outfile = os.fdopen(handle, 'w')
+    outfile = open(outfile_name, 'w')
     line_number = 0
     replaced_something = False
 
diff --git a/sky130/custom/scripts/check_antenna.py b/sky130/custom/scripts/check_antenna.py
index 031fa5e..e7eb89f 100755
--- a/sky130/custom/scripts/check_antenna.py
+++ b/sky130/custom/scripts/check_antenna.py
@@ -53,8 +53,8 @@
     myenv = os.environ.copy()
     myenv['MAGTYPE'] = 'mag'
     
-    if os.path.isfile('/usr/share/pdk/sky130A/libs.tech/magic/sky130A.magicrc'):
-       rcfile = '/usr/share/pdk/sky130A/libs.tech/magic/sky130A.magicrc'
+    if os.path.isfile('/usr/share/pdk/TECHNAME/libs.tech/magic/TECHNAME.magicrc'):
+       rcfile = '/usr/share/pdk/TECHNAME/libs.tech/magic/TECHNAME.magicrc'
     elif os.path.isfile(magpath + '/.magicrc'):
        rcfile = magpath + '/.magicrc'
     elif os.path.isfile(os.getcwd() + '/.magicrc'):
diff --git a/sky130/custom/scripts/check_density.py b/sky130/custom/scripts/check_density.py
index f439355..7e540eb 100755
--- a/sky130/custom/scripts/check_density.py
+++ b/sky130/custom/scripts/check_density.py
@@ -95,7 +95,7 @@
     
     # Searching for rcfile
     
-    rcfile_paths=[gdspath+'/.magicrc','/$PDK_PATH/libs.tech/magic/sky130A.magicrc','/usr/share/pdk/sky130A/libs.tech/magic/sky130A.magicrc']
+    rcfile_paths=[gdspath+'/.magicrc','/$PDK_PATH/libs.tech/magic/TECHNAME.magicrc','/usr/share/pdk/TECHNAME/libs.tech/magic/TECHNAME.magicrc']
     
     rcfile=''
     
diff --git a/sky130/custom/scripts/fix_spice_includes.py b/sky130/custom/scripts/fix_spice_includes.py
index 8469057..f70079b 100755
--- a/sky130/custom/scripts/fix_spice_includes.py
+++ b/sky130/custom/scripts/fix_spice_includes.py
@@ -11,7 +11,6 @@
 import os
 import re
 import sys
-import tempfile
 
 newdevs = []
 newdevs.append('sky130_fd_pr__pnp_05v5_W3p40L3p40')
@@ -39,10 +38,10 @@
     filepath = os.path.split(infile_name)[0]
     filename = os.path.split(infile_name)[1]
     fileroot = os.path.split(filename)[0]
+    outfile_name = os.path.join(filepath, fileroot + '_temp')
 
     infile = open(infile_name, 'r')
-    handle, outfile_name = tempfile.mkstemp()
-    outfile = os.fdopen(handle, 'w')
+    outfile = open(outfile_name, 'w')
 
     line_number = 0
     replaced_something = False
diff --git a/sky130/custom/scripts/generate_fill.py b/sky130/custom/scripts/generate_fill.py
index 08209b3..38ecc39 100755
--- a/sky130/custom/scripts/generate_fill.py
+++ b/sky130/custom/scripts/generate_fill.py
@@ -119,7 +119,7 @@
 
     # Searching for rcfile
     
-    rcfile_paths=[magpath+'/.magicrc','/$PDK_PATH/libs.tech/magic/sky130A.magicrc','/usr/share/pdk/sky130A/libs.tech/magic/sky130A.magicrc']
+    rcfile_paths=[magpath+'/.magicrc','/$PDK_PATH/libs.tech/magic/TECHNAME.magicrc','/usr/share/pdk/TECHNAME/libs.tech/magic/TECHNAME.magicrc']
     
     rcfile=''
     
diff --git a/sky130/custom/scripts/mismatch_params.py b/sky130/custom/scripts/mismatch_params.py
index c8a8fef..0053542 100755
--- a/sky130/custom/scripts/mismatch_params.py
+++ b/sky130/custom/scripts/mismatch_params.py
@@ -9,7 +9,6 @@
 import os
 import re
 import sys
-import tempfile
 
 mm_switch_param = 'MC_MM_SWITCH'
 
@@ -21,11 +20,17 @@
     else:
         arguments.append(item)
 
-walkpath = 'sky130A/libs.ref/sky130_fd_pr/spice'
+variant = 'sky130A'
+walkpath = variant + '/libs.tech/ngspice'
 
 if len(options) > 0:
-    if options[0] == 'ef_format':
-        walkpath = 'sky130A/libs.ref/spi/sky130_fd_pr'
+    for option in options:
+        if option.startswith('variant'):
+            variant = option.split('=')[1]
+    walkpath = variant + '/libs.ref/sky130_fd_pr/spice'
+    for option in options: 
+        if option == 'ef_format':
+            walkpath = variant + '/libs.ref/spi/sky130_fd_pr'
 elif len(arguments) > 0:
     walkpath = arguments[0]
 
@@ -96,10 +101,10 @@
     filepath = os.path.split(infile_name)[0]
     filename = os.path.split(infile_name)[1]
     fileroot = os.path.splitext(filename)[0]
+    outfile_name = os.path.join(filepath, fileroot + '_temp')
 
     infile = open(infile_name, 'r')
-    handle, outfile_name = tempfile.mkstemp()
-    outfile = os.fdopen(handle, 'w')
+    outfile = open(outfile_name, 'w')
 
     state = 'before_mismatch'
     line_number = 0
diff --git a/sky130/custom/scripts/montecarlo_hack.py b/sky130/custom/scripts/montecarlo_hack.py
index 81a47aa..cff5576 100755
--- a/sky130/custom/scripts/montecarlo_hack.py
+++ b/sky130/custom/scripts/montecarlo_hack.py
@@ -11,14 +11,28 @@
 import os
 import re
 import sys
-import tempfile
 
-searchpath = ['sky130A/libs.tech/ngspice/parameters/critical.spice',
-	'sky130A/libs.tech/ngspice/parameters/montecarlo.spice']
+options = []
+arguments = []
+for item in sys.argv[1:]:
+    if item.find('-', 0) == 0:
+        options.append(item[1:])
+    else:
+        arguments.append(item)
 
-if len(sys.argv) > 1:
+variant = 'sky130A'
+
+if len(options) > 0:
+    for option in options:
+        if option.startswith('variant'):
+            variant = option.split('=')[1]
+    searchpath = [variant + '/libs.tech/ngspice/parameters/critical.spice',
+		variant + '/libs.tech/ngspice/parameters/montecarlo.spice']
+
+elif len(arguments) > 0:
     searchpath = sys.argv[1]
 
+
 # Flag all parameters that have the same name as devices.
 # These parameters are unused and must be deleted.
 
@@ -55,10 +69,10 @@
     filepath = os.path.split(infile_name)[0]
     filename = os.path.split(infile_name)[1]
     fileroot = os.path.splitext(filename)[0]
+    outfile_name = os.path.join(filepath, fileroot + '_temp')
 
     infile = open(infile_name, 'r')
-    handle, outfile_name = tempfile.mkstemp()
-    outfile = osfdopen(handle, 'w')
+    outfile = open(outfile_name, 'w')
 
     line_number = 0
     replaced_something = False
diff --git a/sky130/custom/scripts/process_params.py b/sky130/custom/scripts/process_params.py
index 657a635..c27840a 100755
--- a/sky130/custom/scripts/process_params.py
+++ b/sky130/custom/scripts/process_params.py
@@ -9,14 +9,30 @@
 import os
 import re
 import sys
-import tempfile
 
 pr_switch_param = 'MC_PR_SWITCH'
 
-walkpath = 'sky130A/libs.tech/ngspice'
+options = []
+arguments = []
+for item in sys.argv[1:]:
+    if item.find('-', 0) == 0:
+        options.append(item[1:])
+    else:
+        arguments.append(item)
 
-if len(sys.argv) > 1:
-    walkpath = sys.argv[1]
+variant = 'sky130A'
+walkpath = variant + '/libs.ref/sky130_fd_pr/spice'
+
+if len(options) > 0:
+    for option in options:
+        if option.startswith('variant'):
+            variant = option.split('=')[1]
+    walkpath = variant + '/libs.ref/sky130_fd_pr/spice'
+    for option in options:
+        if option == 'ef_format':
+            walkpath = variant + '/libs.ref/spi/sky130_fd_pr'
+elif len(arguments) > 0:
+    walkpath = arguments[0]
 
 process_params = []
 
@@ -87,10 +103,10 @@
     filepath = os.path.split(infile_name)[0]
     filename = os.path.split(infile_name)[1]
     fileroot = os.path.splitext(filename)[0]
+    outfile_name = os.path.join(filepath, fileroot + '_temp')
 
     infile = open(infile_name, 'r')
-    handle, outfile_name = tempfile.mkstemp()
-    outfile = os.fdopen(handle, 'w')
+    outfile = open(outfile_name, 'w')
 
     state = 'before_process'
     line_number = 0
diff --git a/sky130/custom/scripts/text2m5.py b/sky130/custom/scripts/text2m5.py
index e91bc21..8351b00 100755
--- a/sky130/custom/scripts/text2m5.py
+++ b/sky130/custom/scripts/text2m5.py
@@ -25,6 +25,10 @@
         print('text2m5.py: failed to open ' + inname + ' for reading.', file=sys.stderr)
         return 1
 
+    # The library is based on sky130A only.  Pick up the name of the PDK variant
+    # from the input name (which is four directory levels up from inname)
+    variant = inname.split('/')[-5]
+
     # Process input with regexp
 
     fixedlines = []
@@ -34,7 +38,7 @@
 
         # These substitutions are for files originating from cells/*/*.spice
         fixedline = re.sub('<< metal1 >>', '<< metal5 >>', line)
-        fixedline = re.sub('tech sky130A', 'tech sky130A\nmagscale 12 1', fixedline)
+        fixedline = re.sub('tech sky130A', 'tech ' + variant + '\nmagscale 12 1', fixedline)
 
         fixedlines.append(fixedline)
         if fixedline != line:
diff --git a/sky130/custom/scripts/xyce_hack.py b/sky130/custom/scripts/xyce_hack.py
index 6fcc914..ecedb7d 100755
--- a/sky130/custom/scripts/xyce_hack.py
+++ b/sky130/custom/scripts/xyce_hack.py
@@ -12,7 +12,6 @@
 import os
 import re
 import sys
-import tempfile
 
 if len(sys.argv) <= 1:
     print('Usage: xyce_hack.py <path_to_file>')
@@ -24,10 +23,10 @@
     filepath = os.path.split(infile_name)[0]
     filename = os.path.split(infile_name)[1]
     fileroot = os.path.splitext(filename)[0]
+    outfile_name = os.path.join(filepath, fileroot + '_temp')
 
     infile = open(infile_name, 'r')
-    handle, outfile_name = tempfile.mkstemp()
-    outfile = os.fdopen(handle, 'w')
+    outfile = open(outfile_name, 'w')
 
     line_number = 0
     replaced_something = False
diff --git a/sky130/custom/scripts/xyce_hack2.py b/sky130/custom/scripts/xyce_hack2.py
index 9442ad5..9308dad 100755
--- a/sky130/custom/scripts/xyce_hack2.py
+++ b/sky130/custom/scripts/xyce_hack2.py
@@ -10,7 +10,6 @@
 import os
 import re
 import sys
-import tempfile
 
 plist = ["ldif", "hdif", "rd", "rs", "rsc", "rdc", "nqsmod"]
 regexps = []
@@ -27,10 +26,10 @@
     filepath = os.path.split(infile_name)[0]
     filename = os.path.split(infile_name)[1]
     fileroot = os.path.splitext(filename)[0]
+    outfile_name = os.path.join(filepath, fileroot + '_temp')
 
     infile = open(infile_name, 'r')
-    handle, outfile_name = tempfile.mkstemp()
-    outfile = os.fdopen(handle, 'w')
+    outfile = open(outfile_name, 'w')
 
     line_number = 0
     replaced_something = False