__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
import distutils.command.build_clib as orig
from distutils.errors import DistutilsSetupError
from distutils import log
from setuptools.dep_util import newer_pairwise_group
class build_clib(orig.build_clib):
"""
Override the default build_clib behaviour to do the following:
1. Implement a rudimentary timestamp-based dependency system
so 'compile()' doesn't run every time.
2. Add more keys to the 'build_info' dictionary:
* obj_deps - specify dependencies for each object compiled.
this should be a dictionary mapping a key
with the source filename to a list of
dependencies. Use an empty string for global
dependencies.
* cflags - specify a list of additional flags to pass to
the compiler.
"""
def build_libraries(self, libraries):
for lib_name, build_info in libraries:
sources = build_info.get('sources')
if sources is None or not isinstance(sources, (list, tuple)):
raise DistutilsSetupError(
"in 'libraries' option (library '%s'), "
"'sources' must be present and must be "
"a list of source filenames" % lib_name
)
sources = sorted(list(sources))
log.info("building '%s' library", lib_name)
# Make sure everything is the correct type.
# obj_deps should be a dictionary of keys as sources
# and a list/tuple of files that are its dependencies.
obj_deps = build_info.get('obj_deps', dict())
if not isinstance(obj_deps, dict):
raise DistutilsSetupError(
"in 'libraries' option (library '%s'), "
"'obj_deps' must be a dictionary of "
"type 'source: list'" % lib_name
)
dependencies = []
# Get the global dependencies that are specified by the '' key.
# These will go into every source's dependency list.
global_deps = obj_deps.get('', list())
if not isinstance(global_deps, (list, tuple)):
raise DistutilsSetupError(
"in 'libraries' option (library '%s'), "
"'obj_deps' must be a dictionary of "
"type 'source: list'" % lib_name
)
# Build the list to be used by newer_pairwise_group
# each source will be auto-added to its dependencies.
for source in sources:
src_deps = [source]
src_deps.extend(global_deps)
extra_deps = obj_deps.get(source, list())
if not isinstance(extra_deps, (list, tuple)):
raise DistutilsSetupError(
"in 'libraries' option (library '%s'), "
"'obj_deps' must be a dictionary of "
"type 'source: list'" % lib_name
)
src_deps.extend(extra_deps)
dependencies.append(src_deps)
expected_objects = self.compiler.object_filenames(
sources,
output_dir=self.build_temp,
)
if newer_pairwise_group(dependencies, expected_objects) != ([], []):
# First, compile the source code to object files in the library
# directory. (This should probably change to putting object
# files in a temporary build directory.)
macros = build_info.get('macros')
include_dirs = build_info.get('include_dirs')
cflags = build_info.get('cflags')
self.compiler.compile(
sources,
output_dir=self.build_temp,
macros=macros,
include_dirs=include_dirs,
extra_postargs=cflags,
debug=self.debug,
)
# Now "link" the object files together into a static library.
# (On Unix at least, this isn't really linking -- it just
# builds an archive. Whatever.)
self.compiler.create_static_lib(
expected_objects, lib_name, output_dir=self.build_clib, debug=self.debug
)
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| __pycache__ | Folder | 0755 |
|
|
| __init__.py | File | 396 B | 0644 |
|
| alias.py | File | 2.33 KB | 0644 |
|
| bdist_egg.py | File | 16.17 KB | 0644 |
|
| bdist_rpm.py | File | 1.28 KB | 0644 |
|
| build.py | File | 6.63 KB | 0644 |
|
| build_clib.py | File | 4.29 KB | 0644 |
|
| build_ext.py | File | 17.09 KB | 0644 |
|
| build_py.py | File | 14.65 KB | 0644 |
|
| develop.py | File | 6.56 KB | 0644 |
|
| dist_info.py | File | 4.14 KB | 0644 |
|
| easy_install.py | File | 86.76 KB | 0644 |
|
| editable_wheel.py | File | 32.46 KB | 0644 |
|
| egg_info.py | File | 26.5 KB | 0644 |
|
| install.py | File | 5.5 KB | 0644 |
|
| install_egg_info.py | File | 2.97 KB | 0644 |
|
| install_lib.py | File | 4.91 KB | 0644 |
|
| install_scripts.py | File | 2.3 KB | 0644 |
|
| launcher manifest.xml | File | 628 B | 0644 |
|
| register.py | File | 468 B | 0644 |
|
| rotate.py | File | 2.05 KB | 0644 |
|
| saveopts.py | File | 657 B | 0644 |
|
| sdist.py | File | 6.93 KB | 0644 |
|
| setopt.py | File | 4.81 KB | 0644 |
|
| test.py | File | 7.91 KB | 0644 |
|
| upload.py | File | 462 B | 0644 |
|
| upload_docs.py | File | 7.59 KB | 0644 |
|