Rework naming in `staging_install.py` to clearer.
* `-finalpath` is where the files are installed to on the file system.
* `-writeto` is where the files will be written.
Signed-off-by: Tim 'mithro' Ansell <me@mith.ro>
diff --git a/common/staging_install.py b/common/staging_install.py
index f02e66f..e840fe0 100755
--- a/common/staging_install.py
+++ b/common/staging_install.py
@@ -25,19 +25,19 @@
-staging <path> Path to staging top level directory that the files
will be installed from.
- -target <path> Final install path in system file system.
+ -finalpath <path> Final install path in system file system.
Normally, '$(prefix)/pdks/<unique pdk name>'.
- If -local is not given, this will be the top level
+ If -writeto is not given, this will be the top level
directory location the files are installed too.
- -local <path> Actual file system location to write the files too.
+ -writeto <path> Actual file system location to write the files too.
The result can then be packaged and distributed.
For usage with things like package managers and other
administrator installation tooling. The resulting
- files still need to be installed at '-target' on the
+ files still need to be installed at '-finalpath' on the
final system.
Think 'DESTDIR', see
@@ -82,19 +82,19 @@
st = os.stat(filepath)
os.chmod(filepath, st.st_mode | stat.S_IWUSR)
-# Filter files to replace all strings matching "stagingdir" with "localdir" for
+# Filter files to replace all strings matching "stagingdir" with "finaldir" for
# every file in "tooldir". If "tooldir" contains subdirectories, then recursively
# apply the replacement filter to all files in the subdirectories. Do not follow
# symbolic links.
-def filter_recursive(tooldir, stagingdir, localdir):
+def filter_recursive(tooldir, stagingdir, finaldir):
# Add any non-ASCII file types here
bintypes = ['.gds', '.gds2', '.gdsii', '.png', '.swp']
# Also do substitutions on strings containing the stagingdir parent
- # directory (replace with the localdir parent directory).
+ # directory (replace with the finaldir parent directory).
stagingparent = os.path.split(stagingdir)[0]
- localparent = os.path.split(localdir)[0]
+ localparent = os.path.split(finaldir)[0]
if not os.path.exists(tooldir):
return 0
@@ -113,7 +113,7 @@
if os.path.islink(filepath):
continue
elif os.path.isdir(filepath):
- total += filter_recursive(filepath, stagingdir, localdir)
+ total += filter_recursive(filepath, stagingdir, finaldir)
else:
with open(filepath, 'r') as ifile:
try:
@@ -128,7 +128,7 @@
modified = False
with open(filepath, 'w') as ofile:
for line in flines:
- newline = line.replace(stagingdir, localdir)
+ newline = line.replace(stagingdir, finaldir)
newline = newline.replace(stagingparent, localparent)
print(newline, file=ofile)
if newline != line:
@@ -263,11 +263,12 @@
newopt = []
stagingdir = None
- targetdir = None
link_from = None
- localdir = None
variable = None
+ writedir = None # Directory to write the files to.
+ finaldir = None # Directory files will end up installed to.
+
ef_format = False
do_install = True
@@ -316,12 +317,12 @@
elif option[0] == 'staging' or option[0] == 'source':
optionlist.remove(option)
stagingdir = option[1]
- elif option[0] == 'target':
+ elif option[0] == 'writeto':
optionlist.remove(option)
- targetdir = option[1]
- elif option[0] == 'local':
+ writedir = option[1]
+ elif option[0] == 'finalpath':
optionlist.remove(option)
- localdir = option[1]
+ finaldir = option[1]
elif option[0] == 'variable':
optionlist.remove(option)
variable = option[1]
@@ -331,17 +332,17 @@
print("No staging directory specified. Exiting.")
sys.exit(1)
- if not targetdir:
- print("No target directory specified. Exiting.")
+ if not finaldir:
+ print("No final install directory specified. Exiting.")
sys.exit(1)
- # If localdir is not specified, then it is the same as the parent
+ # If finaldir is not specified, then it is the same as the parent
# of the target (local installation assumed)
- if not localdir:
- localdir = targetdir
+ if not writedir:
+ writedir = finaldir
# Take the target PDK name from the target path last component
- pdkname = os.path.split(targetdir)[1]
+ pdkname = os.path.split(writedir)[1]
# If link source is a PDK name, if it has no path, then pull the
# path from the target name.
@@ -350,14 +351,14 @@
if link_from != 'source':
if link_from.find('/', 0) < 0:
link_name = link_from
- link_from = os.path.split(localdir)[0] + '/' + link_name
+ link_from = os.path.split(finaldir)[0] + '/' + link_name
else:
# If linking from source, convert the source path to an
# absolute pathname.
stagingdir = os.path.abspath(stagingdir)
- # If link_from is the same as localdir, then set link_from to None
- if link_from == localdir:
+ # If link_from is the same as finaldir, then set link_from to None
+ if link_from == finaldir:
link_from = None
# checkdir is the DIST target directory for the PDK pointed
@@ -365,24 +366,24 @@
# symbolic links to the (not yet existing) final install location.
if link_name:
- checkdir = os.path.split(targetdir)[0] + '/' + link_name
+ checkdir = os.path.split(writedir)[0] + '/' + link_name
else:
checkdir = ''
# Diagnostic
if do_install:
- print("Installing in target directory " + targetdir)
+ print("Installing in target directory " + writedir)
else:
- print("Uninstalling from target directory " + targetdir)
+ print("Uninstalling from target directory " + writedir)
print("(Method not yet implemented)")
# Create the top-level directories
- os.makedirs(targetdir, exist_ok=True)
- os.makedirs(targetdir + '/libs.tech', exist_ok=True)
- os.makedirs(targetdir + '/libs.ref', exist_ok=True)
+ os.makedirs(writedir, exist_ok=True)
+ os.makedirs(writedir + '/libs.tech', exist_ok=True)
+ os.makedirs(writedir + '/libs.ref', exist_ok=True)
if os.path.isdir(stagingdir + '/libs.priv'):
- os.makedirs(targetdir + '/libs.priv', exist_ok=True)
+ os.makedirs(writedir + '/libs.priv', exist_ok=True)
has_priv = True
else:
has_priv = False
@@ -398,27 +399,27 @@
# as they will be used to reference the target area to know which
# files need to be checked and/or modified.
- if not os.path.isdir(targetdir):
+ if not os.path.isdir(writedir):
try:
- os.makedirs(targetdir, exist_ok=True)
+ os.makedirs(writedir, exist_ok=True)
except:
- print('Fatal error: Cannot make target directory ' + targetdir + '!')
+ print('Fatal error: Cannot make target directory ' + writedir + '!')
exit(1)
# Remove any files from the target directory that are going to be replaced
print('Removing files from target')
- remove_target(stagingdir, targetdir)
+ remove_target(stagingdir, writedir)
print('Copying staging files to target')
- # print('Diagnostic: copy_tree ' + stagingdir + ' ' + targetdir)
- copy_tree(stagingdir, targetdir, preserve_symlinks=True)
+ # print('Diagnostic: copy_tree ' + stagingdir + ' ' + writedir)
+ copy_tree(stagingdir, writedir, preserve_symlinks=True)
print('Done.')
# Magic and qflow setup files have references to the staging area that have
# been used by the vendor install; these need to be changed to the target
# directory.
- print('Changing local path references from ' + stagingdir + ' to ' + localdir)
+ print('Changing local path references from ' + stagingdir + ' to ' + finaldir)
print('Part 1: Tools')
needcheck = ['ngspice']
@@ -427,9 +428,9 @@
techdirs.append('/libs.priv/')
for techdir in techdirs:
- tools = os.listdir(targetdir + techdir)
+ tools = os.listdir(writedir + techdir)
for tool in tools:
- tooldir = targetdir + techdir + tool
+ tooldir = writedir + techdir + tool
# There are few enough tool setup files that they can just all be
# filtered directly. This code only looks in the directory 'tooldir'.
@@ -440,7 +441,7 @@
# no attempt to check for possible symlinks to link_from if link_from
# is a base PDK.
- total = filter_recursive(tooldir, stagingdir, localdir)
+ total = filter_recursive(tooldir, stagingdir, finaldir)
if total > 0:
substr = 'substitutions' if total > 1 else 'substitution'
print(' ' + tool + ' (' + str(total) + ' ' + substr + ')')
@@ -451,14 +452,14 @@
# generally small and deemed unnecessary to make symbolic links).
if link_from not in ['source', None]:
- thispdk = os.path.split(targetdir)[1]
+ thispdk = os.path.split(writedir)[1]
# Only create links for PDKs other than the one we are making links to.
if thispdk != link_from:
print('Replacing files with symbolic links to ' + link_from + ' where possible.')
for techdir in techdirs:
for tool in needcheck:
- tooldir = targetdir + techdir + tool
+ tooldir = writedir + techdir + tool
srctooldir = link_from + techdir + tool
if checkdir != '':
checktooldir = checkdir + techdir + tool
@@ -471,13 +472,13 @@
print(' ' + tool + ' (' + str(total) + ' ' + symstr + ')')
# In .mag files in mag/ and maglef/, also need to change the staging
- # directory name to localdir. If "-variable" is specified in the options,
- # the replace the staging path with the variable name, not localdir.
+ # directory name to finaldir. If "-variable" is specified in the options,
+ # the replace the staging path with the variable name, not finaldir.
if variable:
localname = '$' + variable
else:
- localname = localdir
+ localname = finaldir
needcheck = ['mag', 'maglef']
refdirs = ['/libs.ref/']
@@ -489,7 +490,7 @@
for refdir in refdirs:
for filetype in needcheck:
print(' ' + filetype)
- filedir = targetdir + refdir + filetype
+ filedir = writedir + refdir + filetype
if os.path.isdir(filedir):
libraries = os.listdir(filedir)
for library in libraries:
@@ -501,11 +502,11 @@
else:
print('Part 2: Libraries')
for refdir in refdirs:
- libraries = os.listdir(targetdir + refdir)
+ libraries = os.listdir(writedir + refdir)
for library in libraries:
print(' ' + library)
for filetype in needcheck:
- filedir = targetdir + refdir + library + '/' + filetype
+ filedir = writedir + refdir + library + '/' + filetype
total = filter_recursive(filedir, stagingdir, localname)
if total > 0:
substr = 'substitutions' if total > 1 else 'substitution'
@@ -521,14 +522,14 @@
print('Replacing files with symbolic links to source where possible.')
for refdir in refdirs:
if ef_format:
- filedirs = os.listdir(targetdir + refdir)
+ filedirs = os.listdir(writedir + refdir)
for filedir in filedirs:
print(' ' + filedir)
- dirpath = targetdir + refdir + filedir
+ dirpath = writedir + refdir + filedir
if os.path.isdir(dirpath):
libraries = os.listdir(dirpath)
for library in libraries:
- libdir = targetdir + refdir + filedir + '/' + library
+ libdir = writedir + refdir + filedir + '/' + library
libfiles = os.listdir(libdir)
if 'sources.txt' in libfiles:
libfiles = glob.glob(libdir + '/*')
@@ -541,12 +542,12 @@
symstr = 'symlinks' if total > 1 else 'symlink'
print(' ' + library + ' (' + str(total) + ' ' + symstr + ')')
else:
- libraries = os.listdir(targetdir + refdir)
+ libraries = os.listdir(writedir + refdir)
for library in libraries:
print(' ' + library)
- filedirs = os.listdir(targetdir + refdir + library)
+ filedirs = os.listdir(writedir + refdir + library)
for filedir in filedirs:
- libdir = targetdir + refdir + library + '/' + filedir
+ libdir = writedir + refdir + library + '/' + filedir
if os.path.isdir(libdir):
libfiles = os.listdir(libdir)
if 'sources.txt' in libfiles:
@@ -566,7 +567,7 @@
# if the file contents match.
elif link_from:
- thispdk = os.path.split(targetdir)[1]
+ thispdk = os.path.split(writedir)[1]
# Only create links for PDKs other than the one we are making links to.
if thispdk != link_from:
@@ -575,14 +576,14 @@
for refdir in refdirs:
if ef_format:
- filedirs = os.listdir(targetdir + refdir)
+ filedirs = os.listdir(writedir + refdir)
for filedir in filedirs:
print(' ' + filedir)
- dirpath = targetdir + refdir + filedir
+ dirpath = writedir + refdir + filedir
if os.path.isdir(dirpath):
libraries = os.listdir(dirpath)
for library in libraries:
- libdir = targetdir + refdir + filedir + '/' + library
+ libdir = writedir + refdir + filedir + '/' + library
srclibdir = link_from + refdir + filedir + '/' + library
if checkdir != '':
checklibdir = checkdir + refdir + filedir + '/' + library
@@ -594,12 +595,12 @@
symstr = 'symlinks' if total > 1 else 'symlink'
print(' ' + library + ' (' + str(total) + ' ' + symstr + ')')
else:
- libraries = os.listdir(targetdir + refdir)
+ libraries = os.listdir(writedir + refdir)
for library in libraries:
print(' ' + library)
- filedirs = os.listdir(targetdir + refdir + library)
+ filedirs = os.listdir(writedir + refdir + library)
for filedir in filedirs:
- libdir = targetdir + refdir + library + '/' + filedir
+ libdir = writedir + refdir + library + '/' + filedir
srclibdir = link_from + refdir + library + '/' + filedir
if checkdir != '':
checklibdir = checkdir + refdir + library + '/' + filedir
@@ -618,14 +619,14 @@
for refdir in refdirs:
if ef_format:
- filedirs = os.listdir(targetdir + refdir)
+ filedirs = os.listdir(writedir + refdir)
for filedir in filedirs:
if os.path.islink(filedir):
continue
elif os.path.isdir(filedir):
- libraries = os.listdir(targetdir + refdir + filedir)
+ libraries = os.listdir(writedir + refdir + filedir)
for library in libraries:
- libdir = targetdir + refdir + filedir + '/' + library
+ libdir = writedir + refdir + filedir + '/' + library
libfiles = os.listdir(libdir)
for libfile in libfiles:
filepath = libdir + '/' + libfile
@@ -640,11 +641,11 @@
elif os.path.splitext(libfile)[1] == '.swp':
os.remove(filepath)
else:
- libraries = os.listdir(targetdir + refdir)
+ libraries = os.listdir(writedir + refdir)
for library in libraries:
- filedirs = os.listdir(targetdir + refdir + library)
+ filedirs = os.listdir(writedir + refdir + library)
for filedir in filedirs:
- filepath = targetdir + refdir + library + '/' + filedir
+ filepath = writedir + refdir + library + '/' + filedir
if os.path.islink(filepath):
continue
elif os.path.isdir(filepath):
diff --git a/sky130/Makefile.in b/sky130/Makefile.in
index 627a6b0..c8e19c9 100644
--- a/sky130/Makefile.in
+++ b/sky130/Makefile.in
@@ -398,7 +398,7 @@
# copying or linking the foundry vendor files to the target directory.
STAGE = set -f ; ../common/foundry_install.py ${EF_FORMAT}
ifneq ($(DESTDIR), )
-INSTALL = ../common/staging_install.py -local $(DESTDIR) ${EF_FORMAT}
+INSTALL = ../common/staging_install.py -writeto $(DESTDIR) ${EF_FORMAT}
else
INSTALL = ../common/staging_install.py ${EF_FORMAT}
endif
@@ -1406,7 +1406,7 @@
echo "Starting SKY130 PDK migration on "`date` > ${SKY130A}_install.log
${INSTALL} \
-source ${STAGING_PATH}/${SKY130A} \
- -target ${SHARED_PDKS_PATH}/${SKY130A} \
+ -finalpath ${SHARED_PDKS_PATH}/${SKY130A} \
-variable PDKPATH \
-link_from ${LINK_TARGETS} 2>&1 | tee -a ${SKY130A}_install.log
echo "Ended SKY130 PDK migration on "`date` >> ${SKY130A}_install.log