mirror of https://github.com/acidanthera/audk.git
modified edk2/BaseTools/BuildEnv:
deleted edk2/BaseTools/BuildEnv.py: Resolve https://edk2.tianocore.org/servlets/Scarab/id/EDKT557 "All code in the edk2 tree must not require third party tools for running the provided tools." which refers to the usage of python by BuildEnv.py. /sigh git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4386 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
b2c5e194a8
commit
66dcb2f08a
|
@ -8,32 +8,254 @@
|
||||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
|
|
||||||
|
#
|
||||||
# Setup the environment for unix-like systems running a bash-like shell.
|
# Setup the environment for unix-like systems running a bash-like shell.
|
||||||
# This file must be "sourced" not merely executed. For example: ". edksetup.sh"
|
# This file must be "sourced" not merely executed. For example: ". edksetup.sh"
|
||||||
|
#
|
||||||
|
|
||||||
if [ ! -e ./BaseTools/BuildEnv.py ]
|
SetWorkspace() {
|
||||||
then
|
|
||||||
echo Run this script from the base of your tree. For example:
|
#
|
||||||
echo " cd /Path/To/Edk/Root"
|
# If WORKSPACE is already set, then we can return right now
|
||||||
echo " . BaseTools/BuildEnv"
|
#
|
||||||
return
|
if [ -n "$WORKSPACE" ]
|
||||||
fi
|
then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! ${BASH_SOURCE[0]} -ef ./BaseTools/BuildEnv ]
|
||||||
|
then
|
||||||
|
echo Run this script from the base of your tree. For example:
|
||||||
|
echo " cd /Path/To/Edk/Root"
|
||||||
|
echo " . BaseTools/BuildEnv"
|
||||||
|
return -1
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# Set $WORKSPACE
|
||||||
|
#
|
||||||
|
export WORKSPACE=`pwd`
|
||||||
|
|
||||||
|
return 0
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
RestorePreviousConfiguration() {
|
||||||
|
#
|
||||||
|
# Restore previous configuration
|
||||||
|
#
|
||||||
|
PREVIOUS_CONF_FILE=Conf/BuildEnv.sh2
|
||||||
|
if [ -e $PREVIOUS_CONF_FILE ]
|
||||||
|
then
|
||||||
|
echo Loading previous configuration from \$WORKSPACE/$PREVIOUS_CONF_FILE
|
||||||
|
. $WORKSPACE/$PREVIOUS_CONF_FILE
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
GenerateShellCodeToSetVariable() {
|
||||||
|
VARIABLE=$1
|
||||||
|
OUTPUT_FILE=$2
|
||||||
|
VAR_VALUE="echo \${${VARIABLE}}"
|
||||||
|
VAR_VALUE=`eval $VAR_VALUE`
|
||||||
|
echo "if [ -z \"\$${VARIABLE}\" ]" >> $OUTPUT_FILE
|
||||||
|
echo "then" >> $OUTPUT_FILE
|
||||||
|
echo " export ${VARIABLE}=${VAR_VALUE}" >> $OUTPUT_FILE
|
||||||
|
echo "fi" >> $OUTPUT_FILE
|
||||||
|
}
|
||||||
|
|
||||||
|
GenerateShellCodeToUpdatePath() {
|
||||||
|
OUTPUT_FILE=$1
|
||||||
|
echo "if [ -e $EDK_TOOLS_PATH_BIN ]" >> $OUTPUT_FILE
|
||||||
|
echo "then" >> $OUTPUT_FILE
|
||||||
|
echo " if [ "\${PATH/$EDK_TOOLS_PATH_BIN/}" == "\$PATH" ]" >> $OUTPUT_FILE
|
||||||
|
echo " then" >> $OUTPUT_FILE
|
||||||
|
echo " export PATH=$EDK_TOOLS_PATH_BIN:\$PATH" >> $OUTPUT_FILE
|
||||||
|
echo " fi" >> $OUTPUT_FILE
|
||||||
|
echo "fi" >> $OUTPUT_FILE
|
||||||
|
}
|
||||||
|
|
||||||
|
StoreCurrentConfiguration() {
|
||||||
|
#
|
||||||
|
# Write configuration to a shell script to allow for configuration to be
|
||||||
|
# easily reloaded.
|
||||||
|
#
|
||||||
|
OUTPUT_FILE=Conf/BuildEnv.sh2
|
||||||
|
#echo Storing current configuration into \$WORKSPACE/$OUTPUT_FILE
|
||||||
|
OUTPUT_FILE=$WORKSPACE/$OUTPUT_FILE
|
||||||
|
echo "# Auto-generated by ${BASH_SOURCE[0]}" > $OUTPUT_FILE
|
||||||
|
GenerateShellCodeToSetVariable WORKSPACE $OUTPUT_FILE
|
||||||
|
GenerateShellCodeToSetVariable EDK_TOOLS_PATH $OUTPUT_FILE
|
||||||
|
GenerateShellCodeToUpdatePath $OUTPUT_FILE
|
||||||
|
}
|
||||||
|
|
||||||
|
SetEdkToolsPath() {
|
||||||
|
|
||||||
|
#
|
||||||
|
# If EDK_TOOLS_PATH is already set, then we can return right now
|
||||||
|
#
|
||||||
|
if [ -n "$EDK_TOOLS_PATH" ]
|
||||||
|
then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# Figure out a uniq directory name from the uname command
|
||||||
|
#
|
||||||
|
UNAME_DIRNAME=`uname -sm`
|
||||||
|
UNAME_DIRNAME=${UNAME_DIRNAME// /-}
|
||||||
|
UNAME_DIRNAME=${UNAME_DIRNAME//\//-}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Try $WORKSPACE/Conf/EdkTools
|
||||||
|
#
|
||||||
|
if [ -e $WORKSPACE/Conf/EdkTools ]
|
||||||
|
then
|
||||||
|
export EDK_TOOLS_PATH=$WORKSPACE/Conf/EdkTools
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# Try $WORKSPACE/Conf/BaseToolsSource
|
||||||
|
#
|
||||||
|
if [ -e $WORKSPACE/Conf/BaseToolsSource ]
|
||||||
|
then
|
||||||
|
export EDK_TOOLS_PATH=$WORKSPACE/Conf/BaseToolsSource
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# Try $WORKSPACE/BaseTools/Bin/$UNAME_DIRNAME
|
||||||
|
#
|
||||||
|
if [ -e $WORKSPACE/BaseTools/Bin/$UNAME_DIRNAME ]
|
||||||
|
then
|
||||||
|
export EDK_TOOLS_PATH=$WORKSPACE/BaseTools
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Unable to determine EDK_TOOLS_PATH"
|
||||||
|
echo
|
||||||
|
echo "You may need to download the 'BaseTools' from buildtools.tianocore.org."
|
||||||
|
echo "After downloading, either create a symbolic link to the source at"
|
||||||
|
echo "\$WORKSPACE/Conf/BaseToolsSource, or set the EDK_TOOLS_PATH environment"
|
||||||
|
echo "variable."
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
GetBaseToolsBinSubDir() {
|
||||||
|
#
|
||||||
|
# Figure out a uniq directory name from the uname command
|
||||||
|
#
|
||||||
|
UNAME_DIRNAME=`uname -sm`
|
||||||
|
UNAME_DIRNAME=${UNAME_DIRNAME// /-}
|
||||||
|
UNAME_DIRNAME=${UNAME_DIRNAME//\//-}
|
||||||
|
echo $UNAME_DIRNAME
|
||||||
|
}
|
||||||
|
|
||||||
|
GetEdkToolsPathBinDirectory() {
|
||||||
|
#
|
||||||
|
# Figure out a uniq directory name from the uname command
|
||||||
|
#
|
||||||
|
BIN_SUB_DIR=`GetBaseToolsBinSubDir`
|
||||||
|
|
||||||
|
if [ -e $EDK_TOOLS_PATH/PseudoBin/$BIN_SUB_DIR ]
|
||||||
|
then
|
||||||
|
EDK_TOOLS_PATH_BIN=$EDK_TOOLS_PATH/PseudoBin/$BIN_SUB_DIR
|
||||||
|
else
|
||||||
|
EDK_TOOLS_PATH_BIN=$EDK_TOOLS_PATH/Bin/$BIN_SUB_DIR
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo $EDK_TOOLS_PATH_BIN
|
||||||
|
}
|
||||||
|
|
||||||
|
AddEdkToolsToPath() {
|
||||||
|
|
||||||
|
#
|
||||||
|
# If EDK_TOOLS_PATH is not set, then we cannot update PATH
|
||||||
|
#
|
||||||
|
if [ -z "$EDK_TOOLS_PATH" ]
|
||||||
|
then
|
||||||
|
return -1
|
||||||
|
fi
|
||||||
|
|
||||||
|
EDK_TOOLS_PATH_BIN=`GetEdkToolsPathBinDirectory`
|
||||||
|
|
||||||
|
if [ ! -e $EDK_TOOLS_PATH_BIN ]
|
||||||
|
then
|
||||||
|
echo "Unable to find expected bin path under \$EDK_TOOLS_PATH!"
|
||||||
|
echo "> $EDK_TOOLS_PATH_BIN"
|
||||||
|
return -1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "${PATH/$EDK_TOOLS_PATH_BIN/}" == "$PATH" ]
|
||||||
|
then
|
||||||
|
export PATH=$EDK_TOOLS_PATH_BIN:$PATH
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
CopySingleTemplateFile() {
|
||||||
|
|
||||||
|
SRC_FILENAME=BaseTools/Conf/$1.template
|
||||||
|
DST_FILENAME=Conf/$1.txt
|
||||||
|
|
||||||
|
if [ -e $WORKSPACE/$DST_FILENAME ]
|
||||||
|
then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Copying \$WORKSPACE/$SRC_FILENAME"
|
||||||
|
echo " to \$WORKSPACE/$DST_FILENAME"
|
||||||
|
SRC_FILENAME=$WORKSPACE/$SRC_FILENAME
|
||||||
|
DST_FILENAME=$WORKSPACE/$DST_FILENAME
|
||||||
|
cp $SRC_FILENAME $DST_FILENAME
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
CopyTemplateFiles() {
|
||||||
|
|
||||||
|
CopySingleTemplateFile build_rule
|
||||||
|
CopySingleTemplateFile FrameworkDatabase
|
||||||
|
CopySingleTemplateFile tools_def
|
||||||
|
CopySingleTemplateFile target
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
ScriptMain() {
|
||||||
|
|
||||||
|
SetWorkspace
|
||||||
|
if [ -z $WORKSPACE ]
|
||||||
|
then
|
||||||
|
echo "Failure setting WORKSPACE"
|
||||||
|
return -1
|
||||||
|
fi
|
||||||
|
|
||||||
|
RestorePreviousConfiguration
|
||||||
|
|
||||||
|
SetEdkToolsPath
|
||||||
|
if [ -z $EDK_TOOLS_PATH ]
|
||||||
|
then
|
||||||
|
return -1
|
||||||
|
fi
|
||||||
|
|
||||||
|
AddEdkToolsToPath
|
||||||
|
if [ $? -ne 0 ]
|
||||||
|
then
|
||||||
|
echo "Failure adding EDK Tools into PATH!"
|
||||||
|
return -1
|
||||||
|
fi
|
||||||
|
|
||||||
|
StoreCurrentConfiguration
|
||||||
|
|
||||||
|
echo WORKSPACE: $WORKSPACE
|
||||||
|
echo EDK_TOOLS_PATH: $EDK_TOOLS_PATH
|
||||||
|
|
||||||
|
CopyTemplateFiles
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
# First, we run a python tool that will ask the user to configure
|
# Run the main function
|
||||||
# the environment in a (relatively) user friendly manner.
|
|
||||||
#
|
#
|
||||||
python ./BaseTools/BuildEnv.py $*
|
ScriptMain
|
||||||
|
|
||||||
#
|
|
||||||
# The python tool will write ./Conf/BuildEnv.sh to actually configure
|
|
||||||
# the environment.
|
|
||||||
#
|
|
||||||
if [ -e ./Conf/BuildEnv.sh ]
|
|
||||||
then
|
|
||||||
. ./Conf/BuildEnv.sh
|
|
||||||
else
|
|
||||||
echo There was a failure while trying to setup the environment!
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,287 +0,0 @@
|
||||||
## @file BuildEnv.py
|
|
||||||
# Initialize Environment for building
|
|
||||||
#
|
|
||||||
# Copyright (c) 2007, Intel Corporation
|
|
||||||
#
|
|
||||||
# All rights reserved. This program and the accompanying materials
|
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
|
||||||
# which accompanies this distribution. The full text of the license may be found at
|
|
||||||
# http://opensource.org/licenses/bsd-license.php
|
|
||||||
#
|
|
||||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
||||||
#
|
|
||||||
|
|
||||||
##
|
|
||||||
# Import Modules
|
|
||||||
#
|
|
||||||
import os
|
|
||||||
import os.path
|
|
||||||
import pickle
|
|
||||||
import shutil
|
|
||||||
import sys
|
|
||||||
|
|
||||||
from optparse import OptionParser
|
|
||||||
|
|
||||||
# Version and Copyright
|
|
||||||
VersionNumber = "0.01"
|
|
||||||
__version__ = "%prog Version " + VersionNumber
|
|
||||||
__copyright__ = "Copyright (c) 2007, Intel Corporation All rights reserved."
|
|
||||||
|
|
||||||
class SetupBuildEnvironmentApp:
|
|
||||||
|
|
||||||
def __init__(self):
|
|
||||||
(self.Opt, self.Args) = self.ProcessCommandLine()
|
|
||||||
self.SetupDefaults()
|
|
||||||
self.DetermineEnvironment()
|
|
||||||
self.DeleteEnvironmentConfigurationScript()
|
|
||||||
self.CopyTemplates()
|
|
||||||
self.WriteEnvironmentConfigurationScript()
|
|
||||||
|
|
||||||
def SetupDefaults(self):
|
|
||||||
self.itemsToConfigure = (
|
|
||||||
'compiler',
|
|
||||||
#'compiler-prefix',
|
|
||||||
'templates',
|
|
||||||
)
|
|
||||||
|
|
||||||
self.defaults = {
|
|
||||||
'compiler': {
|
|
||||||
'options': ('gcc', 'icc'),
|
|
||||||
'default': 'gcc',
|
|
||||||
},
|
|
||||||
'compiler-prefix': {
|
|
||||||
'options': ('/usr/bin', '/usr/bin/x86_64-pc-mingw32-'),
|
|
||||||
'freeform': True,
|
|
||||||
},
|
|
||||||
'templates': {
|
|
||||||
'description': 'templates and Conf directory',
|
|
||||||
'options': (
|
|
||||||
'copy once (no-overwrite)',
|
|
||||||
'copy with overwrite',
|
|
||||||
'symlink to templates',
|
|
||||||
'do nothing',
|
|
||||||
),
|
|
||||||
'default': 'copy once (no-overwrite)',
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
def ProcessCommandLine(self):
|
|
||||||
Parser = OptionParser(description=__copyright__,version=__version__,prog="BaseTools/BuildEnv")
|
|
||||||
Parser.add_option("-q", "--quiet", action="store_true", type=None, help="Disable all messages except FATAL ERRORS.")
|
|
||||||
Parser.add_option("-v", "--verbose", action="store_true", type=None, help="Turn on verbose output with informational messages printed, "\
|
|
||||||
"including library instances selected, final dependency expression, "\
|
|
||||||
"and warning messages, etc.")
|
|
||||||
Parser.add_option("-d", "--debug", action="store", type="int", help="Enable debug messages at specified level.")
|
|
||||||
|
|
||||||
if os.environ.has_key('WORKSPACE'):
|
|
||||||
default = os.environ['WORKSPACE']
|
|
||||||
else:
|
|
||||||
default = os.getcwd()
|
|
||||||
Parser.add_option("--workspace", action="store", type="string", help="Base director of tree to configure", default=default)
|
|
||||||
|
|
||||||
(Opt, Args)=Parser.parse_args()
|
|
||||||
Parser.print_version()
|
|
||||||
|
|
||||||
return (Opt, Args)
|
|
||||||
|
|
||||||
def DetermineEnvironment(self):
|
|
||||||
confFilename = os.path.join(os.path.expanduser('~'), '.edk-build-env.pickle')
|
|
||||||
try:
|
|
||||||
confFile = open(confFilename, 'r')
|
|
||||||
conf = pickle.load(confFile)
|
|
||||||
confFile.close()
|
|
||||||
except Exception:
|
|
||||||
conf = {}
|
|
||||||
self.conf = conf
|
|
||||||
|
|
||||||
for item in self.itemsToConfigure:
|
|
||||||
if not conf.has_key(item):
|
|
||||||
self.AskForValueOfOption(item)
|
|
||||||
|
|
||||||
while True:
|
|
||||||
self.SummarizeCurrentState()
|
|
||||||
|
|
||||||
if not self.Opt.quiet:
|
|
||||||
response = raw_input('Would you like to change anything? (default=no): ')
|
|
||||||
response = response.strip()
|
|
||||||
else:
|
|
||||||
response = ''
|
|
||||||
|
|
||||||
if response.lower() in ('', 'n', 'no'):
|
|
||||||
break
|
|
||||||
|
|
||||||
for item in self.itemsToConfigure:
|
|
||||||
self.AskForValueOfOption(item)
|
|
||||||
|
|
||||||
confFile = open(confFilename, 'w')
|
|
||||||
pickle.dump(conf, confFile)
|
|
||||||
confFile.close()
|
|
||||||
|
|
||||||
def AskForValueOfOption(self, option):
|
|
||||||
|
|
||||||
options = self.defaults[option]['options']
|
|
||||||
|
|
||||||
if self.defaults[option].has_key('default'):
|
|
||||||
default = self.defaults[option]['default']
|
|
||||||
else:
|
|
||||||
default = None
|
|
||||||
|
|
||||||
if self.defaults[option].has_key('freeform'):
|
|
||||||
freeform = self.defaults[option]['freeform']
|
|
||||||
else:
|
|
||||||
freeform = False
|
|
||||||
|
|
||||||
if self.defaults[option].has_key('description'):
|
|
||||||
description = self.defaults[option]['description']
|
|
||||||
else:
|
|
||||||
description = option
|
|
||||||
|
|
||||||
conf = self.conf
|
|
||||||
if conf.has_key(option):
|
|
||||||
default = conf[option]
|
|
||||||
options = list(options) # in case options came in as a tuple
|
|
||||||
assert((default == '') or (default is None) or ('' not in options))
|
|
||||||
if (default is not None) and (default not in options):
|
|
||||||
options.append(default)
|
|
||||||
if (freeform and ('' not in options)):
|
|
||||||
options.append('')
|
|
||||||
options.sort()
|
|
||||||
while True:
|
|
||||||
print
|
|
||||||
if len(options) > 0:
|
|
||||||
print 'Options for', description
|
|
||||||
for i in range(len(options)):
|
|
||||||
print ' %d.' % (i + 1),
|
|
||||||
if options[i] != '':
|
|
||||||
print options[i],
|
|
||||||
else:
|
|
||||||
print '(empty string)',
|
|
||||||
if options[i] == default:
|
|
||||||
print '(default)'
|
|
||||||
else:
|
|
||||||
print
|
|
||||||
|
|
||||||
if len(options) > 0:
|
|
||||||
prompt = 'Select number or type value: '
|
|
||||||
else:
|
|
||||||
prompt = 'Type value: '
|
|
||||||
response = raw_input(prompt)
|
|
||||||
response = response.strip()
|
|
||||||
|
|
||||||
if response.isdigit():
|
|
||||||
response = int(response)
|
|
||||||
if response > len(options):
|
|
||||||
print 'ERROR: Invalid number selection!'
|
|
||||||
continue
|
|
||||||
response = options[response - 1]
|
|
||||||
elif (response == '') and (default is not None):
|
|
||||||
response = default
|
|
||||||
|
|
||||||
if (not freeform) and (response not in options):
|
|
||||||
print 'ERROR: Invalid selection! (must be from list)'
|
|
||||||
continue
|
|
||||||
|
|
||||||
break
|
|
||||||
|
|
||||||
conf[option] = response
|
|
||||||
print 'Using', conf[option], 'for', description
|
|
||||||
|
|
||||||
def SummarizeCurrentState(self):
|
|
||||||
print
|
|
||||||
print 'Current configuration:'
|
|
||||||
conf = self.conf
|
|
||||||
for item in self.itemsToConfigure:
|
|
||||||
value = conf[item]
|
|
||||||
if value == '': value = '(empty string)'
|
|
||||||
print ' ', item, '->', value
|
|
||||||
|
|
||||||
def CopyTemplates(self):
|
|
||||||
todo = self.conf['templates']
|
|
||||||
workspace = os.path.realpath(self.Opt.workspace)
|
|
||||||
templatesDir = \
|
|
||||||
os.path.join(workspace, 'BaseTools', 'Conf')
|
|
||||||
confDir = \
|
|
||||||
os.path.join(workspace, 'Conf')
|
|
||||||
print
|
|
||||||
print 'Templates & Conf directory'
|
|
||||||
print ' Templates dir:', self.RelativeToWorkspace(templatesDir)
|
|
||||||
for filename in os.listdir(templatesDir):
|
|
||||||
if not filename.endswith('.template'): continue
|
|
||||||
|
|
||||||
srcFilename = os.path.join(templatesDir, filename)
|
|
||||||
destFilename = os.path.join(confDir, filename[:-len('template')] + 'txt')
|
|
||||||
print ' ', self.RelativeToWorkspace(destFilename),
|
|
||||||
|
|
||||||
if todo == 'copy once (no-overwrite)':
|
|
||||||
if os.path.exists(destFilename):
|
|
||||||
print '[skipped, already exists]'
|
|
||||||
else:
|
|
||||||
shutil.copy(srcFilename, destFilename)
|
|
||||||
print '[copied]'
|
|
||||||
elif todo == 'copy with overwrite':
|
|
||||||
overwrite = ''
|
|
||||||
if os.path.exists(destFilename):
|
|
||||||
os.remove(destFilename)
|
|
||||||
overwrite = ', overwritten'
|
|
||||||
shutil.copy(srcFilename, destFilename)
|
|
||||||
print '[copied' + overwrite + ']'
|
|
||||||
elif todo == 'symlink to templates':
|
|
||||||
if os.path.islink(destFilename) or os.path.exists(destFilename):
|
|
||||||
if not os.path.islink(destFilename):
|
|
||||||
raise Exception, '%s is not a symlink! (remove file if you want to start using symlinks)' % \
|
|
||||||
(self.RelativeToWorkspace(destFilename))
|
|
||||||
os.remove(destFilename)
|
|
||||||
os.symlink(os.path.join('..', self.RelativeToWorkspace(srcFilename)), destFilename)
|
|
||||||
print '[symlinked]'
|
|
||||||
elif todo == 'do nothing':
|
|
||||||
print '[skipped by user request]'
|
|
||||||
else:
|
|
||||||
raise Exception, 'Unknown action for templates&conf: %s' % todo
|
|
||||||
|
|
||||||
def DeleteEnvironmentConfigurationScript(self):
|
|
||||||
workspace = os.path.realpath(self.Opt.workspace)
|
|
||||||
scriptFilename = os.path.join(workspace, 'Conf', 'BuildEnv.sh')
|
|
||||||
if os.path.exists(scriptFilename):
|
|
||||||
os.remove(scriptFilename)
|
|
||||||
|
|
||||||
def WriteEnvironmentConfigurationScript(self):
|
|
||||||
workspace = os.path.realpath(self.Opt.workspace)
|
|
||||||
scriptFilename = os.path.join(workspace, 'Conf', 'BuildEnv.sh')
|
|
||||||
print
|
|
||||||
print 'Storing environment configuration into',
|
|
||||||
print self.RelativeToWorkspace(scriptFilename)
|
|
||||||
script = open(scriptFilename, 'w')
|
|
||||||
|
|
||||||
print >> script, 'export WORKSPACE="%s"' % workspace
|
|
||||||
print >> script, 'export TOOLCHAIN="%s"' % self.conf['compiler']
|
|
||||||
#print >> script, 'export COMPILER_SUITE_PATH_PREFIX="%s"' % self.conf['compiler-prefix']
|
|
||||||
|
|
||||||
EDK_TOOLS_PATH = os.path.join(workspace, 'BaseTools')
|
|
||||||
print >> script, 'if [ $EDK_TOOLS_PATH=="" ]'
|
|
||||||
print >> script, 'then'
|
|
||||||
print >> script, ' export EDK_TOOLS_PATH="%s"' % EDK_TOOLS_PATH
|
|
||||||
print >> script, 'fi'
|
|
||||||
|
|
||||||
#
|
|
||||||
# Change PATH variable
|
|
||||||
#
|
|
||||||
newPath = os.environ['PATH'].split(os.path.pathsep)
|
|
||||||
binDir = \
|
|
||||||
os.path.join(workspace, 'BaseTools', 'Bin', sys.platform.title())
|
|
||||||
if binDir not in newPath:
|
|
||||||
newPath.append(binDir)
|
|
||||||
newPath = os.path.pathsep.join(newPath)
|
|
||||||
print >> script, 'export PATH=%s' % newPath
|
|
||||||
|
|
||||||
script.close()
|
|
||||||
|
|
||||||
def RelativeToWorkspace(self, path):
|
|
||||||
workspace = os.path.realpath(self.Opt.workspace)
|
|
||||||
for prefix in (workspace + os.path.sep, workspace):
|
|
||||||
if path.startswith(prefix):
|
|
||||||
return path[len(prefix):]
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
SetupBuildEnvironmentApp()
|
|
||||||
|
|
Loading…
Reference in New Issue