mirror of
				https://gitlab.com/qemu-project/edk2.git
				synced 2025-10-30 07:56:39 +08:00 
			
		
		
		
	 61f9695f20
			
		
	
	61f9695f20
	
	
	
		
			
			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>
		
			
				
	
	
		
			271 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			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
 | |
| 
 |