mbed-scli test program
mlib.py@8:f1c7a11d0670, 2017-03-04 (annotated)
- Committer:
- mimi3
- Date:
- Sat Mar 04 19:01:33 2017 +0900
- Revision:
- 8:f1c7a11d0670
- Parent:
- 7:9df443d2570b
update to v0.9
Who changed what in which revision?
User | Revision | Line number | New 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 |