audk/BaseTools/BuildEnv
Oliver Smith-Denny 61f9695f20 BaseTools: Remove Pip BaseTools
BaseTools was moved out to a separate repo and consumed as a pip
module by edk2 CI. This process has not led to the desired goals
of doing so, so this patch removes the pip based BaseTools from
edk2 CI.

The original goal of moving BaseTools to a pip module was
primarily to speed up the development process, as the old edk2
mailing list was slow. However, with edk2 moving to PRs, it now
actually slows the BaseTools development process to have to do
a PR in another repo, publish the module, and then make a PR
in edk2 to consume the new BaseTools. It also holds up using
the features in a new BaseTools in other PRs.

There were other goals of moving, such as allowing projects to
use the BaseTools outside of edk2. This can still be accomplished
outside of this PR, this PR simply stops edk2 CI from using the
pip module.

Continuous-integration-options: PatchCheck.ignore-multi-package

Signed-off-by: Oliver Smith-Denny <osde@linux.microsoft.com>
2024-09-10 00:41:53 +00:00

271 lines
5.9 KiB
Plaintext
Executable File

## @file
# Setup the environment for unix-like systems running a bash-like shell.
# This file must be "sourced" not merely executed. For example: ". edksetup.sh"
#
# Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
# Copyright (c) 2016, Linaro Ltd. All rights reserved.<BR>
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
SetWorkspace() {
#
# If WORKSPACE is already set, then we can return right now
#
if [ -n "$WORKSPACE" ]
then
return 0
fi
#
# Set $WORKSPACE
#
WORKSPACE=$(pwd)
export WORKSPACE
return 0
}
RestorePreviousConfiguration() {
#
# Restore previous configuration
#
if [ -z "$CONF_PATH" ]
then
export CONF_PATH=$WORKSPACE/Conf
if [ ! -d $WORKSPACE/Conf ] && [ -n "$PACKAGES_PATH" ]
then
for DIR in $(echo $PACKAGES_PATH | tr ':' ' ')
do
if [ -d $DIR/Conf ]
then
export CONF_PATH=$DIR/Conf
break
fi
done
fi
fi
PREVIOUS_CONF_FILE=$CONF_PATH/BuildEnv.sh
if [ -e $PREVIOUS_CONF_FILE ]
then
echo Loading previous configuration from $PREVIOUS_CONF_FILE
. $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 " FOUND_TOOLS_PATH_BIN=0" >> $OUTPUT_FILE
echo " for DIR in \$(echo \$PATH | tr ':' ' '); do" >> $OUTPUT_FILE
echo " if [ \"\$DIR\" = \"$EDK_TOOLS_PATH_BIN\" ]; then" >> $OUTPUT_FILE
echo " FOUND_TOOLS_PATH_BIN=1" >> $OUTPUT_FILE
echo " fi" >> $OUTPUT_FILE
echo " done" >> $OUTPUT_FILE
echo " if [ \$FOUND_TOOLS_PATH_BIN = 0 ]" >> $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_PATH/BuildEnv.sh
#echo Storing current configuration into $OUTPUT_FILE
echo "# Auto-generated by BaseTools/BuildEnv" >| $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
#
# Try $CONF_PATH/EdkTools
#
if [ -e $CONF_PATH/EdkTools ]
then
export EDK_TOOLS_PATH=$CONF_PATH/EdkTools
return 0
fi
#
# Try $CONF_PATH/BaseToolsSource
#
if [ -e $CONF_PATH/BaseToolsSource ]
then
export EDK_TOOLS_PATH=$CONF_PATH/BaseToolsSource
return 0
fi
#
# Try $WORKSPACE/BaseTools
#
if [ -e $WORKSPACE/BaseTools ]
then
export EDK_TOOLS_PATH=$WORKSPACE/BaseTools
return 0
fi
#
# Try $PACKAGES_PATH
#
if [ -n "$PACKAGES_PATH" ]
then
for DIR in $(echo $PACKAGES_PATH | tr ':' ' ')
do
if [ -d $DIR/BaseTools ]
then
export EDK_TOOLS_PATH=$DIR/BaseTools
return 0
fi
done
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
#
echo $(uname -sm | tr ' ' '-')
}
GetEdkToolsPathBinDirectory() {
#
# Figure out a uniq directory name from the uname command
#
BIN_SUB_DIR=`GetBaseToolsBinSubDir`
if [ -e $EDK_TOOLS_PATH/BinWrappers/$BIN_SUB_DIR ]
then
EDK_TOOLS_PATH_BIN=$EDK_TOOLS_PATH/BinWrappers/$BIN_SUB_DIR
else
EDK_TOOLS_PATH_BIN=$EDK_TOOLS_PATH/Bin/$BIN_SUB_DIR
fi
echo $EDK_TOOLS_PATH_BIN
}
AddDirToStartOfPath() {
DIRNAME=$1
PATH=$DIRNAME:$PATH
export PATH
}
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`
AddDirToStartOfPath $EDK_TOOLS_PATH/BinWrappers/PosixLike
AddDirToStartOfPath $EDK_TOOLS_PATH_BIN
}
CopySingleTemplateFile() {
SRC_FILENAME=Conf/$1.template
DST_FILENAME=$CONF_PATH/$1.txt
if [ -e $DST_FILENAME ]
then
[ $RECONFIG != TRUE ] && return
fi
echo "Copying \$EDK_TOOLS_PATH/$SRC_FILENAME"
echo " to $DST_FILENAME"
SRC_FILENAME=$EDK_TOOLS_PATH/$SRC_FILENAME
cp $SRC_FILENAME $DST_FILENAME
}
CopyTemplateFiles() {
CopySingleTemplateFile build_rule
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
echo CONF_PATH: $CONF_PATH
CopyTemplateFiles
}
#
# Run the main function
#
ScriptMain