404

[ Avaa Bypassed ]




Upload:

Command:

elspacio@18.188.15.159: ~ $
from __future__ import absolute_import

import re
import ctypes
import platform
import warnings


def glibc_version_string():
    "Returns glibc version string, or None if not using glibc."

    # ctypes.CDLL(None) internally calls dlopen(NULL), and as the dlopen
    # manpage says, "If filename is NULL, then the returned handle is for the
    # main program". This way we can let the linker do the work to figure out
    # which libc our process is actually using.
    process_namespace = ctypes.CDLL(None)
    try:
        gnu_get_libc_version = process_namespace.gnu_get_libc_version
    except AttributeError:
        # Symbol doesn't exist -> therefore, we are not linked to
        # glibc.
        return None

    # Call gnu_get_libc_version, which returns a string like "2.5"
    gnu_get_libc_version.restype = ctypes.c_char_p
    version_str = gnu_get_libc_version()
    # py2 / py3 compatibility:
    if not isinstance(version_str, str):
        version_str = version_str.decode("ascii")

    return version_str


# Separated out from have_compatible_glibc for easier unit testing
def check_glibc_version(version_str, required_major, minimum_minor):
    # Parse string and check against requested version.
    #
    # We use a regexp instead of str.split because we want to discard any
    # random junk that might come after the minor version -- this might happen
    # in patched/forked versions of glibc (e.g. Linaro's version of glibc
    # uses version strings like "2.20-2014.11"). See gh-3588.
    m = re.match(r"(?P<major>[0-9]+)\.(?P<minor>[0-9]+)", version_str)
    if not m:
        warnings.warn("Expected glibc version with 2 components major.minor,"
                      " got: %s" % version_str, RuntimeWarning)
        return False
    return (int(m.group("major")) == required_major and
            int(m.group("minor")) >= minimum_minor)


def have_compatible_glibc(required_major, minimum_minor):
    version_str = glibc_version_string()
    if version_str is None:
        return False
    return check_glibc_version(version_str, required_major, minimum_minor)


# platform.libc_ver regularly returns completely nonsensical glibc
# versions. E.g. on my computer, platform says:
#
#   ~$ python2.7 -c 'import platform; print(platform.libc_ver())'
#   ('glibc', '2.7')
#   ~$ python3.5 -c 'import platform; print(platform.libc_ver())'
#   ('glibc', '2.9')
#
# But the truth is:
#
#   ~$ ldd --version
#   ldd (Debian GLIBC 2.22-11) 2.22
#
# This is unfortunate, because it means that the linehaul data on libc
# versions that was generated by pip 8.1.2 and earlier is useless and
# misleading. Solution: instead of using platform, use our code that actually
# works.
def libc_ver():
    glibc_version = glibc_version_string()
    if glibc_version is None:
        # For non-glibc platforms, fall back on platform.libc_ver
        return platform.libc_ver()
    else:
        return ("glibc", glibc_version)

Filemanager

Name Type Size Permission Actions
__init__.py File 26.55 KB 0644
__init__.pyc File 27.08 KB 0644
__init__.pyo File 27.02 KB 0644
appdirs.py File 8.6 KB 0644
appdirs.pyc File 8.41 KB 0644
appdirs.pyo File 8.41 KB 0644
build.py File 1.28 KB 0644
build.pyc File 1.68 KB 0644
build.pyo File 1.68 KB 0644
deprecation.py File 2.18 KB 0644
deprecation.pyc File 2.26 KB 0644
deprecation.pyo File 2.26 KB 0644
encoding.py File 971 B 0644
encoding.pyc File 1.25 KB 0644
encoding.pyo File 1.25 KB 0644
filesystem.py File 899 B 0644
filesystem.pyc File 780 B 0644
filesystem.pyo File 780 B 0644
glibc.py File 2.87 KB 0644
glibc.pyc File 1.78 KB 0644
glibc.pyo File 1.78 KB 0644
hashes.py File 2.8 KB 0644
hashes.pyc File 3.87 KB 0644
hashes.pyo File 3.87 KB 0644
logging.py File 3.25 KB 0644
logging.pyc File 4.73 KB 0644
logging.pyo File 4.73 KB 0644
outdated.py File 5.85 KB 0644
outdated.pyc File 5.55 KB 0644
outdated.pyo File 5.55 KB 0644
packaging.py File 2.03 KB 0644
packaging.pyc File 2.4 KB 0644
packaging.pyo File 2.4 KB 0644
setuptools_build.py File 278 B 0644
setuptools_build.pyc File 347 B 0644
setuptools_build.pyo File 347 B 0644
ui.py File 11.33 KB 0644
ui.pyc File 11.41 KB 0644
ui.pyo File 11.34 KB 0644