Add set_up_license function

This commit is contained in:
Adam J. Stewart 2016-04-04 15:12:27 -05:00
parent 8cba8d6d1d
commit 1b997f10a8

View File

@ -957,6 +957,10 @@ def build_process():
self._total_time = time.time() - start_time
build_time = self._total_time - self._fetch_time
# Set up license information
if self.license_required:
self.set_up_license()
tty.msg("Successfully installed %s" % self.name,
"Fetch: %s. Build: %s. Total: %s." %
(_hms(self._fetch_time), _hms(build_time),
@ -1006,6 +1010,79 @@ def check_paths(path_list, filetype, predicate):
raise InstallError(
"Install failed for %s. Nothing was installed!" % self.name)
def set_up_license(self):
"""Prompt the user, letting them know that a license is required."""
# If the license can be stored in a file, create one
if self.license_files:
# Use the first file listed in license_files
license_path = self.prefix + '/' + self.license_files[0]
self.write_license_file(license_path)
# Open up file in user's favorite $EDITOR for editing
spack.editor(license_path)
tty.msg("Added license file %s" % license_path)
# If not a file, what about an environment variable?
elif self.license_vars:
tty.warn("A license is required to use %s. Please set %s to the "
"full pathname to the license file, or port@host if you"
" store your license keys on a dedicated license server" %
(self.name, ' or '.join(self.license_vars)))
# If not a file or variable, suggest a website for further info
elif self.license_url:
tty.warn("A license is required to use %s. See %s for details" %
(self.name, self.license_url))
# If all else fails, you're on your own
else:
tty.warn("A license is required to use %s" % self.name)
def write_license_file(self, license_path):
# Use the first file listed in license_files
license = open(license_path, 'w')
license.write("""\
# A license is required to use %s.
#
# The recommended solution is to store your license key in this file.
# By default, %s searches the following file(s) for a license key
# (relative to the installation prefix):
#
#\t%s
#
""" % (self.name, self.name, self.name, '\n#\t'.join(self.license_files)))
if self.license_vars:
license.write("""\
# Alternatively, use one of the following environment variable(s):
#
#\t%s
#
# If you choose to store your license in a non-standard location, you may
# set one of these variable(s) to the full pathname to the license file, or
# port@host if you store your license keys on a dedicated license server.
# You will likely want to set this variable in a module file so that it
# gets loaded every time someone tries to use %s.
#
""" % ('\n#\t'.join(self.license_vars), self.name))
if self.license_url:
license.write("""\
# For further information on how to acquire a license, please refer to:
#\t%s
#
""" % self.license_url)
license.write("""\
# You may enter your license below.
""")
license.close()
def do_install_dependencies(self, **kwargs):
# Pass along paths of dependencies here
for dep in self.spec.dependencies.values():