kopia lustrzana https://github.com/micropython/micropython-lib
upip: Drop _libc, add ffilib.
rodzic
2c00116f52
commit
5633db3aec
|
@ -2,7 +2,7 @@ all:
|
|||
|
||||
# This target prepares snapshot of all dependency modules, for
|
||||
# self-contained install
|
||||
deps: upip__libc.py upip_os.py upip_os_path.py upip_errno.py upip_gzip.py upip_stat.py upip_utarfile.py
|
||||
deps: upip_ffilib.py upip_os.py upip_os_path.py upip_errno.py upip_gzip.py upip_stat.py upip_utarfile.py
|
||||
|
||||
upip_ffilib.py: ../ffilib/ffilib.py
|
||||
cp $^ $@
|
||||
|
|
|
@ -1,34 +0,0 @@
|
|||
import ffi
|
||||
import sys
|
||||
|
||||
|
||||
_h = None
|
||||
|
||||
names = ('libc.so', 'libc.so.0', 'libc.so.6', 'libc.dylib')
|
||||
|
||||
def get():
|
||||
global _h
|
||||
if _h:
|
||||
return _h
|
||||
err = None
|
||||
for n in names:
|
||||
try:
|
||||
_h = ffi.open(n)
|
||||
return _h
|
||||
except OSError as e:
|
||||
err = e
|
||||
raise err
|
||||
|
||||
|
||||
def set_names(n):
|
||||
global names
|
||||
names = n
|
||||
|
||||
# Find out bitness of the platform, even if long ints are not supported
|
||||
# TODO: All bitness differences should be removed from micropython-lib, and
|
||||
# this snippet too.
|
||||
bitness = 1
|
||||
v = sys.maxsize
|
||||
while v:
|
||||
bitness += 1
|
||||
v >>= 1
|
|
@ -0,0 +1,41 @@
|
|||
import sys
|
||||
import ffi
|
||||
|
||||
_cache = {}
|
||||
|
||||
def open(name, maxver=10, extra=()):
|
||||
try:
|
||||
return _cache[name]
|
||||
except KeyError:
|
||||
pass
|
||||
def libs():
|
||||
if sys.platform == "linux":
|
||||
yield '%s.so' % name
|
||||
for i in range(maxver, -1, -1):
|
||||
yield '%s.so.%u' % (name, i)
|
||||
else:
|
||||
for ext in ('dylib', 'dll'):
|
||||
yield '%s.%s' % (name, ext)
|
||||
for n in extra:
|
||||
yield n
|
||||
err = None
|
||||
for n in libs():
|
||||
try:
|
||||
l = ffi.open(n)
|
||||
_cache[name] = l
|
||||
return l
|
||||
except OSError as e:
|
||||
err = e
|
||||
raise err
|
||||
|
||||
def libc():
|
||||
return open("libc", 6)
|
||||
|
||||
# Find out bitness of the platform, even if long ints are not supported
|
||||
# TODO: All bitness differences should be removed from micropython-lib, and
|
||||
# this snippet too.
|
||||
bitness = 1
|
||||
v = sys.maxsize
|
||||
while v:
|
||||
bitness += 1
|
||||
v >>= 1
|
Ładowanie…
Reference in New Issue