unix-ffi: Move more unix-only packages to unix-ffi.

With the dependencies captured in manifest.py, several packages in
python-stdlib were still unix-only due to direct or transitive dependencies
on unix-only or ffi modules.  Or they just make no sense to run on
microcontroller targets.

In a few cases (e.g. base64) where possible, the unix dependency could be
removed.

Updates manifest.py to use the `unix_ffi=True` arg to `require()` for these
libraries.

Rename re-pcre to re now that unix-ffi is effectively its own namespace.

Update unix-ffi/README.md, and strengthen the wording that the unix
libraries are unmaintained.

Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
pull/528/head
Jim Mussared 2022-08-11 00:38:03 +10:00 zatwierdzone przez Damien George
rodzic ce66e701a5
commit f3cfc52ab0
74 zmienionych plików z 51 dodań i 119 usunięć

Wyświetl plik

@ -96,7 +96,7 @@ def b64decode(s, altchars=None, validate=False):
altchars = _bytes_from_decode_data(altchars)
assert len(altchars) == 2, repr(altchars)
s = s.translate(bytes.maketrans(altchars, b"+/"))
if validate and not re.match(b"^[A-Za-z0-9+/]*={0,2}$", s):
if validate and not re.match(b"^[A-Za-z0-9+/]*=*$", s):
raise binascii.Error("Non-base64 digit found")
return binascii.a2b_base64(s)

Wyświetl plik

@ -1,7 +1,6 @@
metadata(version="3.3.3-4")
require("binascii")
require("re-pcre")
require("struct")
module("base64.py")

Wyświetl plik

@ -1,7 +0,0 @@
# email.charset
require("functools")
require("email.encoders")
require("email.errors")
package("email", version="0.5.1")

Wyświetl plik

@ -1,8 +0,0 @@
# email.feedparser
require("re-pcre")
require("email.errors")
require("email.message")
require("email.internal")
package("email", version="0.5.1")

Wyświetl plik

@ -1,9 +0,0 @@
# email.header
require("re-pcre")
require("binascii")
require("email.encoders")
require("email.errors")
require("email.charset")
package("email", version="0.5.2")

Wyświetl plik

@ -1,15 +0,0 @@
# email.internal
require("re-pcre")
require("base64")
require("binascii")
require("functools")
require("string")
# require("calendar") TODO
require("abc")
require("email.errors")
require("email.header")
require("email.charset")
require("email.utils")
package("email", version="0.5.1")

Wyświetl plik

@ -1,11 +0,0 @@
# email.message
require("re-pcre")
require("uu")
require("base64")
require("binascii")
require("email.utils")
require("email.errors")
require("email.charset")
package("email", version="0.5.3")

Wyświetl plik

@ -1,8 +0,0 @@
# email.parser
require("warnings")
require("email.feedparser")
require("email.message")
require("email.internal")
package("email", version="0.5.1")

Wyświetl plik

@ -1,7 +0,0 @@
# glob
require("os")
require("re-pcre")
require("fnmatch")
module("glob.py", version="0.5.2")

Wyświetl plik

@ -1,8 +0,0 @@
# html.parser
require("_markupbase")
require("warnings")
require("html.entities")
require("re-pcre")
package("html", version="3.3.3-2")

Wyświetl plik

@ -1,10 +0,0 @@
# http.client
require("email.parser")
require("email.message")
require("socket")
require("collections")
require("urllib.parse")
require("warnings")
package("http", version="0.5.1")

Wyświetl plik

@ -1,6 +1,6 @@
metadata(version="0.5.1")
require("binascii")
require("os")
require("os.path")
module("uu.py")

Wyświetl plik

@ -1,9 +1,11 @@
Unix-specific libraries
=======================
These are libraries that will only run on the Unix port of MicroPython. There is some limited support for the Windows port too.
These are libraries that will only run on the Unix port of MicroPython, or are
too big to be used on microcontrollers. There is some limited support for the
Windows port too.
**Note:** This directory is largely unmaintained, although large breaking changes are not expected.
**Note:** This directory is unmaintained.
Background
----------
@ -11,7 +13,18 @@ Background
The libraries in this directory provide additional CPython compatibility using
the host operating system's native libraries.
This is implemented either by accessing the libraries directly via libffi, or by using built-in modules that are only available on the Unix port.
This is implemented either by accessing the libraries directly via libffi, or
by using built-in modules that are only available on the Unix port.
In theory, this allows you to use MicroPython as a more complete drop-in
replacement for CPython.
Usage
-----
To use a unix-specific library, pass `unix_ffi=True` to `require()` in your
manifest file.
```py
require("os", unix_ffi=True) # Use the unix-ffi version instead of python-stdlib.
```

Wyświetl plik

@ -1,5 +1,5 @@
metadata(version="3.3.3-1")
require("re-pcre")
require("re", unix_ffi=True)
module("_markupbase.py")

Wyświetl plik

@ -3,7 +3,7 @@ metadata(version="0.5.1")
require("base64")
require("binascii")
require("quopri")
require("re-pcre")
require("re", unix_ffi=True)
require("string")
package("email")

Wyświetl plik

@ -215,7 +215,10 @@ def make_msgid(idstring=None, domain=None):
"""
timeval = time.time()
utcdate = time.strftime("%Y%m%d%H%M%S", time.gmtime(timeval))
pid = os.getpid()
if hasattr(os, "getpid"):
pid = os.getpid()
else:
pid = 0
randint = random.randrange(100000)
if idstring is None:
idstring = ""

Wyświetl plik

@ -1,13 +1,13 @@
metadata(version="3.3.3-2")
require("os")
require("re-pcre")
require("os", unix_ffi=True)
require("re", unix_ffi=True)
require("base64")
require("random")
require("datetime")
require("urllib.parse")
require("urllib.parse", unix_ffi=True)
require("warnings")
require("quopri")
require("email.charset")
require("email.charset", unix_ffi=True)
package("email")

Wyświetl plik

@ -2,6 +2,6 @@ metadata(version="0.0.4")
# Originally written by Paul Sokolovsky.
require("ffilib")
require("ffilib", unix_ffi=True)
module("fcntl.py")

Wyświetl plik

@ -1,5 +1,5 @@
metadata(version="3.3.3-1")
require("os")
require("os", unix_ffi=True)
module("getopt.py")

Wyświetl plik

@ -2,6 +2,6 @@ metadata(version="0.1")
# Originally written by Riccardo Magliocchetti.
require("ffilib")
require("ffilib", unix_ffi=True)
module("gettext.py")

Wyświetl plik

@ -2,8 +2,8 @@ metadata(version="0.2.1")
# Originally written by Paul Sokolovsky.
require("ffilib")
require("os")
require("signal")
require("ffilib", unix_ffi=True)
require("os", unix_ffi=True)
require("signal", unix_ffi=True)
package("machine")

Wyświetl plik

@ -2,8 +2,8 @@ metadata(version="0.1.2")
# Originally written by Paul Sokolovsky.
require("os")
require("select")
require("os", unix_ffi=True)
require("select", unix_ffi=True)
require("pickle")
module("multiprocessing.py")

Wyświetl plik

@ -2,7 +2,7 @@ metadata(version="0.6")
# Originally written by Paul Sokolovsky.
require("ffilib")
require("ffilib", unix_ffi=True)
require("errno")
require("stat")

Wyświetl plik

@ -2,6 +2,6 @@ metadata(version="0.1")
# Originally written by Riccardo Magliocchetti.
require("ffilib")
require("ffilib", unix_ffi=True)
module("pwd.py")

Wyświetl plik

@ -2,6 +2,6 @@ metadata(version="0.2.5")
# Originally written by Paul Sokolovsky.
require("ffilib")
require("ffilib", unix_ffi=True)
module("re.py")

Wyświetl plik

@ -2,7 +2,7 @@ metadata(version="0.3")
# Originally written by Paul Sokolovsky.
require("os")
require("ffilib")
require("os", unix_ffi=True)
require("ffilib", unix_ffi=True)
module("select.py")

Wyświetl plik

@ -2,6 +2,6 @@ metadata(version="0.3.2")
# Originally written by Paul Sokolovsky.
require("ffilib")
require("ffilib", unix_ffi=True)
module("signal.py")

Wyświetl plik

@ -2,6 +2,6 @@ metadata(version="0.2.4")
# Originally written by Paul Sokolovsky.
require("ffilib")
require("ffilib", unix_ffi=True)
module("sqlite3.py")

Wyświetl plik

@ -1,5 +1,5 @@
metadata(version="0.5")
require("ffilib")
require("ffilib", unix_ffi=True)
module("time.py")

Wyświetl plik

@ -1,9 +1,9 @@
metadata(version="3.3.3-3")
require("getopt")
require("getopt", unix_ffi=True)
require("itertools")
# require("linecache") TODO
require("time")
require("time", unix_ffi=True)
require("traceback")
module("timeit.py")

Wyświetl plik

@ -2,8 +2,8 @@ metadata(version="0.1.2")
# Originally written by Paul Sokolovsky.
require("os")
require("tty")
require("select")
require("os", unix_ffi=True)
require("tty", unix_ffi=True)
require("select", unix_ffi=True)
package("ucurses")

Wyświetl plik

@ -1,6 +1,6 @@
metadata(version="0.9.0")
require("argparse")
require("argparse", unix_ffi=True)
require("fnmatch")
module("unittest.py")

Wyświetl plik

@ -1,6 +1,6 @@
metadata(version="0.5.2")
require("re-pcre")
require("re", unix_ffi=True)
require("collections")
require("collections.defaultdict")