Revision: 18584
          http://sourceforge.net/p/edk2/code/18584
Author:   lgao4
Date:     2015-10-08 09:29:56 +0000 (Thu, 08 Oct 2015)
Log Message:
-----------
BaseTools: Update edksetup.sh to support multiple workspaces

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Liming Gao <[email protected]>
Reviewed-by: Wu Hao A <[email protected]>

Modified Paths:
--------------
    trunk/edk2/BaseTools/BuildEnv
    trunk/edk2/edksetup.sh

Modified: trunk/edk2/BaseTools/BuildEnv
===================================================================
--- trunk/edk2/BaseTools/BuildEnv       2015-10-08 09:29:36 UTC (rev 18583)
+++ trunk/edk2/BaseTools/BuildEnv       2015-10-08 09:29:56 UTC (rev 18584)
@@ -2,7 +2,7 @@
 # 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 - 2014, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
 # 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
@@ -35,11 +35,28 @@
   #
   # Restore previous configuration
   #
-  PREVIOUS_CONF_FILE=Conf/BuildEnv.sh
+  if [ -z "$CONF_PATH" ]
+  then
+    export CONF_PATH=$WORKSPACE/Conf
+    if [ ! -d $WORKSPACE/Conf ] && [ -n "$PACKAGES_PATH" ]
+    then
+      PACKAGES_PATH=${PACKAGES_PATH//:/ }
+      for DIR in $PACKAGES_PATH
+      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 \$WORKSPACE/$PREVIOUS_CONF_FILE
-    . $WORKSPACE/$PREVIOUS_CONF_FILE
+    echo Loading previous configuration from $PREVIOUS_CONF_FILE
+    . $PREVIOUS_CONF_FILE
   fi
 }
 
@@ -70,9 +87,8 @@
   # Write configuration to a shell script to allow for configuration to be
   # easily reloaded.
   #
-  OUTPUT_FILE=Conf/BuildEnv.sh
-  #echo Storing current configuration into \$WORKSPACE/$OUTPUT_FILE
-  OUTPUT_FILE=$WORKSPACE/$OUTPUT_FILE
+  OUTPUT_FILE=$CONF_PATH/BuildEnv.sh
+  #echo Storing current configuration into $OUTPUT_FILE
   echo "# Auto-generated by ${BASH_SOURCE[0]}" > $OUTPUT_FILE
   GenerateShellCodeToSetVariable WORKSPACE $OUTPUT_FILE
   GenerateShellCodeToSetVariable EDK_TOOLS_PATH $OUTPUT_FILE
@@ -90,20 +106,20 @@
   fi
 
   #
-  # Try $WORKSPACE/Conf/EdkTools
+  # Try $CONF_PATH/EdkTools
   #
-  if [ -e $WORKSPACE/Conf/EdkTools ]
+  if [ -e $CONF_PATH/EdkTools ]
   then
-    export EDK_TOOLS_PATH=$WORKSPACE/Conf/EdkTools
+    export EDK_TOOLS_PATH=$CONF_PATH/EdkTools
     return 0
   fi
 
   #
-  # Try $WORKSPACE/Conf/BaseToolsSource
+  # Try $CONF_PATH/BaseToolsSource
   #
-  if [ -e $WORKSPACE/Conf/BaseToolsSource ]
+  if [ -e $CONF_PATH/BaseToolsSource ]
   then
-    export EDK_TOOLS_PATH=$WORKSPACE/Conf/BaseToolsSource
+    export EDK_TOOLS_PATH=$CONF_PATH/BaseToolsSource
     return 0
   fi
 
@@ -116,6 +132,22 @@
     return 0
   fi
 
+  #
+  # Try $PACKAGES_PATH
+  #
+  if [ -n "$PACKAGES_PATH"]
+  then
+    PACKAGES_PATH=${PACKAGES_PATH//:/ }
+    for DIR in $PACKAGES_PATH
+    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."
@@ -179,17 +211,16 @@
 CopySingleTemplateFile() {
 
   SRC_FILENAME=Conf/$1.template
-  DST_FILENAME=Conf/$1.txt
+  DST_FILENAME=$CONF_PATH/$1.txt
 
-  if [ -e $WORKSPACE/$DST_FILENAME ]
+  if [ -e $DST_FILENAME ]
   then
     return
   fi
 
   echo "Copying \$EDK_TOOLS_PATH/$SRC_FILENAME"
-  echo "     to \$WORKSPACE/$DST_FILENAME"
+  echo "     to $DST_FILENAME"
   SRC_FILENAME=$EDK_TOOLS_PATH/$SRC_FILENAME
-  DST_FILENAME=$WORKSPACE/$DST_FILENAME
   cp $SRC_FILENAME $DST_FILENAME
 
 }
@@ -230,6 +261,7 @@
 
   echo WORKSPACE: $WORKSPACE
   echo EDK_TOOLS_PATH: $EDK_TOOLS_PATH
+  echo CONF_PATH: $CONF_PATH
 
   CopyTemplateFiles
 

Modified: trunk/edk2/edksetup.sh
===================================================================
--- trunk/edk2/edksetup.sh      2015-10-08 09:29:36 UTC (rev 18583)
+++ trunk/edk2/edksetup.sh      2015-10-08 09:29:56 UTC (rev 18584)
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
 # 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
@@ -78,10 +78,23 @@
   elif [ -f "$WORKSPACE/BaseTools/BuildEnv" ]
   then
     . $WORKSPACE/BaseTools/BuildEnv $*
+  elif [ -n "$PACKAGES_PATH" ]
+  then 
+    PATH_LIST=$PACKAGES_PATH
+    PATH_LIST=${PATH_LIST//:/ }
+    for DIR in $PATH_LIST
+    do
+      if [ -f "$DIR/BaseTools/BuildEnv" ]
+      then
+        export EDK_TOOLS_PATH=$DIR/BaseTools
+        . $DIR/BaseTools/BuildEnv $*
+        break
+      fi
+    done
   else
     echo BaseTools not found in your tree, and EDK_TOOLS_PATH is not set.
-    echo Please check that WORKSPACE is not set incorrectly in your
-    echo shell, or point EDK_TOOLS_PATH at the directory that contains
+    echo Please check that WORKSPACE or PACKAGES_PATH is not set incorrectly
+    echo in your shell, or point EDK_TOOLS_PATH at the directory that contains
     echo the EDK2 BuildEnv script.
     return 1
   fi


------------------------------------------------------------------------------
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits

Reply via email to