PHP 7.4.33
Preview: _distutils_system_mod.py Size: 6.16 KB
//lib/python3.10/_distutils_system_mod.py
"""
Apply Debian-specific patches to distutils commands.

Extracts the customized behavior from patches as reported
in pypa/distutils#2 and applies those customizations (except
for scheme definitions) to those commands.

Place this module somewhere in sys.path to take effect.
"""

import os
import sys
import sysconfig

import distutils.sysconfig
import distutils.command.install as orig_install
import distutils.command.install_egg_info as orig_install_egg_info
from distutils.command.install_egg_info import (
    to_filename,
    safe_name,
    safe_version,
    )
from distutils.errors import DistutilsOptionError


class install(orig_install.install):
    user_options = list(orig_install.install.user_options) + [
        ('install-layout=', None,
         "installation layout to choose (known values: deb, unix)"),
    ]

    def initialize_options(self):
        super().initialize_options()
        self.prefix_option = None
        self.install_layout = None

    def select_scheme(self, name):
        if name == "posix_prefix":
            if self.install_layout:
                if self.install_layout.lower() in ['deb']:
                    name = "deb_system"
                elif self.install_layout.lower() in ['unix']:
                    name = "posix_prefix"
                else:
                    raise DistutilsOptionError(
                        "unknown value for --install-layout")
            elif ((self.prefix_option and
                   os.path.normpath(self.prefix) != '/usr/local')
                  or is_virtual_environment()):
                name = "posix_prefix"
            else:
                if os.path.normpath(self.prefix) == '/usr/local':
                    self.prefix = self.exec_prefix = '/usr'
                    self.install_base = self.install_platbase = '/usr'
                name = "posix_local"
        super().select_scheme(name)

    def finalize_unix(self):
        self.prefix_option = self.prefix
        super().finalize_unix()


class install_egg_info(orig_install_egg_info.install_egg_info):
    user_options = list(orig_install_egg_info.install_egg_info.user_options) + [
        ('install-layout', None, "custom installation layout"),
    ]

    def initialize_options(self):
        super().initialize_options()
        self.prefix_option = None
        self.install_layout = None

    def finalize_options(self):
        self.set_undefined_options('install',('install_layout','install_layout'))
        self.set_undefined_options('install',('prefix_option','prefix_option'))
        super().finalize_options()

    @property
    def basename(self):
        if self.install_layout:
            if not self.install_layout.lower() in ['deb', 'unix']:
                raise DistutilsOptionError(
                    "unknown value for --install-layout")
            no_pyver = (self.install_layout.lower() == 'deb')
        elif self.prefix_option:
            no_pyver = False
        else:
            no_pyver = True
        if no_pyver:
            basename = "%s-%s.egg-info" % (
                to_filename(safe_name(self.distribution.get_name())),
                to_filename(safe_version(self.distribution.get_version()))
                )
        else:
            basename = "%s-%s-py%d.%d.egg-info" % (
                to_filename(safe_name(self.distribution.get_name())),
                to_filename(safe_version(self.distribution.get_version())),
                *sys.version_info[:2]
            )
        return basename


def is_virtual_environment():
    return sys.base_prefix != sys.prefix or hasattr(sys, "real_prefix")


def _posix_lib(standard_lib, libpython, early_prefix, prefix):
    is_default_prefix = not early_prefix or os.path.normpath(early_prefix) in ('/usr', '/usr/local')
    if standard_lib:
        return libpython
    elif is_default_prefix and not is_virtual_environment():
        return os.path.join(prefix, "lib", "python3", "dist-packages")
    else:
        return os.path.join(libpython, "site-packages")


def _inject_headers(name, scheme):
    """
    Given a scheme name and the resolved scheme,
    if the scheme does not include headers, resolve
    the fallback scheme for the name and use headers
    from it. pypa/distutils#88

    headers: module headers install location (posix_local is /local/ prefixed)
    include: cpython headers (Python.h)
    See also: bpo-44445
    """
    if 'headers' not in scheme:
        if name == 'posix_prefix':
            headers = scheme['include']
        else:
            headers = orig_install.INSTALL_SCHEMES['posix_prefix']['headers']
        if name == 'posix_local' and '/local/' not in headers:
            headers = headers.replace('/include/', '/local/include/')
        scheme['headers'] = headers
    return scheme


def load_schemes_wrapper(_load_schemes):
    """
    Implement the _inject_headers modification, above, but before
    _inject_headers() was introduced, upstream. So, slower and messier.
    """
    def wrapped_load_schemes():
        schemes = _load_schemes()
        for name, scheme in schemes.items():
            _inject_headers(name, scheme)
        return schemes
    return wrapped_load_schemes


def add_debian_schemes(schemes):
    """
    Ensure that the custom schemes we refer to above are present in schemes.
    """
    for name in ('posix_prefix', 'posix_local', 'deb_system'):
        if name not in schemes:
            scheme = sysconfig.get_paths(name, expand=False)
            schemes[name] = _inject_headers(name, scheme)


def apply_customizations():
    orig_install.install = install
    orig_install_egg_info.install_egg_info = install_egg_info
    distutils.sysconfig._posix_lib = _posix_lib

    if hasattr(orig_install, '_inject_headers'):
        # setuptools-bundled distutils >= 60.0.5
        orig_install._inject_headers = _inject_headers
    elif hasattr(orig_install, '_load_schemes'):
        # setuptools-bundled distutils >= 59.2.0
        orig_install._load_schemes = load_schemes_wrapper(orig_install._load_schemes)
    else:
        # older version with only statically defined schemes
        # this includes the version bundled with Python 3.10 that has our
        # schemes already included
        add_debian_schemes(orig_install.INSTALL_SCHEMES)


apply_customizations()

Directory Contents

Dirs: 29 × Files: 174
Name Size Perms Modified Actions
asyncio DIR
- drwxr-xr-x 2026-03-12 07:02:02
Edit Download
- drwxr-xr-x 2026-03-12 07:02:01
Edit Download
- drwxr-xr-x 2026-03-12 07:02:02
Edit Download
- drwxr-xr-x 2026-03-12 07:02:01
Edit Download
ctypes DIR
- drwxr-xr-x 2026-03-12 07:02:02
Edit Download
curses DIR
- drwxr-xr-x 2026-03-12 07:02:02
Edit Download
dbm DIR
- drwxr-xr-x 2026-03-12 07:02:02
Edit Download
distutils DIR
- drwxr-xr-x 2026-03-12 07:02:01
Edit Download
email DIR
- drwxr-xr-x 2026-03-12 07:02:01
Edit Download
encodings DIR
- drwxr-xr-x 2026-03-12 07:02:01
Edit Download
html DIR
- drwxr-xr-x 2026-03-12 07:02:02
Edit Download
http DIR
- drwxr-xr-x 2026-03-12 07:02:02
Edit Download
importlib DIR
- drwxr-xr-x 2026-03-12 07:02:01
Edit Download
json DIR
- drwxr-xr-x 2026-03-12 07:02:02
Edit Download
- drwxr-xr-x 2026-03-12 07:02:01
Edit Download
lib2to3 DIR
- drwxr-xr-x 2023-08-02 06:20:08
Edit Download
logging DIR
- drwxr-xr-x 2026-03-12 07:02:02
Edit Download
- drwxr-xr-x 2026-03-12 07:02:02
Edit Download
- drwxr-xr-x 2026-03-12 07:02:02
Edit Download
sqlite3 DIR
- drwxr-xr-x 2026-03-12 07:02:02
Edit Download
test DIR
- drwxr-xr-x 2026-03-12 07:02:02
Edit Download
unittest DIR
- drwxr-xr-x 2026-03-12 07:02:02
Edit Download
urllib DIR
- drwxr-xr-x 2026-03-12 07:02:02
Edit Download
venv DIR
- drwxr-xr-x 2026-03-12 07:02:02
Edit Download
wsgiref DIR
- drwxr-xr-x 2026-03-12 07:02:02
Edit Download
xml DIR
- drwxr-xr-x 2026-03-12 07:02:02
Edit Download
xmlrpc DIR
- drwxr-xr-x 2026-03-12 07:02:02
Edit Download
zoneinfo DIR
- drwxr-xr-x 2026-03-12 07:02:02
Edit Download
- drwxr-xr-x 2026-03-12 07:02:02
Edit Download
6.37 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
31.84 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
500 B lrw-r--r-- 2026-03-03 11:56:32
Edit Download
96.52 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
58.50 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
11.25 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
19.79 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
20.36 KB lrwxr-xr-x 2026-03-03 11:56:32
Edit Download
31.64 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
14.44 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
3.06 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
11.57 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
24.00 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
33.30 KB lrwxr-xr-x 2026-03-03 11:56:32
Edit Download
11.81 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
5.31 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
14.51 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
10.37 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
35.85 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
5.48 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
3.92 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
19.78 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
53.33 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
25.28 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
129 B lrw-r--r-- 2026-03-03 11:56:32
Edit Download
8.48 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
7.25 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
6.20 KB lrwxr-xr-x 2026-03-03 11:56:32
Edit Download
3.76 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
15.65 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
55.07 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
86.02 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
320 B lrw-r--r-- 2026-03-03 11:56:32
Edit Download
81.36 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
19.55 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
102.68 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
38.90 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
9.94 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
16.06 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
6.56 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
27.58 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
34.66 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
37.18 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
4.86 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
7.31 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
5.85 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
27.04 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
7.70 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
9.35 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
21.34 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
9.99 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
22.34 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
7.54 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
53.58 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
3.72 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
10.34 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
121.46 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
4.10 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
75.96 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
1.04 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
13.61 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
5.56 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
76.30 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
12.97 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
76.95 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
8.90 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
22.01 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
23.83 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
5.61 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
40.06 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
26.92 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
2.82 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
10.11 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
5.76 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
10.50 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
58.95 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
38.63 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
48.41 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
61.74 KB lrwxr-xr-x 2026-03-03 11:56:32
Edit Download
63.43 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
91.29 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
8.71 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
24.00 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
41.04 KB lrwxr-xr-x 2026-03-03 11:56:32
Edit Download
27.92 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
14.84 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
15.75 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
23.87 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
22.35 KB lrwxr-xr-x 2026-03-03 11:56:32
Edit Download
28.64 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
5.09 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
11.13 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
107.31 KB lrwxr-xr-x 2026-03-03 11:56:32
Edit Download
7.69 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
11.23 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
7.10 KB lrwxr-xr-x 2026-03-03 11:56:32
Edit Download
32.44 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
15.49 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
5.14 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
7.63 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
12.80 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
6.20 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
1.99 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
19.08 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
8.36 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
13.18 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
53.29 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
2.38 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
23.11 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
155 B lrw-r--r-- 2022-06-29 12:14:53
Edit Download
34.34 KB lrwxr-xr-x 2026-03-03 11:56:32
Edit Download
44.35 KB lrwxr-xr-x 2026-03-03 11:56:32
Edit Download
6.93 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
35.92 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
26.66 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
27.32 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
7.01 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
39.82 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
52.47 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
5.36 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
42.19 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
10.32 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
12.61 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
257 B lrw-r--r-- 2026-03-03 11:56:32
Edit Download
82.93 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
17.73 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
9.98 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
28.71 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
11.03 KB lrwxr-xr-x 2026-03-03 11:56:32
Edit Download
104.93 KB lrwxr-xr-x 2026-03-03 11:56:32
Edit Download
22.71 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
33.76 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
19.31 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
1003 B lrw-r--r-- 2026-03-03 11:56:32
Edit Download
55.86 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
13.18 KB lrwxr-xr-x 2026-03-03 11:56:32
Edit Download
2.33 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
25.31 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
28.53 KB lrwxr-xr-x 2026-03-03 11:56:32
Edit Download
25.61 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
17.62 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
879 B lrw-r--r-- 2026-03-03 11:56:32
Edit Download
140.39 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
9.88 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
90.39 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
7.13 KB lrwxr-xr-x 2026-03-03 11:56:32
Edit Download
26.86 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
19.23 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
17.58 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
21.05 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
23.68 KB lrwxr-xr-x 2026-03-03 11:56:32
Edit Download
5.77 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
7.36 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
88.72 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
30.17 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
3.19 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
2.61 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
31.53 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
8.54 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
5.55 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
6.16 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
14.31 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
21.28 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
223.32 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
92.25 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
6.04 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
3.05 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
24.68 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
26.84 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
26.84 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
7.05 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
5.78 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
5.03 KB lrw-r--r-- 2026-03-03 11:56:32
Edit Download
64 B lrw-r--r-- 2026-03-03 11:56:32
Edit Download
If ZipArchive is unavailable, a .tar will be created (no compression).