mirror of https://github.com/ARMmbed/mbed-os.git
Merge pull request #2056 from theotherjimmy/pass-files-to-source
Enable passing individual files to --source optionspull/2076/head
commit
472ac772f9
|
|
@ -22,7 +22,7 @@ from copy import copy
|
||||||
from time import time, sleep
|
from time import time, sleep
|
||||||
from types import ListType
|
from types import ListType
|
||||||
from shutil import copyfile
|
from shutil import copyfile
|
||||||
from os.path import join, splitext, exists, relpath, dirname, basename, split, abspath
|
from os.path import join, splitext, exists, relpath, dirname, basename, split, abspath, isfile, isdir
|
||||||
from inspect import getmro
|
from inspect import getmro
|
||||||
from copy import deepcopy
|
from copy import deepcopy
|
||||||
from tools.config import Config
|
from tools.config import Config
|
||||||
|
|
@ -428,14 +428,31 @@ class mbedToolchain:
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
# Create a Resources object from the path pointed to by *path* by either traversing a
|
||||||
|
# a directory structure, when *path* is a directory, or adding *path* to the resources,
|
||||||
|
# when *path* is a file.
|
||||||
|
# The parameter *base_path* is used to set the base_path attribute of the Resources
|
||||||
|
# object and the parameter *exclude_paths* is used by the directory traversal to
|
||||||
|
# exclude certain paths from the traversal.
|
||||||
def scan_resources(self, path, exclude_paths=None, base_path=None):
|
def scan_resources(self, path, exclude_paths=None, base_path=None):
|
||||||
labels = self.get_labels()
|
|
||||||
|
|
||||||
resources = Resources(path)
|
resources = Resources(path)
|
||||||
if not base_path:
|
if not base_path:
|
||||||
|
if isfile(path):
|
||||||
|
base_path = dirname(path)
|
||||||
|
else:
|
||||||
base_path = path
|
base_path = path
|
||||||
resources.base_path = base_path
|
resources.base_path = base_path
|
||||||
|
|
||||||
|
if isfile(path):
|
||||||
|
self._add_file(path, resources, base_path, exclude_paths=exclude_paths)
|
||||||
|
else:
|
||||||
|
self._add_dir(path, resources, base_path, exclude_paths=exclude_paths)
|
||||||
|
return resources
|
||||||
|
|
||||||
|
# A helper function for scan_resources. _add_dir traverses *path* (assumed to be a
|
||||||
|
# directory) and heeds the ".mbedignore" files along the way. _add_dir calls _add_file
|
||||||
|
# on every file it considers adding to the resources object.
|
||||||
|
def _add_dir(self, path, resources, base_path, exclude_paths=None):
|
||||||
""" os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
|
""" os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
|
||||||
When topdown is True, the caller can modify the dirnames list in-place
|
When topdown is True, the caller can modify the dirnames list in-place
|
||||||
(perhaps using del or slice assignment), and walk() will only recurse into
|
(perhaps using del or slice assignment), and walk() will only recurse into
|
||||||
|
|
@ -446,6 +463,7 @@ class mbedToolchain:
|
||||||
bottom-up mode the directories in dirnames are generated before dirpath
|
bottom-up mode the directories in dirnames are generated before dirpath
|
||||||
itself is generated.
|
itself is generated.
|
||||||
"""
|
"""
|
||||||
|
labels = self.get_labels()
|
||||||
for root, dirs, files in walk(path, followlinks=True):
|
for root, dirs, files in walk(path, followlinks=True):
|
||||||
# Check if folder contains .mbedignore
|
# Check if folder contains .mbedignore
|
||||||
if ".mbedignore" in files:
|
if ".mbedignore" in files:
|
||||||
|
|
@ -495,13 +513,17 @@ class mbedToolchain:
|
||||||
|
|
||||||
for file in files:
|
for file in files:
|
||||||
file_path = join(root, file)
|
file_path = join(root, file)
|
||||||
|
self._add_file(file_path, resources, base_path)
|
||||||
|
|
||||||
|
# A helper function for both scan_resources and _add_dir. _add_file adds one file
|
||||||
|
# (*file_path*) to the resources object based on the file type.
|
||||||
|
def _add_file(self, file_path, resources, base_path, exclude_paths=None):
|
||||||
resources.file_basepath[file_path] = base_path
|
resources.file_basepath[file_path] = base_path
|
||||||
|
|
||||||
if self.is_ignored(file_path):
|
if self.is_ignored(file_path):
|
||||||
continue
|
return
|
||||||
|
|
||||||
_, ext = splitext(file)
|
_, ext = splitext(file_path)
|
||||||
ext = ext.lower()
|
ext = ext.lower()
|
||||||
|
|
||||||
if ext == '.s':
|
if ext == '.s':
|
||||||
|
|
@ -521,7 +543,7 @@ class mbedToolchain:
|
||||||
|
|
||||||
elif ext == self.LIBRARY_EXT:
|
elif ext == self.LIBRARY_EXT:
|
||||||
resources.libraries.append(file_path)
|
resources.libraries.append(file_path)
|
||||||
resources.lib_dirs.add(root)
|
resources.lib_dirs.add(dirname(file_path))
|
||||||
|
|
||||||
elif ext == self.LINKER_EXT:
|
elif ext == self.LINKER_EXT:
|
||||||
if resources.linker_script is not None:
|
if resources.linker_script is not None:
|
||||||
|
|
@ -546,7 +568,6 @@ class mbedToolchain:
|
||||||
elif ext == '.json':
|
elif ext == '.json':
|
||||||
resources.json_files.append(file_path)
|
resources.json_files.append(file_path)
|
||||||
|
|
||||||
return resources
|
|
||||||
|
|
||||||
def scan_repository(self, path):
|
def scan_repository(self, path):
|
||||||
resources = []
|
resources = []
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue