Add a new function to test if a DIST file list one by one to see if they can meet the requirement of Dependency. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Hess Chen <hesheng.chen@intel.com> Reviewed-by: Yonghong Zhu <yonghong.zhu@intel.com>
		
			
				
	
	
		
			101 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
# # @file
 | 
						|
# Test Install distribution package
 | 
						|
#
 | 
						|
# Copyright (c) 2016, 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
 | 
						|
# 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.
 | 
						|
#
 | 
						|
"""
 | 
						|
Test Install multiple distribution package
 | 
						|
"""
 | 
						|
# #
 | 
						|
# Import Modules
 | 
						|
#
 | 
						|
from Library import GlobalData
 | 
						|
import Logger.Log as Logger
 | 
						|
from Logger import StringTable as ST
 | 
						|
import Logger.ToolError as TE
 | 
						|
from Core.DependencyRules import DependencyRules
 | 
						|
from InstallPkg import UnZipDp
 | 
						|
 | 
						|
import shutil
 | 
						|
from traceback import format_exc
 | 
						|
from platform import python_version
 | 
						|
from sys import platform
 | 
						|
 | 
						|
# # Tool entrance method
 | 
						|
#
 | 
						|
# This method mainly dispatch specific methods per the command line options.
 | 
						|
# If no error found, return zero value so the caller of this tool can know
 | 
						|
# if it's executed successfully or not.
 | 
						|
#
 | 
						|
# @param  Options: command Options
 | 
						|
#
 | 
						|
def Main(Options=None):
 | 
						|
    ContentZipFile, DistFile = None, None
 | 
						|
    ReturnCode = 0
 | 
						|
 | 
						|
    try:
 | 
						|
        DataBase = GlobalData.gDB
 | 
						|
        WorkspaceDir = GlobalData.gWORKSPACE
 | 
						|
        if not Options.DistFiles:
 | 
						|
            Logger.Error("TestInstallPkg", TE.OPTION_MISSING, ExtraData=ST.ERR_SPECIFY_PACKAGE)
 | 
						|
 | 
						|
        DistPkgList = []
 | 
						|
        for DistFile in Options.DistFiles:
 | 
						|
            DistPkg, ContentZipFile, __, DistFile = UnZipDp(WorkspaceDir, DistFile)
 | 
						|
            DistPkgList.append(DistPkg)
 | 
						|
 | 
						|
        #
 | 
						|
        # check dependency
 | 
						|
        #
 | 
						|
        Dep = DependencyRules(DataBase)
 | 
						|
        Result = True
 | 
						|
        DpObj = None
 | 
						|
        try:
 | 
						|
            Result, DpObj = Dep.CheckTestInstallPdDepexSatisfied(DistPkgList)
 | 
						|
        except:
 | 
						|
            Result = False
 | 
						|
 | 
						|
        if Result:
 | 
						|
            Logger.Quiet(ST.MSG_TEST_INSTALL_PASS)
 | 
						|
        else:
 | 
						|
            Logger.Quiet(ST.MSG_TEST_INSTALL_FAIL)
 | 
						|
 | 
						|
    except TE.FatalError, XExcept:
 | 
						|
        ReturnCode = XExcept.args[0]
 | 
						|
        if Logger.GetLevel() <= Logger.DEBUG_9:
 | 
						|
            Logger.Quiet(ST.MSG_PYTHON_ON % (python_version(), platform) + format_exc())
 | 
						|
 | 
						|
    except Exception, x:
 | 
						|
        ReturnCode = TE.CODE_ERROR
 | 
						|
        Logger.Error(
 | 
						|
                    "\nTestInstallPkg",
 | 
						|
                    TE.CODE_ERROR,
 | 
						|
                    ST.ERR_UNKNOWN_FATAL_INSTALL_ERR % Options.DistFiles,
 | 
						|
                    ExtraData=ST.MSG_SEARCH_FOR_HELP,
 | 
						|
                    RaiseError=False
 | 
						|
                    )
 | 
						|
        Logger.Quiet(ST.MSG_PYTHON_ON % (python_version(), platform) + format_exc())
 | 
						|
 | 
						|
    finally:
 | 
						|
        Logger.Quiet(ST.MSG_REMOVE_TEMP_FILE_STARTED)
 | 
						|
        if DistFile:
 | 
						|
            DistFile.Close()
 | 
						|
        if ContentZipFile:
 | 
						|
            ContentZipFile.Close()
 | 
						|
        if GlobalData.gUNPACK_DIR:
 | 
						|
            shutil.rmtree(GlobalData.gUNPACK_DIR)
 | 
						|
            GlobalData.gUNPACK_DIR = None
 | 
						|
        Logger.Quiet(ST.MSG_REMOVE_TEMP_FILE_DONE)
 | 
						|
    if ReturnCode == 0:
 | 
						|
        Logger.Quiet(ST.MSG_FINISH)
 | 
						|
    return ReturnCode
 | 
						|
 |