Nuitka-winsvc 2.7.7__cp313-cp313-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of Nuitka-winsvc might be problematic. Click here for more details.
- nuitka/Builtins.py +259 -0
- nuitka/BytecodeCaching.py +184 -0
- nuitka/Bytecodes.py +109 -0
- nuitka/CacheCleanup.py +54 -0
- nuitka/Constants.py +425 -0
- nuitka/Errors.py +93 -0
- nuitka/HardImportRegistry.py +408 -0
- nuitka/MainControl.py +1201 -0
- nuitka/ModuleRegistry.py +364 -0
- nuitka/OptionParsing.py +2473 -0
- nuitka/Options.py +2948 -0
- nuitka/OutputDirectories.py +201 -0
- nuitka/PostProcessing.py +551 -0
- nuitka/Progress.py +252 -0
- nuitka/PythonFlavors.py +426 -0
- nuitka/PythonOperators.py +146 -0
- nuitka/PythonVersions.py +513 -0
- nuitka/Serialization.py +291 -0
- nuitka/SourceCodeReferences.py +176 -0
- nuitka/Tracing.py +579 -0
- nuitka/TreeXML.py +141 -0
- nuitka/Variables.py +515 -0
- nuitka/Version.py +88 -0
- nuitka/__init__.py +19 -0
- nuitka/__main__.py +224 -0
- nuitka/__past__.py +217 -0
- nuitka/build/Backend.scons +1111 -0
- nuitka/build/CCompilerVersion.scons +281 -0
- nuitka/build/DataComposerInterface.py +116 -0
- nuitka/build/Offsets.scons +626 -0
- nuitka/build/Onefile.scons +564 -0
- nuitka/build/SconsCaching.py +451 -0
- nuitka/build/SconsCompilerSettings.py +1133 -0
- nuitka/build/SconsHacks.py +215 -0
- nuitka/build/SconsInterface.py +664 -0
- nuitka/build/SconsProgress.py +100 -0
- nuitka/build/SconsSpawn.py +436 -0
- nuitka/build/SconsUtils.py +939 -0
- nuitka/build/__init__.py +19 -0
- nuitka/build/include/nuitka/allocator.h +450 -0
- nuitka/build/include/nuitka/builtins.h +97 -0
- nuitka/build/include/nuitka/calling.h +123 -0
- nuitka/build/include/nuitka/checkers.h +39 -0
- nuitka/build/include/nuitka/checksum_tools.h +28 -0
- nuitka/build/include/nuitka/compiled_asyncgen.h +281 -0
- nuitka/build/include/nuitka/compiled_cell.h +64 -0
- nuitka/build/include/nuitka/compiled_coroutine.h +271 -0
- nuitka/build/include/nuitka/compiled_frame.h +502 -0
- nuitka/build/include/nuitka/compiled_function.h +170 -0
- nuitka/build/include/nuitka/compiled_generator.h +287 -0
- nuitka/build/include/nuitka/compiled_method.h +54 -0
- nuitka/build/include/nuitka/constants.h +251 -0
- nuitka/build/include/nuitka/constants_blob.h +34 -0
- nuitka/build/include/nuitka/debug_settings.h +60 -0
- nuitka/build/include/nuitka/environment_variables.h +30 -0
- nuitka/build/include/nuitka/environment_variables_system.h +51 -0
- nuitka/build/include/nuitka/exception_groups.h +167 -0
- nuitka/build/include/nuitka/exceptions.h +1458 -0
- nuitka/build/include/nuitka/filesystem_paths.h +117 -0
- nuitka/build/include/nuitka/freelists.h +92 -0
- nuitka/build/include/nuitka/hedley.h +1774 -0
- nuitka/build/include/nuitka/helper/attributes.h +90 -0
- nuitka/build/include/nuitka/helper/boolean.h +86 -0
- nuitka/build/include/nuitka/helper/bytearrays.h +34 -0
- nuitka/build/include/nuitka/helper/bytes.h +28 -0
- nuitka/build/include/nuitka/helper/calling_generated.h +132 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_eq.h +47 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_ge.h +39 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_gt.h +39 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_le.h +47 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_lt.h +47 -0
- nuitka/build/include/nuitka/helper/comparisons_dual_ne.h +39 -0
- nuitka/build/include/nuitka/helper/comparisons_eq.h +247 -0
- nuitka/build/include/nuitka/helper/comparisons_ge.h +197 -0
- nuitka/build/include/nuitka/helper/comparisons_gt.h +197 -0
- nuitka/build/include/nuitka/helper/comparisons_le.h +247 -0
- nuitka/build/include/nuitka/helper/comparisons_lt.h +247 -0
- nuitka/build/include/nuitka/helper/comparisons_ne.h +197 -0
- nuitka/build/include/nuitka/helper/complex.h +46 -0
- nuitka/build/include/nuitka/helper/dictionaries.h +481 -0
- nuitka/build/include/nuitka/helper/floats.h +32 -0
- nuitka/build/include/nuitka/helper/import_hard.h +121 -0
- nuitka/build/include/nuitka/helper/indexes.h +47 -0
- nuitka/build/include/nuitka/helper/ints.h +165 -0
- nuitka/build/include/nuitka/helper/iterators.h +376 -0
- nuitka/build/include/nuitka/helper/lists.h +94 -0
- nuitka/build/include/nuitka/helper/lists_generated.h +36 -0
- nuitka/build/include/nuitka/helper/mappings.h +39 -0
- nuitka/build/include/nuitka/helper/operations.h +114 -0
- nuitka/build/include/nuitka/helper/operations_binary_add.h +240 -0
- nuitka/build/include/nuitka/helper/operations_binary_bitand.h +108 -0
- nuitka/build/include/nuitka/helper/operations_binary_bitor.h +108 -0
- nuitka/build/include/nuitka/helper/operations_binary_bitxor.h +108 -0
- nuitka/build/include/nuitka/helper/operations_binary_divmod.h +103 -0
- nuitka/build/include/nuitka/helper/operations_binary_dual_add.h +34 -0
- nuitka/build/include/nuitka/helper/operations_binary_floordiv.h +103 -0
- nuitka/build/include/nuitka/helper/operations_binary_lshift.h +99 -0
- nuitka/build/include/nuitka/helper/operations_binary_matmult.h +60 -0
- nuitka/build/include/nuitka/helper/operations_binary_mod.h +304 -0
- nuitka/build/include/nuitka/helper/operations_binary_mult.h +247 -0
- nuitka/build/include/nuitka/helper/operations_binary_olddiv.h +125 -0
- nuitka/build/include/nuitka/helper/operations_binary_pow.h +90 -0
- nuitka/build/include/nuitka/helper/operations_binary_rshift.h +99 -0
- nuitka/build/include/nuitka/helper/operations_binary_sub.h +117 -0
- nuitka/build/include/nuitka/helper/operations_binary_truediv.h +103 -0
- nuitka/build/include/nuitka/helper/operations_builtin_types.h +247 -0
- nuitka/build/include/nuitka/helper/operations_inplace_add.h +173 -0
- nuitka/build/include/nuitka/helper/operations_inplace_bitand.h +76 -0
- nuitka/build/include/nuitka/helper/operations_inplace_bitor.h +76 -0
- nuitka/build/include/nuitka/helper/operations_inplace_bitxor.h +76 -0
- nuitka/build/include/nuitka/helper/operations_inplace_floordiv.h +95 -0
- nuitka/build/include/nuitka/helper/operations_inplace_lshift.h +62 -0
- nuitka/build/include/nuitka/helper/operations_inplace_matmult.h +60 -0
- nuitka/build/include/nuitka/helper/operations_inplace_mod.h +218 -0
- nuitka/build/include/nuitka/helper/operations_inplace_mult.h +184 -0
- nuitka/build/include/nuitka/helper/operations_inplace_olddiv.h +115 -0
- nuitka/build/include/nuitka/helper/operations_inplace_pow.h +87 -0
- nuitka/build/include/nuitka/helper/operations_inplace_rshift.h +62 -0
- nuitka/build/include/nuitka/helper/operations_inplace_sub.h +102 -0
- nuitka/build/include/nuitka/helper/operations_inplace_truediv.h +95 -0
- nuitka/build/include/nuitka/helper/raising.h +114 -0
- nuitka/build/include/nuitka/helper/rangeobjects.h +66 -0
- nuitka/build/include/nuitka/helper/richcomparisons.h +35 -0
- nuitka/build/include/nuitka/helper/sequences.h +33 -0
- nuitka/build/include/nuitka/helper/sets.h +25 -0
- nuitka/build/include/nuitka/helper/slices.h +314 -0
- nuitka/build/include/nuitka/helper/strings.h +30 -0
- nuitka/build/include/nuitka/helper/subscripts.h +390 -0
- nuitka/build/include/nuitka/helper/tuples.h +187 -0
- nuitka/build/include/nuitka/helpers.h +417 -0
- nuitka/build/include/nuitka/importing.h +149 -0
- nuitka/build/include/nuitka/incbin.h +402 -0
- nuitka/build/include/nuitka/jit_sources.h +25 -0
- nuitka/build/include/nuitka/prelude.h +626 -0
- nuitka/build/include/nuitka/printing.h +84 -0
- nuitka/build/include/nuitka/python_pgo.h +57 -0
- nuitka/build/include/nuitka/safe_string_ops.h +57 -0
- nuitka/build/include/nuitka/threading.h +142 -0
- nuitka/build/include/nuitka/tracing.h +82 -0
- nuitka/build/include/nuitka/type_aliases.h +30 -0
- nuitka/build/include/nuitka/unfreezing.h +91 -0
- nuitka/build/inline_copy/appdirs/LICENSE.txt +23 -0
- nuitka/build/inline_copy/appdirs/appdirs.py +611 -0
- nuitka/build/inline_copy/atomicwrites/LICENSE +19 -0
- nuitka/build/inline_copy/atomicwrites/atomicwrites.py +226 -0
- nuitka/build/inline_copy/bin/scons.py +58 -0
- nuitka/build/inline_copy/clcache/clcache/LICENSE +30 -0
- nuitka/build/inline_copy/clcache/clcache/__init__.py +4 -0
- nuitka/build/inline_copy/clcache/clcache/caching.py +2008 -0
- nuitka/build/inline_copy/colorama/LICENSE.txt +27 -0
- nuitka/build/inline_copy/colorama/colorama/__init__.py +6 -0
- nuitka/build/inline_copy/colorama/colorama/ansi.py +102 -0
- nuitka/build/inline_copy/colorama/colorama/ansitowin32.py +258 -0
- nuitka/build/inline_copy/colorama/colorama/initialise.py +80 -0
- nuitka/build/inline_copy/colorama/colorama/win32.py +152 -0
- nuitka/build/inline_copy/colorama/colorama/winterm.py +169 -0
- nuitka/build/inline_copy/glob2/LICENSE +27 -0
- nuitka/build/inline_copy/glob2/glob2/__init__.py +5 -0
- nuitka/build/inline_copy/glob2/glob2/compat.py +167 -0
- nuitka/build/inline_copy/glob2/glob2/fnmatch.py +141 -0
- nuitka/build/inline_copy/glob2/glob2/impl.py +216 -0
- nuitka/build/inline_copy/jinja2/LICENSE.rst +28 -0
- nuitka/build/inline_copy/jinja2/README.rst +2 -0
- nuitka/build/inline_copy/jinja2/jinja2/__init__.py +72 -0
- nuitka/build/inline_copy/jinja2/jinja2/_compat.py +105 -0
- nuitka/build/inline_copy/jinja2/jinja2/_identifier.py +2 -0
- nuitka/build/inline_copy/jinja2/jinja2/bccache.py +361 -0
- nuitka/build/inline_copy/jinja2/jinja2/compiler.py +1721 -0
- nuitka/build/inline_copy/jinja2/jinja2/constants.py +32 -0
- nuitka/build/inline_copy/jinja2/jinja2/debug.py +378 -0
- nuitka/build/inline_copy/jinja2/jinja2/defaults.py +56 -0
- nuitka/build/inline_copy/jinja2/jinja2/environment.py +1276 -0
- nuitka/build/inline_copy/jinja2/jinja2/exceptions.py +146 -0
- nuitka/build/inline_copy/jinja2/jinja2/ext.py +627 -0
- nuitka/build/inline_copy/jinja2/jinja2/filters.py +1190 -0
- nuitka/build/inline_copy/jinja2/jinja2/idtracking.py +286 -0
- nuitka/build/inline_copy/jinja2/jinja2/lexer.py +739 -0
- nuitka/build/inline_copy/jinja2/jinja2/loaders.py +483 -0
- nuitka/build/inline_copy/jinja2/jinja2/meta.py +106 -0
- nuitka/build/inline_copy/jinja2/jinja2/nativetypes.py +220 -0
- nuitka/build/inline_copy/jinja2/jinja2/nodes.py +999 -0
- nuitka/build/inline_copy/jinja2/jinja2/optimizer.py +49 -0
- nuitka/build/inline_copy/jinja2/jinja2/parser.py +903 -0
- nuitka/build/inline_copy/jinja2/jinja2/runtime.py +808 -0
- nuitka/build/inline_copy/jinja2/jinja2/sandbox.py +488 -0
- nuitka/build/inline_copy/jinja2/jinja2/tests.py +174 -0
- nuitka/build/inline_copy/jinja2/jinja2/utils.py +642 -0
- nuitka/build/inline_copy/jinja2/jinja2/visitor.py +87 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Action.py +1475 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Builder.py +905 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/CacheDir.py +314 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Conftest.py +805 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Debug.py +251 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Defaults.py +646 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Environment.py +2561 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/EnvironmentValues.py +119 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Errors.py +222 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Executor.py +660 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Job.py +439 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Memoize.py +242 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Node/Alias.py +176 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Node/FS.py +3861 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Node/Python.py +195 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Node/__init__.py +1784 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/PathList.py +224 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/__init__.py +341 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/aix.py +81 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/cygwin.py +61 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/darwin.py +70 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/hpux.py +45 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/irix.py +41 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/mingw.py +33 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/os2.py +55 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/posix.py +124 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/sunos.py +47 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/virtualenv.py +115 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Platform/win32.py +429 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/SConf.py +1119 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/SConsign.py +453 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Scanner/C.py +226 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Scanner/Dir.py +131 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Scanner/Prog.py +114 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Scanner/RC.py +57 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Scanner/__init__.py +436 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Script/Interactive.py +372 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Script/Main.py +1469 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Script/SConsOptions.py +1071 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Script/SConscript.py +686 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Script/__init__.py +425 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Subst.py +979 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Taskmaster.py +1062 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/386asm.py +61 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/GettextCommon.py +429 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/__init__.py +52 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/arch.py +66 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/common.py +371 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/netframework.py +83 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/sdk.py +411 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/vc.py +994 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/MSCommon/vs.py +608 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/PharLapCommon.py +116 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/__init__.py +882 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/aixc++.py +43 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/aixcc.py +74 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/aixcxx.py +77 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/aixlink.py +78 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/applelink.py +209 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/ar.py +63 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/as.py +49 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/asm.py +78 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/bcc32.py +81 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/c++.py +44 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/cc.py +105 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/clang.py +91 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/clangCommon/__init__.py +18 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/clangxx.py +99 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/cxx.py +95 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/cyglink.py +212 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/default.py +50 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/filesystem.py +98 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/g++.py +45 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/gas.py +56 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/gcc.py +110 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/gettext_tool.py +69 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/gnulink.py +70 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/gxx.py +78 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/hpc++.py +45 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/hpcc.py +53 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/hpcxx.py +88 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/hplink.py +72 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/icc.py +59 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/icl.py +52 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/ilink.py +55 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/ilink32.py +60 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/install.py +510 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/intelc.py +617 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/link.py +72 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/linkCommon/LoadableModule.py +131 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/linkCommon/SharedLibrary.py +218 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/linkCommon/__init__.py +171 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/linkloc.py +112 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/m4.py +63 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/masm.py +77 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mingw.py +232 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/msgfmt.py +132 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/msginit.py +137 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/msgmerge.py +125 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mslib.py +73 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mslink.py +339 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mssdk.py +50 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/msvc.py +325 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/msvs.py +2116 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mwcc.py +207 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/mwld.py +108 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/nasm.py +72 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/rmic.py +139 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/rpcgen.py +70 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sgiar.py +68 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sgic++.py +43 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sgicc.py +53 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sgicxx.py +61 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sgilink.py +59 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sunar.py +64 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sunc++.py +45 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/suncc.py +58 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/suncxx.py +153 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/sunlink.py +79 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/tar.py +73 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/textfile.py +198 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/tlib.py +53 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/wix.py +104 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/xgettext.py +337 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Tool/zip.py +120 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Util.py +2134 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Utilities/ConfigureCache.py +171 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Utilities/__init__.py +0 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Utilities/sconsign.py +494 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/BoolVariable.py +96 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/EnumVariable.py +110 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/ListVariable.py +152 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/PackageVariable.py +107 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/PathVariable.py +158 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/__init__.py +334 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Warnings.py +238 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/__init__.py +9 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/compat/__init__.py +104 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/compat/_scons_dbm.py +42 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/compat/win32.py +101 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/cpp.py +640 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/dblite.py +295 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/exitfuncs.py +59 -0
- nuitka/build/inline_copy/markupsafe/LICENSE.rst +28 -0
- nuitka/build/inline_copy/markupsafe/markupsafe/__init__.py +327 -0
- nuitka/build/inline_copy/markupsafe/markupsafe/_compat.py +33 -0
- nuitka/build/inline_copy/markupsafe/markupsafe/_constants.py +264 -0
- nuitka/build/inline_copy/markupsafe/markupsafe/_native.py +69 -0
- nuitka/build/inline_copy/pefile/LICENSE.txt +21 -0
- nuitka/build/inline_copy/pefile/ordlookup/__init__.py +41 -0
- nuitka/build/inline_copy/pefile/ordlookup/oleaut32.py +400 -0
- nuitka/build/inline_copy/pefile/ordlookup/ws2_32.py +120 -0
- nuitka/build/inline_copy/pefile/pefile.py +8034 -0
- nuitka/build/inline_copy/pkg_resources/pkg_resources/__init__.py +3272 -0
- nuitka/build/inline_copy/pkg_resources/pkg_resources/py31compat.py +21 -0
- nuitka/build/inline_copy/python_hacl/LICENSE.txt +201 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.c +1430 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_MD5.h +66 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.c +463 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA1.h +66 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.c +1273 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA2.h +204 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.c +734 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Hash_SHA3.h +131 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/Hacl_Streaming_Types.h +83 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt128_Verified.h +346 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/FStar_UInt_8_16_32_64.h +107 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/fstar_uint128_struct_endianness.h +68 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/internal/target.h +293 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/lowstar_endianness.h +231 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/include/krml/types.h +14 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_MD5.h +56 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA1.h +56 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA2.h +164 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/internal/Hacl_Hash_SHA3.h +65 -0
- nuitka/build/inline_copy/python_hacl/hacl_312/python_hacl_namespaces.h +89 -0
- nuitka/build/inline_copy/stubgen/astunparse.py +938 -0
- nuitka/build/inline_copy/stubgen/six.py +998 -0
- nuitka/build/inline_copy/stubgen/stubgen.py +484 -0
- nuitka/build/inline_copy/tqdm/tqdm/__init__.py +40 -0
- nuitka/build/inline_copy/tqdm/tqdm/_main.py +9 -0
- nuitka/build/inline_copy/tqdm/tqdm/_monitor.py +97 -0
- nuitka/build/inline_copy/tqdm/tqdm/_tqdm.py +9 -0
- nuitka/build/inline_copy/tqdm/tqdm/_tqdm_notebook.py +9 -0
- nuitka/build/inline_copy/tqdm/tqdm/_tqdm_pandas.py +24 -0
- nuitka/build/inline_copy/tqdm/tqdm/_utils.py +12 -0
- nuitka/build/inline_copy/tqdm/tqdm/auto.py +44 -0
- nuitka/build/inline_copy/tqdm/tqdm/autonotebook.py +28 -0
- nuitka/build/inline_copy/tqdm/tqdm/dask.py +46 -0
- nuitka/build/inline_copy/tqdm/tqdm/notebook.py +316 -0
- nuitka/build/inline_copy/tqdm/tqdm/std.py +1524 -0
- nuitka/build/inline_copy/tqdm/tqdm/tk.py +207 -0
- nuitka/build/inline_copy/tqdm/tqdm/utils.py +351 -0
- nuitka/build/inline_copy/tqdm/tqdm/version.py +2 -0
- nuitka/build/inline_copy/yaml/LICENSE +20 -0
- nuitka/build/inline_copy/yaml/yaml/__init__.py +427 -0
- nuitka/build/inline_copy/yaml/yaml/composer.py +139 -0
- nuitka/build/inline_copy/yaml/yaml/constructor.py +748 -0
- nuitka/build/inline_copy/yaml/yaml/cyaml.py +101 -0
- nuitka/build/inline_copy/yaml/yaml/dumper.py +62 -0
- nuitka/build/inline_copy/yaml/yaml/emitter.py +1137 -0
- nuitka/build/inline_copy/yaml/yaml/error.py +75 -0
- nuitka/build/inline_copy/yaml/yaml/events.py +86 -0
- nuitka/build/inline_copy/yaml/yaml/loader.py +63 -0
- nuitka/build/inline_copy/yaml/yaml/nodes.py +49 -0
- nuitka/build/inline_copy/yaml/yaml/parser.py +589 -0
- nuitka/build/inline_copy/yaml/yaml/reader.py +185 -0
- nuitka/build/inline_copy/yaml/yaml/representer.py +389 -0
- nuitka/build/inline_copy/yaml/yaml/resolver.py +227 -0
- nuitka/build/inline_copy/yaml/yaml/scanner.py +1435 -0
- nuitka/build/inline_copy/yaml/yaml/serializer.py +111 -0
- nuitka/build/inline_copy/yaml/yaml/tokens.py +104 -0
- nuitka/build/inline_copy/zlib/LICENSE +22 -0
- nuitka/build/inline_copy/zlib/crc32.c +1049 -0
- nuitka/build/inline_copy/zlib/crc32.h +9446 -0
- nuitka/build/inline_copy/zlib/zconf.h +551 -0
- nuitka/build/inline_copy/zlib/zlib.h +1938 -0
- nuitka/build/inline_copy/zlib/zutil.h +275 -0
- nuitka/build/inline_copy/zstd/LICENSE.txt +30 -0
- nuitka/build/inline_copy/zstd/common/bitstream.h +463 -0
- nuitka/build/inline_copy/zstd/common/compiler.h +288 -0
- nuitka/build/inline_copy/zstd/common/cpu.h +213 -0
- nuitka/build/inline_copy/zstd/common/debug.h +107 -0
- nuitka/build/inline_copy/zstd/common/entropy_common.c +360 -0
- nuitka/build/inline_copy/zstd/common/error_private.c +56 -0
- nuitka/build/inline_copy/zstd/common/error_private.h +80 -0
- nuitka/build/inline_copy/zstd/common/fse.h +715 -0
- nuitka/build/inline_copy/zstd/common/fse_decompress.c +393 -0
- nuitka/build/inline_copy/zstd/common/huf.h +361 -0
- nuitka/build/inline_copy/zstd/common/mem.h +426 -0
- nuitka/build/inline_copy/zstd/common/xxhash.c +826 -0
- nuitka/build/inline_copy/zstd/common/xxhash.h +285 -0
- nuitka/build/inline_copy/zstd/common/zstd_common.c +83 -0
- nuitka/build/inline_copy/zstd/common/zstd_deps.h +111 -0
- nuitka/build/inline_copy/zstd/common/zstd_errors.h +95 -0
- nuitka/build/inline_copy/zstd/common/zstd_internal.h +478 -0
- nuitka/build/inline_copy/zstd/decompress/huf_decompress.c +1350 -0
- nuitka/build/inline_copy/zstd/decompress/zstd_ddict.c +244 -0
- nuitka/build/inline_copy/zstd/decompress/zstd_ddict.h +44 -0
- nuitka/build/inline_copy/zstd/decompress/zstd_decompress.c +1930 -0
- nuitka/build/inline_copy/zstd/decompress/zstd_decompress_block.c +1540 -0
- nuitka/build/inline_copy/zstd/decompress/zstd_decompress_block.h +62 -0
- nuitka/build/inline_copy/zstd/decompress/zstd_decompress_internal.h +190 -0
- nuitka/build/inline_copy/zstd/zstd.h +2391 -0
- nuitka/build/static_src/CompiledAsyncgenType.c +2211 -0
- nuitka/build/static_src/CompiledCellType.c +300 -0
- nuitka/build/static_src/CompiledCodeHelpers.c +2160 -0
- nuitka/build/static_src/CompiledCoroutineType.c +1946 -0
- nuitka/build/static_src/CompiledFrameType.c +1337 -0
- nuitka/build/static_src/CompiledFunctionType.c +3320 -0
- nuitka/build/static_src/CompiledGeneratorType.c +1997 -0
- nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c +2117 -0
- nuitka/build/static_src/CompiledMethodType.c +614 -0
- nuitka/build/static_src/GenerateHeadersMain.c +30 -0
- nuitka/build/static_src/HelpersAllocator.c +939 -0
- nuitka/build/static_src/HelpersAttributes.c +1241 -0
- nuitka/build/static_src/HelpersBuiltin.c +901 -0
- nuitka/build/static_src/HelpersBuiltinTypeMethods.c +3594 -0
- nuitka/build/static_src/HelpersBytes.c +107 -0
- nuitka/build/static_src/HelpersCalling.c +397 -0
- nuitka/build/static_src/HelpersCallingGenerated.c +14361 -0
- nuitka/build/static_src/HelpersChecksumTools.c +59 -0
- nuitka/build/static_src/HelpersClasses.c +91 -0
- nuitka/build/static_src/HelpersComparisonDualEq.c +183 -0
- nuitka/build/static_src/HelpersComparisonDualGe.c +121 -0
- nuitka/build/static_src/HelpersComparisonDualGt.c +121 -0
- nuitka/build/static_src/HelpersComparisonDualLe.c +183 -0
- nuitka/build/static_src/HelpersComparisonDualLt.c +183 -0
- nuitka/build/static_src/HelpersComparisonDualNe.c +121 -0
- nuitka/build/static_src/HelpersComparisonEq.c +12070 -0
- nuitka/build/static_src/HelpersComparisonEqUtils.c +169 -0
- nuitka/build/static_src/HelpersComparisonGe.c +11871 -0
- nuitka/build/static_src/HelpersComparisonGt.c +11855 -0
- nuitka/build/static_src/HelpersComparisonLe.c +11957 -0
- nuitka/build/static_src/HelpersComparisonLt.c +11941 -0
- nuitka/build/static_src/HelpersComparisonNe.c +11979 -0
- nuitka/build/static_src/HelpersConsole.c +124 -0
- nuitka/build/static_src/HelpersConstantsBlob.c +1487 -0
- nuitka/build/static_src/HelpersDeepcopy.c +636 -0
- nuitka/build/static_src/HelpersDictionaries.c +1739 -0
- nuitka/build/static_src/HelpersDictionariesGenerated.c +738 -0
- nuitka/build/static_src/HelpersDumpBacktraces.c +63 -0
- nuitka/build/static_src/HelpersEnvironmentVariables.c +65 -0
- nuitka/build/static_src/HelpersEnvironmentVariablesSystem.c +97 -0
- nuitka/build/static_src/HelpersExceptions.c +298 -0
- nuitka/build/static_src/HelpersFiles.c +353 -0
- nuitka/build/static_src/HelpersFilesystemPaths.c +1322 -0
- nuitka/build/static_src/HelpersFloats.c +92 -0
- nuitka/build/static_src/HelpersHeapStorage.c +68 -0
- nuitka/build/static_src/HelpersImport.c +506 -0
- nuitka/build/static_src/HelpersImportHard.c +526 -0
- nuitka/build/static_src/HelpersJitSources.c +48 -0
- nuitka/build/static_src/HelpersLists.c +899 -0
- nuitka/build/static_src/HelpersListsGenerated.c +564 -0
- nuitka/build/static_src/HelpersMappings.c +46 -0
- nuitka/build/static_src/HelpersMatching.c +192 -0
- nuitka/build/static_src/HelpersOperationBinaryAdd.c +6477 -0
- nuitka/build/static_src/HelpersOperationBinaryAddUtils.c +703 -0
- nuitka/build/static_src/HelpersOperationBinaryBitand.c +2738 -0
- nuitka/build/static_src/HelpersOperationBinaryBitor.c +2738 -0
- nuitka/build/static_src/HelpersOperationBinaryBitxor.c +2738 -0
- nuitka/build/static_src/HelpersOperationBinaryDivmod.c +2406 -0
- nuitka/build/static_src/HelpersOperationBinaryDivmodUtils.c +33 -0
- nuitka/build/static_src/HelpersOperationBinaryDualAdd.c +172 -0
- nuitka/build/static_src/HelpersOperationBinaryFloordiv.c +2422 -0
- nuitka/build/static_src/HelpersOperationBinaryInplaceAdd.c +220 -0
- nuitka/build/static_src/HelpersOperationBinaryLshift.c +2846 -0
- nuitka/build/static_src/HelpersOperationBinaryMatmult.c +453 -0
- nuitka/build/static_src/HelpersOperationBinaryMod.c +6549 -0
- nuitka/build/static_src/HelpersOperationBinaryMult.c +6438 -0
- nuitka/build/static_src/HelpersOperationBinaryMultUtils.c +125 -0
- nuitka/build/static_src/HelpersOperationBinaryOlddiv.c +2355 -0
- nuitka/build/static_src/HelpersOperationBinaryPow.c +2743 -0
- nuitka/build/static_src/HelpersOperationBinaryPowUtils.c +26 -0
- nuitka/build/static_src/HelpersOperationBinaryRshift.c +2706 -0
- nuitka/build/static_src/HelpersOperationBinarySub.c +2649 -0
- nuitka/build/static_src/HelpersOperationBinaryTruediv.c +2415 -0
- nuitka/build/static_src/HelpersOperationInplaceAdd.c +5211 -0
- nuitka/build/static_src/HelpersOperationInplaceAddUtils.c +144 -0
- nuitka/build/static_src/HelpersOperationInplaceBitand.c +1826 -0
- nuitka/build/static_src/HelpersOperationInplaceBitor.c +1826 -0
- nuitka/build/static_src/HelpersOperationInplaceBitxor.c +1826 -0
- nuitka/build/static_src/HelpersOperationInplaceFloordiv.c +2605 -0
- nuitka/build/static_src/HelpersOperationInplaceLshift.c +1594 -0
- nuitka/build/static_src/HelpersOperationInplaceMatmult.c +603 -0
- nuitka/build/static_src/HelpersOperationInplaceMod.c +4762 -0
- nuitka/build/static_src/HelpersOperationInplaceMult.c +4689 -0
- nuitka/build/static_src/HelpersOperationInplaceOlddiv.c +2553 -0
- nuitka/build/static_src/HelpersOperationInplacePow.c +2807 -0
- nuitka/build/static_src/HelpersOperationInplaceRshift.c +1534 -0
- nuitka/build/static_src/HelpersOperationInplaceSub.c +2894 -0
- nuitka/build/static_src/HelpersOperationInplaceTruediv.c +2612 -0
- nuitka/build/static_src/HelpersProfiling.c +104 -0
- nuitka/build/static_src/HelpersPythonPgo.c +113 -0
- nuitka/build/static_src/HelpersRaising.c +447 -0
- nuitka/build/static_src/HelpersSafeStrings.c +185 -0
- nuitka/build/static_src/HelpersSequences.c +134 -0
- nuitka/build/static_src/HelpersSlices.c +73 -0
- nuitka/build/static_src/HelpersStrings.c +998 -0
- nuitka/build/static_src/HelpersTuples.c +148 -0
- nuitka/build/static_src/HelpersTypes.c +329 -0
- nuitka/build/static_src/InspectPatcher.c +439 -0
- nuitka/build/static_src/MainProgram.c +2060 -0
- nuitka/build/static_src/MetaPathBasedLoader.c +2290 -0
- nuitka/build/static_src/MetaPathBasedLoaderImportlibMetadataDistribution.c +125 -0
- nuitka/build/static_src/MetaPathBasedLoaderResourceReader.c +158 -0
- nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +785 -0
- nuitka/build/static_src/OnefileBootstrap.c +1580 -0
- nuitka/build/static_src/OnefileSplashScreen.cpp +275 -0
- nuitka/code_generation/AsyncgenCodes.py +186 -0
- nuitka/code_generation/AttributeCodes.py +357 -0
- nuitka/code_generation/BinaryOperationHelperDefinitions.py +720 -0
- nuitka/code_generation/BranchCodes.py +67 -0
- nuitka/code_generation/BuiltinCodes.py +529 -0
- nuitka/code_generation/CallCodes.py +1186 -0
- nuitka/code_generation/ClassCodes.py +156 -0
- nuitka/code_generation/CodeGeneration.py +1078 -0
- nuitka/code_generation/CodeHelperSelection.py +81 -0
- nuitka/code_generation/CodeHelpers.py +455 -0
- nuitka/code_generation/CodeObjectCodes.py +165 -0
- nuitka/code_generation/ComparisonCodes.py +569 -0
- nuitka/code_generation/ComparisonHelperDefinitions.py +146 -0
- nuitka/code_generation/ConditionalCodes.py +236 -0
- nuitka/code_generation/ConstantCodes.py +243 -0
- nuitka/code_generation/Contexts.py +1248 -0
- nuitka/code_generation/CoroutineCodes.py +253 -0
- nuitka/code_generation/CtypesCodes.py +46 -0
- nuitka/code_generation/DictCodes.py +918 -0
- nuitka/code_generation/Emission.py +75 -0
- nuitka/code_generation/ErrorCodes.py +281 -0
- nuitka/code_generation/EvalCodes.py +444 -0
- nuitka/code_generation/ExceptionCodes.py +337 -0
- nuitka/code_generation/ExpressionCTypeSelectionHelpers.py +227 -0
- nuitka/code_generation/ExpressionCodes.py +61 -0
- nuitka/code_generation/FrameCodes.py +518 -0
- nuitka/code_generation/FunctionCodes.py +858 -0
- nuitka/code_generation/GeneratorCodes.py +218 -0
- nuitka/code_generation/GlobalConstants.py +249 -0
- nuitka/code_generation/GlobalsLocalsCodes.py +211 -0
- nuitka/code_generation/IdCodes.py +53 -0
- nuitka/code_generation/ImportCodes.py +468 -0
- nuitka/code_generation/Indentation.py +45 -0
- nuitka/code_generation/IndexCodes.py +50 -0
- nuitka/code_generation/InjectCCodes.py +28 -0
- nuitka/code_generation/IntegerCodes.py +110 -0
- nuitka/code_generation/IteratorCodes.py +378 -0
- nuitka/code_generation/JitCodes.py +44 -0
- nuitka/code_generation/LabelCodes.py +68 -0
- nuitka/code_generation/LineNumberCodes.py +91 -0
- nuitka/code_generation/ListCodes.py +502 -0
- nuitka/code_generation/LoaderCodes.py +193 -0
- nuitka/code_generation/LocalsDictCodes.py +359 -0
- nuitka/code_generation/LoopCodes.py +88 -0
- nuitka/code_generation/MatchCodes.py +67 -0
- nuitka/code_generation/ModuleCodes.py +247 -0
- nuitka/code_generation/Namify.py +260 -0
- nuitka/code_generation/NetworkxCodes.py +51 -0
- nuitka/code_generation/OperationCodes.py +398 -0
- nuitka/code_generation/PackageResourceCodes.py +986 -0
- nuitka/code_generation/PrintCodes.py +93 -0
- nuitka/code_generation/PythonAPICodes.py +215 -0
- nuitka/code_generation/RaisingCodes.py +481 -0
- nuitka/code_generation/Reports.py +115 -0
- nuitka/code_generation/ReturnCodes.py +143 -0
- nuitka/code_generation/SetCodes.py +196 -0
- nuitka/code_generation/SliceCodes.py +465 -0
- nuitka/code_generation/StringCodes.py +303 -0
- nuitka/code_generation/SubscriptCodes.py +263 -0
- nuitka/code_generation/TensorflowCodes.py +54 -0
- nuitka/code_generation/TryCodes.py +326 -0
- nuitka/code_generation/TupleCodes.py +115 -0
- nuitka/code_generation/TypeAliasCodes.py +120 -0
- nuitka/code_generation/VariableCodes.py +519 -0
- nuitka/code_generation/VariableDeclarations.py +279 -0
- nuitka/code_generation/YieldCodes.py +253 -0
- nuitka/code_generation/__init__.py +19 -0
- nuitka/code_generation/c_types/CTypeBases.py +177 -0
- nuitka/code_generation/c_types/CTypeBooleans.py +104 -0
- nuitka/code_generation/c_types/CTypeCFloats.py +57 -0
- nuitka/code_generation/c_types/CTypeCLongs.py +45 -0
- nuitka/code_generation/c_types/CTypeModuleDictVariables.py +109 -0
- nuitka/code_generation/c_types/CTypeNuitkaBooleans.py +150 -0
- nuitka/code_generation/c_types/CTypeNuitkaInts.py +200 -0
- nuitka/code_generation/c_types/CTypeNuitkaVoids.py +107 -0
- nuitka/code_generation/c_types/CTypePyObjectPointers.py +572 -0
- nuitka/code_generation/c_types/CTypeVoids.py +92 -0
- nuitka/code_generation/c_types/__init__.py +19 -0
- nuitka/code_generation/templates/CodeTemplatesAsyncgens.py +106 -0
- nuitka/code_generation/templates/CodeTemplatesConstants.py +296 -0
- nuitka/code_generation/templates/CodeTemplatesCoroutines.py +109 -0
- nuitka/code_generation/templates/CodeTemplatesExceptions.py +84 -0
- nuitka/code_generation/templates/CodeTemplatesFrames.py +235 -0
- nuitka/code_generation/templates/CodeTemplatesFunction.py +117 -0
- nuitka/code_generation/templates/CodeTemplatesGeneratorFunction.py +130 -0
- nuitka/code_generation/templates/CodeTemplatesIterators.py +40 -0
- nuitka/code_generation/templates/CodeTemplatesLoader.py +180 -0
- nuitka/code_generation/templates/CodeTemplatesModules.py +710 -0
- nuitka/code_generation/templates/CodeTemplatesVariables.py +388 -0
- nuitka/code_generation/templates/TemplateDebugWrapper.py +80 -0
- nuitka/code_generation/templates/__init__.py +19 -0
- nuitka/code_generation/templates_c/CodeTemplateCallsMethodPositional.c.j2 +321 -0
- nuitka/code_generation/templates_c/CodeTemplateCallsMixed.c.j2 +143 -0
- nuitka/code_generation/templates_c/CodeTemplateCallsPositional.c.j2 +677 -0
- nuitka/code_generation/templates_c/CodeTemplateCallsPositionalMethodDescr.c.j2 +165 -0
- nuitka/code_generation/templates_c/CodeTemplateMakeListHinted.c.j2 +38 -0
- nuitka/code_generation/templates_c/CodeTemplateMakeListSmall.c.j2 +41 -0
- nuitka/code_generation/templates_c/HelperBuiltinMethodOperation.c.j2 +53 -0
- nuitka/code_generation/templates_c/HelperDictionaryCopy.c.j2 +364 -0
- nuitka/code_generation/templates_c/HelperImportHard.c.j2 +37 -0
- nuitka/code_generation/templates_c/HelperLongTools.c.j2 +53 -0
- nuitka/code_generation/templates_c/HelperObjectTools.c.j2 +20 -0
- nuitka/code_generation/templates_c/HelperOperationBinary.c.j2 +148 -0
- nuitka/code_generation/templates_c/HelperOperationBinaryDual.c.j2 +115 -0
- nuitka/code_generation/templates_c/HelperOperationComparison.c.j2 +352 -0
- nuitka/code_generation/templates_c/HelperOperationComparisonBytes.c.j2 +115 -0
- nuitka/code_generation/templates_c/HelperOperationComparisonDual.c.j2 +86 -0
- nuitka/code_generation/templates_c/HelperOperationComparisonFloat.c.j2 +31 -0
- nuitka/code_generation/templates_c/HelperOperationComparisonInt.c.j2 +32 -0
- nuitka/code_generation/templates_c/HelperOperationComparisonList.c.j2 +112 -0
- nuitka/code_generation/templates_c/HelperOperationComparisonLong.c.j2 +157 -0
- nuitka/code_generation/templates_c/HelperOperationComparisonStr.c.j2 +115 -0
- nuitka/code_generation/templates_c/HelperOperationComparisonTuple.c.j2 +99 -0
- nuitka/code_generation/templates_c/HelperOperationComparisonUnicode.c.j2 +115 -0
- nuitka/code_generation/templates_c/HelperOperationInplace.c.j2 +281 -0
- nuitka/code_generation/templates_c/HelperSlotsBinary.c.j2 +420 -0
- nuitka/code_generation/templates_c/HelperSlotsBytes.c.j2 +51 -0
- nuitka/code_generation/templates_c/HelperSlotsCommon.c.j2 +71 -0
- nuitka/code_generation/templates_c/HelperSlotsFloat.c.j2 +327 -0
- nuitka/code_generation/templates_c/HelperSlotsInt.c.j2 +411 -0
- nuitka/code_generation/templates_c/HelperSlotsList.c.j2 +59 -0
- nuitka/code_generation/templates_c/HelperSlotsLong.c.j2 +229 -0
- nuitka/code_generation/templates_c/HelperSlotsSet.c.j2 +47 -0
- nuitka/code_generation/templates_c/HelperSlotsStr.c.j2 +55 -0
- nuitka/code_generation/templates_c/HelperSlotsTuple.c.j2 +58 -0
- nuitka/code_generation/templates_c/HelperSlotsUnicode.c.j2 +62 -0
- nuitka/containers/Namedtuples.py +51 -0
- nuitka/containers/OrderedDicts.py +191 -0
- nuitka/containers/OrderedSets.py +123 -0
- nuitka/containers/OrderedSetsFallback.py +139 -0
- nuitka/containers/__init__.py +19 -0
- nuitka/distutils/Build.py +76 -0
- nuitka/distutils/DistutilCommands.py +438 -0
- nuitka/distutils/__init__.py +19 -0
- nuitka/finalizations/Finalization.py +35 -0
- nuitka/finalizations/FinalizeMarkups.py +136 -0
- nuitka/finalizations/__init__.py +19 -0
- nuitka/freezer/DependsExe.py +257 -0
- nuitka/freezer/DllDependenciesCommon.py +97 -0
- nuitka/freezer/DllDependenciesMacOS.py +444 -0
- nuitka/freezer/DllDependenciesPosix.py +242 -0
- nuitka/freezer/DllDependenciesWin32.py +315 -0
- nuitka/freezer/ImportDetection.py +359 -0
- nuitka/freezer/IncludedDataFiles.py +689 -0
- nuitka/freezer/IncludedEntryPoints.py +376 -0
- nuitka/freezer/Onefile.py +296 -0
- nuitka/freezer/Standalone.py +520 -0
- nuitka/freezer/__init__.py +19 -0
- nuitka/importing/IgnoreListing.py +449 -0
- nuitka/importing/ImportCache.py +95 -0
- nuitka/importing/ImportResolving.py +186 -0
- nuitka/importing/Importing.py +1200 -0
- nuitka/importing/PreloadedPackages.py +164 -0
- nuitka/importing/Recursion.py +611 -0
- nuitka/importing/StandardLibrary.py +429 -0
- nuitka/importing/__init__.py +19 -0
- nuitka/nodes/AsyncgenNodes.py +107 -0
- nuitka/nodes/AttributeLookupNodes.py +124 -0
- nuitka/nodes/AttributeNodes.py +386 -0
- nuitka/nodes/AttributeNodesGenerated.py +10734 -0
- nuitka/nodes/BuiltinAllNodes.py +115 -0
- nuitka/nodes/BuiltinAnyNodes.py +124 -0
- nuitka/nodes/BuiltinComplexNodes.py +83 -0
- nuitka/nodes/BuiltinDecodingNodes.py +52 -0
- nuitka/nodes/BuiltinDecoratorNodes.py +85 -0
- nuitka/nodes/BuiltinDictNodes.py +140 -0
- nuitka/nodes/BuiltinFormatNodes.py +159 -0
- nuitka/nodes/BuiltinHashNodes.py +63 -0
- nuitka/nodes/BuiltinInputNodes.py +39 -0
- nuitka/nodes/BuiltinIntegerNodes.py +170 -0
- nuitka/nodes/BuiltinIteratorNodes.py +391 -0
- nuitka/nodes/BuiltinLenNodes.py +61 -0
- nuitka/nodes/BuiltinNextNodes.py +111 -0
- nuitka/nodes/BuiltinOpenNodes.py +148 -0
- nuitka/nodes/BuiltinOperationNodeBasesGenerated.py +7367 -0
- nuitka/nodes/BuiltinRangeNodes.py +690 -0
- nuitka/nodes/BuiltinRefNodes.py +314 -0
- nuitka/nodes/BuiltinSumNodes.py +104 -0
- nuitka/nodes/BuiltinTypeNodes.py +454 -0
- nuitka/nodes/BuiltinVarsNodes.py +44 -0
- nuitka/nodes/BytesNodes.py +829 -0
- nuitka/nodes/CallNodes.py +217 -0
- nuitka/nodes/Checkers.py +55 -0
- nuitka/nodes/ChildrenHavingMixins.py +21576 -0
- nuitka/nodes/ClassNodes.py +286 -0
- nuitka/nodes/CodeObjectSpecs.py +230 -0
- nuitka/nodes/ComparisonNodes.py +687 -0
- nuitka/nodes/ConditionalNodes.py +884 -0
- nuitka/nodes/ConstantRefNodes.py +1717 -0
- nuitka/nodes/ContainerMakingNodes.py +408 -0
- nuitka/nodes/ContainerOperationNodes.py +87 -0
- nuitka/nodes/CoroutineNodes.py +144 -0
- nuitka/nodes/CtypesNodes.py +51 -0
- nuitka/nodes/DictionaryNodes.py +1513 -0
- nuitka/nodes/ExceptionNodes.py +393 -0
- nuitka/nodes/ExecEvalNodes.py +229 -0
- nuitka/nodes/ExpressionBases.py +1301 -0
- nuitka/nodes/ExpressionBasesGenerated.py +2103 -0
- nuitka/nodes/ExpressionShapeMixins.py +886 -0
- nuitka/nodes/FrameNodes.py +413 -0
- nuitka/nodes/FunctionAttributeNodes.py +102 -0
- nuitka/nodes/FunctionNodes.py +1303 -0
- nuitka/nodes/FutureSpecs.py +224 -0
- nuitka/nodes/GeneratorNodes.py +201 -0
- nuitka/nodes/GlobalsLocalsNodes.py +209 -0
- nuitka/nodes/HardImportNodesGenerated.py +3599 -0
- nuitka/nodes/ImportHardNodes.py +185 -0
- nuitka/nodes/ImportNodes.py +1366 -0
- nuitka/nodes/IndicatorMixins.py +79 -0
- nuitka/nodes/InjectCNodes.py +51 -0
- nuitka/nodes/IterationHandles.py +407 -0
- nuitka/nodes/KeyValuePairNodes.py +378 -0
- nuitka/nodes/ListOperationNodes.py +525 -0
- nuitka/nodes/LocalsDictNodes.py +717 -0
- nuitka/nodes/LocalsScopes.py +505 -0
- nuitka/nodes/LoopNodes.py +445 -0
- nuitka/nodes/MatchNodes.py +60 -0
- nuitka/nodes/ModuleAttributeNodes.py +180 -0
- nuitka/nodes/ModuleNodes.py +1137 -0
- nuitka/nodes/NetworkxNodes.py +45 -0
- nuitka/nodes/NodeBases.py +890 -0
- nuitka/nodes/NodeMakingHelpers.py +481 -0
- nuitka/nodes/NodeMetaClasses.py +172 -0
- nuitka/nodes/OperatorNodes.py +944 -0
- nuitka/nodes/OperatorNodesUnary.py +403 -0
- nuitka/nodes/OsSysNodes.py +215 -0
- nuitka/nodes/OutlineNodes.py +372 -0
- nuitka/nodes/PackageMetadataNodes.py +982 -0
- nuitka/nodes/PackageResourceNodes.py +424 -0
- nuitka/nodes/PrintNodes.py +105 -0
- nuitka/nodes/ReturnNodes.py +255 -0
- nuitka/nodes/SideEffectNodes.py +139 -0
- nuitka/nodes/SliceNodes.py +386 -0
- nuitka/nodes/StatementBasesGenerated.py +3419 -0
- nuitka/nodes/StatementNodes.py +316 -0
- nuitka/nodes/StrNodes.py +919 -0
- nuitka/nodes/StringConcatenationNodes.py +103 -0
- nuitka/nodes/SubscriptNodes.py +245 -0
- nuitka/nodes/TensorflowNodes.py +38 -0
- nuitka/nodes/TryNodes.py +519 -0
- nuitka/nodes/TypeMatchNodes.py +65 -0
- nuitka/nodes/TypeNodes.py +390 -0
- nuitka/nodes/VariableAssignNodes.py +1177 -0
- nuitka/nodes/VariableDelNodes.py +320 -0
- nuitka/nodes/VariableNameNodes.py +153 -0
- nuitka/nodes/VariableRefNodes.py +895 -0
- nuitka/nodes/VariableReleaseNodes.py +153 -0
- nuitka/nodes/YieldNodes.py +121 -0
- nuitka/nodes/__init__.py +19 -0
- nuitka/nodes/shapes/BuiltinTypeShapes.py +4290 -0
- nuitka/nodes/shapes/ControlFlowDescriptions.py +199 -0
- nuitka/nodes/shapes/IteratorShapes.py +71 -0
- nuitka/nodes/shapes/ShapeMixins.py +255 -0
- nuitka/nodes/shapes/StandardShapes.py +1384 -0
- nuitka/nodes/shapes/__init__.py +19 -0
- nuitka/optimizations/BytecodeDemotion.py +105 -0
- nuitka/optimizations/FunctionInlining.py +110 -0
- nuitka/optimizations/Graphs.py +70 -0
- nuitka/optimizations/Optimization.py +363 -0
- nuitka/optimizations/OptimizeBuiltinCalls.py +1582 -0
- nuitka/optimizations/Tags.py +76 -0
- nuitka/optimizations/TraceCollections.py +1257 -0
- nuitka/optimizations/ValueTraces.py +980 -0
- nuitka/optimizations/__init__.py +19 -0
- nuitka/pgo/PGO.py +160 -0
- nuitka/pgo/__init__.py +19 -0
- nuitka/plugins/PluginBase.py +1924 -0
- nuitka/plugins/Plugins.py +2007 -0
- nuitka/plugins/YamlPluginBase.py +121 -0
- nuitka/plugins/__init__.py +19 -0
- nuitka/plugins/standard/AntiBloatPlugin.py +1024 -0
- nuitka/plugins/standard/ConsiderPyLintAnnotationsPlugin.py +95 -0
- nuitka/plugins/standard/DataFilesPlugin.py +311 -0
- nuitka/plugins/standard/DelvewheelPlugin.py +150 -0
- nuitka/plugins/standard/DillPlugin/DillPlugin.c +37 -0
- nuitka/plugins/standard/DillPlugin/cloudpickle-postLoad.py +67 -0
- nuitka/plugins/standard/DillPlugin/dill-postLoad.py +223 -0
- nuitka/plugins/standard/DillPlugin.py +137 -0
- nuitka/plugins/standard/DllFilesPlugin.py +527 -0
- nuitka/plugins/standard/EnumPlugin.py +64 -0
- nuitka/plugins/standard/EventletPlugin.py +57 -0
- nuitka/plugins/standard/GeventPlugin.py +64 -0
- nuitka/plugins/standard/GiPlugin.py +118 -0
- nuitka/plugins/standard/GlfwPlugin.py +138 -0
- nuitka/plugins/standard/ImplicitImports.py +845 -0
- nuitka/plugins/standard/KivyPlugin.py +141 -0
- nuitka/plugins/standard/MatplotlibPlugin.py +256 -0
- nuitka/plugins/standard/MultiprocessingPlugin.py +199 -0
- nuitka/plugins/standard/NumpyPlugin.py +35 -0
- nuitka/plugins/standard/OptionsNannyPlugin.py +158 -0
- nuitka/plugins/standard/PbrPlugin.py +62 -0
- nuitka/plugins/standard/PkgResourcesPlugin.py +162 -0
- nuitka/plugins/standard/PlaywrightPlugin.py +179 -0
- nuitka/plugins/standard/PmwPlugin.py +248 -0
- nuitka/plugins/standard/PySidePyQtPlugin.py +1666 -0
- nuitka/plugins/standard/PywebViewPlugin.py +81 -0
- nuitka/plugins/standard/SpacyPlugin.py +137 -0
- nuitka/plugins/standard/TensorflowPlugin.py +35 -0
- nuitka/plugins/standard/TkinterPlugin.py +416 -0
- nuitka/plugins/standard/TorchPlugin.py +35 -0
- nuitka/plugins/standard/TransformersPlugin.py +121 -0
- nuitka/plugins/standard/TrioPlugin.py +33 -0
- nuitka/plugins/standard/UpxPlugin.py +174 -0
- nuitka/plugins/standard/__init__.py +19 -0
- nuitka/plugins/standard/standard.nuitka-package.config.yml +9313 -0
- nuitka/plugins/standard/stdlib2.nuitka-package.config.yml +78 -0
- nuitka/plugins/standard/stdlib3.nuitka-package.config.yml +468 -0
- nuitka/reports/CompilationReportReader.py +83 -0
- nuitka/reports/LicenseReport.rst.j2 +41 -0
- nuitka/reports/Reports.py +961 -0
- nuitka/reports/__init__.py +19 -0
- nuitka/specs/BuiltinBytesOperationSpecs.py +180 -0
- nuitka/specs/BuiltinDictOperationSpecs.py +82 -0
- nuitka/specs/BuiltinListOperationSpecs.py +80 -0
- nuitka/specs/BuiltinParameterSpecs.py +831 -0
- nuitka/specs/BuiltinStrOperationSpecs.py +181 -0
- nuitka/specs/BuiltinTypeOperationSpecs.py +34 -0
- nuitka/specs/BuiltinUnicodeOperationSpecs.py +123 -0
- nuitka/specs/HardImportSpecs.py +236 -0
- nuitka/specs/ParameterSpecs.py +630 -0
- nuitka/specs/__init__.py +19 -0
- nuitka/tools/Basics.py +55 -0
- nuitka/tools/__init__.py +19 -0
- nuitka/tools/commercial/__init__.py +21 -0
- nuitka/tools/data_composer/DataComposer.py +593 -0
- nuitka/tools/data_composer/__init__.py +19 -0
- nuitka/tools/data_composer/__main__.py +41 -0
- nuitka/tools/environments/CreateEnvironment.py +69 -0
- nuitka/tools/environments/Virtualenv.py +158 -0
- nuitka/tools/environments/__init__.py +19 -0
- nuitka/tools/general/__init__.py +19 -0
- nuitka/tools/general/dll_report/__init__.py +19 -0
- nuitka/tools/general/dll_report/__main__.py +83 -0
- nuitka/tools/general/find_module/FindModuleCode.py +127 -0
- nuitka/tools/general/find_module/__init__.py +19 -0
- nuitka/tools/general/generate_header/GenerateHeader.py +73 -0
- nuitka/tools/general/generate_header/__init__.py +19 -0
- nuitka/tools/onefile_compressor/OnefileCompressor.py +390 -0
- nuitka/tools/onefile_compressor/__init__.py +19 -0
- nuitka/tools/onefile_compressor/__main__.py +41 -0
- nuitka/tools/podman/Podman.py +55 -0
- nuitka/tools/podman/__init__.py +19 -0
- nuitka/tools/podman/__main__.py +425 -0
- nuitka/tools/profiler/__init__.py +19 -0
- nuitka/tools/profiler/__main__.py +93 -0
- nuitka/tools/scanning/DisplayDistributions.py +39 -0
- nuitka/tools/scanning/DisplayPackageDLLs.py +151 -0
- nuitka/tools/scanning/DisplayPackageData.py +73 -0
- nuitka/tools/scanning/__init__.py +19 -0
- nuitka/tools/specialize/CTypeDescriptions.py +1928 -0
- nuitka/tools/specialize/Common.py +380 -0
- nuitka/tools/specialize/SpecializeC.py +1483 -0
- nuitka/tools/specialize/SpecializePython.py +1151 -0
- nuitka/tools/specialize/__init__.py +19 -0
- nuitka/tools/testing/Common.py +2007 -0
- nuitka/tools/testing/Constructs.py +53 -0
- nuitka/tools/testing/DocTests.py +156 -0
- nuitka/tools/testing/OutputComparison.py +313 -0
- nuitka/tools/testing/Pythons.py +34 -0
- nuitka/tools/testing/RuntimeTracing.py +260 -0
- nuitka/tools/testing/SearchModes.py +208 -0
- nuitka/tools/testing/Valgrind.py +103 -0
- nuitka/tools/testing/__init__.py +19 -0
- nuitka/tools/testing/check_reference_counts/__init__.py +19 -0
- nuitka/tools/testing/check_reference_counts/__main__.py +107 -0
- nuitka/tools/testing/compare_with_cpython/__init__.py +19 -0
- nuitka/tools/testing/compare_with_cpython/__main__.py +942 -0
- nuitka/tools/testing/find_sxs_modules/__init__.py +19 -0
- nuitka/tools/testing/find_sxs_modules/__main__.py +73 -0
- nuitka/tools/testing/measure_construct_performance/__init__.py +19 -0
- nuitka/tools/testing/measure_construct_performance/__main__.py +288 -0
- nuitka/tools/testing/run_nuitka_tests/__init__.py +19 -0
- nuitka/tools/testing/run_nuitka_tests/__main__.py +1091 -0
- nuitka/tools/watch/AutoStage.py +145 -0
- nuitka/tools/watch/Common.py +55 -0
- nuitka/tools/watch/Conda.py +125 -0
- nuitka/tools/watch/GitHub.py +113 -0
- nuitka/tools/watch/Pacman.py +73 -0
- nuitka/tools/watch/Pipenv.py +145 -0
- nuitka/tools/watch/__init__.py +19 -0
- nuitka/tools/watch/__main__.py +615 -0
- nuitka/tree/Building.py +1459 -0
- nuitka/tree/ComplexCallHelperFunctions.py +2150 -0
- nuitka/tree/Extractions.py +48 -0
- nuitka/tree/FutureSpecState.py +71 -0
- nuitka/tree/InternalModule.py +96 -0
- nuitka/tree/Operations.py +45 -0
- nuitka/tree/ReformulationAssertStatements.py +97 -0
- nuitka/tree/ReformulationAssignmentStatements.py +1260 -0
- nuitka/tree/ReformulationBooleanExpressions.py +97 -0
- nuitka/tree/ReformulationCallExpressions.py +314 -0
- nuitka/tree/ReformulationClasses.py +407 -0
- nuitka/tree/ReformulationClasses3.py +1149 -0
- nuitka/tree/ReformulationComparisonExpressions.py +174 -0
- nuitka/tree/ReformulationContractionExpressions.py +676 -0
- nuitka/tree/ReformulationDictionaryCreation.py +304 -0
- nuitka/tree/ReformulationExecStatements.py +386 -0
- nuitka/tree/ReformulationForLoopStatements.py +215 -0
- nuitka/tree/ReformulationFunctionStatements.py +931 -0
- nuitka/tree/ReformulationImportStatements.py +333 -0
- nuitka/tree/ReformulationLambdaExpressions.py +185 -0
- nuitka/tree/ReformulationMatchStatements.py +797 -0
- nuitka/tree/ReformulationMultidist.py +80 -0
- nuitka/tree/ReformulationNamespacePackages.py +239 -0
- nuitka/tree/ReformulationPrintStatements.py +127 -0
- nuitka/tree/ReformulationSequenceCreation.py +438 -0
- nuitka/tree/ReformulationSubscriptExpressions.py +123 -0
- nuitka/tree/ReformulationTryExceptStatements.py +418 -0
- nuitka/tree/ReformulationTryFinallyStatements.py +239 -0
- nuitka/tree/ReformulationWhileLoopStatements.py +160 -0
- nuitka/tree/ReformulationWithStatements.py +382 -0
- nuitka/tree/ReformulationYieldExpressions.py +133 -0
- nuitka/tree/SourceHandling.py +476 -0
- nuitka/tree/SyntaxErrors.py +143 -0
- nuitka/tree/TreeHelpers.py +720 -0
- nuitka/tree/VariableClosure.py +483 -0
- nuitka/tree/__init__.py +19 -0
- nuitka/utils/AppDirs.py +104 -0
- nuitka/utils/CStrings.py +208 -0
- nuitka/utils/CommandLineOptions.py +207 -0
- nuitka/utils/Distributions.py +728 -0
- nuitka/utils/Download.py +217 -0
- nuitka/utils/Execution.py +517 -0
- nuitka/utils/FileOperations.py +1587 -0
- nuitka/utils/Hashing.py +137 -0
- nuitka/utils/Images.py +79 -0
- nuitka/utils/Importing.py +335 -0
- nuitka/utils/InlineCopies.py +52 -0
- nuitka/utils/InstalledPythons.py +254 -0
- nuitka/utils/InstanceCounters.py +86 -0
- nuitka/utils/Jinja2.py +158 -0
- nuitka/utils/Json.py +40 -0
- nuitka/utils/MacOSApp.py +134 -0
- nuitka/utils/MemoryUsage.py +165 -0
- nuitka/utils/ModuleNames.py +317 -0
- nuitka/utils/PackageResources.py +44 -0
- nuitka/utils/ReExecute.py +152 -0
- nuitka/utils/Rest.py +60 -0
- nuitka/utils/SharedLibraries.py +1014 -0
- nuitka/utils/Shebang.py +113 -0
- nuitka/utils/Signing.py +144 -0
- nuitka/utils/SlotMetaClasses.py +57 -0
- nuitka/utils/StaticLibraries.py +260 -0
- nuitka/utils/ThreadedExecutor.py +87 -0
- nuitka/utils/Timing.py +102 -0
- nuitka/utils/Utils.py +483 -0
- nuitka/utils/WindowsFileUsage.py +337 -0
- nuitka/utils/WindowsResources.py +652 -0
- nuitka/utils/Yaml.py +247 -0
- nuitka/utils/__init__.py +19 -0
- nuitka_winsvc-2.7.7.data/scripts/nuitka-run.cmd +24 -0
- nuitka_winsvc-2.7.7.data/scripts/nuitka.cmd +30 -0
- nuitka_winsvc-2.7.7.dist-info/METADATA +115 -0
- nuitka_winsvc-2.7.7.dist-info/RECORD +995 -0
- nuitka_winsvc-2.7.7.dist-info/WHEEL +5 -0
- nuitka_winsvc-2.7.7.dist-info/entry_points.txt +7 -0
- nuitka_winsvc-2.7.7.dist-info/licenses/LICENSE.txt +202 -0
- nuitka_winsvc-2.7.7.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,1014 @@
|
|
|
1
|
+
# Copyright 2025, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
""" This module deals with finding and information about shared libraries.
|
|
5
|
+
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import os
|
|
9
|
+
import re
|
|
10
|
+
import sys
|
|
11
|
+
|
|
12
|
+
from nuitka.__past__ import WindowsError # pylint: disable=I0021,redefined-builtin
|
|
13
|
+
from nuitka.__past__ import unicode
|
|
14
|
+
from nuitka.containers.OrderedDicts import OrderedDict
|
|
15
|
+
from nuitka.containers.OrderedSets import OrderedSet
|
|
16
|
+
from nuitka.Options import getMacOSTargetArch, isShowInclusion, isUnstripped
|
|
17
|
+
from nuitka.PythonVersions import python_version
|
|
18
|
+
from nuitka.Tracing import inclusion_logger, postprocessing_logger
|
|
19
|
+
|
|
20
|
+
from .Execution import executeToolChecked, withEnvironmentPathAdded
|
|
21
|
+
from .FileOperations import (
|
|
22
|
+
addFileExecutablePermission,
|
|
23
|
+
changeFilenameExtension,
|
|
24
|
+
copyFile,
|
|
25
|
+
getFileList,
|
|
26
|
+
makeContainingPath,
|
|
27
|
+
withMadeWritableFileMode,
|
|
28
|
+
)
|
|
29
|
+
from .Importing import importFromInlineCopy
|
|
30
|
+
from .Utils import (
|
|
31
|
+
isAlpineLinux,
|
|
32
|
+
isBSD,
|
|
33
|
+
isLinux,
|
|
34
|
+
isMacOS,
|
|
35
|
+
isWin32Windows,
|
|
36
|
+
raiseWindowsError,
|
|
37
|
+
)
|
|
38
|
+
from .WindowsResources import (
|
|
39
|
+
RT_MANIFEST,
|
|
40
|
+
VsFixedFileInfoStructure,
|
|
41
|
+
deleteWindowsResources,
|
|
42
|
+
getResourcesFromDLL,
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def locateDLLFromFilesystem(name, paths):
|
|
47
|
+
for path in paths:
|
|
48
|
+
for root, _dirs, files in os.walk(path):
|
|
49
|
+
if name in files:
|
|
50
|
+
return os.path.join(root, name)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
_ldconfig_usage = "The 'ldconfig' is used to analyze dependencies on ELF using systems and required to be found."
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def locateDLL(dll_name):
|
|
57
|
+
# This function is a case driven by returns, pylint: disable=too-many-return-statements
|
|
58
|
+
import ctypes.util
|
|
59
|
+
|
|
60
|
+
dll_name = ctypes.util.find_library(dll_name)
|
|
61
|
+
|
|
62
|
+
if dll_name is None:
|
|
63
|
+
return None
|
|
64
|
+
|
|
65
|
+
# This happens on macOS.
|
|
66
|
+
if isMacOS() and not os.path.exists(dll_name):
|
|
67
|
+
return None
|
|
68
|
+
|
|
69
|
+
if isWin32Windows() or isMacOS():
|
|
70
|
+
return os.path.abspath(dll_name)
|
|
71
|
+
|
|
72
|
+
if os.path.sep in dll_name:
|
|
73
|
+
# Use this from ctypes instead of rolling our own.
|
|
74
|
+
# pylint: disable=protected-access
|
|
75
|
+
|
|
76
|
+
so_name = ctypes.util._get_soname(dll_name)
|
|
77
|
+
|
|
78
|
+
if so_name is not None:
|
|
79
|
+
return os.path.join(os.path.dirname(dll_name), so_name)
|
|
80
|
+
else:
|
|
81
|
+
return dll_name
|
|
82
|
+
|
|
83
|
+
if isAlpineLinux():
|
|
84
|
+
return locateDLLFromFilesystem(
|
|
85
|
+
name=dll_name, paths=["/lib", "/usr/lib", "/usr/local/lib"]
|
|
86
|
+
)
|
|
87
|
+
|
|
88
|
+
# TODO: Could and probably should cache "ldconfig -p" output to avoid forks
|
|
89
|
+
output = executeToolChecked(
|
|
90
|
+
logger=postprocessing_logger,
|
|
91
|
+
command=("/sbin/ldconfig", "-p"),
|
|
92
|
+
absence_message=_ldconfig_usage,
|
|
93
|
+
)
|
|
94
|
+
|
|
95
|
+
dll_map = {}
|
|
96
|
+
|
|
97
|
+
for line in output.splitlines()[1:]:
|
|
98
|
+
if line.startswith(b"Cache generated by:"):
|
|
99
|
+
continue
|
|
100
|
+
|
|
101
|
+
assert line.count(b"=>") == 1, line
|
|
102
|
+
left, right = line.strip().split(b" => ")
|
|
103
|
+
assert b" (" in left, line
|
|
104
|
+
left = left[: left.rfind(b" (")]
|
|
105
|
+
|
|
106
|
+
if python_version >= 0x300:
|
|
107
|
+
# spell-checker: ignore getfilesystemencoding
|
|
108
|
+
|
|
109
|
+
left = left.decode(sys.getfilesystemencoding())
|
|
110
|
+
right = right.decode(sys.getfilesystemencoding())
|
|
111
|
+
|
|
112
|
+
if left not in dll_map:
|
|
113
|
+
dll_map[left] = right
|
|
114
|
+
|
|
115
|
+
return dll_map[dll_name]
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
def getSxsFromDLL(filename, with_data=False):
|
|
119
|
+
"""List the SxS manifests of a Windows DLL.
|
|
120
|
+
|
|
121
|
+
Args:
|
|
122
|
+
filename: Filename of DLL to investigate
|
|
123
|
+
|
|
124
|
+
Returns:
|
|
125
|
+
List of resource names that are manifests.
|
|
126
|
+
|
|
127
|
+
"""
|
|
128
|
+
|
|
129
|
+
return getResourcesFromDLL(
|
|
130
|
+
filename=filename, resource_kinds=(RT_MANIFEST,), with_data=with_data
|
|
131
|
+
)
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
def _removeSxsFromDLL(filename):
|
|
135
|
+
"""Remove the Windows DLL SxS manifest.
|
|
136
|
+
|
|
137
|
+
Args:
|
|
138
|
+
filename: Filename to remove SxS manifests from
|
|
139
|
+
"""
|
|
140
|
+
# There may be more files that need this treatment, these are from scans
|
|
141
|
+
# with the "find_sxs_modules" tool. spell-checker: ignore winxpgui
|
|
142
|
+
if os.path.normcase(os.path.basename(filename)) not in (
|
|
143
|
+
"sip.pyd",
|
|
144
|
+
"win32ui.pyd",
|
|
145
|
+
"winxpgui.pyd",
|
|
146
|
+
):
|
|
147
|
+
return
|
|
148
|
+
|
|
149
|
+
res_names = getSxsFromDLL(filename)
|
|
150
|
+
|
|
151
|
+
if res_names:
|
|
152
|
+
deleteWindowsResources(filename, RT_MANIFEST, res_names)
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
def _getDLLVersionWindows(filename):
|
|
156
|
+
"""Return DLL version information from a file.
|
|
157
|
+
|
|
158
|
+
If not present, it will be (0, 0, 0, 0), otherwise it will be
|
|
159
|
+
a tuple of 4 numbers.
|
|
160
|
+
"""
|
|
161
|
+
# Get size needed for buffer (0 if no info)
|
|
162
|
+
import ctypes.wintypes
|
|
163
|
+
|
|
164
|
+
if type(filename) is unicode:
|
|
165
|
+
GetFileVersionInfoSizeW = ctypes.windll.version.GetFileVersionInfoSizeW
|
|
166
|
+
GetFileVersionInfoSizeW.argtypes = (
|
|
167
|
+
ctypes.wintypes.LPCWSTR,
|
|
168
|
+
ctypes.wintypes.LPDWORD,
|
|
169
|
+
)
|
|
170
|
+
GetFileVersionInfoSizeW.restype = ctypes.wintypes.HANDLE
|
|
171
|
+
size = GetFileVersionInfoSizeW(filename, None)
|
|
172
|
+
else:
|
|
173
|
+
size = ctypes.windll.version.GetFileVersionInfoSizeA(filename, None)
|
|
174
|
+
|
|
175
|
+
if not size:
|
|
176
|
+
return (0, 0, 0, 0)
|
|
177
|
+
|
|
178
|
+
# Create buffer
|
|
179
|
+
res = ctypes.create_string_buffer(size)
|
|
180
|
+
# Load file information into buffer res
|
|
181
|
+
|
|
182
|
+
if type(filename) is unicode:
|
|
183
|
+
# Python3 needs our help here.
|
|
184
|
+
GetFileVersionInfo = ctypes.windll.version.GetFileVersionInfoW
|
|
185
|
+
GetFileVersionInfo.argtypes = (
|
|
186
|
+
ctypes.wintypes.LPCWSTR,
|
|
187
|
+
ctypes.wintypes.DWORD,
|
|
188
|
+
ctypes.wintypes.DWORD,
|
|
189
|
+
ctypes.wintypes.LPVOID,
|
|
190
|
+
)
|
|
191
|
+
GetFileVersionInfo.restype = ctypes.wintypes.BOOL
|
|
192
|
+
|
|
193
|
+
else:
|
|
194
|
+
# Python2 just works.
|
|
195
|
+
GetFileVersionInfo = ctypes.windll.version.GetFileVersionInfoA
|
|
196
|
+
|
|
197
|
+
success = GetFileVersionInfo(filename, 0, size, res)
|
|
198
|
+
# This cannot really fail anymore.
|
|
199
|
+
assert success
|
|
200
|
+
|
|
201
|
+
# Look for code pages
|
|
202
|
+
VerQueryValueA = ctypes.windll.version.VerQueryValueA
|
|
203
|
+
VerQueryValueA.argtypes = (
|
|
204
|
+
ctypes.wintypes.LPCVOID,
|
|
205
|
+
ctypes.wintypes.LPCSTR,
|
|
206
|
+
ctypes.wintypes.LPVOID,
|
|
207
|
+
ctypes.POINTER(ctypes.c_uint32),
|
|
208
|
+
)
|
|
209
|
+
VerQueryValueA.restype = ctypes.wintypes.BOOL
|
|
210
|
+
|
|
211
|
+
file_info = ctypes.POINTER(VsFixedFileInfoStructure)()
|
|
212
|
+
uLen = ctypes.c_uint32(ctypes.sizeof(file_info))
|
|
213
|
+
|
|
214
|
+
b = VerQueryValueA(res, b"\\\\", ctypes.byref(file_info), ctypes.byref(uLen))
|
|
215
|
+
if not b:
|
|
216
|
+
return (0, 0, 0, 0)
|
|
217
|
+
|
|
218
|
+
if file_info.contents.dwSignature != 0xFEEF04BD:
|
|
219
|
+
return (0, 0, 0, 0)
|
|
220
|
+
|
|
221
|
+
ms = file_info.contents.dwFileVersionMS
|
|
222
|
+
ls = file_info.contents.dwFileVersionLS
|
|
223
|
+
|
|
224
|
+
return (ms >> 16) & 0xFFFF, ms & 0xFFFF, (ls >> 16) & 0xFFFF, ls & 0xFFFF
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
# spell-checker: ignore readelf
|
|
228
|
+
_readelf_usage = "The 'readelf' is used to analyse dependencies on ELF using systems and required to be found."
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
def _getSharedLibraryRPATHsElf(filename):
|
|
232
|
+
rpaths = []
|
|
233
|
+
output = executeToolChecked(
|
|
234
|
+
logger=postprocessing_logger,
|
|
235
|
+
command=("readelf", "-d", filename),
|
|
236
|
+
absence_message=_readelf_usage,
|
|
237
|
+
)
|
|
238
|
+
|
|
239
|
+
for line in output.split(b"\n"):
|
|
240
|
+
# spell-checker: ignore RUNPATH
|
|
241
|
+
if b"RPATH" in line or b"RUNPATH" in line:
|
|
242
|
+
result = line[line.find(b"[") + 1 : line.rfind(b"]")]
|
|
243
|
+
|
|
244
|
+
if str is not bytes:
|
|
245
|
+
result = result.decode("utf8")
|
|
246
|
+
|
|
247
|
+
rpaths.append(result)
|
|
248
|
+
elif b"NEEDED" in line:
|
|
249
|
+
# If the Python binary has a library dependency like
|
|
250
|
+
# $ORIGIN/../lib/libpython.so, then treat it like it has an rpath of
|
|
251
|
+
# $ORIGIN/../lib. This is needed for python-build-standalone (used
|
|
252
|
+
# by UV-Python).
|
|
253
|
+
result = line[line.find(b"[") + 1 : line.rfind(b"]")]
|
|
254
|
+
|
|
255
|
+
if str is not bytes:
|
|
256
|
+
result = result.decode("utf8")
|
|
257
|
+
|
|
258
|
+
path_part = os.path.dirname(result)
|
|
259
|
+
if path_part:
|
|
260
|
+
rpaths.append(path_part)
|
|
261
|
+
|
|
262
|
+
return rpaths
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
_otool_output_cache = {}
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
def _getMacOSArchOption():
|
|
269
|
+
macos_target_arch = getMacOSTargetArch()
|
|
270
|
+
|
|
271
|
+
if macos_target_arch != "universal":
|
|
272
|
+
return ("-arch", macos_target_arch)
|
|
273
|
+
else:
|
|
274
|
+
return ()
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
# TODO: Use this for more output filters.
|
|
278
|
+
def _filterOutputByLine(output, filter_func):
|
|
279
|
+
non_errors = []
|
|
280
|
+
|
|
281
|
+
for line in output.splitlines():
|
|
282
|
+
if line and not filter_func(line):
|
|
283
|
+
non_errors.append(line)
|
|
284
|
+
|
|
285
|
+
output = b"\n".join(non_errors)
|
|
286
|
+
|
|
287
|
+
return (0 if non_errors else None), output
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
def _filterOtoolErrorOutput(stderr):
|
|
291
|
+
def isNonErrorExit(line):
|
|
292
|
+
if b"missing from root that overrides" in line:
|
|
293
|
+
return True
|
|
294
|
+
|
|
295
|
+
return False
|
|
296
|
+
|
|
297
|
+
return _filterOutputByLine(stderr, isNonErrorExit)
|
|
298
|
+
|
|
299
|
+
|
|
300
|
+
def _getOToolCommandOutput(otool_option, filename, cached):
|
|
301
|
+
filename = os.path.abspath(filename)
|
|
302
|
+
|
|
303
|
+
command = ("otool",) + _getMacOSArchOption() + (otool_option, filename)
|
|
304
|
+
|
|
305
|
+
if otool_option == "-L":
|
|
306
|
+
cache_key = command, os.getenv("DYLD_LIBRARY_PATH")
|
|
307
|
+
else:
|
|
308
|
+
cache_key = command
|
|
309
|
+
|
|
310
|
+
if not cached or cache_key not in _otool_output_cache:
|
|
311
|
+
_otool_output_cache[cache_key] = executeToolChecked(
|
|
312
|
+
logger=postprocessing_logger,
|
|
313
|
+
command=command,
|
|
314
|
+
stderr_filter=_filterOtoolErrorOutput,
|
|
315
|
+
absence_message="The 'otool' is used to analyze dependencies on macOS and required to be found.",
|
|
316
|
+
)
|
|
317
|
+
|
|
318
|
+
return _otool_output_cache[cache_key]
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
def getOtoolListing(filename, cached):
|
|
322
|
+
return _getOToolCommandOutput("-l", filename, cached=cached)
|
|
323
|
+
|
|
324
|
+
|
|
325
|
+
def getOtoolDependencyOutput(filename, package_specific_dirs):
|
|
326
|
+
with withEnvironmentPathAdded("DYLD_LIBRARY_PATH", *package_specific_dirs):
|
|
327
|
+
return _getOToolCommandOutput("-L", filename, cached=True)
|
|
328
|
+
|
|
329
|
+
|
|
330
|
+
def parseOtoolListingOutput(output):
|
|
331
|
+
paths = OrderedSet()
|
|
332
|
+
|
|
333
|
+
for line in output.split(b"\n")[1:]:
|
|
334
|
+
if str is not bytes:
|
|
335
|
+
line = line.decode("utf8")
|
|
336
|
+
|
|
337
|
+
if not line:
|
|
338
|
+
continue
|
|
339
|
+
|
|
340
|
+
filename = line.split(" (", 1)[0].strip()
|
|
341
|
+
|
|
342
|
+
paths.add(filename)
|
|
343
|
+
|
|
344
|
+
return paths
|
|
345
|
+
|
|
346
|
+
|
|
347
|
+
def _getDLLVersionMacOS(filename):
|
|
348
|
+
output = _getOToolCommandOutput("-D", filename, cached=True).splitlines()
|
|
349
|
+
|
|
350
|
+
if len(output) < 2:
|
|
351
|
+
return None
|
|
352
|
+
|
|
353
|
+
dll_id = output[1].strip()
|
|
354
|
+
|
|
355
|
+
if str is not bytes:
|
|
356
|
+
dll_id = dll_id.decode("utf8")
|
|
357
|
+
|
|
358
|
+
output = _getOToolCommandOutput("-L", filename, cached=True).splitlines()
|
|
359
|
+
for line in output:
|
|
360
|
+
if str is not bytes:
|
|
361
|
+
line = line.decode("utf8")
|
|
362
|
+
|
|
363
|
+
if dll_id in line and "version" in line:
|
|
364
|
+
version_string = re.search(r"current version (.*)\)", line).group(1)
|
|
365
|
+
return tuple(int(x) for x in version_string.split("."))
|
|
366
|
+
|
|
367
|
+
return None
|
|
368
|
+
|
|
369
|
+
|
|
370
|
+
def _getSharedLibraryRPATHsDarwin(filename, cached):
|
|
371
|
+
rpaths = []
|
|
372
|
+
output = getOtoolListing(filename, cached=cached)
|
|
373
|
+
|
|
374
|
+
cmd = b""
|
|
375
|
+
last_was_load_command = False
|
|
376
|
+
|
|
377
|
+
for line in output.split(b"\n"):
|
|
378
|
+
line = line.strip()
|
|
379
|
+
|
|
380
|
+
if cmd == b"LC_RPATH":
|
|
381
|
+
if line.startswith(b"path "):
|
|
382
|
+
result = line[5 : line.rfind(b"(") - 1]
|
|
383
|
+
|
|
384
|
+
if str is not bytes:
|
|
385
|
+
result = result.decode("utf8")
|
|
386
|
+
|
|
387
|
+
rpaths.append(result)
|
|
388
|
+
|
|
389
|
+
if last_was_load_command and line.startswith(b"cmd "):
|
|
390
|
+
cmd = line.split()[1]
|
|
391
|
+
|
|
392
|
+
last_was_load_command = line.startswith(b"Load command")
|
|
393
|
+
|
|
394
|
+
return rpaths
|
|
395
|
+
|
|
396
|
+
|
|
397
|
+
def getSharedLibraryRPATHs(filename, elements=False, cached=True):
|
|
398
|
+
if isMacOS():
|
|
399
|
+
return _getSharedLibraryRPATHsDarwin(filename=filename, cached=cached)
|
|
400
|
+
else:
|
|
401
|
+
result = _getSharedLibraryRPATHsElf(filename=filename)
|
|
402
|
+
|
|
403
|
+
if elements:
|
|
404
|
+
result = sum([r.split(":") for r in result], [])
|
|
405
|
+
|
|
406
|
+
return result
|
|
407
|
+
|
|
408
|
+
|
|
409
|
+
def _filterPatchelfErrorOutput(stderr):
|
|
410
|
+
non_errors = []
|
|
411
|
+
|
|
412
|
+
def isNonErrorExit(line):
|
|
413
|
+
if b"cannot find section '.dynamic'" in line:
|
|
414
|
+
non_errors.append(line)
|
|
415
|
+
|
|
416
|
+
return True
|
|
417
|
+
|
|
418
|
+
return False
|
|
419
|
+
|
|
420
|
+
stderr = b"\n".join(
|
|
421
|
+
line
|
|
422
|
+
for line in stderr.splitlines()
|
|
423
|
+
if line
|
|
424
|
+
if b"warning: working around" not in line
|
|
425
|
+
if not isNonErrorExit(line)
|
|
426
|
+
)
|
|
427
|
+
|
|
428
|
+
return (0 if non_errors else None), stderr
|
|
429
|
+
|
|
430
|
+
|
|
431
|
+
_patchelf_usage = """\
|
|
432
|
+
Error, needs 'patchelf' on your system, to modify 'RPATH' settings that \
|
|
433
|
+
need to be updated."""
|
|
434
|
+
|
|
435
|
+
|
|
436
|
+
def checkPatchElfPresenceAndUsability(logger):
|
|
437
|
+
"""Checks if patchelf is present and usable."""
|
|
438
|
+
|
|
439
|
+
output = executeToolChecked(
|
|
440
|
+
logger=logger,
|
|
441
|
+
command=("patchelf", "--version"),
|
|
442
|
+
absence_message="""\
|
|
443
|
+
Error, standalone mode on Linux requires 'patchelf' to be \
|
|
444
|
+
installed. Use 'apt/dnf/yum install patchelf' first.""",
|
|
445
|
+
)
|
|
446
|
+
|
|
447
|
+
if output.split() == b"0.18.0":
|
|
448
|
+
logger.sysexit(
|
|
449
|
+
"Error, patchelf version 0.18.0 is a known buggy release and cannot be used. Please upgrade or downgrade it."
|
|
450
|
+
)
|
|
451
|
+
|
|
452
|
+
|
|
453
|
+
def _setSharedLibraryRPATHElf(filename, rpath):
|
|
454
|
+
executeToolChecked(
|
|
455
|
+
logger=postprocessing_logger,
|
|
456
|
+
command=("patchelf", "--force-rpath", "--set-rpath", rpath, filename),
|
|
457
|
+
stderr_filter=_filterPatchelfErrorOutput,
|
|
458
|
+
absence_message=_patchelf_usage,
|
|
459
|
+
)
|
|
460
|
+
|
|
461
|
+
|
|
462
|
+
def _filterInstallNameToolErrorOutput(stderr):
|
|
463
|
+
stderr = b"\n".join(
|
|
464
|
+
line
|
|
465
|
+
for line in stderr.splitlines()
|
|
466
|
+
if line
|
|
467
|
+
if b"invalidate the code signature" not in line
|
|
468
|
+
if b"generating fake signature" not in line
|
|
469
|
+
)
|
|
470
|
+
|
|
471
|
+
return None, stderr
|
|
472
|
+
|
|
473
|
+
|
|
474
|
+
_install_name_tool_usage = "The 'install_name_tool' is used to make binaries portable on macOS and required to be found."
|
|
475
|
+
|
|
476
|
+
|
|
477
|
+
def _removeSharedLibraryRPATHDarwin(filename):
|
|
478
|
+
for rpath in getSharedLibraryRPATHs(filename):
|
|
479
|
+
executeToolChecked(
|
|
480
|
+
logger=postprocessing_logger,
|
|
481
|
+
command=("install_name_tool", "-delete_rpath", rpath, filename),
|
|
482
|
+
absence_message=_install_name_tool_usage,
|
|
483
|
+
stderr_filter=_filterInstallNameToolErrorOutput,
|
|
484
|
+
)
|
|
485
|
+
|
|
486
|
+
|
|
487
|
+
def _setSharedLibraryRPATHDarwin(filename, rpath):
|
|
488
|
+
_removeSharedLibraryRPATHDarwin(filename)
|
|
489
|
+
|
|
490
|
+
executeToolChecked(
|
|
491
|
+
logger=postprocessing_logger,
|
|
492
|
+
command=("install_name_tool", "-add_rpath", rpath, filename),
|
|
493
|
+
absence_message=_install_name_tool_usage,
|
|
494
|
+
stderr_filter=_filterInstallNameToolErrorOutput,
|
|
495
|
+
)
|
|
496
|
+
|
|
497
|
+
|
|
498
|
+
def setSharedLibraryRPATH(filename, rpath):
|
|
499
|
+
if isShowInclusion():
|
|
500
|
+
inclusion_logger.info(
|
|
501
|
+
"Setting 'RPATH' value '%s' for '%s'." % (rpath, filename)
|
|
502
|
+
)
|
|
503
|
+
|
|
504
|
+
with withMadeWritableFileMode(filename):
|
|
505
|
+
if isMacOS():
|
|
506
|
+
_setSharedLibraryRPATHDarwin(filename, rpath)
|
|
507
|
+
else:
|
|
508
|
+
_setSharedLibraryRPATHElf(filename, rpath)
|
|
509
|
+
|
|
510
|
+
updated_rpaths = getSharedLibraryRPATHs(filename, elements=False, cached=False)
|
|
511
|
+
expected_rpaths = [rpath]
|
|
512
|
+
|
|
513
|
+
if updated_rpaths != expected_rpaths and isStaticallyLinked(filename) is not True:
|
|
514
|
+
postprocessing_logger.sysexit(
|
|
515
|
+
"Error, failed to update rpath for '%s' (%r != %r). Please report the bug."
|
|
516
|
+
% (filename, updated_rpaths, expected_rpaths)
|
|
517
|
+
)
|
|
518
|
+
|
|
519
|
+
|
|
520
|
+
def callInstallNameTool(filename, mapping, id_path, rpath):
|
|
521
|
+
"""Update the macOS shared library information for a binary or shared library.
|
|
522
|
+
|
|
523
|
+
Adds the rpath path name `rpath` in the specified `filename` Mach-O
|
|
524
|
+
binary or shared library. If the Mach-O binary already contains the new
|
|
525
|
+
`rpath` path name, it is an error.
|
|
526
|
+
|
|
527
|
+
Args:
|
|
528
|
+
filename - The file to be modified.
|
|
529
|
+
mapping - old_path, new_path pairs of values that should be changed
|
|
530
|
+
id_path - Use this value for library id
|
|
531
|
+
rpath - Set this as an rpath if not None, delete if False
|
|
532
|
+
|
|
533
|
+
Returns:
|
|
534
|
+
None
|
|
535
|
+
|
|
536
|
+
Notes:
|
|
537
|
+
This is obviously macOS specific.
|
|
538
|
+
"""
|
|
539
|
+
command = ["install_name_tool"]
|
|
540
|
+
|
|
541
|
+
needs_call = False
|
|
542
|
+
for old_path, new_path in mapping:
|
|
543
|
+
if old_path != new_path:
|
|
544
|
+
command += ("-change", old_path, new_path)
|
|
545
|
+
needs_call = True
|
|
546
|
+
|
|
547
|
+
if rpath is not None:
|
|
548
|
+
command += ("-add_rpath", os.path.join(rpath, "."))
|
|
549
|
+
needs_call = True
|
|
550
|
+
|
|
551
|
+
if id_path is not None:
|
|
552
|
+
command += ("-id", id_path)
|
|
553
|
+
needs_call = True
|
|
554
|
+
|
|
555
|
+
command.append(filename)
|
|
556
|
+
|
|
557
|
+
if needs_call:
|
|
558
|
+
with withMadeWritableFileMode(filename):
|
|
559
|
+
executeToolChecked(
|
|
560
|
+
logger=postprocessing_logger,
|
|
561
|
+
command=command,
|
|
562
|
+
absence_message=_install_name_tool_usage,
|
|
563
|
+
stderr_filter=_filterInstallNameToolErrorOutput,
|
|
564
|
+
)
|
|
565
|
+
|
|
566
|
+
|
|
567
|
+
def getPyWin32Dir():
|
|
568
|
+
"""Find the pywin32 DLL directory
|
|
569
|
+
|
|
570
|
+
Args:
|
|
571
|
+
None
|
|
572
|
+
|
|
573
|
+
Returns:
|
|
574
|
+
path to the pywin32 DLL directory or None
|
|
575
|
+
|
|
576
|
+
Notes:
|
|
577
|
+
This is needed for standalone mode only.
|
|
578
|
+
"""
|
|
579
|
+
# spell-checker: ignore pywin32
|
|
580
|
+
|
|
581
|
+
for path_element in sys.path:
|
|
582
|
+
if not path_element:
|
|
583
|
+
continue
|
|
584
|
+
|
|
585
|
+
candidate = os.path.join(path_element, "pywin32_system32")
|
|
586
|
+
|
|
587
|
+
if os.path.isdir(candidate):
|
|
588
|
+
return candidate
|
|
589
|
+
|
|
590
|
+
|
|
591
|
+
def detectBinaryMinMacOS(binary_filename):
|
|
592
|
+
"""Detect the minimum required macOS version of a binary.
|
|
593
|
+
|
|
594
|
+
Args:
|
|
595
|
+
binary_filename - path of the binary to check
|
|
596
|
+
|
|
597
|
+
Returns:
|
|
598
|
+
str - minimum OS version that the binary will run on
|
|
599
|
+
|
|
600
|
+
"""
|
|
601
|
+
|
|
602
|
+
minos_version = None
|
|
603
|
+
|
|
604
|
+
# This is cached, so we don't have to care about that.
|
|
605
|
+
stdout = getOtoolListing(binary_filename, cached=True)
|
|
606
|
+
|
|
607
|
+
lines = stdout.split(b"\n")
|
|
608
|
+
|
|
609
|
+
for i, line in enumerate(lines):
|
|
610
|
+
# Form one, used by CPython builds.
|
|
611
|
+
if line.endswith(b"cmd LC_VERSION_MIN_MACOSX"):
|
|
612
|
+
line = lines[i + 2]
|
|
613
|
+
if str is not bytes:
|
|
614
|
+
line = line.decode("utf8")
|
|
615
|
+
|
|
616
|
+
minos_version = line.split("version ", 1)[1]
|
|
617
|
+
break
|
|
618
|
+
|
|
619
|
+
# Form two, used by Apple Python builds.
|
|
620
|
+
if line.strip().startswith(b"minos"):
|
|
621
|
+
if str is not bytes:
|
|
622
|
+
line = line.decode("utf8")
|
|
623
|
+
|
|
624
|
+
minos_version = line.split("minos ", 1)[1]
|
|
625
|
+
break
|
|
626
|
+
|
|
627
|
+
return minos_version
|
|
628
|
+
|
|
629
|
+
|
|
630
|
+
_re_dll_filename = re.compile(r"^.*(\.(?:dll|so(?:\..*)|dylib))$", re.IGNORECASE)
|
|
631
|
+
|
|
632
|
+
|
|
633
|
+
def locateDLLsInDirectory(directory):
|
|
634
|
+
"""Locate all DLLs in a folder
|
|
635
|
+
|
|
636
|
+
Returns:
|
|
637
|
+
list of (filename, filename_relative, dll_extension)
|
|
638
|
+
"""
|
|
639
|
+
|
|
640
|
+
# This needs to be done a bit more manually, because DLLs on Linux can have no
|
|
641
|
+
# defined suffix, cannot use e.g. only_suffixes for this.
|
|
642
|
+
result = []
|
|
643
|
+
|
|
644
|
+
for filename in getFileList(path=directory):
|
|
645
|
+
filename_relative = os.path.relpath(filename, start=directory)
|
|
646
|
+
|
|
647
|
+
# TODO: Might want to be OS specific on what to match.
|
|
648
|
+
match = _re_dll_filename.match(filename_relative)
|
|
649
|
+
|
|
650
|
+
if match:
|
|
651
|
+
result.append((filename, filename_relative, match.group(1)))
|
|
652
|
+
|
|
653
|
+
return result
|
|
654
|
+
|
|
655
|
+
|
|
656
|
+
_file_usage = "The 'file' tool is used to detect macOS file architectures."
|
|
657
|
+
|
|
658
|
+
_file_output_cache = {}
|
|
659
|
+
|
|
660
|
+
|
|
661
|
+
def _getFileCommandOutput(filename):
|
|
662
|
+
"""Cached file output."""
|
|
663
|
+
|
|
664
|
+
if filename not in _file_output_cache:
|
|
665
|
+
file_output = executeToolChecked(
|
|
666
|
+
logger=postprocessing_logger,
|
|
667
|
+
command=("file", filename),
|
|
668
|
+
absence_message=_file_usage,
|
|
669
|
+
decoding=str is not bytes,
|
|
670
|
+
)
|
|
671
|
+
|
|
672
|
+
assert file_output.startswith(filename + ":")
|
|
673
|
+
file_output = file_output[len(filename) + 1 :].splitlines()[0].strip()
|
|
674
|
+
|
|
675
|
+
_file_output_cache[filename] = file_output
|
|
676
|
+
|
|
677
|
+
return _file_output_cache[filename]
|
|
678
|
+
|
|
679
|
+
|
|
680
|
+
def isStaticallyLinked(filename):
|
|
681
|
+
if isLinux() or isBSD():
|
|
682
|
+
file_output = _getFileCommandOutput(filename)
|
|
683
|
+
|
|
684
|
+
return "statically linked" in file_output
|
|
685
|
+
|
|
686
|
+
if isMacOS():
|
|
687
|
+
# Telling statically linked as easy for macOS, but this will be good
|
|
688
|
+
# enough for some things.
|
|
689
|
+
if "dynamically linked" in file_output:
|
|
690
|
+
return False
|
|
691
|
+
|
|
692
|
+
# Don't know is currently an option too, this one will be hard to get right
|
|
693
|
+
# on all platforms.
|
|
694
|
+
return None
|
|
695
|
+
|
|
696
|
+
|
|
697
|
+
def hasUniversalOrMatchingMacOSArchitecture(filename):
|
|
698
|
+
assert isMacOS() and os.path.isfile(filename), filename
|
|
699
|
+
|
|
700
|
+
file_output = _getFileCommandOutput(filename)
|
|
701
|
+
|
|
702
|
+
return "universal" in file_output or getMacOSTargetArch() in file_output
|
|
703
|
+
|
|
704
|
+
|
|
705
|
+
# spell-checker: ignore lipo
|
|
706
|
+
|
|
707
|
+
_lipo_usage = (
|
|
708
|
+
"The 'lipo' tool from XCode is used to manage universal binaries on macOS platform."
|
|
709
|
+
)
|
|
710
|
+
|
|
711
|
+
|
|
712
|
+
def makeMacOSThinBinary(dest_path, original_path):
|
|
713
|
+
file_output = _getFileCommandOutput(dest_path)
|
|
714
|
+
|
|
715
|
+
macos_target_arch = getMacOSTargetArch()
|
|
716
|
+
|
|
717
|
+
if "universal" in file_output:
|
|
718
|
+
executeToolChecked(
|
|
719
|
+
logger=postprocessing_logger,
|
|
720
|
+
command=(
|
|
721
|
+
"lipo",
|
|
722
|
+
"-thin",
|
|
723
|
+
macos_target_arch,
|
|
724
|
+
dest_path,
|
|
725
|
+
"-o",
|
|
726
|
+
dest_path + ".tmp",
|
|
727
|
+
),
|
|
728
|
+
absence_message=_lipo_usage,
|
|
729
|
+
)
|
|
730
|
+
|
|
731
|
+
with withMadeWritableFileMode(dest_path):
|
|
732
|
+
os.unlink(dest_path)
|
|
733
|
+
os.rename(dest_path + ".tmp", dest_path)
|
|
734
|
+
elif macos_target_arch not in file_output:
|
|
735
|
+
postprocessing_logger.sysexit(
|
|
736
|
+
"Error, cannot use file '%s' (%s) to build arch '%s' result"
|
|
737
|
+
% (original_path, file_output, macos_target_arch)
|
|
738
|
+
)
|
|
739
|
+
|
|
740
|
+
|
|
741
|
+
def copyDllFile(source_path, dist_dir, dest_path, executable):
|
|
742
|
+
"""Copy an extension/DLL file making some adjustments on the way."""
|
|
743
|
+
|
|
744
|
+
target_filename = os.path.join(dist_dir, dest_path)
|
|
745
|
+
makeContainingPath(target_filename)
|
|
746
|
+
|
|
747
|
+
copyFile(source_path=source_path, dest_path=target_filename)
|
|
748
|
+
|
|
749
|
+
if isWin32Windows() and python_version < 0x300:
|
|
750
|
+
_removeSxsFromDLL(target_filename)
|
|
751
|
+
|
|
752
|
+
if isMacOS() and getMacOSTargetArch() != "universal":
|
|
753
|
+
makeMacOSThinBinary(dest_path=target_filename, original_path=source_path)
|
|
754
|
+
|
|
755
|
+
if isLinux():
|
|
756
|
+
# Path must be normalized for this to be correct, but entry points enforced that.
|
|
757
|
+
count = dest_path.count(os.path.sep)
|
|
758
|
+
|
|
759
|
+
# TODO: This ought to depend on actual presence of used DLLs with middle
|
|
760
|
+
# paths and not just do it, but maybe there is not much harm in it.
|
|
761
|
+
rpaths = OrderedSet(
|
|
762
|
+
os.path.join("$ORIGIN", *([".."] * c)) for c in range(count, -1, -1)
|
|
763
|
+
)
|
|
764
|
+
|
|
765
|
+
# Make sure, sub-folders use by the original DLL are actually still
|
|
766
|
+
# included.
|
|
767
|
+
#
|
|
768
|
+
# TODO: Actually it would be nice if these were trimmed to what actually
|
|
769
|
+
# exists and is used, but that's pretty complex and maybe not worth the
|
|
770
|
+
# effort. This would look like "fixupBinaryDLLPathsMacOS" somewhat, and
|
|
771
|
+
# actually this code is indeed kind of misplaced here.
|
|
772
|
+
rpaths.update(
|
|
773
|
+
rpath
|
|
774
|
+
for rpath in getSharedLibraryRPATHs(source_path, elements=True)
|
|
775
|
+
if rpath.startswith("$ORIGIN")
|
|
776
|
+
)
|
|
777
|
+
|
|
778
|
+
setSharedLibraryRPATH(target_filename, ":".join(rpaths))
|
|
779
|
+
|
|
780
|
+
if isWin32Windows() and isUnstripped():
|
|
781
|
+
pdb_filename = changeFilenameExtension(path=source_path, extension=".pdb")
|
|
782
|
+
|
|
783
|
+
if os.path.exists(pdb_filename):
|
|
784
|
+
copyFile(
|
|
785
|
+
source_path=pdb_filename,
|
|
786
|
+
dest_path=changeFilenameExtension(
|
|
787
|
+
path=target_filename, extension=".pdb"
|
|
788
|
+
),
|
|
789
|
+
)
|
|
790
|
+
|
|
791
|
+
if isMacOS():
|
|
792
|
+
# spell-checker: ignore xattr
|
|
793
|
+
|
|
794
|
+
executeToolChecked(
|
|
795
|
+
logger=postprocessing_logger,
|
|
796
|
+
command=("xattr", "-c", target_filename),
|
|
797
|
+
absence_message="needs 'xattr' to remove extended attributes",
|
|
798
|
+
)
|
|
799
|
+
|
|
800
|
+
if executable:
|
|
801
|
+
addFileExecutablePermission(target_filename)
|
|
802
|
+
|
|
803
|
+
|
|
804
|
+
def getDLLVersion(filename):
|
|
805
|
+
"""Determine version of the DLL filename."""
|
|
806
|
+
if isMacOS():
|
|
807
|
+
return _getDLLVersionMacOS(filename)
|
|
808
|
+
elif isWin32Windows():
|
|
809
|
+
return _getDLLVersionWindows(filename)
|
|
810
|
+
|
|
811
|
+
|
|
812
|
+
def getWindowsRunningProcessModuleFilename(handle):
|
|
813
|
+
"""Run time lookup of filename of a module in the current Python process."""
|
|
814
|
+
|
|
815
|
+
import ctypes.wintypes
|
|
816
|
+
|
|
817
|
+
MAX_PATH = 4096
|
|
818
|
+
buf = ctypes.create_unicode_buffer(MAX_PATH)
|
|
819
|
+
|
|
820
|
+
GetModuleFileName = ctypes.windll.kernel32.GetModuleFileNameW
|
|
821
|
+
GetModuleFileName.argtypes = (
|
|
822
|
+
ctypes.wintypes.HANDLE,
|
|
823
|
+
ctypes.wintypes.LPWSTR,
|
|
824
|
+
ctypes.wintypes.DWORD,
|
|
825
|
+
)
|
|
826
|
+
GetModuleFileName.restype = ctypes.wintypes.DWORD
|
|
827
|
+
|
|
828
|
+
res = GetModuleFileName(handle, buf, MAX_PATH)
|
|
829
|
+
if res == 0:
|
|
830
|
+
raiseWindowsError("getWindowsRunningProcessModuleFilename")
|
|
831
|
+
|
|
832
|
+
return os.path.normcase(buf.value)
|
|
833
|
+
|
|
834
|
+
|
|
835
|
+
def _getWindowsRunningProcessModuleHandles():
|
|
836
|
+
"""Return list of process module handles for running process."""
|
|
837
|
+
import ctypes.wintypes
|
|
838
|
+
|
|
839
|
+
try:
|
|
840
|
+
EnumProcessModulesProc = ctypes.windll.psapi.EnumProcessModules
|
|
841
|
+
except AttributeError:
|
|
842
|
+
EnumProcessModulesProc = ctypes.windll.kernel32.EnumProcessModules
|
|
843
|
+
|
|
844
|
+
EnumProcessModulesProc.restype = ctypes.wintypes.BOOL
|
|
845
|
+
EnumProcessModulesProc.argtypes = (
|
|
846
|
+
ctypes.wintypes.HANDLE,
|
|
847
|
+
ctypes.POINTER(ctypes.wintypes.HANDLE),
|
|
848
|
+
ctypes.wintypes.LONG,
|
|
849
|
+
ctypes.POINTER(ctypes.wintypes.ULONG),
|
|
850
|
+
)
|
|
851
|
+
|
|
852
|
+
# Very unlikely that this is not sufficient for CPython.
|
|
853
|
+
handles = (ctypes.wintypes.HANDLE * 1024)()
|
|
854
|
+
needed = ctypes.wintypes.ULONG()
|
|
855
|
+
|
|
856
|
+
res = EnumProcessModulesProc(
|
|
857
|
+
ctypes.windll.kernel32.GetCurrentProcess(),
|
|
858
|
+
handles,
|
|
859
|
+
ctypes.sizeof(handles),
|
|
860
|
+
ctypes.byref(needed),
|
|
861
|
+
)
|
|
862
|
+
|
|
863
|
+
if not res:
|
|
864
|
+
raiseWindowsError("getWindowsRunningProcessModuleHandles")
|
|
865
|
+
|
|
866
|
+
return tuple(handle for handle in handles if handle is not None)
|
|
867
|
+
|
|
868
|
+
|
|
869
|
+
def getWindowsRunningProcessDLLPaths():
|
|
870
|
+
result = OrderedDict()
|
|
871
|
+
|
|
872
|
+
for handle in _getWindowsRunningProcessModuleHandles():
|
|
873
|
+
try:
|
|
874
|
+
filename = getWindowsRunningProcessModuleFilename(handle)
|
|
875
|
+
except WindowsError:
|
|
876
|
+
continue
|
|
877
|
+
|
|
878
|
+
result[os.path.basename(filename)] = filename
|
|
879
|
+
|
|
880
|
+
return result
|
|
881
|
+
|
|
882
|
+
|
|
883
|
+
# spell-checker: ignore termux DT_RUNPATH
|
|
884
|
+
_termux_elf_cleaner_usage = (
|
|
885
|
+
"Needs 'termux-elf-cleaner' to clean up created files. Install it for best results."
|
|
886
|
+
)
|
|
887
|
+
|
|
888
|
+
|
|
889
|
+
def cleanupHeaderForAndroid(filename):
|
|
890
|
+
"""Change a DT_RPATH to DT_RUNPATH
|
|
891
|
+
|
|
892
|
+
On Android this seems required, because the linker doesn't support the one
|
|
893
|
+
created by default.
|
|
894
|
+
"""
|
|
895
|
+
|
|
896
|
+
executeToolChecked(
|
|
897
|
+
logger=postprocessing_logger,
|
|
898
|
+
command=("patchelf", "--shrink-rpath", filename),
|
|
899
|
+
stderr_filter=_filterPatchelfErrorOutput,
|
|
900
|
+
absence_message=_patchelf_usage,
|
|
901
|
+
)
|
|
902
|
+
|
|
903
|
+
executeToolChecked(
|
|
904
|
+
logger=postprocessing_logger,
|
|
905
|
+
command=("termux-elf-cleaner", "--quiet", filename),
|
|
906
|
+
absence_message=_termux_elf_cleaner_usage,
|
|
907
|
+
optional=True,
|
|
908
|
+
)
|
|
909
|
+
|
|
910
|
+
|
|
911
|
+
_nm_usage = """\
|
|
912
|
+
Error, needs 'nm' on your system, to detect exported DLL symbols."""
|
|
913
|
+
|
|
914
|
+
|
|
915
|
+
def _decodeWin32EntryPoint(entry_point_name):
|
|
916
|
+
if str is bytes:
|
|
917
|
+
return entry_point_name
|
|
918
|
+
else:
|
|
919
|
+
# Not sure about the actual encoding used, this will cover most cases.
|
|
920
|
+
return entry_point_name.decode("utf8", "backslashreplace")
|
|
921
|
+
|
|
922
|
+
|
|
923
|
+
def getPEFileUsedDllNames(filename):
|
|
924
|
+
"""Return the used DLL PE file information of a Windows EXE or DLL
|
|
925
|
+
|
|
926
|
+
Args:
|
|
927
|
+
filename - The file to be investigated.
|
|
928
|
+
|
|
929
|
+
Notes:
|
|
930
|
+
Use of this is obviously only for Windows, although the module
|
|
931
|
+
will exist on other platforms too.
|
|
932
|
+
"""
|
|
933
|
+
|
|
934
|
+
pefile = importFromInlineCopy("pefile", must_exist=True)
|
|
935
|
+
|
|
936
|
+
try:
|
|
937
|
+
pe_info = pefile.PE(filename)
|
|
938
|
+
except pefile.PEFormatError:
|
|
939
|
+
return None
|
|
940
|
+
|
|
941
|
+
# TODO: Check arch with pefile as well and ignore wrong arches if asked to.
|
|
942
|
+
|
|
943
|
+
# TODO: The decoding cannot expect ASCII, but also surely is not UTF8.
|
|
944
|
+
return OrderedSet(
|
|
945
|
+
dll_entry.dll.decode("utf8")
|
|
946
|
+
for dll_entry in getattr(pe_info, "DIRECTORY_ENTRY_IMPORT", ())
|
|
947
|
+
)
|
|
948
|
+
|
|
949
|
+
|
|
950
|
+
def getDllExportedSymbols(logger, filename):
|
|
951
|
+
if isWin32Windows():
|
|
952
|
+
pefile = importFromInlineCopy("pefile", must_exist=True)
|
|
953
|
+
|
|
954
|
+
try:
|
|
955
|
+
pe_info = pefile.PE(filename)
|
|
956
|
+
except pefile.PEFormatError:
|
|
957
|
+
return None
|
|
958
|
+
|
|
959
|
+
return tuple(
|
|
960
|
+
_decodeWin32EntryPoint(entry_point.name)
|
|
961
|
+
for entry_point in pe_info.DIRECTORY_ENTRY_EXPORT.symbols
|
|
962
|
+
if entry_point.name is not None
|
|
963
|
+
)
|
|
964
|
+
else:
|
|
965
|
+
if isLinux():
|
|
966
|
+
command = ("nm", "-D", filename)
|
|
967
|
+
elif isMacOS():
|
|
968
|
+
command = ("nm", "-gU", filename) + _getMacOSArchOption()
|
|
969
|
+
else:
|
|
970
|
+
# Need to add e.g. FreeBSD here.
|
|
971
|
+
assert False
|
|
972
|
+
|
|
973
|
+
output = executeToolChecked(
|
|
974
|
+
logger=logger,
|
|
975
|
+
command=command,
|
|
976
|
+
absence_message=_nm_usage,
|
|
977
|
+
)
|
|
978
|
+
|
|
979
|
+
result = OrderedSet()
|
|
980
|
+
for line in output.splitlines():
|
|
981
|
+
try:
|
|
982
|
+
_addr, marker, symbol_name = line.split()
|
|
983
|
+
except ValueError:
|
|
984
|
+
continue
|
|
985
|
+
|
|
986
|
+
if marker == b"T":
|
|
987
|
+
result.add(symbol_name.decode("utf8"))
|
|
988
|
+
|
|
989
|
+
return result
|
|
990
|
+
|
|
991
|
+
|
|
992
|
+
def getDllSuffix():
|
|
993
|
+
if isWin32Windows():
|
|
994
|
+
return ".dll"
|
|
995
|
+
elif isMacOS():
|
|
996
|
+
return ".dylib"
|
|
997
|
+
else:
|
|
998
|
+
return ".so"
|
|
999
|
+
|
|
1000
|
+
|
|
1001
|
+
# Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
1002
|
+
# integrates with CPython, but also works on its own.
|
|
1003
|
+
#
|
|
1004
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
1005
|
+
# you may not use this file except in compliance with the License.
|
|
1006
|
+
# You may obtain a copy of the License at
|
|
1007
|
+
#
|
|
1008
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
1009
|
+
#
|
|
1010
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
1011
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
1012
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1013
|
+
# See the License for the specific language governing permissions and
|
|
1014
|
+
# limitations under the License.
|