From fd63aa84f1e826123d43a00b62763bc3e2651333 Mon Sep 17 00:00:00 2001 From: Paul Sokolovsky Date: Sun, 30 Aug 2015 02:53:08 +0300 Subject: [PATCH] upip: Update dependency modules. --- upip/Makefile | 6 +++--- upip/upip_os.py | 25 ++++++++++++++++++++----- upip/upip_os_path.py | 4 +++- 3 files changed, 26 insertions(+), 9 deletions(-) diff --git a/upip/Makefile b/upip/Makefile index 6ad78d24..5137336a 100644 --- a/upip/Makefile +++ b/upip/Makefile @@ -4,12 +4,12 @@ all: # 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 -upip__libc.py: ../_libc/_libc.py +upip_ffilib.py: ../ffilib/ffilib.py cp $^ $@ upip_os.py: ../os/os/__init__.py - sed -r -e 's/((_libc|errno|stat)([^_"]|$$))/upip_\1/' $^ >$@ + sed -r -e 's/((ffilib|errno|stat)([^_"]|$$))/upip_\1/' $^ >$@ upip_os_path.py: ../os.path/os/path.py - sed -r -e 's/((_libc|errno|os|stat)([^_"]|$$))/upip_\1/' $^ >$@ + sed -r -e 's/((ffilib|errno|os|stat)([^_"]|$$))/upip_\1/' $^ >$@ upip_errno.py: ../errno/errno.py cp $^ $@ upip_gzip.py: ../gzip/gzip.py diff --git a/upip/upip_os.py b/upip/upip_os.py index d767d481..c3f49d34 100644 --- a/upip/upip_os.py +++ b/upip/upip_os.py @@ -3,16 +3,30 @@ import array import ustruct as struct import upip_errno import upip_stat as stat_ -import upip__libc +import upip_ffilib try: from _os import * except: pass -libc = upip__libc.get() +libc = upip_ffilib.libc() + +try: + errno__ = libc.var("i", "errno") + def errno_(val=None): + if val is None: + return errno__.get() + errno__.set(val) +except OSError: + __upip_errno = libc.func("p", "__errno", "") + def errno_(val=None): + if val is None: + p = __upip_errno() + buf = ffi.as_bytearray(p, 4) + return int.from_bytes(buf) + raise NotImplementedError -errno_ = libc.var("i", "errno") chdir_ = libc.func("i", "chdir", "s") mkdir_ = libc.func("i", "mkdir", "si") rename_ = libc.func("i", "rename", "ss") @@ -62,7 +76,7 @@ def check_error(ret): # Return True is error was EINTR (which usually means that OS call # should be restarted). if ret == -1: - e = errno_.get() + e = errno_() if e == upip_errno.EINTR: return True raise OSError(e) @@ -223,5 +237,6 @@ def fsdecode(s): def urandom(n): - with open("/dev/urandom", "rb") as f: + import builtins + with builtins.open("/dev/urandom", "rb") as f: return f.read(n) diff --git a/upip/upip_os_path.py b/upip/upip_os_path.py index 6c7783eb..df574c6b 100644 --- a/upip/upip_os_path.py +++ b/upip/upip_os_path.py @@ -8,7 +8,9 @@ def normpath(s): return s def abspath(s): - return upip_os.getcwd() + "/" + s + if s[0] != "/": + return upip_os.getcwd() + "/" + s + return s def join(*args): # TODO: this is non-compliant