mbed-scli test program

Dependencies:   Scheduler

Committer:
mimi3
Date:
Sun Mar 05 18:02:41 2017 +0900
Revision:
10:72b75743f231
Parent:
8:f1c7a11d0670
fixed:typo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mimi3 8:f1c7a11d0670 1 #### mlib.py for mbed ####
mimi3 8:f1c7a11d0670 2 # v0.9 # 2017/03 made by dinau
mimi3 0:b54fab1223b5 3 #
mimi3 0:b54fab1223b5 4 # Notice: Unsupported libraries.
mimi3 0:b54fab1223b5 5 # These libraries must be specified in Makefile.
mimi3 0:b54fab1223b5 6 # mbed-os
mimi3 0:b54fab1223b5 7 # mbed-dev
mimi3 0:b54fab1223b5 8
mimi3 0:b54fab1223b5 9
mimi3 0:b54fab1223b5 10 # Usage:
mimi3 8:f1c7a11d0670 11 # Download the dependency libraries from web.
mimi3 0:b54fab1223b5 12 # $ make lib
mimi3 0:b54fab1223b5 13 # or
mimi3 8:f1c7a11d0670 14 # $ python mlib.py
mimi3 8:f1c7a11d0670 15 # Specify URL of a particular library to get it.
mimi3 8:f1c7a11d0670 16 # $ python mlib.py http://...
mimi3 8:f1c7a11d0670 17 # Checkout mbed library with specified revision number.
mimi3 8:f1c7a11d0670 18 # $ python mlib.py 136
mimi3 0:b54fab1223b5 19 #
mimi3 0:b54fab1223b5 20
mimi3 0:b54fab1223b5 21 import os,sys
mimi3 0:b54fab1223b5 22 import commands
mimi3 0:b54fab1223b5 23 from urlparse import urlparse
mimi3 0:b54fab1223b5 24
mimi3 0:b54fab1223b5 25 HG = 1
mimi3 0:b54fab1223b5 26 GIT = 2
mimi3 0:b54fab1223b5 27 MBEDOS = 3
mimi3 0:b54fab1223b5 28 CMD_HG_CLONE = 'hg clone -q '
mimi3 0:b54fab1223b5 29 CMD_GIT_CLONE = 'git clone -q '
mimi3 6:7915b5819364 30 CMD_GIT_CHECKOUT= 'git checkout '
mimi3 0:b54fab1223b5 31
mimi3 0:b54fab1223b5 32 def hgClone(param):
mimi3 0:b54fab1223b5 33 cmd = CMD_HG_CLONE + param
mimi3 0:b54fab1223b5 34 return os.system( cmd )
mimi3 0:b54fab1223b5 35
mimi3 0:b54fab1223b5 36 def gitClone(param):
mimi3 0:b54fab1223b5 37 cmd = CMD_GIT_CLONE + param
mimi3 0:b54fab1223b5 38 return os.system( cmd )
mimi3 0:b54fab1223b5 39
mimi3 6:7915b5819364 40 def gitCheckout(param,disp=False):
mimi3 0:b54fab1223b5 41 cmd = CMD_GIT_CHECKOUT + param
mimi3 6:7915b5819364 42 if disp:
mimi3 6:7915b5819364 43 print cmd
mimi3 6:7915b5819364 44 sys.stdout.flush()
mimi3 0:b54fab1223b5 45 return os.system( cmd )
mimi3 6:7915b5819364 46
mimi3 0:b54fab1223b5 47 def getDvcs(url):
mimi3 4:85e9057db7a6 48 p = urlparse( url )
mimi3 6:7915b5819364 49 #print p
mimi3 0:b54fab1223b5 50 if ('developer.mbed.org' in url) or ('mbed.org' in url) or ('bitbucke.org' in url):
mimi3 0:b54fab1223b5 51 return HG;
mimi3 0:b54fab1223b5 52 elif 'mbed-os' in url:
mimi3 0:b54fab1223b5 53 return MBEDOS
mimi3 0:b54fab1223b5 54 elif 'github.com' in url:
mimi3 0:b54fab1223b5 55 return GIT
mimi3 0:b54fab1223b5 56 else:
mimi3 0:b54fab1223b5 57 return 0
mimi3 0:b54fab1223b5 58
mimi3 0:b54fab1223b5 59 def getLibs(target_dir):
mimi3 0:b54fab1223b5 60 savedir = os.getcwd()
mimi3 0:b54fab1223b5 61 os.chdir(target_dir)
mimi3 0:b54fab1223b5 62 liblist=[]
mimi3 0:b54fab1223b5 63 for fname in os.listdir('.'):
mimi3 0:b54fab1223b5 64 if os.path.isfile(fname):
mimi3 0:b54fab1223b5 65 name, ext = os.path.splitext(fname)
mimi3 0:b54fab1223b5 66 if ext == '.lib':
mimi3 0:b54fab1223b5 67 if name != 'mbed-os':
mimi3 0:b54fab1223b5 68 liblist.append(fname)
mimi3 0:b54fab1223b5 69 if len( liblist ) > 0:
mimi3 0:b54fab1223b5 70 #print liblist
mimi3 0:b54fab1223b5 71 for libfile in liblist:
mimi3 0:b54fab1223b5 72 subdir, ext = os.path.splitext(libfile)
mimi3 4:85e9057db7a6 73 if os.path.isdir( subdir ):
mimi3 4:85e9057db7a6 74 print "%s :: already exists !" % (subdir)
mimi3 4:85e9057db7a6 75 continue
mimi3 0:b54fab1223b5 76 print subdir
mimi3 0:b54fab1223b5 77 url = open(libfile).read()
mimi3 0:b54fab1223b5 78 print url
mimi3 0:b54fab1223b5 79 sys.stdout.flush()
mimi3 0:b54fab1223b5 80 dvcs = getDvcs(url)
mimi3 0:b54fab1223b5 81 if dvcs == HG:
mimi3 0:b54fab1223b5 82 hgClone( url )
mimi3 0:b54fab1223b5 83 getLibs(subdir)
mimi3 0:b54fab1223b5 84 elif dvcs == MBEDOS:
mimi3 0:b54fab1223b5 85 # Nothing is downloaded if mbed-os lib be.
mimi3 0:b54fab1223b5 86 print 'mbed-os'
mimi3 0:b54fab1223b5 87 sys.stdout.flush()
mimi3 0:b54fab1223b5 88 elif dvcs == GIT:
mimi3 0:b54fab1223b5 89 params = url.split('#')
mimi3 0:b54fab1223b5 90 if len(params) == 1:
mimi3 0:b54fab1223b5 91 gitClone( params[0] )
mimi3 0:b54fab1223b5 92 getLibs(subdir)
mimi3 0:b54fab1223b5 93 elif len(params) == 2:
mimi3 0:b54fab1223b5 94 gitClone( params[0] )
mimi3 0:b54fab1223b5 95 os.chdir(subdir)
mimi3 0:b54fab1223b5 96 print 'cd %s' % (subdir)
mimi3 0:b54fab1223b5 97 sys.stdout.flush()
mimi3 0:b54fab1223b5 98 gitCheckout( params[1] )
mimi3 0:b54fab1223b5 99 getLibs(subdir)
mimi3 0:b54fab1223b5 100 os.chdir(savedir)
mimi3 0:b54fab1223b5 101
mimi3 0:b54fab1223b5 102 ###################
mimi3 6:7915b5819364 103 # main program
mimi3 0:b54fab1223b5 104 ###################
mimi3 4:85e9057db7a6 105 if len(sys.argv) == 1:
mimi3 0:b54fab1223b5 106 print '--- Getting libraries ----'
mimi3 0:b54fab1223b5 107 getLibs('.')
mimi3 0:b54fab1223b5 108 print '--- end ---'
mimi3 4:85e9057db7a6 109 else:
mimi3 6:7915b5819364 110 url = param1 = sys.argv[1]
mimi3 6:7915b5819364 111 try:
mimi3 8:f1c7a11d0670 112 # Number or URL
mimi3 6:7915b5819364 113 revNum = int(param1)
mimi3 6:7915b5819364 114 except:
mimi3 8:f1c7a11d0670 115 # if URL of string
mimi3 8:f1c7a11d0670 116 # Down load mbed library from URL
mimi3 6:7915b5819364 117 p = urlparse( url )
mimi3 8:f1c7a11d0670 118 if not("http" in p.scheme ) and not("https" in p.scheme ):
mimi3 8:f1c7a11d0670 119 print "URL error !"
mimi3 8:f1c7a11d0670 120 else:
mimi3 8:f1c7a11d0670 121 path = p.path
mimi3 8:f1c7a11d0670 122 if path[-1:] == '/':
mimi3 8:f1c7a11d0670 123 path = path[:-1]
mimi3 8:f1c7a11d0670 124 libdir = os.path.basename(path)
mimi3 8:f1c7a11d0670 125 libname = libdir + '.lib'
mimi3 8:f1c7a11d0670 126 if not os.path.isdir( libdir ):
mimi3 8:f1c7a11d0670 127 with open( libname,'w') as fp:
mimi3 8:f1c7a11d0670 128 fp.write( url )
mimi3 8:f1c7a11d0670 129 print '--- Getting libraries ----'
mimi3 8:f1c7a11d0670 130 getLibs('.')
mimi3 8:f1c7a11d0670 131 print '--- end ---'
mimi3 6:7915b5819364 132 else:
mimi3 8:f1c7a11d0670 133 # if Number of string
mimi3 8:f1c7a11d0670 134 # get mbed library of specified revsion
mimi3 6:7915b5819364 135 mbed_root_file ='mbed-root.txt'
mimi3 8:f1c7a11d0670 136 try:
mimi3 8:f1c7a11d0670 137 mbedRoot = open(mbed_root_file).read()
mimi3 8:f1c7a11d0670 138 os.chdir( mbedRoot.strip() )
mimi3 8:f1c7a11d0670 139 gitCheckout( 'mbed_lib_rev' + str( revNum ), True )
mimi3 8:f1c7a11d0670 140 except:
mimi3 8:f1c7a11d0670 141 print "First, at least execute 'make' command !"
mimi3 6:7915b5819364 142
mimi3 6:7915b5819364 143
mimi3 6:7915b5819364 144
mimi3 8:f1c7a11d0670 145