buildbot.py 2.6 KB
Newer Older
B
bernard.xiong@gmail.com 已提交
1 2 3 4
import os
import sys

def usage():
5 6 7
    print('%s all     -- build all bsp' % os.path.basename(sys.argv[0]))
    print('%s clean   -- clean all bsp' % os.path.basename(sys.argv[0]))
    print('%s project -- update all prject files' % os.path.basename(sys.argv[0]))
B
bernard.xiong@gmail.com 已提交
8

9 10
BSP_ROOT = os.path.join("..", "bsp")

B
bernard.xiong@gmail.com 已提交
11
if len(sys.argv) != 2:
12 13
    usage()
    sys.exit(0)
B
bernard.xiong@gmail.com 已提交
14

15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
def update_project_file(project_dir):
    if os.path.isfile(os.path.join(project_dir, 'template.Uv2')):
        print('prepare MDK3 project file on ' + project_dir)
        command = ' --target=mdk -s'
        os.system('scons --directory=' + project_dir + command + ' > 1.txt')

    if os.path.isfile(os.path.join(project_dir, 'template.uvproj')):
        print('prepare MDK4 project file on ' + project_dir)
        command = ' --target=mdk4 -s'
        os.system('scons --directory=' + project_dir + command + ' > 1.txt')

    if os.path.isfile(os.path.join(project_dir, 'template.uvprojx')):
        print('prepare MDK5 project file on ' + project_dir)
        command = ' --target=mdk5 -s'
        os.system('scons --directory=' + project_dir + command + ' > 1.txt')

    if os.path.isfile(os.path.join(project_dir, 'template.ewp')):
        print('prepare IAR project file on ' + project_dir)
        command = ' --target=iar -s'
        os.system('scons --directory=' + project_dir + command + ' > 1.txt')


def update_all_project_files(root_path):
    # current path is dir
    if os.path.isdir(root_path):
        projects = os.listdir(root_path)
        # is a project path?
        if "SConscript" in projects:
            print('new bsp path {}'.format(root_path))
            try:
                os.system('scons --pyconfig-silent -C {0}'.format(root_path)) # update rtconfig.h and .config
                update_project_file(root_path)
            except Exception as e:
                print("error message: {}".format(e))
                sys.exit(-1)
        else:
            for i in projects:
                new_root_path = os.path.join(root_path, i)
                update_all_project_files(new_root_path)

B
bernard.xiong@gmail.com 已提交
55 56 57 58 59 60 61
# get command options
command = ''
if sys.argv[1] == 'all':
    command = ' '
elif sys.argv[1] == 'clean':
    command = ' -c'
elif sys.argv[1] == 'project':
62
    update_all_project_files(BSP_ROOT)
63

64
    sys.exit(0)
B
bernard.xiong@gmail.com 已提交
65 66 67 68 69 70 71 72 73
else:
    usage()
    sys.exit(0)

projects = os.listdir(BSP_ROOT)
for item in projects:
    project_dir = os.path.join(BSP_ROOT, item)
    if os.path.isfile(os.path.join(project_dir, 'SConstruct')):
        if os.system('scons --directory=' + project_dir + command) != 0:
74
            print('build failed!!')
B
bernard.xiong@gmail.com 已提交
75
            break