windowsInstall.py 5.21 KB
Newer Older
1 2 3 4
import os,shutil
from windowsSipCompilation import getModuleConfig
from optparse import OptionParser

5

6 7 8 9
module2Installfiles = {
    'core' : [('__init__.py','Lima'),
              ('common/python/Core.py','Lima'),
              ('common/python/Debug.py','Lima'),
10
              ('build/msvc/9.0/LimaCore/Release/LibLimaCore.dll','Lima'),
11
              ('third-party\libconfig\lib\libconfig++.Release\libconfig++.dll','Lima'),
12 13
              ('sip/core/limacore.pyd','Lima'),
              ('third-party/Processlib/sip/processlib.pyd','Lima'),
14
              ('third-party/Processlib/build/msvc/9.0/libprocesslib/Release/libprocesslib.dll','Lima')],
15
    'pco' : [('camera/pco/python/Pco.py','Lima'),
16
                   ('camera/pco/build/msvc/9.0/liblimapco/Release/liblimapco.dll','Lima'),
17 18 19
                   ('../sdkPco/bin/SC2_Cam.dll','Lima'),
                   ('../sdkPco/bin/sc2_cl_me4.dll','Lima'),
                   ('applications/tango/camera/Pco.py','camera'),
20
                   ('sip/pco/limapco.pyd','Lima')],
21 22 23
    'perkinelmer' : [('camera/perkinelmer/python/PerkinElmer.py','Lima'),
                     ('camera/perkinelmer/build/msvc/9.0/LibPerkinElmer/Release/liblimaperkinelmer.dll','Lima'),
                     ('sip/perkinelmer/limaperkinelmer.pyd','Lima')],
24 25 26 27
    'photonicscience' : [('camera/photonicscience/python/PhotonicScience.py','Lima'),
			 ('camera/photonicscience/build/msvc/9.0/LibPhotonicScience/Release/liblimaphotonicscience.dll','Lima'),
			 ('camera/photonicscience/sdk/ImageStar4022_v1.7',''),
			 ('sip/photonicscience/limaphotonicscience.pyd','Lima')],
28 29 30
    'simulator' : [('camera/simulator/python/Simulator.py','Lima'),
                   ('build/msvc/9.0/LibSimulator/Release/liblimasimulator.dll','Lima'),
                   ('sip/simulator/limasimulator.pyd','Lima')],
31 32 33
    'basler' : [('camera/basler/python/Basler.py','Lima'),
                   ('camera/basler/build/msvc/9.0/LibBasler/Release/liblimabasler.dll','Lima'),
                   ('sip/basler/limabasler.pyd','Lima')],
34
    'tango-core' : [('applications/tango/LimaCCDs.py',''),
35 36
                    ('applications/tango/AttrHelper.py',''),
                    ('applications/tango/EnvHelper.py',''),
37 38
                    ('applications/tango/camera/__init__.py','camera'),
                    ('applications/tango/plugins','')],
39 40
    'tango-simulator' : [('applications/tango/camera/Simulator.py','camera')],
    'tango-perkinelmer' : [('applications/tango/camera/PerkinElmer.py','camera')],
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
    }

def copyModule(filesList,baseDestPath) :
    for src,dest in filesList:
        dst = os.path.join(baseDestPath,dest)
            
        if not os.access(dst,os.F_OK) :
            print 'Makedir',dst
            os.makedirs(dst)

        if os.path.isdir(src):
            base,srcDir = os.path.split(src)
            dst = os.path.join(dst,srcDir)
            if os.access(dst,os.F_OK) :
                shutil.rmtree(dst)
            shutil.copytree(src,dst)
            print 'Copytree',src,dst
        elif not os.access(src,os.F_OK) :
59 60
            base,srcDir = os.path.split(src)
            dstFile = os.path.join(dst,srcDir)
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
            f = file(dstFile,'w')
            f.close()
            print 'Create empty file',dstFile
        else:
            shutil.copy(src,dst)
            print 'Copy',src,dst

if __name__ == '__main__':
    parser = OptionParser()
    parser.add_option("--install_dir",dest="install_dir",default='install',
                      help='install directory path')
    parser.add_option("--add",dest="module_list",action="append",default=[],
                      help="Add a module to install")
    parser.add_option("--set",dest="module_set_list",action="append",
                      help="Set the module list to install, do not read config.inc file")
    parser.add_option("--available-modules",dest="get_module_list_flag",action="store_true",default=False,
77
                      help="List all possible modules to install")
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
    parser.add_option("--all",action="store_true",dest="install_all",default=False,
                      help="install all possible module")
    (option,args) = parser.parse_args()

    destPath = option.install_dir
    
    if option.get_module_list_flag:
        print 'Available Modules:'
        for moduleName in module2Installfiles.keys() :
            print '\t ->',moduleName
    elif option.module_set_list:
        for moduleName in option.module_set_list:
            filesList = module2Installfiles.get(moduleName,None)
            if filesList:
                copyModule(filesList,destPath)
            else:
                print "module : %s doesn't exist" % moduleName
    else:
        if option.install_all:
            module_list = list(module2Installfiles.keys())
        else:
99 100 101 102 103
            dict = getModuleConfig()
            module_list = []
            for key,value in dict.iteritems():
                if value:
                    module_list.append(key)
104
            module_list += option.module_list
105
            module_list += ["core"]
106 107 108 109 110 111 112 113 114
            
        for moduleName in set(module_list) :
            filesList = module2Installfiles.get(moduleName,None)
            if filesList:
                copyModule(filesList,destPath)
            else:
                print "module : %s doesn't exist" % moduleName