Nuitka-winsvc 1.8__cp311-cp311-win_amd64.whl → 2.5.1__cp311-cp311-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_winsvc-1.8.data/scripts/nuitka-run.bat → Nuitka_winsvc-2.5.1.data/scripts/nuitka-run.cmd +9 -9
- Nuitka_winsvc-1.8.data/scripts/nuitka.bat → Nuitka_winsvc-2.5.1.data/scripts/nuitka.cmd +15 -15
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/METADATA +5 -3
- Nuitka_winsvc-2.5.1.dist-info/RECORD +977 -0
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/WHEEL +1 -1
- nuitka/Builtins.py +49 -17
- nuitka/BytecodeCaching.py +24 -20
- nuitka/Bytecodes.py +23 -19
- nuitka/CacheCleanup.py +28 -23
- nuitka/Constants.py +19 -17
- nuitka/Errors.py +23 -17
- nuitka/HardImportRegistry.py +408 -0
- nuitka/MainControl.py +209 -116
- nuitka/ModuleRegistry.py +83 -20
- nuitka/OptionParsing.py +467 -221
- nuitka/Options.py +701 -225
- nuitka/OutputDirectories.py +47 -23
- nuitka/PostProcessing.py +133 -79
- nuitka/Progress.py +73 -24
- nuitka/PythonFlavors.py +141 -32
- nuitka/PythonOperators.py +18 -17
- nuitka/PythonVersions.py +107 -19
- nuitka/Serialization.py +70 -55
- nuitka/SourceCodeReferences.py +19 -17
- nuitka/Tracing.py +176 -70
- nuitka/TreeXML.py +31 -26
- nuitka/Variables.py +39 -41
- nuitka/Version.py +22 -8
- nuitka/__init__.py +5 -4
- nuitka/__main__.py +95 -29
- nuitka/__past__.py +44 -34
- nuitka/build/Backend.scons +243 -141
- nuitka/build/CCompilerVersion.scons +45 -31
- nuitka/build/DataComposerInterface.py +20 -17
- nuitka/build/Onefile.scons +56 -54
- nuitka/build/SconsCaching.py +105 -92
- nuitka/build/SconsCompilerSettings.py +167 -68
- nuitka/build/SconsHacks.py +25 -19
- nuitka/build/SconsInterface.py +155 -54
- nuitka/build/SconsProgress.py +19 -18
- nuitka/build/SconsSpawn.py +62 -33
- nuitka/build/SconsUtils.py +152 -55
- nuitka/build/__init__.py +5 -4
- nuitka/build/include/nuitka/allocator.h +228 -22
- nuitka/build/include/nuitka/builtins.h +17 -17
- nuitka/build/include/nuitka/calling.h +24 -24
- nuitka/build/include/nuitka/checkers.h +17 -18
- nuitka/build/include/nuitka/checksum_tools.h +14 -19
- nuitka/build/include/nuitka/compiled_asyncgen.h +28 -25
- nuitka/build/include/nuitka/compiled_cell.h +33 -18
- nuitka/build/include/nuitka/compiled_coroutine.h +18 -18
- nuitka/build/include/nuitka/compiled_frame.h +93 -54
- nuitka/build/include/nuitka/compiled_function.h +42 -20
- nuitka/build/include/nuitka/compiled_generator.h +24 -18
- nuitka/build/include/nuitka/compiled_method.h +17 -18
- nuitka/build/include/nuitka/constants.h +35 -18
- nuitka/build/include/nuitka/constants_blob.h +17 -17
- 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 +45 -0
- nuitka/build/include/nuitka/exception_groups.h +23 -26
- nuitka/build/include/nuitka/exceptions.h +717 -171
- nuitka/build/include/nuitka/filesystem_paths.h +26 -20
- nuitka/build/include/nuitka/freelists.h +38 -18
- nuitka/build/include/nuitka/helper/attributes.h +24 -22
- nuitka/build/include/nuitka/helper/boolean.h +17 -17
- nuitka/build/include/nuitka/helper/bytearrays.h +17 -17
- nuitka/build/include/nuitka/helper/bytes.h +14 -15
- nuitka/build/include/nuitka/helper/calling_generated.h +69 -69
- 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 +17 -17
- nuitka/build/include/nuitka/helper/comparisons_ge.h +17 -17
- nuitka/build/include/nuitka/helper/comparisons_gt.h +17 -17
- nuitka/build/include/nuitka/helper/comparisons_le.h +17 -17
- nuitka/build/include/nuitka/helper/comparisons_lt.h +17 -17
- nuitka/build/include/nuitka/helper/comparisons_ne.h +17 -17
- nuitka/build/include/nuitka/helper/complex.h +17 -17
- nuitka/build/include/nuitka/helper/dictionaries.h +89 -51
- nuitka/build/include/nuitka/helper/floats.h +17 -18
- nuitka/build/include/nuitka/helper/import_hard.h +25 -17
- nuitka/build/include/nuitka/helper/indexes.h +17 -18
- nuitka/build/include/nuitka/helper/ints.h +115 -54
- nuitka/build/include/nuitka/helper/iterators.h +99 -51
- nuitka/build/include/nuitka/helper/lists.h +26 -24
- nuitka/build/include/nuitka/helper/lists_generated.h +22 -22
- nuitka/build/include/nuitka/helper/mappings.h +17 -18
- nuitka/build/include/nuitka/helper/operations.h +20 -17
- nuitka/build/include/nuitka/helper/operations_binary_add.h +23 -17
- nuitka/build/include/nuitka/helper/operations_binary_bitand.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_bitor.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_bitxor.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_divmod.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_dual_add.h +34 -0
- nuitka/build/include/nuitka/helper/operations_binary_floordiv.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_lshift.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_matmult.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_mod.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_mult.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_olddiv.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_pow.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_rshift.h +17 -17
- nuitka/build/include/nuitka/helper/operations_binary_sub.h +23 -17
- nuitka/build/include/nuitka/helper/operations_binary_truediv.h +17 -17
- nuitka/build/include/nuitka/helper/operations_builtin_types.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_add.h +20 -17
- nuitka/build/include/nuitka/helper/operations_inplace_bitand.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_bitor.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_bitxor.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_floordiv.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_lshift.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_matmult.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_mod.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_mult.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_olddiv.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_pow.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_rshift.h +17 -17
- nuitka/build/include/nuitka/helper/operations_inplace_sub.h +20 -17
- nuitka/build/include/nuitka/helper/operations_inplace_truediv.h +17 -17
- nuitka/build/include/nuitka/helper/raising.h +68 -37
- nuitka/build/include/nuitka/helper/rangeobjects.h +17 -17
- nuitka/build/include/nuitka/helper/richcomparisons.h +21 -14
- nuitka/build/include/nuitka/helper/sequences.h +19 -13
- nuitka/build/include/nuitka/helper/sets.h +11 -12
- nuitka/build/include/nuitka/helper/slices.h +31 -25
- nuitka/build/include/nuitka/helper/strings.h +16 -17
- nuitka/build/include/nuitka/helper/subscripts.h +18 -201
- nuitka/build/include/nuitka/helper/tuples.h +64 -52
- nuitka/build/include/nuitka/helpers.h +50 -22
- nuitka/build/include/nuitka/importing.h +28 -21
- nuitka/build/include/nuitka/jit_sources.h +25 -0
- nuitka/build/include/nuitka/prelude.h +163 -71
- nuitka/build/include/nuitka/printing.h +29 -22
- nuitka/build/include/nuitka/python_pgo.h +19 -18
- nuitka/build/include/nuitka/safe_string_ops.h +20 -18
- nuitka/build/include/nuitka/threading.h +45 -32
- nuitka/build/include/nuitka/tracing.h +28 -18
- nuitka/build/include/nuitka/type_aliases.h +30 -0
- nuitka/build/include/nuitka/unfreezing.h +29 -23
- nuitka/build/inline_copy/bin/scons.py +14 -0
- nuitka/build/inline_copy/lib/scons-4.3.0/SCons/Variables/ListVariable.py +6 -6
- nuitka/build/inline_copy/pkg_resources/pkg_resources/__init__.py +0 -3
- 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 +307 -0
- nuitka/build/inline_copy/tqdm/tqdm/__init__.py +2 -2
- nuitka/build/inline_copy/tqdm/tqdm/_monitor.py +4 -1
- nuitka/build/inline_copy/tqdm/tqdm/utils.py +14 -8
- nuitka/build/inline_copy/tqdm/tqdm/version.py +1 -8
- 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/static_src/CompiledAsyncgenType.c +221 -221
- nuitka/build/static_src/CompiledCellType.c +69 -44
- nuitka/build/static_src/CompiledCodeHelpers.c +276 -159
- nuitka/build/static_src/CompiledCoroutineType.c +229 -226
- nuitka/build/static_src/CompiledFrameType.c +323 -138
- nuitka/build/static_src/CompiledFunctionType.c +547 -231
- nuitka/build/static_src/CompiledGeneratorType.c +416 -290
- nuitka/build/static_src/CompiledGeneratorTypeUncompiledIntegration.c +593 -228
- nuitka/build/static_src/CompiledMethodType.c +91 -82
- nuitka/build/static_src/HelpersAllocator.c +352 -45
- nuitka/build/static_src/HelpersAttributes.c +30 -72
- nuitka/build/static_src/HelpersBuiltin.c +65 -46
- nuitka/build/static_src/HelpersBuiltinTypeMethods.c +17 -17
- nuitka/build/static_src/HelpersBytes.c +19 -20
- nuitka/build/static_src/HelpersCalling.c +40 -37
- nuitka/build/static_src/HelpersCallingGenerated.c +1061 -242
- nuitka/build/static_src/HelpersChecksumTools.c +35 -21
- nuitka/build/static_src/HelpersClasses.c +17 -17
- 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 +536 -496
- nuitka/build/static_src/HelpersComparisonEqUtils.c +22 -19
- nuitka/build/static_src/HelpersComparisonGe.c +531 -501
- nuitka/build/static_src/HelpersComparisonGt.c +530 -500
- nuitka/build/static_src/HelpersComparisonLe.c +531 -501
- nuitka/build/static_src/HelpersComparisonLt.c +530 -500
- nuitka/build/static_src/HelpersComparisonNe.c +538 -496
- nuitka/build/static_src/HelpersConsole.c +122 -0
- nuitka/build/static_src/HelpersConstantsBlob.c +550 -521
- nuitka/build/static_src/HelpersDeepcopy.c +33 -33
- nuitka/build/static_src/HelpersDictionaries.c +232 -63
- nuitka/build/static_src/HelpersDictionariesGenerated.c +130 -127
- nuitka/build/static_src/HelpersDumpBacktraces.c +63 -0
- nuitka/build/static_src/HelpersEnvironmentVariables.c +65 -0
- nuitka/build/static_src/HelpersEnvironmentVariablesSystem.c +93 -0
- nuitka/build/static_src/HelpersExceptions.c +147 -62
- nuitka/build/static_src/HelpersFiles.c +116 -22
- nuitka/build/static_src/HelpersFilesystemPaths.c +292 -181
- nuitka/build/static_src/HelpersFloats.c +37 -31
- nuitka/build/static_src/HelpersHeapStorage.c +21 -17
- nuitka/build/static_src/HelpersImport.c +61 -29
- nuitka/build/static_src/HelpersImportHard.c +74 -61
- nuitka/build/static_src/HelpersJitSources.c +46 -0
- nuitka/build/static_src/HelpersLists.c +237 -58
- nuitka/build/static_src/HelpersListsGenerated.c +41 -41
- nuitka/build/static_src/HelpersMappings.c +17 -17
- nuitka/build/static_src/HelpersMatching.c +137 -51
- nuitka/build/static_src/HelpersOperationBinaryAdd.c +397 -152
- nuitka/build/static_src/HelpersOperationBinaryAddUtils.c +102 -52
- nuitka/build/static_src/HelpersOperationBinaryBitand.c +55 -55
- nuitka/build/static_src/HelpersOperationBinaryBitor.c +55 -55
- nuitka/build/static_src/HelpersOperationBinaryBitxor.c +55 -55
- nuitka/build/static_src/HelpersOperationBinaryDivmod.c +49 -43
- nuitka/build/static_src/HelpersOperationBinaryDivmodUtils.c +17 -17
- nuitka/build/static_src/HelpersOperationBinaryDualAdd.c +172 -0
- nuitka/build/static_src/HelpersOperationBinaryFloordiv.c +55 -49
- nuitka/build/static_src/HelpersOperationBinaryInplaceAdd.c +20 -21
- nuitka/build/static_src/HelpersOperationBinaryLshift.c +83 -83
- nuitka/build/static_src/HelpersOperationBinaryMatmult.c +25 -24
- nuitka/build/static_src/HelpersOperationBinaryMod.c +129 -117
- nuitka/build/static_src/HelpersOperationBinaryMult.c +98 -82
- nuitka/build/static_src/HelpersOperationBinaryMultUtils.c +33 -30
- nuitka/build/static_src/HelpersOperationBinaryOlddiv.c +55 -49
- nuitka/build/static_src/HelpersOperationBinaryPow.c +68 -68
- nuitka/build/static_src/HelpersOperationBinaryPowUtils.c +12 -12
- nuitka/build/static_src/HelpersOperationBinaryRshift.c +51 -51
- nuitka/build/static_src/HelpersOperationBinarySub.c +309 -88
- nuitka/build/static_src/HelpersOperationBinaryTruediv.c +49 -43
- nuitka/build/static_src/HelpersOperationInplaceAdd.c +333 -163
- nuitka/build/static_src/HelpersOperationInplaceAddUtils.c +24 -22
- nuitka/build/static_src/HelpersOperationInplaceBitand.c +58 -58
- nuitka/build/static_src/HelpersOperationInplaceBitor.c +58 -58
- nuitka/build/static_src/HelpersOperationInplaceBitxor.c +58 -58
- nuitka/build/static_src/HelpersOperationInplaceFloordiv.c +73 -68
- nuitka/build/static_src/HelpersOperationInplaceLshift.c +64 -64
- nuitka/build/static_src/HelpersOperationInplaceMatmult.c +38 -37
- nuitka/build/static_src/HelpersOperationInplaceMod.c +145 -140
- nuitka/build/static_src/HelpersOperationInplaceMult.c +89 -84
- nuitka/build/static_src/HelpersOperationInplaceOlddiv.c +73 -68
- nuitka/build/static_src/HelpersOperationInplacePow.c +82 -82
- nuitka/build/static_src/HelpersOperationInplaceRshift.c +48 -48
- nuitka/build/static_src/HelpersOperationInplaceSub.c +275 -122
- nuitka/build/static_src/HelpersOperationInplaceTruediv.c +68 -63
- nuitka/build/static_src/HelpersProfiling.c +25 -24
- nuitka/build/static_src/HelpersPythonPgo.c +22 -22
- nuitka/build/static_src/HelpersRaising.c +296 -283
- nuitka/build/static_src/HelpersSafeStrings.c +34 -22
- nuitka/build/static_src/HelpersSequences.c +18 -19
- nuitka/build/static_src/HelpersSlices.c +29 -23
- nuitka/build/static_src/HelpersStrings.c +235 -38
- nuitka/build/static_src/HelpersTuples.c +46 -34
- nuitka/build/static_src/HelpersTypes.c +166 -25
- nuitka/build/static_src/InspectPatcher.c +108 -27
- nuitka/build/static_src/MainProgram.c +464 -280
- nuitka/build/static_src/MetaPathBasedLoader.c +381 -257
- nuitka/build/static_src/MetaPathBasedLoaderImportlibMetadataDistribution.c +39 -26
- nuitka/build/static_src/MetaPathBasedLoaderResourceReader.c +17 -18
- nuitka/build/static_src/MetaPathBasedLoaderResourceReaderFiles.c +227 -29
- nuitka/build/static_src/OnefileBootstrap.c +281 -164
- nuitka/build/static_src/OnefileSplashScreen.cpp +51 -27
- nuitka/code_generation/AsyncgenCodes.py +21 -23
- nuitka/code_generation/AttributeCodes.py +31 -27
- nuitka/code_generation/BinaryOperationHelperDefinitions.py +290 -184
- nuitka/code_generation/BranchCodes.py +19 -17
- nuitka/code_generation/BuiltinCodes.py +29 -18
- nuitka/code_generation/CallCodes.py +35 -33
- nuitka/code_generation/ClassCodes.py +19 -17
- nuitka/code_generation/CodeGeneration.py +61 -28
- nuitka/code_generation/CodeHelperSelection.py +20 -18
- nuitka/code_generation/CodeHelpers.py +28 -21
- nuitka/code_generation/CodeObjectCodes.py +36 -26
- nuitka/code_generation/ComparisonCodes.py +51 -22
- nuitka/code_generation/ComparisonHelperDefinitions.py +42 -25
- nuitka/code_generation/ConditionalCodes.py +19 -17
- nuitka/code_generation/ConstantCodes.py +82 -28
- nuitka/code_generation/Contexts.py +180 -42
- nuitka/code_generation/CoroutineCodes.py +21 -23
- nuitka/code_generation/CtypesCodes.py +19 -17
- nuitka/code_generation/DictCodes.py +28 -26
- nuitka/code_generation/Emission.py +21 -18
- nuitka/code_generation/ErrorCodes.py +57 -79
- nuitka/code_generation/EvalCodes.py +24 -20
- nuitka/code_generation/ExceptionCodes.py +182 -104
- nuitka/code_generation/ExpressionCTypeSelectionHelpers.py +45 -27
- nuitka/code_generation/ExpressionCodes.py +19 -17
- nuitka/code_generation/FrameCodes.py +28 -31
- nuitka/code_generation/FunctionCodes.py +26 -27
- nuitka/code_generation/GeneratorCodes.py +25 -26
- nuitka/code_generation/GlobalConstants.py +51 -25
- nuitka/code_generation/GlobalsLocalsCodes.py +23 -21
- nuitka/code_generation/IdCodes.py +19 -17
- nuitka/code_generation/ImportCodes.py +90 -50
- nuitka/code_generation/Indentation.py +23 -22
- nuitka/code_generation/IndexCodes.py +19 -17
- nuitka/code_generation/InjectCCodes.py +14 -12
- nuitka/code_generation/IntegerCodes.py +19 -17
- nuitka/code_generation/IteratorCodes.py +86 -71
- nuitka/code_generation/JitCodes.py +44 -0
- nuitka/code_generation/LabelCodes.py +19 -17
- nuitka/code_generation/LineNumberCodes.py +20 -20
- nuitka/code_generation/ListCodes.py +32 -36
- nuitka/code_generation/LoaderCodes.py +22 -17
- nuitka/code_generation/LocalsDictCodes.py +56 -32
- nuitka/code_generation/LoopCodes.py +19 -17
- nuitka/code_generation/MatchCodes.py +42 -22
- nuitka/code_generation/ModuleCodes.py +71 -29
- nuitka/code_generation/Namify.py +27 -23
- nuitka/code_generation/NetworkxCodes.py +51 -0
- nuitka/code_generation/OperationCodes.py +80 -51
- nuitka/code_generation/PackageResourceCodes.py +96 -23
- nuitka/code_generation/PrintCodes.py +19 -17
- nuitka/code_generation/PythonAPICodes.py +19 -17
- nuitka/code_generation/RaisingCodes.py +183 -107
- nuitka/code_generation/Reports.py +32 -22
- nuitka/code_generation/ReturnCodes.py +20 -32
- nuitka/code_generation/SetCodes.py +19 -17
- nuitka/code_generation/SliceCodes.py +22 -20
- nuitka/code_generation/StringCodes.py +19 -17
- nuitka/code_generation/SubscriptCodes.py +24 -30
- nuitka/code_generation/TensorflowCodes.py +54 -0
- nuitka/code_generation/TryCodes.py +31 -41
- nuitka/code_generation/TupleCodes.py +20 -18
- nuitka/code_generation/TypeAliasCodes.py +119 -0
- nuitka/code_generation/VariableCodes.py +118 -55
- nuitka/code_generation/VariableDeclarations.py +28 -25
- nuitka/code_generation/YieldCodes.py +23 -21
- nuitka/code_generation/__init__.py +5 -4
- nuitka/code_generation/c_types/CTypeBases.py +29 -19
- nuitka/code_generation/c_types/CTypeBooleans.py +19 -17
- nuitka/code_generation/c_types/CTypeCFloats.py +19 -17
- nuitka/code_generation/c_types/CTypeCLongs.py +19 -18
- nuitka/code_generation/c_types/CTypeModuleDictVariables.py +22 -17
- nuitka/code_generation/c_types/CTypeNuitkaBooleans.py +22 -21
- nuitka/code_generation/c_types/CTypeNuitkaInts.py +89 -43
- nuitka/code_generation/c_types/CTypeNuitkaVoids.py +20 -18
- nuitka/code_generation/c_types/CTypePyObjectPointers.py +43 -31
- nuitka/code_generation/c_types/CTypeVoids.py +20 -17
- nuitka/code_generation/c_types/__init__.py +5 -4
- nuitka/code_generation/templates/CodeTemplatesAsyncgens.py +20 -19
- nuitka/code_generation/templates/CodeTemplatesConstants.py +143 -39
- nuitka/code_generation/templates/CodeTemplatesCoroutines.py +20 -19
- nuitka/code_generation/templates/CodeTemplatesExceptions.py +33 -33
- nuitka/code_generation/templates/CodeTemplatesFrames.py +36 -27
- nuitka/code_generation/templates/CodeTemplatesFunction.py +20 -19
- nuitka/code_generation/templates/CodeTemplatesGeneratorFunction.py +21 -19
- nuitka/code_generation/templates/CodeTemplatesIterators.py +19 -53
- nuitka/code_generation/templates/CodeTemplatesLoader.py +25 -19
- nuitka/code_generation/templates/CodeTemplatesModules.py +278 -169
- nuitka/code_generation/templates/CodeTemplatesVariables.py +115 -27
- nuitka/code_generation/templates/TemplateDebugWrapper.py +19 -18
- nuitka/code_generation/templates/__init__.py +5 -4
- nuitka/code_generation/templates_c/CodeTemplateCallsMethodPositional.c.j2 +19 -19
- nuitka/code_generation/templates_c/CodeTemplateCallsMixed.c.j2 +21 -21
- nuitka/code_generation/templates_c/CodeTemplateCallsPositional.c.j2 +79 -28
- nuitka/code_generation/templates_c/CodeTemplateCallsPositionalMethodDescr.c.j2 +22 -22
- nuitka/code_generation/templates_c/CodeTemplateMakeListHinted.c.j2 +19 -19
- nuitka/code_generation/templates_c/CodeTemplateMakeListSmall.c.j2 +19 -19
- nuitka/code_generation/templates_c/HelperBuiltinMethodOperation.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperDictionaryCopy.c.j2 +74 -106
- nuitka/code_generation/templates_c/HelperImportHard.c.j2 +19 -20
- nuitka/code_generation/templates_c/HelperLongTools.c.j2 +19 -19
- nuitka/code_generation/templates_c/HelperObjectTools.c.j2 +6 -6
- nuitka/code_generation/templates_c/HelperOperationBinary.c.j2 +23 -23
- nuitka/code_generation/templates_c/HelperOperationBinaryDual.c.j2 +115 -0
- nuitka/code_generation/templates_c/HelperOperationComparison.c.j2 +35 -35
- nuitka/code_generation/templates_c/HelperOperationComparisonBytes.c.j2 +37 -37
- nuitka/code_generation/templates_c/HelperOperationComparisonDual.c.j2 +86 -0
- nuitka/code_generation/templates_c/HelperOperationComparisonFloat.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperOperationComparisonInt.c.j2 +18 -18
- nuitka/code_generation/templates_c/HelperOperationComparisonList.c.j2 +50 -38
- nuitka/code_generation/templates_c/HelperOperationComparisonLong.c.j2 +27 -27
- nuitka/code_generation/templates_c/HelperOperationComparisonStr.c.j2 +37 -37
- nuitka/code_generation/templates_c/HelperOperationComparisonTuple.c.j2 +31 -31
- nuitka/code_generation/templates_c/HelperOperationComparisonUnicode.c.j2 +35 -31
- nuitka/code_generation/templates_c/HelperOperationInplace.c.j2 +20 -20
- nuitka/code_generation/templates_c/HelperSlotsBinary.c.j2 +28 -28
- nuitka/code_generation/templates_c/HelperSlotsBytes.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperSlotsCommon.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperSlotsFloat.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperSlotsInt.c.j2 +48 -48
- nuitka/code_generation/templates_c/HelperSlotsList.c.j2 +21 -18
- nuitka/code_generation/templates_c/HelperSlotsLong.c.j2 +27 -25
- nuitka/code_generation/templates_c/HelperSlotsSet.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperSlotsStr.c.j2 +17 -17
- nuitka/code_generation/templates_c/HelperSlotsTuple.c.j2 +21 -18
- nuitka/code_generation/templates_c/HelperSlotsUnicode.c.j2 +17 -17
- nuitka/containers/Namedtuples.py +25 -18
- nuitka/containers/OrderedSets.py +105 -5
- nuitka/containers/OrderedSetsFallback.py +19 -17
- nuitka/containers/__init__.py +5 -4
- nuitka/distutils/Build.py +33 -18
- nuitka/distutils/DistutilCommands.py +84 -33
- nuitka/distutils/__init__.py +5 -4
- nuitka/finalizations/Finalization.py +21 -18
- nuitka/finalizations/FinalizeMarkups.py +31 -55
- nuitka/finalizations/__init__.py +5 -4
- nuitka/freezer/DependsExe.py +60 -30
- nuitka/freezer/DllDependenciesCommon.py +47 -20
- nuitka/freezer/DllDependenciesMacOS.py +165 -58
- nuitka/freezer/DllDependenciesPosix.py +29 -19
- nuitka/freezer/DllDependenciesWin32.py +55 -33
- nuitka/freezer/ImportDetection.py +23 -17
- nuitka/freezer/IncludedDataFiles.py +142 -48
- nuitka/freezer/IncludedEntryPoints.py +104 -39
- nuitka/freezer/Onefile.py +32 -22
- nuitka/freezer/Standalone.py +166 -53
- nuitka/freezer/__init__.py +5 -4
- nuitka/importing/IgnoreListing.py +19 -17
- nuitka/importing/ImportCache.py +24 -21
- nuitka/importing/ImportResolving.py +103 -95
- nuitka/importing/Importing.py +319 -98
- nuitka/importing/PreloadedPackages.py +21 -18
- nuitka/importing/Recursion.py +142 -47
- nuitka/importing/StandardLibrary.py +96 -80
- nuitka/importing/__init__.py +5 -4
- nuitka/nodes/AsyncgenNodes.py +22 -23
- nuitka/nodes/AttributeLookupNodes.py +19 -17
- nuitka/nodes/AttributeNodes.py +19 -17
- nuitka/nodes/AttributeNodesGenerated.py +49 -24
- nuitka/nodes/BuiltinAllNodes.py +19 -17
- nuitka/nodes/BuiltinAnyNodes.py +19 -17
- nuitka/nodes/BuiltinComplexNodes.py +20 -17
- nuitka/nodes/BuiltinDecodingNodes.py +19 -17
- nuitka/nodes/BuiltinDecoratorNodes.py +19 -17
- nuitka/nodes/BuiltinDictNodes.py +19 -17
- nuitka/nodes/BuiltinFormatNodes.py +20 -17
- nuitka/nodes/BuiltinHashNodes.py +19 -17
- nuitka/nodes/BuiltinInputNodes.py +19 -17
- nuitka/nodes/BuiltinIntegerNodes.py +19 -17
- nuitka/nodes/BuiltinIteratorNodes.py +25 -21
- nuitka/nodes/BuiltinLenNodes.py +19 -17
- nuitka/nodes/BuiltinNextNodes.py +19 -17
- nuitka/nodes/BuiltinOpenNodes.py +52 -18
- nuitka/nodes/BuiltinOperationNodeBasesGenerated.py +40 -23
- nuitka/nodes/BuiltinRangeNodes.py +21 -19
- nuitka/nodes/BuiltinRefNodes.py +73 -40
- nuitka/nodes/BuiltinSumNodes.py +20 -18
- nuitka/nodes/BuiltinTypeNodes.py +19 -17
- nuitka/nodes/BuiltinVarsNodes.py +19 -18
- nuitka/nodes/BytesNodes.py +19 -17
- nuitka/nodes/CallNodes.py +19 -17
- nuitka/nodes/Checkers.py +19 -17
- nuitka/nodes/ChildrenHavingMixins.py +1624 -283
- nuitka/nodes/ClassNodes.py +49 -29
- nuitka/nodes/CodeObjectSpecs.py +29 -18
- nuitka/nodes/ComparisonNodes.py +19 -17
- nuitka/nodes/ConditionalNodes.py +24 -25
- nuitka/nodes/ConstantRefNodes.py +57 -17
- nuitka/nodes/ContainerMakingNodes.py +19 -17
- nuitka/nodes/ContainerOperationNodes.py +19 -17
- nuitka/nodes/CoroutineNodes.py +22 -23
- nuitka/nodes/CtypesNodes.py +19 -18
- nuitka/nodes/DictionaryNodes.py +19 -18
- nuitka/nodes/ExceptionNodes.py +131 -43
- nuitka/nodes/ExecEvalNodes.py +19 -17
- nuitka/nodes/ExpressionBases.py +34 -26
- nuitka/nodes/ExpressionBasesGenerated.py +341 -35
- nuitka/nodes/ExpressionShapeMixins.py +19 -17
- nuitka/nodes/FrameNodes.py +41 -28
- nuitka/nodes/FunctionAttributeNodes.py +19 -17
- nuitka/nodes/FunctionNodes.py +84 -38
- nuitka/nodes/FutureSpecs.py +35 -20
- nuitka/nodes/GeneratorNodes.py +24 -25
- nuitka/nodes/GlobalsLocalsNodes.py +22 -17
- nuitka/nodes/HardImportNodesGenerated.py +746 -148
- nuitka/nodes/ImportHardNodes.py +46 -38
- nuitka/nodes/ImportNodes.py +438 -448
- nuitka/nodes/IndicatorMixins.py +19 -17
- nuitka/nodes/InjectCNodes.py +19 -18
- nuitka/nodes/IterationHandles.py +55 -34
- nuitka/nodes/KeyValuePairNodes.py +19 -17
- nuitka/nodes/ListOperationNodes.py +33 -21
- nuitka/nodes/LocalsDictNodes.py +19 -17
- nuitka/nodes/LocalsScopes.py +41 -41
- nuitka/nodes/LoopNodes.py +28 -17
- nuitka/nodes/MatchNodes.py +37 -24
- nuitka/nodes/ModuleAttributeNodes.py +18 -35
- nuitka/nodes/ModuleNodes.py +90 -31
- nuitka/nodes/NetworkxNodes.py +45 -0
- nuitka/nodes/NodeBases.py +73 -44
- nuitka/nodes/NodeMakingHelpers.py +92 -69
- nuitka/nodes/NodeMetaClasses.py +45 -28
- nuitka/nodes/OperatorNodes.py +28 -26
- nuitka/nodes/OperatorNodesUnary.py +148 -20
- nuitka/nodes/OsSysNodes.py +97 -18
- nuitka/nodes/OutlineNodes.py +24 -22
- nuitka/nodes/PackageMetadataNodes.py +37 -27
- nuitka/nodes/PackageResourceNodes.py +29 -23
- nuitka/nodes/PrintNodes.py +19 -17
- nuitka/nodes/ReturnNodes.py +20 -18
- nuitka/nodes/SideEffectNodes.py +19 -17
- nuitka/nodes/SliceNodes.py +20 -18
- nuitka/nodes/StatementBasesGenerated.py +125 -79
- nuitka/nodes/StatementNodes.py +27 -24
- nuitka/nodes/StrNodes.py +19 -17
- nuitka/nodes/StringConcatenationNodes.py +20 -17
- nuitka/nodes/SubscriptNodes.py +27 -25
- nuitka/nodes/TensorflowNodes.py +38 -0
- nuitka/nodes/TryNodes.py +19 -17
- nuitka/nodes/TypeMatchNodes.py +19 -17
- nuitka/nodes/TypeNodes.py +68 -18
- nuitka/nodes/VariableAssignNodes.py +122 -64
- nuitka/nodes/VariableDelNodes.py +19 -17
- nuitka/nodes/VariableNameNodes.py +19 -17
- nuitka/nodes/VariableRefNodes.py +63 -26
- nuitka/nodes/VariableReleaseNodes.py +19 -17
- nuitka/nodes/YieldNodes.py +21 -19
- nuitka/nodes/__init__.py +5 -4
- nuitka/nodes/shapes/BuiltinTypeShapes.py +169 -46
- nuitka/nodes/shapes/ControlFlowDescriptions.py +19 -17
- nuitka/nodes/shapes/ShapeMixins.py +57 -17
- nuitka/nodes/shapes/StandardShapes.py +80 -21
- nuitka/nodes/shapes/__init__.py +5 -4
- nuitka/optimizations/BytecodeDemotion.py +21 -18
- nuitka/optimizations/FunctionInlining.py +22 -23
- nuitka/optimizations/Graphs.py +19 -17
- nuitka/optimizations/Optimization.py +39 -35
- nuitka/optimizations/OptimizeBuiltinCalls.py +31 -27
- nuitka/optimizations/Tags.py +19 -18
- nuitka/optimizations/TraceCollections.py +67 -24
- nuitka/optimizations/ValueTraces.py +92 -25
- nuitka/optimizations/__init__.py +5 -4
- nuitka/pgo/PGO.py +33 -23
- nuitka/pgo/__init__.py +5 -4
- nuitka/plugins/PluginBase.py +655 -112
- nuitka/plugins/Plugins.py +247 -61
- nuitka/plugins/YamlPluginBase.py +121 -0
- nuitka/plugins/__init__.py +5 -4
- nuitka/plugins/standard/AntiBloatPlugin.py +374 -135
- nuitka/plugins/standard/ConsiderPyLintAnnotationsPlugin.py +20 -19
- nuitka/plugins/standard/DataFilesPlugin.py +65 -29
- nuitka/plugins/standard/DelvewheelPlugin.py +32 -24
- nuitka/plugins/standard/DillPlugin/DillPlugin.c +37 -0
- nuitka/plugins/standard/DillPlugin/dill-postLoad.py +256 -0
- nuitka/plugins/standard/DillPlugin.py +42 -134
- nuitka/plugins/standard/DllFilesPlugin.py +125 -42
- nuitka/plugins/standard/EnumPlugin.py +19 -17
- nuitka/plugins/standard/EventletPlugin.py +19 -17
- nuitka/plugins/standard/GeventPlugin.py +19 -17
- nuitka/plugins/standard/GiPlugin.py +44 -28
- nuitka/plugins/standard/GlfwPlugin.py +20 -17
- nuitka/plugins/standard/ImplicitImports.py +403 -54
- nuitka/plugins/standard/KivyPlugin.py +24 -20
- nuitka/plugins/standard/MatplotlibPlugin.py +99 -42
- nuitka/plugins/standard/MultiprocessingPlugin.py +35 -39
- nuitka/plugins/standard/NumpyPlugin.py +19 -17
- nuitka/plugins/standard/OptionsNannyPlugin.py +48 -76
- nuitka/plugins/standard/PbrPlugin.py +21 -19
- nuitka/plugins/standard/PkgResourcesPlugin.py +34 -23
- nuitka/plugins/standard/PlaywrightPlugin.py +184 -0
- nuitka/plugins/standard/PmwPlugin.py +30 -27
- nuitka/plugins/standard/PySidePyQtPlugin.py +82 -80
- nuitka/plugins/standard/PywebViewPlugin.py +19 -17
- nuitka/plugins/standard/SpacyPlugin.py +136 -0
- nuitka/plugins/standard/TensorflowPlugin.py +20 -17
- nuitka/plugins/standard/TkinterPlugin.py +102 -108
- nuitka/plugins/standard/TorchPlugin.py +20 -17
- nuitka/plugins/standard/TransformersPlugin.py +90 -231
- nuitka/plugins/standard/TrioPlugin.py +18 -15
- nuitka/plugins/standard/UpxPlugin.py +21 -19
- nuitka/plugins/standard/__init__.py +5 -4
- nuitka/plugins/standard/standard.nuitka-package.config.yml +3925 -1293
- nuitka/plugins/standard/stdlib2.nuitka-package.config.yml +14 -14
- nuitka/plugins/standard/stdlib3.nuitka-package.config.yml +154 -66
- nuitka/reports/CompilationReportReader.py +79 -0
- nuitka/reports/LicenseReport.rst.j2 +21 -21
- nuitka/reports/Reports.py +363 -76
- nuitka/reports/__init__.py +5 -4
- nuitka/specs/BuiltinBytesOperationSpecs.py +18 -17
- nuitka/specs/BuiltinDictOperationSpecs.py +18 -17
- nuitka/specs/BuiltinListOperationSpecs.py +18 -17
- nuitka/specs/BuiltinParameterSpecs.py +35 -21
- nuitka/specs/BuiltinStrOperationSpecs.py +19 -18
- nuitka/specs/BuiltinTypeOperationSpecs.py +18 -18
- nuitka/specs/BuiltinUnicodeOperationSpecs.py +18 -17
- nuitka/specs/HardImportSpecs.py +74 -22
- nuitka/specs/ParameterSpecs.py +60 -45
- nuitka/specs/__init__.py +5 -4
- nuitka/tools/Basics.py +20 -18
- nuitka/tools/__init__.py +5 -4
- nuitka/tools/commercial/__init__.py +7 -6
- nuitka/tools/data_composer/DataComposer.py +78 -62
- nuitka/tools/data_composer/__init__.py +5 -4
- nuitka/tools/data_composer/__main__.py +18 -17
- nuitka/tools/environments/CreateEnvironment.py +20 -17
- nuitka/tools/environments/Virtualenv.py +60 -32
- nuitka/tools/environments/__init__.py +5 -4
- nuitka/tools/general/__init__.py +5 -4
- nuitka/tools/general/dll_report/__init__.py +5 -4
- nuitka/tools/general/dll_report/__main__.py +29 -22
- nuitka/tools/general/find_module/FindModuleCode.py +35 -22
- nuitka/tools/general/find_module/__init__.py +5 -4
- nuitka/tools/onefile_compressor/OnefileCompressor.py +213 -131
- nuitka/tools/onefile_compressor/__init__.py +5 -4
- nuitka/tools/onefile_compressor/__main__.py +18 -17
- nuitka/tools/podman/Podman.py +19 -17
- nuitka/tools/podman/__init__.py +5 -4
- nuitka/tools/podman/__main__.py +35 -19
- nuitka/tools/profiler/__init__.py +5 -4
- nuitka/tools/profiler/__main__.py +18 -17
- nuitka/tools/scanning/DisplayPackageDLLs.py +47 -22
- nuitka/tools/scanning/DisplayPackageData.py +31 -19
- nuitka/tools/scanning/__init__.py +5 -4
- nuitka/tools/specialize/CTypeDescriptions.py +251 -80
- nuitka/tools/specialize/Common.py +18 -17
- nuitka/tools/specialize/SpecializeC.py +248 -82
- nuitka/tools/specialize/SpecializePython.py +108 -45
- nuitka/tools/specialize/__init__.py +5 -4
- nuitka/tools/testing/Common.py +175 -114
- nuitka/tools/testing/Constructs.py +19 -17
- nuitka/tools/testing/OutputComparison.py +54 -18
- nuitka/tools/testing/Pythons.py +19 -18
- nuitka/tools/testing/RuntimeTracing.py +20 -19
- nuitka/tools/testing/SearchModes.py +26 -20
- nuitka/tools/testing/Valgrind.py +19 -17
- nuitka/tools/testing/__init__.py +5 -4
- nuitka/tools/testing/check_reference_counts/__init__.py +5 -4
- nuitka/tools/testing/check_reference_counts/__main__.py +18 -18
- nuitka/tools/testing/compare_with_cpython/__init__.py +5 -4
- nuitka/tools/testing/compare_with_cpython/__main__.py +39 -30
- nuitka/tools/testing/find_sxs_modules/__init__.py +5 -4
- nuitka/tools/testing/find_sxs_modules/__main__.py +17 -17
- nuitka/tools/testing/measure_construct_performance/__init__.py +5 -4
- nuitka/tools/testing/measure_construct_performance/__main__.py +23 -33
- nuitka/tools/testing/run_nuitka_tests/__init__.py +5 -4
- nuitka/tools/testing/run_nuitka_tests/__main__.py +134 -51
- nuitka/tools/watch/AutoStage.py +145 -0
- nuitka/tools/watch/GitHub.py +113 -0
- nuitka/tools/watch/__init__.py +5 -4
- nuitka/tools/watch/__main__.py +322 -91
- nuitka/tree/Building.py +184 -182
- nuitka/tree/ComplexCallHelperFunctions.py +84 -58
- nuitka/tree/Extractions.py +19 -17
- nuitka/tree/InternalModule.py +29 -20
- nuitka/tree/Operations.py +19 -17
- nuitka/tree/ReformulationAssertStatements.py +51 -31
- nuitka/tree/ReformulationAssignmentStatements.py +96 -91
- nuitka/tree/ReformulationBooleanExpressions.py +19 -17
- nuitka/tree/ReformulationCallExpressions.py +20 -18
- nuitka/tree/ReformulationClasses.py +45 -39
- nuitka/tree/ReformulationClasses3.py +239 -116
- nuitka/tree/ReformulationComparisonExpressions.py +29 -35
- nuitka/tree/ReformulationContractionExpressions.py +58 -55
- nuitka/tree/ReformulationDictionaryCreation.py +41 -35
- nuitka/tree/ReformulationExecStatements.py +42 -39
- nuitka/tree/ReformulationForLoopStatements.py +30 -34
- nuitka/tree/ReformulationFunctionStatements.py +59 -55
- nuitka/tree/ReformulationImportStatements.py +34 -29
- nuitka/tree/ReformulationLambdaExpressions.py +23 -24
- nuitka/tree/ReformulationMatchStatements.py +246 -92
- nuitka/tree/ReformulationMultidist.py +22 -18
- nuitka/tree/ReformulationNamespacePackages.py +55 -46
- nuitka/tree/ReformulationPrintStatements.py +23 -24
- nuitka/tree/ReformulationSequenceCreation.py +50 -49
- nuitka/tree/ReformulationSubscriptExpressions.py +19 -17
- nuitka/tree/ReformulationTryExceptStatements.py +19 -17
- nuitka/tree/ReformulationTryFinallyStatements.py +34 -17
- nuitka/tree/ReformulationWhileLoopStatements.py +19 -17
- nuitka/tree/ReformulationWithStatements.py +39 -41
- nuitka/tree/ReformulationYieldExpressions.py +44 -24
- nuitka/tree/SourceHandling.py +76 -31
- nuitka/tree/SyntaxErrors.py +19 -17
- nuitka/tree/TreeHelpers.py +33 -20
- nuitka/tree/VariableClosure.py +35 -39
- nuitka/tree/__init__.py +5 -4
- nuitka/utils/AppDirs.py +41 -20
- nuitka/utils/CStrings.py +66 -21
- nuitka/utils/CommandLineOptions.py +111 -22
- nuitka/utils/Distributions.py +445 -54
- nuitka/utils/Download.py +89 -57
- nuitka/utils/Execution.py +102 -58
- nuitka/utils/FileOperations.py +357 -128
- nuitka/utils/Hashing.py +55 -33
- nuitka/utils/Images.py +26 -19
- nuitka/utils/Importing.py +119 -37
- nuitka/utils/InlineCopies.py +52 -0
- nuitka/utils/InstalledPythons.py +85 -75
- nuitka/utils/InstanceCounters.py +20 -17
- nuitka/utils/Jinja2.py +30 -22
- nuitka/utils/Json.py +21 -19
- nuitka/utils/MacOSApp.py +26 -18
- nuitka/utils/MemoryUsage.py +20 -18
- nuitka/utils/ModuleNames.py +42 -26
- nuitka/utils/PackageResources.py +44 -0
- nuitka/utils/ReExecute.py +50 -28
- nuitka/utils/Rest.py +20 -17
- nuitka/utils/SharedLibraries.py +161 -75
- nuitka/utils/Shebang.py +20 -17
- nuitka/utils/Signing.py +63 -18
- nuitka/utils/SlotMetaClasses.py +57 -0
- nuitka/utils/StaticLibraries.py +83 -56
- nuitka/utils/ThreadedExecutor.py +18 -17
- nuitka/utils/Timing.py +22 -20
- nuitka/utils/Utils.py +132 -25
- nuitka/utils/WindowsFileUsage.py +22 -20
- nuitka/utils/WindowsResources.py +25 -18
- nuitka/utils/Yaml.py +62 -24
- nuitka/utils/__init__.py +5 -4
- Nuitka_winsvc-1.8.dist-info/RECORD +0 -905
- nuitka/build/inline_copy/tqdm/tqdm/_tqdm_gui.py +0 -9
- nuitka/build/inline_copy/tqdm/tqdm/gui.py +0 -191
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/LICENSE.txt +0 -0
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/entry_points.txt +0 -0
- {Nuitka_winsvc-1.8.dist-info → Nuitka_winsvc-2.5.1.dist-info}/top_level.txt +0 -0
|
@@ -1,20 +1,5 @@
|
|
|
1
|
-
// Copyright
|
|
2
|
-
|
|
3
|
-
// Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
4
|
-
// integrates with CPython, but also works on its own.
|
|
5
|
-
//
|
|
6
|
-
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
-
// you may not use this file except in compliance with the License.
|
|
8
|
-
// You may obtain a copy of the License at
|
|
9
|
-
//
|
|
10
|
-
// http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
-
//
|
|
12
|
-
// Unless required by applicable law or agreed to in writing, software
|
|
13
|
-
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
-
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
-
// See the License for the specific language governing permissions and
|
|
16
|
-
// limitations under the License.
|
|
17
|
-
//
|
|
1
|
+
// Copyright 2024, Kay Hayen, mailto:kay.hayen@gmail.com find license text at end of file
|
|
2
|
+
|
|
18
3
|
/* The main program for onefile bootstrap.
|
|
19
4
|
*
|
|
20
5
|
* It needs to unpack the attached files and and then loads and executes
|
|
@@ -59,9 +44,7 @@
|
|
|
59
44
|
#include "stdbool.h"
|
|
60
45
|
#endif
|
|
61
46
|
|
|
62
|
-
#if defined(_WIN32)
|
|
63
|
-
#include <imagehlp.h>
|
|
64
|
-
#else
|
|
47
|
+
#if !defined(_WIN32)
|
|
65
48
|
#include <dirent.h>
|
|
66
49
|
#include <signal.h>
|
|
67
50
|
#include <sys/stat.h>
|
|
@@ -78,16 +61,13 @@
|
|
|
78
61
|
#define _NUITKA_EXPERIMENTAL_DEBUG_ONEFILE_HANDLING
|
|
79
62
|
#define _NUITKA_ONEFILE_TEMP_BOOL 0
|
|
80
63
|
#define _NUITKA_ONEFILE_CHILD_GRACE_TIME_INT 5000
|
|
81
|
-
#define _NUITKA_ONEFILE_TEMP_SPEC "
|
|
64
|
+
#define _NUITKA_ONEFILE_TEMP_SPEC "{TEMP}/onefile_{PID}_{TIME}"
|
|
82
65
|
|
|
83
|
-
#define _NUITKA_EXPERIMENTAL_DEBUG_AUTO_UPDATE
|
|
84
66
|
#define _NUITKA_AUTO_UPDATE_BOOL 1
|
|
67
|
+
#define _NUITKA_AUTO_UPDATE_DEBUG_BOOL 1
|
|
85
68
|
#define _NUITKA_AUTO_UPDATE_URL_SPEC "https://..."
|
|
86
69
|
|
|
87
|
-
#
|
|
88
|
-
#define _NUITKA_PAYLOAD_FROM_MACOS_SECTION
|
|
89
|
-
#endif
|
|
90
|
-
|
|
70
|
+
#define _NUITKA_ATTACH_CONSOLE_WINDOW 1
|
|
91
71
|
#endif
|
|
92
72
|
|
|
93
73
|
#if _NUITKA_ONEFILE_COMPRESSION_BOOL == 1
|
|
@@ -111,15 +91,25 @@
|
|
|
111
91
|
#include "decompress/zstd_decompress_block.c"
|
|
112
92
|
#endif
|
|
113
93
|
|
|
114
|
-
// Some handy macro definitions, e.g. unlikely
|
|
94
|
+
// Some handy macro definitions, e.g. unlikely and NUITKA_MAY_BE_UNUSED
|
|
115
95
|
#include "nuitka/hedley.h"
|
|
116
96
|
#define likely(x) HEDLEY_LIKELY(x)
|
|
117
97
|
#define unlikely(x) HEDLEY_UNLIKELY(x)
|
|
98
|
+
#ifdef __GNUC__
|
|
99
|
+
#define NUITKA_MAY_BE_UNUSED __attribute__((__unused__))
|
|
100
|
+
#else
|
|
101
|
+
#define NUITKA_MAY_BE_UNUSED
|
|
102
|
+
#endif
|
|
118
103
|
|
|
119
104
|
#include "HelpersChecksumTools.c"
|
|
105
|
+
#include "HelpersEnvironmentVariablesSystem.c"
|
|
120
106
|
#include "HelpersFilesystemPaths.c"
|
|
121
107
|
#include "HelpersSafeStrings.c"
|
|
122
108
|
|
|
109
|
+
#if defined(_WIN32) && (defined(_NUITKA_ATTACH_CONSOLE_WINDOW) || defined(_NUITKA_HIDE_CONSOLE_WINDOW))
|
|
110
|
+
#include "HelpersConsole.c"
|
|
111
|
+
#endif
|
|
112
|
+
|
|
123
113
|
// For tracing outputs if enabled at compile time.
|
|
124
114
|
#include "nuitka/tracing.h"
|
|
125
115
|
|
|
@@ -134,39 +124,24 @@ static void fatalIOError(char const *message, error_code_t error_code) {
|
|
|
134
124
|
}
|
|
135
125
|
|
|
136
126
|
// Failure to expand the template for where to extract to.
|
|
137
|
-
static void fatalErrorTempFiles(void) {
|
|
127
|
+
static void fatalErrorTempFiles(void) {
|
|
128
|
+
fatalIOError("Error, couldn't unpack file to target path.", getLastErrorCode());
|
|
129
|
+
}
|
|
138
130
|
|
|
139
131
|
#if _NUITKA_ONEFILE_COMPRESSION_BOOL == 1
|
|
140
132
|
static void fatalErrorAttachedData(void) { fatalError("Error, couldn't decode attached data."); }
|
|
141
133
|
#endif
|
|
142
134
|
|
|
143
|
-
static void fatalErrorHeaderAttachedData(void) { fatalError("Error,
|
|
144
|
-
|
|
145
|
-
// Left over data in attached payload should not happen.
|
|
146
|
-
static void fatalErrorReadAttachedData(void) { fatalError("Error, couldn't read attached data."); }
|
|
135
|
+
static void fatalErrorHeaderAttachedData(void) { fatalError("Error, couldn't find attached data header."); }
|
|
147
136
|
|
|
148
137
|
// Out of memory error.
|
|
138
|
+
#if !defined(_WIN32) || _NUITKA_ONEFILE_COMPRESSION_BOOL == 1
|
|
149
139
|
static void fatalErrorMemory(void) { fatalError("Error, couldn't allocate memory."); }
|
|
140
|
+
#endif
|
|
150
141
|
|
|
151
142
|
// Could not launch child process.
|
|
152
143
|
static void fatalErrorChild(char const *message, error_code_t error_code) { fatalIOError(message, error_code); }
|
|
153
144
|
|
|
154
|
-
#if defined(_WIN32)
|
|
155
|
-
static void appendWCharSafeW(wchar_t *target, wchar_t c, size_t buffer_size) {
|
|
156
|
-
while (*target != 0) {
|
|
157
|
-
target++;
|
|
158
|
-
buffer_size -= 1;
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
if (buffer_size < 1) {
|
|
162
|
-
abort();
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
*target++ = c;
|
|
166
|
-
*target = 0;
|
|
167
|
-
}
|
|
168
|
-
#endif
|
|
169
|
-
|
|
170
145
|
static void fatalErrorTempFileCreate(filename_char_t const *filename) {
|
|
171
146
|
fprintf(stderr, "Error, failed to open '" FILENAME_FORMAT_STR "' for writing.\n", filename);
|
|
172
147
|
exit(2);
|
|
@@ -187,45 +162,23 @@ static FILE_HANDLE createFileForWritingChecked(filename_char_t const *filename)
|
|
|
187
162
|
return result;
|
|
188
163
|
}
|
|
189
164
|
|
|
190
|
-
static int getMyPid(void) {
|
|
191
|
-
#if defined(_WIN32)
|
|
192
|
-
return GetCurrentProcessId();
|
|
193
|
-
#else
|
|
194
|
-
return getpid();
|
|
195
|
-
#endif
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
static void setEnvironVar(char const *var_name, char const *value) {
|
|
199
|
-
#if defined(_WIN32)
|
|
200
|
-
SetEnvironmentVariable("NUITKA_ONEFILE_PARENT", value);
|
|
201
|
-
#else
|
|
202
|
-
setenv(var_name, value, 1);
|
|
203
|
-
#endif
|
|
204
|
-
}
|
|
205
|
-
|
|
206
165
|
static unsigned char const *payload_data = NULL;
|
|
207
166
|
static unsigned char const *payload_current = NULL;
|
|
208
|
-
static
|
|
167
|
+
static unsigned long long payload_size = 0;
|
|
209
168
|
|
|
210
|
-
#ifdef
|
|
169
|
+
#ifdef __APPLE__
|
|
211
170
|
|
|
212
171
|
#include <mach-o/getsect.h>
|
|
213
172
|
#include <mach-o/ldsyms.h>
|
|
214
173
|
|
|
215
|
-
static
|
|
174
|
+
static void initPayloadData(void) {
|
|
216
175
|
const struct mach_header *header = &_mh_execute_header;
|
|
217
176
|
|
|
218
177
|
unsigned long section_size;
|
|
219
178
|
|
|
220
|
-
|
|
221
|
-
stream_end_pos = (size_t)section_size;
|
|
222
|
-
|
|
223
|
-
return result;
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
static void initPayloadData(void) {
|
|
227
|
-
payload_data = findMacOSBinarySection();
|
|
179
|
+
payload_data = getsectiondata(header, "payload", "payload", §ion_size);
|
|
228
180
|
payload_current = payload_data;
|
|
181
|
+
payload_size = section_size;
|
|
229
182
|
}
|
|
230
183
|
|
|
231
184
|
static void closePayloadData(void) {}
|
|
@@ -233,9 +186,12 @@ static void closePayloadData(void) {}
|
|
|
233
186
|
#elif defined(_WIN32)
|
|
234
187
|
|
|
235
188
|
static void initPayloadData(void) {
|
|
236
|
-
|
|
237
|
-
|
|
189
|
+
HRSRC windows_resource = FindResource(NULL, MAKEINTRESOURCE(27), RT_RCDATA);
|
|
190
|
+
|
|
191
|
+
payload_data = (const unsigned char *)LockResource(LoadResource(NULL, windows_resource));
|
|
238
192
|
payload_current = payload_data;
|
|
193
|
+
|
|
194
|
+
payload_size = SizeofResource(NULL, windows_resource);
|
|
239
195
|
}
|
|
240
196
|
|
|
241
197
|
// Note: it appears unlocking the resource is not actually foreseen.
|
|
@@ -296,10 +252,6 @@ static void releaseZSTD(void) {
|
|
|
296
252
|
|
|
297
253
|
#endif
|
|
298
254
|
|
|
299
|
-
#if _NUITKA_ONEFILE_COMPRESSION_BOOL == 1
|
|
300
|
-
static size_t getPosition(void) { return payload_current - payload_data; }
|
|
301
|
-
#endif
|
|
302
|
-
|
|
303
255
|
static void readChunk(void *buffer, size_t size) {
|
|
304
256
|
// printf("Reading %d\n", size);
|
|
305
257
|
|
|
@@ -307,21 +259,8 @@ static void readChunk(void *buffer, size_t size) {
|
|
|
307
259
|
payload_current += size;
|
|
308
260
|
}
|
|
309
261
|
|
|
310
|
-
#if _NUITKA_ONEFILE_COMPRESSION_BOOL == 1
|
|
311
|
-
static void const *readChunkPointer(size_t size) {
|
|
312
|
-
// printf("Reading %d\n", size);
|
|
313
|
-
|
|
314
|
-
void const *result = payload_current;
|
|
315
|
-
payload_current += size;
|
|
316
|
-
|
|
317
|
-
return result;
|
|
318
|
-
}
|
|
319
|
-
#endif
|
|
320
|
-
|
|
321
262
|
static void readPayloadChunk(void *buffer, size_t size) {
|
|
322
|
-
#if _NUITKA_ONEFILE_COMPRESSION_BOOL == 1
|
|
323
|
-
|
|
324
|
-
// bool no_payload = false;
|
|
263
|
+
#if _NUITKA_ONEFILE_COMPRESSION_BOOL == 1 && _NUITKA_ONEFILE_ARCHIVE_BOOL == 0
|
|
325
264
|
bool end_of_buffer = false;
|
|
326
265
|
|
|
327
266
|
// Loop until finished with asked chunk.
|
|
@@ -372,28 +311,7 @@ static void readPayloadChunk(void *buffer, size_t size) {
|
|
|
372
311
|
if (input.size != input.pos) {
|
|
373
312
|
fatalErrorAttachedData();
|
|
374
313
|
}
|
|
375
|
-
|
|
376
|
-
// No input available, make it available from stream respecting end.
|
|
377
|
-
size_t to_read = ZSTD_DStreamInSize();
|
|
378
|
-
size_t payload_available = stream_end_pos - getPosition();
|
|
379
|
-
|
|
380
|
-
static size_t payload_so_far = 0;
|
|
381
|
-
|
|
382
|
-
if (payload_available == 0) {
|
|
383
|
-
continue;
|
|
384
|
-
}
|
|
385
|
-
|
|
386
|
-
if (to_read > payload_available) {
|
|
387
|
-
to_read = payload_available;
|
|
388
|
-
}
|
|
389
|
-
|
|
390
|
-
input.src = readChunkPointer(to_read);
|
|
391
|
-
input.pos = 0;
|
|
392
|
-
input.size = to_read;
|
|
393
|
-
|
|
394
|
-
payload_so_far += to_read;
|
|
395
314
|
}
|
|
396
|
-
|
|
397
315
|
#else
|
|
398
316
|
readChunk(buffer, size);
|
|
399
317
|
#endif
|
|
@@ -424,6 +342,15 @@ static unsigned long long readPayloadSizeValue(void) {
|
|
|
424
342
|
return result;
|
|
425
343
|
}
|
|
426
344
|
|
|
345
|
+
#if _NUITKA_ONEFILE_ARCHIVE_BOOL == 1 && _NUITKA_ONEFILE_COMPRESSION_BOOL == 1
|
|
346
|
+
static unsigned long long readArchiveFileSizeValue(void) {
|
|
347
|
+
unsigned long long result;
|
|
348
|
+
readPayloadChunk(&result, sizeof(unsigned int));
|
|
349
|
+
|
|
350
|
+
return result;
|
|
351
|
+
}
|
|
352
|
+
#endif
|
|
353
|
+
|
|
427
354
|
static filename_char_t readPayloadFilenameCharacter(void) {
|
|
428
355
|
filename_char_t result;
|
|
429
356
|
|
|
@@ -450,6 +377,74 @@ static filename_char_t *readPayloadFilename(void) {
|
|
|
450
377
|
return buffer;
|
|
451
378
|
}
|
|
452
379
|
|
|
380
|
+
static void writeContainedFile(FILE_HANDLE target_file, unsigned long long file_size) {
|
|
381
|
+
#if _NUITKA_ONEFILE_ARCHIVE_BOOL == 1
|
|
382
|
+
|
|
383
|
+
#if _NUITKA_ONEFILE_COMPRESSION_BOOL == 0
|
|
384
|
+
if (target_file != FILE_HANDLE_NULL) {
|
|
385
|
+
if (writeFileChunk(target_file, payload_current, file_size) == false) {
|
|
386
|
+
fatalErrorTempFiles();
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
payload_current += file_size;
|
|
391
|
+
#else
|
|
392
|
+
if (target_file != FILE_HANDLE_NULL) {
|
|
393
|
+
|
|
394
|
+
// Nothing available, make sure to make it available from existing input.
|
|
395
|
+
while (input.pos < input.size) {
|
|
396
|
+
// printf("available input %ld %ld\n", input.pos, input.size);
|
|
397
|
+
|
|
398
|
+
output.pos = 0;
|
|
399
|
+
output.size = ZSTD_DStreamOutSize();
|
|
400
|
+
|
|
401
|
+
size_t const ret = ZSTD_decompressStream(dest_ctx, &output, &input);
|
|
402
|
+
if (ZSTD_isError(ret)) {
|
|
403
|
+
fatalErrorAttachedData();
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
// printf("available output %ld %ld\n", output.pos, output.size);
|
|
407
|
+
|
|
408
|
+
if (writeFileChunk(target_file, (char const *)output.dst, output.pos) == false) {
|
|
409
|
+
fatalErrorTempFiles();
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
// printf("made output %ld %lld\n", output.pos, file_size);
|
|
413
|
+
file_size -= output.pos;
|
|
414
|
+
assert(file_size >= 0);
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
assert(file_size == 0);
|
|
418
|
+
}
|
|
419
|
+
#endif
|
|
420
|
+
#else
|
|
421
|
+
while (file_size > 0) {
|
|
422
|
+
static char chunk[32768];
|
|
423
|
+
|
|
424
|
+
long chunk_size;
|
|
425
|
+
|
|
426
|
+
// Doing min manually, as otherwise the compiler is confused from types.
|
|
427
|
+
if (file_size <= sizeof(chunk)) {
|
|
428
|
+
chunk_size = (long)file_size;
|
|
429
|
+
} else {
|
|
430
|
+
chunk_size = sizeof(chunk);
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
readPayloadChunk(chunk, chunk_size);
|
|
434
|
+
|
|
435
|
+
if (target_file != FILE_HANDLE_NULL) {
|
|
436
|
+
if (writeFileChunk(target_file, chunk, chunk_size) == false) {
|
|
437
|
+
fatalErrorTempFiles();
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
file_size -= chunk_size;
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
assert(file_size == 0);
|
|
445
|
+
#endif
|
|
446
|
+
}
|
|
447
|
+
|
|
453
448
|
// Zero means, not yet created, created unsuccessfully, terminated already.
|
|
454
449
|
#if defined(_WIN32)
|
|
455
450
|
HANDLE handle_process = 0;
|
|
@@ -473,7 +468,7 @@ static bool createDirectory(filename_char_t const *path) {
|
|
|
473
468
|
#if defined(_WIN32)
|
|
474
469
|
if (created_dir_count == 0) {
|
|
475
470
|
filename_char_t home_path[4096];
|
|
476
|
-
wchar_t *pattern = L"
|
|
471
|
+
wchar_t *pattern = L"{HOME}";
|
|
477
472
|
|
|
478
473
|
bool_res = expandTemplatePathFilename(home_path, pattern, sizeof(payload_path) / sizeof(filename_char_t));
|
|
479
474
|
|
|
@@ -818,6 +813,96 @@ extern bool checkSplashScreen(void);
|
|
|
818
813
|
#endif
|
|
819
814
|
#endif
|
|
820
815
|
|
|
816
|
+
#ifdef _WIN32
|
|
817
|
+
|
|
818
|
+
static bool containsWStringAny(wchar_t const *source, wchar_t const *characters) {
|
|
819
|
+
while (*characters) {
|
|
820
|
+
if (wcschr(source, *characters) != NULL) {
|
|
821
|
+
return true;
|
|
822
|
+
}
|
|
823
|
+
|
|
824
|
+
characters++;
|
|
825
|
+
}
|
|
826
|
+
|
|
827
|
+
return false;
|
|
828
|
+
}
|
|
829
|
+
|
|
830
|
+
static wchar_t *getCommandLineForChildProcess(void) {
|
|
831
|
+
|
|
832
|
+
wchar_t *orig_command_line = GetCommandLineW();
|
|
833
|
+
#if defined(_NUITKA_EXPERIMENTAL_DEBUG_ONEFILE_HANDLING)
|
|
834
|
+
wprintf(L"Command line was '%ls'\n", orig_command_line);
|
|
835
|
+
#endif
|
|
836
|
+
|
|
837
|
+
int argc;
|
|
838
|
+
LPWSTR *argv = CommandLineToArgvW(orig_command_line, &argc);
|
|
839
|
+
assert(argv != NULL);
|
|
840
|
+
assert(argc > 0);
|
|
841
|
+
|
|
842
|
+
static wchar_t result[32768];
|
|
843
|
+
result[0] = 0;
|
|
844
|
+
|
|
845
|
+
argv[0] = getBinaryPath();
|
|
846
|
+
|
|
847
|
+
for (int i = 0; i < argc; i++) {
|
|
848
|
+
if (i >= 1) {
|
|
849
|
+
appendWCharSafeW(result, L' ', sizeof(result) / sizeof(wchar_t));
|
|
850
|
+
}
|
|
851
|
+
|
|
852
|
+
bool needs_quote = containsWStringAny(argv[i], L" \t\n\v\"");
|
|
853
|
+
|
|
854
|
+
#if defined(_NUITKA_EXPERIMENTAL_DEBUG_ONEFILE_HANDLING)
|
|
855
|
+
wprintf(L"Command line arg %d was '%ls' needs quoting %ls\n", i, argv[i], needs_quote ? L"yes" : L"no");
|
|
856
|
+
#endif
|
|
857
|
+
|
|
858
|
+
if (needs_quote) {
|
|
859
|
+
appendWCharSafeW(result, L'"', sizeof(result) / sizeof(wchar_t));
|
|
860
|
+
|
|
861
|
+
wchar_t const *current = argv[i];
|
|
862
|
+
|
|
863
|
+
for (;;) {
|
|
864
|
+
int backslash_count = 0;
|
|
865
|
+
|
|
866
|
+
while (*current == L'\\') {
|
|
867
|
+
current++;
|
|
868
|
+
backslash_count += 1;
|
|
869
|
+
}
|
|
870
|
+
|
|
871
|
+
if (*current == 0) {
|
|
872
|
+
for (int j = 0; j < backslash_count * 2; j++) {
|
|
873
|
+
appendWCharSafeW(result, L'\\', sizeof(result) / sizeof(wchar_t));
|
|
874
|
+
}
|
|
875
|
+
|
|
876
|
+
break;
|
|
877
|
+
} else if (*current == L'"') {
|
|
878
|
+
for (int j = 0; j < backslash_count * 2 + 1; j++) {
|
|
879
|
+
appendWCharSafeW(result, L'\\', sizeof(result) / sizeof(wchar_t));
|
|
880
|
+
}
|
|
881
|
+
} else {
|
|
882
|
+
for (int j = 0; j < backslash_count; j++) {
|
|
883
|
+
appendWCharSafeW(result, L'\\', sizeof(result) / sizeof(wchar_t));
|
|
884
|
+
}
|
|
885
|
+
}
|
|
886
|
+
|
|
887
|
+
appendWCharSafeW(result, *current, sizeof(result) / sizeof(wchar_t));
|
|
888
|
+
|
|
889
|
+
current++;
|
|
890
|
+
}
|
|
891
|
+
|
|
892
|
+
appendWCharSafeW(result, L'"', sizeof(result) / sizeof(wchar_t));
|
|
893
|
+
|
|
894
|
+
} else {
|
|
895
|
+
appendWStringSafeW(result, argv[i], sizeof(result) / sizeof(wchar_t));
|
|
896
|
+
}
|
|
897
|
+
}
|
|
898
|
+
|
|
899
|
+
#if defined(_NUITKA_EXPERIMENTAL_DEBUG_ONEFILE_HANDLING)
|
|
900
|
+
wprintf(L"Command line composed to '%ls'\n", result);
|
|
901
|
+
#endif
|
|
902
|
+
return result;
|
|
903
|
+
}
|
|
904
|
+
#endif
|
|
905
|
+
|
|
821
906
|
#ifdef _NUITKA_WINMAIN_ENTRY_POINT
|
|
822
907
|
int __stdcall wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, wchar_t *lpCmdLine, int nCmdShow) {
|
|
823
908
|
int argc = __argc;
|
|
@@ -982,11 +1067,20 @@ int wmain(int argc, wchar_t** argv)
|
|
|
982
1067
|
int startup(int argc, wchar_t **argv) {
|
|
983
1068
|
#else
|
|
984
1069
|
int wmain(int argc, wchar_t **argv) {
|
|
1070
|
+
#if defined(_NUITKA_HIDE_CONSOLE_WINDOW)
|
|
1071
|
+
hideConsoleIfSpawned();
|
|
1072
|
+
#endif
|
|
985
1073
|
#endif
|
|
986
1074
|
#else
|
|
987
1075
|
int main(int argc, char **argv) {
|
|
988
1076
|
#endif
|
|
989
1077
|
#endif
|
|
1078
|
+
// Attach to the parent console respecting redirection only, otherwise we cannot
|
|
1079
|
+
// even output traces.
|
|
1080
|
+
#if defined(_WIN32) && defined(_NUITKA_ATTACH_CONSOLE_WINDOW)
|
|
1081
|
+
inheritAttachedConsole();
|
|
1082
|
+
#endif
|
|
1083
|
+
|
|
990
1084
|
NUITKA_PRINT_TIMING("ONEFILE: Entered main().");
|
|
991
1085
|
|
|
992
1086
|
filename_char_t const *pattern = FILENAME_EMPTY_STR _NUITKA_ONEFILE_TEMP_SPEC;
|
|
@@ -1011,7 +1105,7 @@ int main(int argc, char **argv) {
|
|
|
1011
1105
|
signal(SIGTERM, ourConsoleCtrlHandler);
|
|
1012
1106
|
#endif
|
|
1013
1107
|
|
|
1014
|
-
#
|
|
1108
|
+
#if _NUITKA_AUTO_UPDATE_BOOL
|
|
1015
1109
|
checkAutoUpdates();
|
|
1016
1110
|
#endif
|
|
1017
1111
|
|
|
@@ -1019,20 +1113,18 @@ int main(int argc, char **argv) {
|
|
|
1019
1113
|
|
|
1020
1114
|
initPayloadData();
|
|
1021
1115
|
|
|
1022
|
-
#if !defined(
|
|
1116
|
+
#if !defined(__APPLE__) && !defined(_WIN32)
|
|
1023
1117
|
const off_t size_end_offset = exe_file_mapped.file_size;
|
|
1024
1118
|
|
|
1025
1119
|
NUITKA_PRINT_TIMING("ONEFILE: Determining payload start position.");
|
|
1026
1120
|
|
|
1027
|
-
unsigned long long
|
|
1121
|
+
assert(sizeof(payload_size) == sizeof(unsigned long long));
|
|
1028
1122
|
memcpy(&payload_size, payload_data + size_end_offset - sizeof(payload_size), sizeof(payload_size));
|
|
1029
1123
|
|
|
1030
1124
|
unsigned long long start_pos = size_end_offset - sizeof(payload_size) - payload_size;
|
|
1031
1125
|
|
|
1032
1126
|
payload_current += start_pos;
|
|
1033
1127
|
payload_data += start_pos;
|
|
1034
|
-
|
|
1035
|
-
stream_end_pos = size_end_offset - sizeof(payload_size) - start_pos;
|
|
1036
1128
|
#endif
|
|
1037
1129
|
|
|
1038
1130
|
NUITKA_PRINT_TIMING("ONEFILE: Checking header for compression.");
|
|
@@ -1044,12 +1136,20 @@ int main(int argc, char **argv) {
|
|
|
1044
1136
|
fatalErrorHeaderAttachedData();
|
|
1045
1137
|
}
|
|
1046
1138
|
|
|
1139
|
+
NUITKA_PRINT_TIMING("ONEFILE: Header is OK.");
|
|
1140
|
+
|
|
1047
1141
|
// The 'X' stands for no compression, 'Y' is compressed, handle that.
|
|
1048
1142
|
#if _NUITKA_ONEFILE_COMPRESSION_BOOL == 1
|
|
1049
1143
|
if (header[2] != 'Y') {
|
|
1050
1144
|
fatalErrorHeaderAttachedData();
|
|
1051
1145
|
}
|
|
1052
1146
|
initZSTD();
|
|
1147
|
+
|
|
1148
|
+
input.src = payload_current;
|
|
1149
|
+
input.pos = 0;
|
|
1150
|
+
input.size = payload_size;
|
|
1151
|
+
|
|
1152
|
+
assert(payload_size > 0);
|
|
1053
1153
|
#else
|
|
1054
1154
|
if (header[2] != 'X') {
|
|
1055
1155
|
fatalErrorHeaderAttachedData();
|
|
@@ -1059,8 +1159,6 @@ int main(int argc, char **argv) {
|
|
|
1059
1159
|
static filename_char_t first_filename[1024] = {0};
|
|
1060
1160
|
|
|
1061
1161
|
#if _NUITKA_ONEFILE_SPLASH_SCREEN
|
|
1062
|
-
NUITKA_PRINT_TIMING("ONEFILE: Splash screen.");
|
|
1063
|
-
|
|
1064
1162
|
initSplashScreen();
|
|
1065
1163
|
#endif
|
|
1066
1164
|
|
|
@@ -1134,6 +1232,20 @@ int main(int argc, char **argv) {
|
|
|
1134
1232
|
}
|
|
1135
1233
|
#endif
|
|
1136
1234
|
|
|
1235
|
+
#if _NUITKA_ONEFILE_ARCHIVE_BOOL == 1
|
|
1236
|
+
#if _NUITKA_ONEFILE_COMPRESSION_BOOL == 1
|
|
1237
|
+
uint32_t contained_archive_file_size = readArchiveFileSizeValue();
|
|
1238
|
+
|
|
1239
|
+
input.src = payload_current;
|
|
1240
|
+
input.pos = 0;
|
|
1241
|
+
input.size = contained_archive_file_size;
|
|
1242
|
+
|
|
1243
|
+
output.pos = 0;
|
|
1244
|
+
output.size = 0;
|
|
1245
|
+
|
|
1246
|
+
payload_current += contained_archive_file_size;
|
|
1247
|
+
#endif
|
|
1248
|
+
#endif
|
|
1137
1249
|
FILE_HANDLE target_file = FILE_HANDLE_NULL;
|
|
1138
1250
|
|
|
1139
1251
|
if (needs_write) {
|
|
@@ -1141,34 +1253,7 @@ int main(int argc, char **argv) {
|
|
|
1141
1253
|
target_file = createFileForWritingChecked(target_path);
|
|
1142
1254
|
}
|
|
1143
1255
|
|
|
1144
|
-
|
|
1145
|
-
static char chunk[32768];
|
|
1146
|
-
|
|
1147
|
-
long chunk_size;
|
|
1148
|
-
|
|
1149
|
-
// Doing min manually, as otherwise the compiler is confused from types.
|
|
1150
|
-
if (file_size <= sizeof(chunk)) {
|
|
1151
|
-
chunk_size = (long)file_size;
|
|
1152
|
-
} else {
|
|
1153
|
-
chunk_size = sizeof(chunk);
|
|
1154
|
-
}
|
|
1155
|
-
|
|
1156
|
-
// TODO: Does zstd support skipping data as well, such that we
|
|
1157
|
-
// do not have to fully decode.
|
|
1158
|
-
readPayloadChunk(chunk, chunk_size);
|
|
1159
|
-
|
|
1160
|
-
if (target_file != FILE_HANDLE_NULL) {
|
|
1161
|
-
if (writeFileChunk(target_file, chunk, chunk_size) == false) {
|
|
1162
|
-
fatalErrorTempFiles();
|
|
1163
|
-
}
|
|
1164
|
-
}
|
|
1165
|
-
|
|
1166
|
-
file_size -= chunk_size;
|
|
1167
|
-
}
|
|
1168
|
-
|
|
1169
|
-
if (file_size != 0) {
|
|
1170
|
-
fatalErrorReadAttachedData();
|
|
1171
|
-
}
|
|
1256
|
+
writeContainedFile(target_file, file_size);
|
|
1172
1257
|
|
|
1173
1258
|
#if !defined(_WIN32) && !defined(__MSYS__)
|
|
1174
1259
|
if ((file_flags & 1) && (target_file != FILE_HANDLE_NULL)) {
|
|
@@ -1212,7 +1297,7 @@ int main(int argc, char **argv) {
|
|
|
1212
1297
|
|
|
1213
1298
|
closePayloadData();
|
|
1214
1299
|
|
|
1215
|
-
#
|
|
1300
|
+
#if _NUITKA_AUTO_UPDATE_BOOL
|
|
1216
1301
|
exe_file_updatable = true;
|
|
1217
1302
|
#endif
|
|
1218
1303
|
|
|
@@ -1222,11 +1307,20 @@ int main(int argc, char **argv) {
|
|
|
1222
1307
|
|
|
1223
1308
|
// Pass our pid by value to the child. If we exit for some reason, re-parenting
|
|
1224
1309
|
// might change it by the time the child looks at its parent.
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1310
|
+
#if defined(_WIN32)
|
|
1311
|
+
setEnvironmentVariableFromLong("NUITKA_ONEFILE_PARENT", GetCurrentProcessId());
|
|
1312
|
+
#else
|
|
1313
|
+
setEnvironmentVariableFromLong("NUITKA_ONEFILE_PARENT", (long)getpid());
|
|
1314
|
+
#endif
|
|
1315
|
+
|
|
1316
|
+
#if defined(_WIN32)
|
|
1317
|
+
filename_char_t const *binary_filename = getBinaryFilenameWideChars(false);
|
|
1318
|
+
#else
|
|
1319
|
+
filename_char_t const *binary_filename = getBinaryFilenameHostEncoded(false);
|
|
1320
|
+
#endif
|
|
1321
|
+
setEnvironmentVariable("NUITKA_ONEFILE_BINARY", binary_filename);
|
|
1322
|
+
|
|
1323
|
+
setEnvironmentVariable("NUITKA_ORIGINAL_ARGV0", argv[0]);
|
|
1230
1324
|
|
|
1231
1325
|
NUITKA_PRINT_TIMING("ONEFILE: Preparing forking of slave process.");
|
|
1232
1326
|
|
|
@@ -1234,16 +1328,20 @@ int main(int argc, char **argv) {
|
|
|
1234
1328
|
|
|
1235
1329
|
STARTUPINFOW si;
|
|
1236
1330
|
memset(&si, 0, sizeof(si));
|
|
1331
|
+
si.dwFlags = STARTF_USESTDHANDLES;
|
|
1332
|
+
si.hStdInput = GetStdHandle(STD_INPUT_HANDLE);
|
|
1333
|
+
si.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
|
|
1334
|
+
si.hStdError = GetStdHandle(STD_ERROR_HANDLE);
|
|
1237
1335
|
si.cb = sizeof(si);
|
|
1238
1336
|
|
|
1239
1337
|
PROCESS_INFORMATION pi;
|
|
1240
1338
|
|
|
1241
|
-
bool_res = CreateProcessW(first_filename,
|
|
1242
|
-
|
|
1243
|
-
NULL,
|
|
1244
|
-
NULL,
|
|
1245
|
-
|
|
1246
|
-
NORMAL_PRIORITY_CLASS,
|
|
1339
|
+
bool_res = CreateProcessW(first_filename, // application name
|
|
1340
|
+
getCommandLineForChildProcess(), // command line
|
|
1341
|
+
NULL, // process attributes
|
|
1342
|
+
NULL, // thread attributes
|
|
1343
|
+
TRUE, // inherit handles
|
|
1344
|
+
NORMAL_PRIORITY_CLASS, // creation flags
|
|
1247
1345
|
NULL, NULL, &si, &pi);
|
|
1248
1346
|
|
|
1249
1347
|
NUITKA_PRINT_TIMING("ONEFILE: Started slave process.");
|
|
@@ -1302,6 +1400,10 @@ int main(int argc, char **argv) {
|
|
|
1302
1400
|
exit_code = 2;
|
|
1303
1401
|
} else if (pid == 0) {
|
|
1304
1402
|
// Child process
|
|
1403
|
+
|
|
1404
|
+
// Make sure, we use the absolute program path for argv[0]
|
|
1405
|
+
argv[0] = getBinaryPath();
|
|
1406
|
+
|
|
1305
1407
|
execv(first_filename, argv);
|
|
1306
1408
|
|
|
1307
1409
|
fatalErrorChild("Error, couldn't launch child (exec)", errno);
|
|
@@ -1328,3 +1430,18 @@ int main(int argc, char **argv) {
|
|
|
1328
1430
|
|
|
1329
1431
|
return exit_code;
|
|
1330
1432
|
}
|
|
1433
|
+
|
|
1434
|
+
// Part of "Nuitka", an optimizing Python compiler that is compatible and
|
|
1435
|
+
// integrates with CPython, but also works on its own.
|
|
1436
|
+
//
|
|
1437
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
1438
|
+
// you may not use this file except in compliance with the License.
|
|
1439
|
+
// You may obtain a copy of the License at
|
|
1440
|
+
//
|
|
1441
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
1442
|
+
//
|
|
1443
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
1444
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
1445
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1446
|
+
// See the License for the specific language governing permissions and
|
|
1447
|
+
// limitations under the License.
|