[Non-ACR][Scripts] Parallel install support added for different profile/arch 93/323893/6
authorutk.tiwari <utk.tiwari@samsung.com>
Thu, 8 May 2025 12:04:21 +0000 (17:34 +0530)
committerutk.tiwari <utk.tiwari@samsung.com>
Mon, 19 May 2025 09:17:14 +0000 (14:47 +0530)
Change-Id: I08d2a3ed42879a8546018f8cd69dec4963273531
Signed-off-by: utk.tiwari <utk.tiwari@samsung.com>
scripts_tpk/retriever.py
scripts_tpk/tcpackageslistsgen.py
scripts_tpk/tctestsgen.py
scripts_tpk/tpk-install.py
scripts_tpk/tpksdk-install.py

index 6406069ea9ae157611757b3484bc898fec45f93e..8699caa7c7e7adb79e5575991a0865a6db44f502 100755 (executable)
@@ -110,8 +110,26 @@ def tc_mnum(TC_FILES):
        print(0)
        return
 
-TFILE="/tmp/tnum.csv"
-TFILEPRE="/tmp/tnum.csv_pre"
+
+lenArgs=len(argv)
+
+if argv[4] == 'headed':
+       PROFILE_DIR = 'tizeniot'
+else:
+       PROFILE_DIR = argv[4]
+
+if ( argv[1] == '-f' and lenArgs > 6 ):
+       TFILEPRE="/tmp/"+"workspace"+"_"+PROFILE_DIR+"_"+argv[6]+'_'+argv[3]+"_install"+"/tnum.csv_pre"
+       NEWFILE="/tmp/"+"workspace"+"_"+PROFILE_DIR+"_"+argv[6]+'_'+argv[3]+"_install"+"/tnum.csv_pre_new"
+elif ( argv[1] == '-anum' or argv[1] == '-mnum' ):
+       TFILEPRE="/tmp/"+"workspace"+"_"+PROFILE_DIR+"_"+argv[7]+'_'+argv[3]+"_install"+"/tnum.csv_pre"
+       NEWFILE="/tmp/"+"workspace"+"_"+PROFILE_DIR+"_"+argv[7]+'_'+argv[3]+"_install"+"/tnum.csv_pre_new"
+else:
+       TFILE="/tmp/tnum.csv"
+       TFILEPRE="/tmp/tnum.csv_pre"
+       NEWFILE="/tmp/tnum.csv_pre_new"
+
+
 def tc_fullinfo(TC_FILES):
        TC_LIST=[]
        fil=open(TC_FILES)
@@ -144,8 +162,6 @@ def tc_fullinfo(TC_FILES):
 
        return
 
-TFILE='/tmp/tnum.csv'
-NEWFILE="/tmp/tnum.csv_pre_new"
 
 def tc_anum2(TC_FILES):
        TC_COUNT=0
@@ -235,8 +251,6 @@ some_data=None
 
 ### script starts here ###
 
-lenArgs=len(argv)
-
 if ( lenArgs == 1 ):
        sys.exit()
 
index 359b884742f6995ed24bdf05b7c2f3618a0bde73..7ad04d4003e232af48ce6513171ab91b67c2a2bd 100755 (executable)
@@ -90,6 +90,11 @@ if ( path.exists(FILE) == False ):
        exit('No such file: '+FILE)
 
 MODULE_NAME_MOD=MODULE_NAME+'-native-'+TYPE
+if PROFILE == 'headed':
+       PROFILE_DIR = 'tizeniot'
+else:
+       PROFILE_DIR = PROFILE
+ARCH_PROFILE_DIR='workspace'+'_'+PROFILE_DIR+'_'+ARCH+'_'+TYPE+'_install'
 WORKSPACE_SRC_DIR=os.getenv('HOME')+dirSeparator+'workspace'+'_'+PROFILE+'_'+ARCH+dirSeparator+MODULE_NAME_MOD
 
 CATEGORY='IntegrationTestCases'
@@ -115,7 +120,7 @@ else:
        MAN_NUM=output
 TOT_NUM=str(int(AUTO_NUM)+int(MAN_NUM))
 
-TFILE=dirSeparator+'tmp'+dirSeparator+'tempfile.xml'
+TFILE=dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+'tempfile.xml'
 if ( path.exists(TFILE) ):
        os.remove(TFILE)
 
index f98ea0525331ecb6e331bbfea9ccf8d26a822f6a..54e03d644eac38f6af0407bfbd9a7a5fd4564e18 100755 (executable)
@@ -151,6 +151,7 @@ MODULE_NAME_MOD=MODULE_NAME+'-native-'+BUILD_TYPE
 MODULE_FULL_NAME='org.tizen.'+MODULE_NAME_MOD
 MODULE_NAME_C=capwords(MODULE_NAME, '-').replace('-', '')
 SCRIPT_DIR=path.abspath(path.dirname(argv[0]))
+ARCH_PROFILE_DIR='workspace'+'_'+profile+'_'+arch+'_'+argv[1]+'_install'
 WORKSPACE_SRC_DIR=getenv('HOME')+dirSeparator+'workspace'+'_'+profile+'_'+arch+dirSeparator+MODULE_NAME_MOD
 PACKAGING_DIR =SCRIPT_DIR+dirSeparator+".."+dirSeparator+"packaging"+dirSeparator+BUILD_TYPE+dirSeparator
 
@@ -158,7 +159,7 @@ FILE=argv[3]+dirSeparator+'tests.xml'
 if ( path.exists(FILE) ):
        os.remove(FILE)
 
-TFILE=dirSeparator+'tmp'+dirSeparator+'tcs.csv'
+TFILE=dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+'tcs.csv'
 if ( path.exists(TFILE) ):
        os.remove(TFILE)
 
@@ -170,6 +171,7 @@ if ( status > 0 ):
        for line in tfile_pre:
                print(line.strip('\n'))
        tfile_pre.close()
+       print(output)
        exit('Error executing retriever.py!!! Aborting...')
 # TODO sort tcs based on set field (module)
 status=os.system('cat '+TFILE+'_pre | sort -t\',\' -k2,2 -s > '+TFILE)
@@ -178,7 +180,7 @@ status=os.system('cat '+TFILE+'_pre | sort -t\',\' -k2,2 -s > '+TFILE)
 #####exclude.list#####
 if ( arch == 'x86' ):
        if os.path.exists('custom_tclist/Emulator.tclist_'+profile) and os.path.getsize('custom_tclist/Emulator.tclist_'+profile) > 0:
-               NEWFILE="/tmp/tnum.csv_pre_new"
+               NEWFILE="/tmp/"+ARCH_PROFILE_DIR+"/tnum.csv_pre_new"
                dest=open(TFILE,'r')
                new_file=open(NEWFILE,'w')
                src=open('custom_tclist/Emulator.tclist_'+profile,'r')
@@ -198,7 +200,7 @@ if ( arch == 'x86' ):
                new_file.close()
                shutil.copy(NEWFILE,TFILE)
 if os.path.exists('exclude.list'):
-       NEWFILE="/tmp/tnum.csv_pre_new"
+       NEWFILE="/tmp/"+ARCH_PROFILE_DIR+"/tnum.csv_pre_new"
        dest=open(TFILE,'r')
        new_file=open(NEWFILE,'w')
        src=open('exclude.list','r')
index 4e06d00c38ffc0976a998e57a5ea0625da104763..96df9ac303ed66ac620f376605b112ea83a0c82d 100755 (executable)
@@ -85,36 +85,37 @@ def install(TYPE, MODNAME, PROFILE, TC_COUNT, ARCH, COVERAGE):
                                sys.exit('Package Not Found '+PKG_VNAME)
                        TIZEN____='tizen_native_10.0'
                        TCT_DIR='opt'+dirSeparator+'tct-'+MODNAME+'-native-'+TYPE
+                       ARCH_PROFILE_DIR='workspace'+'_'+ sys.argv[2]+'_'+sys.argv[1]+'_'+TYPE+'_install'
                        TO_PKG_DIR=dirSeparator+'opt'+dirSeparator+'tct'+dirSeparator+TIZEN____+dirSeparator+'packages'
 
                        print('Workspace Path:' +WORKSPACE_DIR)
                        print('Deploying '+TYPE+'->'+MODNAME+' suite to tct-mgr...')
                        # prepare tct directory and files
                        print('-- Preparing suite .zip file...')
-                       print('---- Creating '+dirSeparator+'tmp'+dirSeparator+TCT_DIR+' directory')
-                       removeDir(dirSeparator+'tmp'+dirSeparator+'opt')
-                       os.makedirs(dirSeparator+'tmp'+dirSeparator+TCT_DIR)
+                       print('---- Creating '+dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+TCT_DIR+' directory')
+                       removeDir(dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+'opt')
+                       os.makedirs(dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+TCT_DIR)
 
                        # README
-                       print('---- Copying '+dirSeparator+'tmp'+dirSeparator+TCT_DIR)
-                       shutil.copy('scripts_tpk'+dirSeparator+'README', dirSeparator+'tmp'+dirSeparator+TCT_DIR)
+                       print('---- Copying '+dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+TCT_DIR)
+                       shutil.copy('scripts_tpk'+dirSeparator+'README', dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+TCT_DIR)
 
                        # tpk
-                       print('---- Copying '+dirSeparator+'tmp'+dirSeparator+TCT_DIR+' package')
+                       print('---- Copying '+dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+TCT_DIR+' package')
                        try:
-                               shutil.copy(TPK_DIR+dirSeparator+PKG_FNAME, dirSeparator+'tmp'+dirSeparator+TCT_DIR)
+                               shutil.copy(TPK_DIR+dirSeparator+PKG_FNAME, dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+TCT_DIR)
                        except(shutil.Error):
                                sys.exit('Aborting...')
 
                        # inst.sh
-                       print('---- Generating '+dirSeparator+'tmp'+dirSeparator+TCT_DIR+dirSeparator+'inst.sh file')
+                       print('---- Generating '+dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+TCT_DIR+dirSeparator+'inst.sh file')
                        # TODO port for windows
                        #status=os.system('sed -e "s:%{PKG_NAME}:"'+PKG_NAME+'":g" \
                        #       -e "s:%{PKG_FULLNAME}:"'+PKG_FNAME+'":g" \
                        #       -e "s:%{PKG_DIR}:"/opt/usr/media/tct/'+TCT_DIR+'":g" \
                        #       scripts_tpk/inst.sh > /tmp/'+TCT_DIR+'/inst.sh')
                        src_f=open('scripts_tpk'+dirSeparator+'inst.sh')
-                       dest_f=open(dirSeparator+'tmp'+dirSeparator+TCT_DIR+dirSeparator+'inst.sh', 'w')
+                       dest_f=open(dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+TCT_DIR+dirSeparator+'inst.sh', 'w')
 
                        for line in src_f:
                        
@@ -136,12 +137,13 @@ def install(TYPE, MODNAME, PROFILE, TC_COUNT, ARCH, COVERAGE):
 
                        #if ( (status % 256) != 0 ):
                        #       sys.exit('Error executing inst.sh!!! Aborting...')
-                       os.chmod(dirSeparator+'tmp'+dirSeparator+TCT_DIR+dirSeparator+'inst.sh', stat.S_IXUSR|stat.S_IXGRP|stat.S_IXOTH|stat.S_IRUSR|stat.S_IRGRP|stat.S_IROTH|stat.S_IWUSR)
+                       os.chmod(dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+TCT_DIR+dirSeparator+'inst.sh', stat.S_IXUSR|stat.S_IXGRP|stat.S_IXOTH|stat.S_IRUSR|stat.S_IRGRP|stat.S_IROTH|stat.S_IWUSR)
 
                        # tests.xml
-                       print('---- Generating '+dirSeparator+'tmp'+dirSeparator+TCT_DIR)
-                       status, output=subprocess.getstatusoutput('scripts_tpk'+dirSeparator+'tctestsgen.py '+TYPE+' '+MODNAME+' '+dirSeparator+'tmp'+dirSeparator+TCT_DIR+' '+PROFILE+' '+ARCH)
+                       print('---- Generating '+dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+TCT_DIR)
+                       status, output=subprocess.getstatusoutput('scripts_tpk'+dirSeparator+'tctestsgen.py '+TYPE+' '+MODNAME+' '+dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+TCT_DIR+' '+PROFILE+' '+ARCH)
                        if ( status > 0 ):
+                               print(output)
                                print('Failed to execute tctestsgen.py!!!')
                                sys.exit('Aborting...')
 
@@ -150,32 +152,32 @@ def install(TYPE, MODNAME, PROFILE, TC_COUNT, ARCH, COVERAGE):
                        process1 = "dali-"
                        process2 = "_dali"
                        if ( re.search(process_dali_application, MODNAME) != None ):
-                               shutil.copy('scripts_tpk'+dirSeparator+'external_wrapper_dali_app_launch.sh', dirSeparator+'tmp'+dirSeparator+TCT_DIR+dirSeparator+'external_wrapper.sh')
+                               shutil.copy('scripts_tpk'+dirSeparator+'external_wrapper_dali_app_launch.sh', dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+TCT_DIR+dirSeparator+'external_wrapper.sh')
                        elif ( re.search(process1, MODNAME) != None or re.search(process2, MODNAME) != None ):
-                               shutil.copy('scripts_tpk'+dirSeparator+'external_wrapper_dali_multi_app_launch.sh', dirSeparator+'tmp'+dirSeparator+TCT_DIR+dirSeparator+'external_wrapper.sh')
+                               shutil.copy('scripts_tpk'+dirSeparator+'external_wrapper_dali_multi_app_launch.sh', dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+TCT_DIR+dirSeparator+'external_wrapper.sh')
                        elif ( COVERAGE == '1' ):
                                print('-- Using Coverage Wrapper...')
-                               shutil.copy('scripts_tpk'+dirSeparator+'external_wrapper_coverage.sh', dirSeparator+'tmp'+dirSeparator+TCT_DIR+dirSeparator+'external_wrapper.sh')
+                               shutil.copy('scripts_tpk'+dirSeparator+'external_wrapper_coverage.sh', dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+TCT_DIR+dirSeparator+'external_wrapper.sh')
                        else:
-                               shutil.copy('scripts_tpk'+dirSeparator+'external_wrapper.sh', dirSeparator+'tmp'+dirSeparator+TCT_DIR)
+                               shutil.copy('scripts_tpk'+dirSeparator+'external_wrapper.sh', dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+TCT_DIR)
 
                        # LICENSE, add_all_smack_rule.sh, all_smack.rule
-                       shutil.copy('scripts_tpk'+dirSeparator+'LICENSE', dirSeparator+'tmp'+dirSeparator+TCT_DIR)
+                       shutil.copy('scripts_tpk'+dirSeparator+'LICENSE', dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+TCT_DIR)
 
                        # gentestsxml.py generate multiple TC in tests.xml
                        if int(TC_COUNT) > 1:
-                               gentestsxml.gentestxmlfile(dirSeparator+'tmp'+dirSeparator+TCT_DIR+dirSeparator, TC_COUNT)
+                               gentestsxml.gentestxmlfile(dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+TCT_DIR+dirSeparator, TC_COUNT)
 
                        # zip
-                       print('---- Preparing '+dirSeparator+'tmp'+dirSeparator+'tct'+dirSeparator+'packages'+dirSeparator+'tct-'+MODNAME+'-'+'native-'+TYPE+'-10.0.zip file')
+                       print('---- Preparing '+dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+'tct'+dirSeparator+'packages'+dirSeparator+'tct-'+MODNAME+'-'+'native-'+TYPE+'-10.0.zip file')
 
                        # clear old zips
-                       removeDir(dirSeparator+'tmp'+dirSeparator+'tct'+dirSeparator+'packages')
-                       os.makedirs(dirSeparator+'tmp'+dirSeparator+'tct'+dirSeparator+'packages')
+                       removeDir(dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+'tct'+dirSeparator+'packages')
+                       os.makedirs(dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+'tct'+dirSeparator+'packages')
 
                        # create new zip
                        #os.chdir(dirSeparator+'tmp')
-                       zipper(dirSeparator+'tmp'+dirSeparator+'opt', dirSeparator+'tmp'+dirSeparator+'tct'+dirSeparator+'packages'+dirSeparator+'tct-'+MODNAME+'-native-'+TYPE+'-10.0.zip', True, dirSeparator)
+                       zipper(dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+'opt', dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+'tct'+dirSeparator+'packages'+dirSeparator+'tct-'+MODNAME+'-native-'+TYPE+'-10.0.zip', True, dirSeparator)
 
                        # deployment
                        print('-- Suite deployment...')
@@ -184,7 +186,7 @@ def install(TYPE, MODNAME, PROFILE, TC_COUNT, ARCH, COVERAGE):
                        print('---- Copying '+TO_PKG_DIR+dirSeparator+PROFILE+dirSeparator+'tct-'+MODNAME+'-native-'+TYPE+'-10.0.zip')
                        if ( os.path.exists(TO_PKG_DIR+dirSeparator+PROFILE) == False):
                                os.makedirs(TO_PKG_DIR+dirSeparator+PROFILE)
-                       shutil.copy(dirSeparator+'tmp'+dirSeparator+'tct'+dirSeparator+'packages'+dirSeparator+'tct-'+MODNAME+'-native-'+TYPE+'-10.0.zip', TO_PKG_DIR+dirSeparator+PROFILE)
+                       shutil.copy(dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+'tct'+dirSeparator+'packages'+dirSeparator+'tct-'+MODNAME+'-native-'+TYPE+'-10.0.zip', TO_PKG_DIR+dirSeparator+PROFILE)
                        print('---- Updating '+TO_PKG_DIR+dirSeparator+'pkg_infos'+dirSeparator+PROFILE+'_pkg_info.xml')
                        status, output=subprocess.getstatusoutput('scripts_tpk'+dirSeparator+'tcpackageslistsgen.py '+TYPE+' '+MODNAME+' '+PROFILE+' '+TO_PKG_DIR+dirSeparator+'pkg_infos'+dirSeparator+PROFILE+'_pkg_info.xml 0'+' '+TC_COUNT+' '+ARCH)
                        if ( status > 0 ):
@@ -239,7 +241,10 @@ if ( OS == 'Windows' ):
        dirSeparator='\\'
 
 PROJECT_DIR=(os.path.abspath(os.path.dirname(sys.argv[0])))
-TPK_DIR=os.getenv('HOME')+dirSeparator+'tpks'
+if ( len(sys.argv) >= 6 ):
+       TPK_DIR=os.getenv('HOME')+dirSeparator+'tpks'+'_'+ sys.argv[2]+'_'+sys.argv[1]+'_'+sys.argv[5]
+else:
+       TPK_DIR=os.getenv('HOME')+dirSeparator+'tpks'+'_'+ sys.argv[2]+'_'+sys.argv[1]
 WORKSPACE_DIR=os.getenv('HOME')+dirSeparator+'workspace'+'_'+ sys.argv[2]+'_'+sys.argv[1]
 
 # TODO use argparse
index 8b563d034e8026a5b5d498b7dae01499e7366129..5431218244c8cc4ba4209d41ef317de7f28dcbff 100755 (executable)
@@ -85,31 +85,32 @@ def install(TYPE, MODNAME, PROFILE, TC_COUNT, ARCH, COVERAGE):
                                sys.exit('Package Not Found '+PKG_VNAME)
                        TIZEN____='tizen_native_10.0'
                        TCT_DIR='opt'+dirSeparator+'tct-'+MODNAME+'-native-'+TYPE
+                       ARCH_PROFILE_DIR='workspace'+'_'+ sys.argv[2]+'_'+sys.argv[1]+'_'+TYPE+'_install'
                        TO_PKG_DIR=dirSeparator+'opt'+dirSeparator+'tct'+dirSeparator+TIZEN____+dirSeparator+'packages'
 
                        print('Workspace Path:' +WORKSPACE_DIR)
                        print('Deploying '+TYPE+'->'+MODNAME+' suite to tct-mgr...')
                        # prepare tct directory and files
                        print('-- Preparing suite .zip file...')
-                       print('---- Creating '+dirSeparator+'tmp'+dirSeparator+TCT_DIR+' directory')
-                       removeDir(dirSeparator+'tmp'+dirSeparator+'opt')
-                       os.makedirs(dirSeparator+'tmp'+dirSeparator+TCT_DIR)
+                       print('---- Creating '+dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+TCT_DIR+' directory')
+                       removeDir(dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+'opt')
+                       os.makedirs(dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+TCT_DIR)
 
                        # README
-                       print('---- Copying '+dirSeparator+'tmp'+dirSeparator+TCT_DIR)
-                       shutil.copy('scripts_tpk'+dirSeparator+'README', dirSeparator+'tmp'+dirSeparator+TCT_DIR)
+                       print('---- Copying '+dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+TCT_DIR)
+                       shutil.copy('scripts_tpk'+dirSeparator+'README', dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+TCT_DIR)
 
                        # tpk
-                       print('---- Copying '+dirSeparator+'tmp'+dirSeparator+TCT_DIR+' package')
+                       print('---- Copying '+dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+TCT_DIR+' package')
                        try:
-                               shutil.copy(TPK_DIR+dirSeparator+PKG_FNAME, dirSeparator+'tmp'+dirSeparator+TCT_DIR)
+                               shutil.copy(TPK_DIR+dirSeparator+PKG_FNAME, dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+TCT_DIR)
                        except(shutil.Error):
                                sys.exit('Aborting...')
 
                        # inst.sh
-                       print('---- Generating '+dirSeparator+'tmp'+dirSeparator+TCT_DIR+dirSeparator+'inst.sh file')
+                       print('---- Generating '+dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+TCT_DIR+dirSeparator+'inst.sh file')
                        src_f=open('scripts_tpk'+dirSeparator+'inst.sh')
-                       dest_f=open(dirSeparator+'tmp'+dirSeparator+TCT_DIR+dirSeparator+'inst.sh', 'w')
+                       dest_f=open(dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+TCT_DIR+dirSeparator+'inst.sh', 'w')
                        for line in src_f:
                                pkg_dir_m=re.search('^\sPKG_DIR=(?P<pkg_dir>%{PKG_DIR})', line)
                                pkg_name_m=re.search('^\sPKG_NAME=(?P<pkg_name>%{PKG_NAME})', line)
@@ -128,11 +129,11 @@ def install(TYPE, MODNAME, PROFILE, TC_COUNT, ARCH, COVERAGE):
 
                        #if ( (status % 256) != 0 ):
                        #       sys.exit('Error executing inst.sh!!! Aborting...')
-                       os.chmod(dirSeparator+'tmp'+dirSeparator+TCT_DIR+dirSeparator+'inst.sh', stat.S_IXUSR|stat.S_IXGRP|stat.S_IXOTH|stat.S_IRUSR|stat.S_IRGRP|stat.S_IROTH|stat.S_IWUSR)
+                       os.chmod(dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+TCT_DIR+dirSeparator+'inst.sh', stat.S_IXUSR|stat.S_IXGRP|stat.S_IXOTH|stat.S_IRUSR|stat.S_IRGRP|stat.S_IROTH|stat.S_IWUSR)
 
                        # tests.xml
-                       print('---- Generating '+dirSeparator+'tmp'+dirSeparator+TCT_DIR)
-                       status, output=subprocess.getstatusoutput('scripts_tpk'+dirSeparator+'tctestsgen.py '+TYPE+' '+MODNAME+' '+dirSeparator+'tmp'+dirSeparator+TCT_DIR+' '+PROFILE+' '+ARCH)
+                       print('---- Generating '+dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+TCT_DIR)
+                       status, output=subprocess.getstatusoutput('scripts_tpk'+dirSeparator+'tctestsgen.py '+TYPE+' '+MODNAME+' '+dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+TCT_DIR+' '+PROFILE+' '+ARCH)
                        if ( status > 0 ):
                                print('Failed to execute tctestsgen.py!!!')
                                sys.exit('Aborting...')
@@ -142,32 +143,32 @@ def install(TYPE, MODNAME, PROFILE, TC_COUNT, ARCH, COVERAGE):
                        process1 = "dali-"
                        process2 = "_dali"
                        if ( re.search(process_dali_application, MODNAME) != None ):
-                               shutil.copy('scripts_tpk'+dirSeparator+'external_wrapper_dali_app_launch.sh', dirSeparator+'tmp'+dirSeparator+TCT_DIR+dirSeparator+'external_wrapper.sh')
+                               shutil.copy('scripts_tpk'+dirSeparator+'external_wrapper_dali_app_launch.sh', dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+TCT_DIR+dirSeparator+'external_wrapper.sh')
                        elif ( re.search(process1, MODNAME) != None or re.search(process2, MODNAME) != None ):
-                               shutil.copy('scripts_tpk'+dirSeparator+'external_wrapper_dali_multi_app_launch.sh', dirSeparator+'tmp'+dirSeparator+TCT_DIR+dirSeparator+'external_wrapper.sh')
+                               shutil.copy('scripts_tpk'+dirSeparator+'external_wrapper_dali_multi_app_launch.sh', dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+TCT_DIR+dirSeparator+'external_wrapper.sh')
                        elif ( COVERAGE == '1' ):
                                print('-- Using Coverage Wrapper...')
-                               shutil.copy('scripts_tpk'+dirSeparator+'external_wrapper_coverage.sh', dirSeparator+'tmp'+dirSeparator+TCT_DIR+dirSeparator+'external_wrapper.sh')
+                               shutil.copy('scripts_tpk'+dirSeparator+'external_wrapper_coverage.sh', dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+TCT_DIR+dirSeparator+'external_wrapper.sh')
                        else:
-                               shutil.copy('scripts_tpk'+dirSeparator+'external_wrapper.sh', dirSeparator+'tmp'+dirSeparator+TCT_DIR)
+                               shutil.copy('scripts_tpk'+dirSeparator+'external_wrapper.sh', dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+TCT_DIR)
 
                        # LICENSE, add_all_smack_rule.sh, all_smack.rule
-                       shutil.copy('scripts_tpk'+dirSeparator+'LICENSE', dirSeparator+'tmp'+dirSeparator+TCT_DIR)
+                       shutil.copy('scripts_tpk'+dirSeparator+'LICENSE', dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+TCT_DIR)
 
                        # gentestsxml.py generate multiple TC in tests.xml
                        if int(TC_COUNT) > 1:
-                               gentestsxml.gentestxmlfile(dirSeparator+'tmp'+dirSeparator+TCT_DIR+dirSeparator, TC_COUNT)
+                               gentestsxml.gentestxmlfile(dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+TCT_DIR+dirSeparator, TC_COUNT)
 
                        # zip
-                       print('---- Preparing '+dirSeparator+'tmp'+dirSeparator+'tct'+dirSeparator+'packages'+dirSeparator+'tct-'+MODNAME+'-'+'native-'+TYPE+'-10.0.zip file')
+                       print('---- Preparing '+dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+'tct'+dirSeparator+'packages'+dirSeparator+'tct-'+MODNAME+'-'+'native-'+TYPE+'-10.0.zip file')
 
                        # clear old zips
-                       removeDir(dirSeparator+'tmp'+dirSeparator+'tct'+dirSeparator+'packages')
-                       os.makedirs(dirSeparator+'tmp'+dirSeparator+'tct'+dirSeparator+'packages')
+                       removeDir(dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+'tct'+dirSeparator+'packages')
+                       os.makedirs(dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+'tct'+dirSeparator+'packages')
 
                        # create new zip
                        #os.chdir(dirSeparator+'tmp')
-                       zipper(dirSeparator+'tmp'+dirSeparator+'opt', dirSeparator+'tmp'+dirSeparator+'tct'+dirSeparator+'packages'+dirSeparator+'tct-'+MODNAME+'-native-'+TYPE+'-10.0.zip', True, dirSeparator)
+                       zipper(dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+'opt', dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+'tct'+dirSeparator+'packages'+dirSeparator+'tct-'+MODNAME+'-native-'+TYPE+'-10.0.zip', True, dirSeparator)
 
                        # deployment
                        print('-- Suite deployment...')
@@ -176,7 +177,7 @@ def install(TYPE, MODNAME, PROFILE, TC_COUNT, ARCH, COVERAGE):
                        print('---- Copying '+TO_PKG_DIR+dirSeparator+PROFILE+dirSeparator+'tct-'+MODNAME+'-native-'+TYPE+'-10.0.zip')
                        if ( os.path.exists(TO_PKG_DIR+dirSeparator+PROFILE) == False):
                                os.makedirs(TO_PKG_DIR+dirSeparator+PROFILE)
-                       shutil.copy(dirSeparator+'tmp'+dirSeparator+'tct'+dirSeparator+'packages'+dirSeparator+'tct-'+MODNAME+'-native-'+TYPE+'-10.0.zip', TO_PKG_DIR+dirSeparator+PROFILE)
+                       shutil.copy(dirSeparator+'tmp'+dirSeparator+ARCH_PROFILE_DIR+dirSeparator+'tct'+dirSeparator+'packages'+dirSeparator+'tct-'+MODNAME+'-native-'+TYPE+'-10.0.zip', TO_PKG_DIR+dirSeparator+PROFILE)
                        print('---- Updating '+TO_PKG_DIR+dirSeparator+'pkg_infos'+dirSeparator+PROFILE+'_pkg_info.xml')
                        status, output=subprocess.getstatusoutput('scripts_tpk'+dirSeparator+'tcpackageslistsgen.py '+TYPE+' '+MODNAME+' '+PROFILE+' '+TO_PKG_DIR+dirSeparator+'pkg_infos'+dirSeparator+PROFILE+'_pkg_info.xml 0'+' '+TC_COUNT+' '+ARCH)
                        if ( status > 0 ):
@@ -226,7 +227,10 @@ if ( OS == 'Windows' ):
        dirSeparator='\\'
 
 PROJECT_DIR=(os.path.abspath(os.path.dirname(sys.argv[0])))
-TPK_DIR=os.getenv('HOME')+dirSeparator+'tpks'
+if ( len(sys.argv) >= 6 ):
+       TPK_DIR=os.getenv('HOME')+dirSeparator+'tpks'+'_'+ sys.argv[2]+'_'+sys.argv[1]+'_'+sys.argv[5]
+else:
+       TPK_DIR=os.getenv('HOME')+dirSeparator+'tpks'+'_'+ sys.argv[2]+'_'+sys.argv[1]
 WORKSPACE_DIR=os.getenv('HOME')+dirSeparator+'workspace'+'_'+ sys.argv[2]+'_'+sys.argv[1]
 
 # TODO use argparse