tools/manifestfile.py: Allow require() to specify unix packages.
By default, don't include micropython-lib/unix-ffi in the search. If unix_ffi=True is passed to require(), then include unix-ffi and make it take precedence over the other locations (e.g. python-stdlib). This does two things: - Prevents non-unix builds from using unix-only packages. - Allows the unix build to optionally use a more full-featured (e.g. ffi) based package, even with the same name as one from e.g. stdlib. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
This commit is contained in:
parent
e9a28ce312
commit
bc23f207ce
@ -248,15 +248,24 @@ class ManifestFile:
|
|||||||
)
|
)
|
||||||
os.chdir(prev_cwd)
|
os.chdir(prev_cwd)
|
||||||
|
|
||||||
def require(self, name, version=None, **kwargs):
|
def require(self, name, version=None, unix_ffi=False, **kwargs):
|
||||||
"""
|
"""
|
||||||
Require a module by name from micropython-lib.
|
Require a module by name from micropython-lib.
|
||||||
|
|
||||||
This is a shortcut for
|
Optionally specify unix_ffi=True to use a module from the unix-ffi directory.
|
||||||
"""
|
"""
|
||||||
if self._path_vars["MPY_LIB_DIR"]:
|
if self._path_vars["MPY_LIB_DIR"]:
|
||||||
|
lib_dirs = ["micropython", "python-stdlib", "python-ecosys"]
|
||||||
|
if unix_ffi:
|
||||||
|
# Search unix-ffi only if unix_ffi=True, and make unix-ffi modules
|
||||||
|
# take precedence.
|
||||||
|
lib_dirs = ["unix-ffi"] + lib_dirs
|
||||||
|
|
||||||
|
for lib_dir in lib_dirs:
|
||||||
for manifest_path in glob.glob(
|
for manifest_path in glob.glob(
|
||||||
os.path.join(self._path_vars["MPY_LIB_DIR"], "**", name, "manifest.py"),
|
os.path.join(
|
||||||
|
self._path_vars["MPY_LIB_DIR"], lib_dir, "**", name, "manifest.py"
|
||||||
|
),
|
||||||
recursive=True,
|
recursive=True,
|
||||||
):
|
):
|
||||||
self.include(manifest_path, **kwargs)
|
self.include(manifest_path, **kwargs)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user