kopia lustrzana https://github.com/micropython/micropython-lib
137 wiersze
4.7 KiB
Python
Executable File
137 wiersze
4.7 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
# MicroPython will pick up glob from the current dir otherwise.
|
|
import sys
|
|
sys.path.pop(0)
|
|
|
|
import glob
|
|
|
|
|
|
TEMPLATE = """\
|
|
import sys
|
|
# Remove current dir from sys.path, otherwise setuptools will peek up our
|
|
# module instead of system.
|
|
sys.path.pop(0)
|
|
from setuptools import setup
|
|
|
|
|
|
setup(name='micropython-%(dist_name)s',
|
|
version='%(version)s',
|
|
description=%(desc)r,
|
|
long_description=%(long_desc)r,
|
|
url='https://github.com/micropython/micropython/issues/405',
|
|
author=%(author)r,
|
|
author_email=%(author_email)r,
|
|
maintainer=%(maintainer)r,
|
|
maintainer_email='micro-python@googlegroups.com',
|
|
license=%(license)r,
|
|
%(_what_)s=['%(top_name)s']%(_inst_req_)s)
|
|
"""
|
|
|
|
DUMMY_DESC = """\
|
|
This is a dummy implementation of a module for MicroPython standard library.
|
|
It contains zero or very little functionality, and primarily intended to
|
|
avoid import errors (using idea that even if an application imports a
|
|
module, it may be not using it onevery code path, so may work at least
|
|
partially). It is expected that more complete implementation of the module
|
|
will be provided later. Please help with the development if you are
|
|
interested in this module."""
|
|
|
|
CPYTHON_DESC = """\
|
|
This is a module ported from CPython standard library to be compatible with
|
|
MicroPython interpreter. Usually, this means applying small patches for
|
|
features not supported (yet, or at all) in MicroPython. Sometimes, heavier
|
|
changes are required. Note that CPython modules are written with availability
|
|
of vast resources in mind, and may not work for MicroPython ports with
|
|
limited heap. If you are affected by such a case, please help reimplement
|
|
the module from scratch."""
|
|
|
|
MICROPYTHON_LIB_DESC = """\
|
|
This is a module reimplemented specifically for MicroPython standard library,
|
|
with efficient and lean design in mind. Note that this module is likely work
|
|
in progress and likely supports just a subset of CPython's corresponding
|
|
module. Please help with the development if you are interested in this
|
|
module."""
|
|
|
|
MICROPYTHON_DEVELS = 'MicroPython Developers'
|
|
MICROPYTHON_DEVELS_EMAIL = 'micro-python@googlegroups.com'
|
|
CPYTHON_DEVELS = 'CPython Developers'
|
|
CPYTHON_DEVELS_EMAIL = 'python-dev@python.org'
|
|
|
|
def parse_metadata(f):
|
|
data = {}
|
|
for l in f:
|
|
l = l.strip()
|
|
if l[0] == "#":
|
|
continue
|
|
k, v = l.split("=", 1)
|
|
data[k.strip()] = v.strip()
|
|
return data
|
|
|
|
|
|
def write_setup(fname, substs):
|
|
with open(fname, "w") as f:
|
|
f.write(TEMPLATE % substs)
|
|
|
|
|
|
def main():
|
|
for fname in glob.iglob("*/metadata.txt"):
|
|
print(fname)
|
|
with open(fname) as f:
|
|
data = parse_metadata(f)
|
|
|
|
module = fname.split("/")[0]
|
|
if data["type"] == "module":
|
|
data["_what_"] = "py_modules"
|
|
elif data["type"] == "package":
|
|
data["_what_"] = "packages"
|
|
else:
|
|
raise ValueError
|
|
|
|
if data["srctype"] == "dummy":
|
|
data["author"] = MICROPYTHON_DEVELS
|
|
data["author_email"] = MICROPYTHON_DEVELS_EMAIL
|
|
data["maintainer"] = MICROPYTHON_DEVELS
|
|
data["license"] = "MIT"
|
|
data["desc"] = "Dummy %s module for MicroPython" % module
|
|
data["long_desc"] = DUMMY_DESC
|
|
elif data["srctype"] == "cpython":
|
|
data["author"] = CPYTHON_DEVELS
|
|
data["author_email"] = CPYTHON_DEVELS_EMAIL
|
|
data["maintainer"] = MICROPYTHON_DEVELS
|
|
data["license"] = "Python"
|
|
data["desc"] = "CPython %s module ported to MicroPython" % module
|
|
data["long_desc"] = CPYTHON_DESC
|
|
elif data["srctype"] == "micropython-lib":
|
|
if "author" not in data:
|
|
data["author"] = MICROPYTHON_DEVELS
|
|
if "author_email" not in data:
|
|
data["author_email"] = MICROPYTHON_DEVELS_EMAIL
|
|
if "maintainer" not in data:
|
|
data["maintainer"] = MICROPYTHON_DEVELS
|
|
if "desc" not in data:
|
|
data["desc"] = "%s module for MicroPython" % module
|
|
if "long_desc" not in data:
|
|
data["long_desc"] = MICROPYTHON_LIB_DESC
|
|
if "license" not in data:
|
|
data["license"] = "MIT"
|
|
else:
|
|
raise ValueError
|
|
|
|
if "dist_name" not in data:
|
|
data["dist_name"] = module
|
|
if "name" not in data:
|
|
data["name"] = module
|
|
data["top_name"] = data["name"].split(".", 1)[0]
|
|
|
|
if "depends" in data:
|
|
deps = ["micropython-" + x.strip() for x in data["depends"].split(",")]
|
|
data["_inst_req_"] = ",\n install_requires=['" + "', '".join(deps) + "']"
|
|
else:
|
|
data["_inst_req_"] = ""
|
|
|
|
write_setup(module + "/setup.py", data)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|