mirror of https://github.com/ARMmbed/mbed-os.git
Merge pull request #3067 from theotherjimmy/checkin-pack-index
Arm-Pack-Manager - Checkin pack indexpull/3084/head
commit
ff2a7db3f2
|
@ -9,7 +9,6 @@ requests
|
|||
mbed-ls>=0.2.13
|
||||
mbed-host-tests>=1.1.2
|
||||
mbed-greentea>=0.2.24
|
||||
pyxdg>=0.25
|
||||
pycurl>=4
|
||||
beautifulsoup4>=4
|
||||
fuzzywuzzy>=0.11
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
from xdg.BaseDirectory import save_data_path
|
||||
from pycurl import Curl
|
||||
from bs4 import BeautifulSoup
|
||||
from os.path import join, dirname, basename
|
||||
|
@ -13,9 +12,14 @@ from itertools import takewhile
|
|||
import argparse
|
||||
from json import dump, load
|
||||
from zipfile import ZipFile
|
||||
from tempfile import gettempdir
|
||||
|
||||
RootPackURL = "http://www.keil.com/pack/index.idx"
|
||||
|
||||
LocalPackDir = dirname(__file__)
|
||||
LocalPackIndex = join(LocalPackDir, "index.json")
|
||||
LocalPackAliases = join(LocalPackDir, "aliases.json")
|
||||
|
||||
|
||||
protocol_matcher = compile("\w*://")
|
||||
def strip_protocol(url) :
|
||||
|
@ -78,6 +82,7 @@ class Cache () :
|
|||
self._aliases = {}
|
||||
self.urls = None
|
||||
self.no_timeouts = no_timeouts
|
||||
self.data_path = gettempdir()
|
||||
|
||||
def display_counter (self, message) :
|
||||
stdout.write("{} {}/{}\r".format(message, self.counter, self.total))
|
||||
|
@ -93,7 +98,7 @@ class Cache () :
|
|||
:rtype: None
|
||||
"""
|
||||
if not self.silent : print("Caching {}...".format(url))
|
||||
dest = join(save_data_path('arm-pack-manager'), strip_protocol(url))
|
||||
dest = join(self.data_path, strip_protocol(url))
|
||||
try :
|
||||
makedirs(dirname(dest))
|
||||
except OSError as exc :
|
||||
|
@ -288,7 +293,7 @@ class Cache () :
|
|||
self._index = {}
|
||||
self.counter = 0
|
||||
do_queue(Reader, self._generate_index_helper, self.get_urls())
|
||||
with open(join(save_data_path('arm-pack-manager'), "index.json"), "wb+") as out:
|
||||
with open(LocalPackIndex, "wb+") as out:
|
||||
self._index["version"] = "0.1.0"
|
||||
dump(self._index, out)
|
||||
stdout.write("\n")
|
||||
|
@ -297,7 +302,7 @@ class Cache () :
|
|||
self._aliases = {}
|
||||
self.counter = 0
|
||||
do_queue(Reader, self._generate_aliases_helper, self.get_urls())
|
||||
with open(join(save_data_path('arm-pack-manager'), "aliases.json"), "wb+") as out:
|
||||
with open(LocalPackAliases, "wb+") as out:
|
||||
dump(self._aliases, out)
|
||||
stdout.write("\n")
|
||||
|
||||
|
@ -335,11 +340,8 @@ class Cache () :
|
|||
|
||||
"""
|
||||
if not self._index :
|
||||
try :
|
||||
with open(join(save_data_path('arm-pack-manager'), "index.json")) as i :
|
||||
self._index = load(i)
|
||||
except IOError :
|
||||
self.generate_index()
|
||||
with open(LocalPackIndex) as i :
|
||||
self._index = load(i)
|
||||
return self._index
|
||||
@property
|
||||
def aliases(self) :
|
||||
|
@ -365,11 +367,8 @@ class Cache () :
|
|||
|
||||
"""
|
||||
if not self._aliases :
|
||||
try :
|
||||
with open(join(save_data_path('arm-pack-manager'), "aliases.json")) as i :
|
||||
self._aliases = load(i)
|
||||
except IOError :
|
||||
self.generate_aliases()
|
||||
with open(join(self.data_path, "aliases.json")) as i :
|
||||
self._aliases = load(i)
|
||||
return self._aliases
|
||||
|
||||
def cache_everything(self) :
|
||||
|
@ -426,7 +425,7 @@ class Cache () :
|
|||
:return: A parsed representation of the PDSC file.
|
||||
:rtype: BeautifulSoup
|
||||
"""
|
||||
dest = join(save_data_path('arm-pack-manager'), strip_protocol(url))
|
||||
dest = join(self.data_path, strip_protocol(url))
|
||||
with open(dest, "r") as fd :
|
||||
return BeautifulSoup(fd, "html.parser")
|
||||
|
||||
|
@ -440,7 +439,7 @@ class Cache () :
|
|||
:return: A parsed representation of the PACK file.
|
||||
:rtype: ZipFile
|
||||
"""
|
||||
return ZipFile(join(save_data_path('arm-pack-manager'),
|
||||
return ZipFile(join(self.data_path,
|
||||
strip_protocol(device['pack_file'])))
|
||||
|
||||
def gen_dict_from_cache() :
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -6,8 +6,6 @@ import ntpath
|
|||
import re
|
||||
import json
|
||||
|
||||
from xdg.BaseDirectory import save_data_path
|
||||
|
||||
from tools.arm_pack_manager import Cache
|
||||
from tools.targets import TARGET_MAP
|
||||
from tools.export.exporters import Exporter, TargetNotSupportedException
|
||||
|
@ -34,9 +32,6 @@ class DeviceCMSIS():
|
|||
Encapsulates target information retrieved by arm-pack-manager"""
|
||||
def __init__(self, target):
|
||||
cache = Cache(True, False)
|
||||
data_path = join(save_data_path('arm-pack-manager'), "index.json")
|
||||
if not exists(data_path) or not self.check_version(data_path):
|
||||
cache.cache_descriptors()
|
||||
|
||||
t = TARGET_MAP[target]
|
||||
self.core = t.core
|
||||
|
|
|
@ -175,6 +175,11 @@ def main():
|
|||
default=[],
|
||||
help="Toolchain profile")
|
||||
|
||||
parser.add_argument("--update-packs",
|
||||
dest="update_packs",
|
||||
action="store_true",
|
||||
default=False)
|
||||
|
||||
options = parser.parse_args()
|
||||
|
||||
# Print available tests in order and exit
|
||||
|
@ -203,6 +208,11 @@ def main():
|
|||
raise
|
||||
exit(0)
|
||||
|
||||
if options.update_packs:
|
||||
from tools.arm_pack_manager import Cache
|
||||
cache = Cache(True, True)
|
||||
cache.cache_descriptors()
|
||||
|
||||
# Clean Export Directory
|
||||
if options.clean:
|
||||
if exists(EXPORT_DIR):
|
||||
|
|
Loading…
Reference in New Issue