From e8e7e84a893a80455f8c14378247cc35c357d2f3 Mon Sep 17 00:00:00 2001 From: Paul Sokolovsky Date: Wed, 18 Feb 2015 19:56:29 +0200 Subject: [PATCH] upip: Capture recursive dependencies required for standalone running. Also, improve package import handling. --- upip/metadata.txt | 2 +- upip/setup.py | 2 +- upip/upip.py | 18 +++++++++++++----- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/upip/metadata.txt b/upip/metadata.txt index 35c9a15c..8baa4a43 100644 --- a/upip/metadata.txt +++ b/upip/metadata.txt @@ -2,6 +2,6 @@ srctype = micropython-lib type = module version = 0.1 author = Paul Sokolovsky -extra_modules = upip_errno, upip_gzip, upip_os, upip_os_path, upip_utarfile +extra_modules = upip__libc, upip_errno, upip_gzip, upip_os, upip_os_path, upip_stat, upip_utarfile desc = Simple package manager for MicroPython. long_desc = Simple package manager for MicroPython, targetting to be self-hosted (but not yet there). Compatible only with packages without custom setup.py code. diff --git a/upip/setup.py b/upip/setup.py index 4210748f..af94318f 100644 --- a/upip/setup.py +++ b/upip/setup.py @@ -15,4 +15,4 @@ setup(name='micropython-upip', maintainer='MicroPython Developers', maintainer_email='micro-python@googlegroups.com', license='MIT', - py_modules=['upip', 'upip_errno', 'upip_gzip', 'upip_os', 'upip_os_path', 'upip_utarfile']) + py_modules=['upip', 'upip__libc', 'upip_errno', 'upip_gzip', 'upip_os', 'upip_os_path', 'upip_stat', 'upip_utarfile']) diff --git a/upip/upip.py b/upip/upip.py index 2df45414..2b6407a3 100644 --- a/upip/upip.py +++ b/upip/upip.py @@ -1,12 +1,20 @@ -def upip_import(mod): +def upip_import(mod, sub=None): try: - return __import__("upip_" + mod) + mod_ = mod + if sub: + mod_ += "_" + sub + return __import__("upip_" + mod_) except ImportError: - return __import__(mod) + m = __import__(mod) + if sub: + return getattr(m, sub) + return m sys = upip_import("sys") os = upip_import("os") -os.path = upip_import("os.path").path +#os.path = upip_import("os.path").path +ospath = upip_import("os", "path") + errno = upip_import("errno") gzip = upip_import("gzip") try: @@ -103,7 +111,7 @@ def install_pkg(pkg_spec, install_path): packages = data["releases"][latest_ver] assert len(packages) == 1 package_url = packages[0]["url"] - package_fname = os.path.basename(package_url) + package_fname = ospath.basename(package_url) print(package_url) download(package_url, package_fname)