diff --git a/common/staging_install.py b/common/staging_install.py
index 22f5e2b..52dad2e 100755
--- a/common/staging_install.py
+++ b/common/staging_install.py
@@ -99,14 +99,14 @@
             with open(filepath, 'w') as ofile:
                 for line in flines:
                     newline = line.replace(stagingdir, localdir)
-                    print(newline, file=ofile) 
+                    print(newline, file=ofile)
                     if newline != line:
                         modified = True
 
             if modified:
                 total += 1
     return total
-        
+
 # To avoid problems with various library functions that copy hierarchical
 # directory trees, remove all the files from the target that are going to
 # be replaced by the contents of staging.  This avoids problems with
@@ -227,7 +227,7 @@
         print("No options given to staging_install.py.")
         usage()
         sys.exit(0)
-    
+
     optionlist = []
     newopt = []
 
@@ -479,7 +479,7 @@
                     if total > 0:
                         substr = 'substitutions' if total > 1 else 'substitution'
                         print('      ' + filetype + ' (' + str(total) + ' ' + substr + ')')
-        
+
     # If "link_from" is "source", then check all files against the source
     # directory, and replace the file with a symbolic link if the file
     # contents match.  The "foundry_install.py" script should have added a
@@ -628,6 +628,6 @@
                                 os.remove(libfilepath)
                             elif os.path.splitext(libfile)[1] == '.ext':
                                 os.remove(libfilepath)
-        
+
     print('Done with PDK migration.')
     sys.exit(0)
diff --git a/scripts/configure.ac b/scripts/configure.ac
index a4f07d2..972bd37 100755
--- a/scripts/configure.ac
+++ b/scripts/configure.ac
@@ -39,14 +39,14 @@
         pdkvar[]_LOCAL_PATH="/usr/share/[pdk]"
         pdkvar[]_DIST_PATH=""
         pdkvar[]_LINK_TARGETS="none"
-        pdkvar[]_AUTO="0" 
+        pdkvar[]_AUTO="0"
 
         AC_ARG_ENABLE(pdk-[pdk],
             [AS_HELP_STRING([--enable-pdk-[pdk]=@<:@/path/to/pdk/@:>@ --disable-pdk-[pdk]], "location of the source files for the pdk (pdks with a [pdk]_url file can automatically download them if the path is omitted)")],
             [
                 if test "$enableval" == "yes" -o "$enableval" == "YES"; then
                     export pdkvar[]_SOURCE_PATH=../sources/pdk-[pdk]
-            	    pdkvar[]_AUTO="1" 
+            	    pdkvar[]_AUTO="1"
                 elif test "$enableval" == "no" -o "$enableval" == "NO"; then
                     echo "Disabling pdk..."
                 else
@@ -81,7 +81,7 @@
                 [AS_HELP_STRING([--with-pdk-dist-path=/path/to/install/pdk], "staging location to install the PDK for distribution (optional)")],
                 [pdkvar[]_DIST_PATH=$withval]
             )
-            
+
             # "Require" this argument
             AC_MSG_NOTICE([Checking whether distribution path is specified for 'pdk'])
             if test "x$[]pdkvar[]_DIST_PATH" == "x" ; then
@@ -96,7 +96,7 @@
                 [AS_HELP_STRING([--with-pdk-local-path=/path/to/install/pdk], "run-time location of the PDK")],
                 [pdkvar[]_LOCAL_PATH=$withval]
             )
-            
+
             # Require this argument
             AC_MSG_NOTICE([Checking whether local path is specified for 'pdk'])
             if test "x$[]pdkvar[]_LOCAL_PATH" == "x" ; then
diff --git a/sky130/Makefile.in b/sky130/Makefile.in
index 4cf5ad2..19c7392 100644
--- a/sky130/Makefile.in
+++ b/sky130/Makefile.in
@@ -397,7 +397,7 @@
 ADDPROP = ../common/insert_property.py ${EF_FORMAT}
 
 # List the EDA tools to install local setup files for
-TOOLS = 
+TOOLS =
 
 # KLAYOUT_DISABLED = 0 | 1
 KLAYOUT_DISABLED = @KLAYOUT_DISABLED@
@@ -833,7 +833,7 @@
 		-ngspice sky130_fd_pr/latest/models/* \
 		filter=custom/scripts/rename_models.py \
 		2>&1 | tee -a ${SKY130A}_make.log
-	# Install device layouts from custom sources 
+	# Install device layouts from custom sources
 	${STAGE} -source ./custom -target ${STAGING_PATH}/${SKY130A} \
 		-gds sky130_fd_pr/*.gds \
 			options=custom/scripts/gds_import_setup.tcl \
