frida 16.2.1 → 16.2.2
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.
- package/BSDmakefile +6 -0
- package/Makefile +16 -0
- package/README.md +14 -11
- package/configure +18 -0
- package/configure.bat +22 -0
- package/dist/native.js +0 -8
- package/lib/application.ts +98 -0
- package/lib/authentication.ts +3 -0
- package/lib/build.py +50 -0
- package/lib/bus.ts +30 -0
- package/lib/cancellable.ts +33 -0
- package/lib/child.ts +15 -0
- package/lib/crash.ts +11 -0
- package/lib/device.ts +329 -0
- package/lib/device_manager.ts +69 -0
- package/lib/endpoint_parameters.ts +56 -0
- package/lib/icon.ts +15 -0
- package/lib/index.ts +311 -0
- package/lib/iostream.ts +78 -0
- package/lib/meson.build +53 -0
- package/lib/native.ts +9 -0
- package/lib/portal_membership.ts +10 -0
- package/lib/portal_service.ts +105 -0
- package/lib/process.ts +57 -0
- package/lib/relay.ts +44 -0
- package/lib/script.ts +352 -0
- package/lib/session.ts +113 -0
- package/lib/signals.ts +45 -0
- package/lib/socket_address.ts +35 -0
- package/lib/spawn.ts +4 -0
- package/lib/system_parameters.ts +78 -0
- package/make.bat +23 -0
- package/meson.build +160 -0
- package/meson.options +11 -0
- package/package.json +27 -6
- package/releng/deps.py +1133 -0
- package/releng/deps.toml +391 -0
- package/releng/devkit-assets/frida-core-example-unix.c +188 -0
- package/releng/devkit-assets/frida-core-example-windows.c +197 -0
- package/releng/devkit-assets/frida-core-example.sln +28 -0
- package/releng/devkit-assets/frida-core-example.vcxproj +157 -0
- package/releng/devkit-assets/frida-core-example.vcxproj.filters +27 -0
- package/releng/devkit-assets/frida-gum-example-unix.c +122 -0
- package/releng/devkit-assets/frida-gum-example-windows.c +132 -0
- package/releng/devkit-assets/frida-gum-example.sln +28 -0
- package/releng/devkit-assets/frida-gum-example.vcxproj +157 -0
- package/releng/devkit-assets/frida-gum-example.vcxproj.filters +27 -0
- package/releng/devkit-assets/frida-gumjs-example-unix.c +84 -0
- package/releng/devkit-assets/frida-gumjs-example-windows.c +91 -0
- package/releng/devkit-assets/frida-gumjs-example.sln +28 -0
- package/releng/devkit-assets/frida-gumjs-example.vcxproj +157 -0
- package/releng/devkit-assets/frida-gumjs-example.vcxproj.filters +27 -0
- package/releng/devkit.py +535 -0
- package/releng/env.py +420 -0
- package/releng/env_android.py +150 -0
- package/releng/env_apple.py +176 -0
- package/releng/env_generic.py +373 -0
- package/releng/frida_version.py +69 -0
- package/releng/machine_file.py +44 -0
- package/releng/machine_spec.py +290 -0
- package/releng/meson/meson.py +27 -0
- package/releng/meson/mesonbuild/__init__.py +0 -0
- package/releng/meson/mesonbuild/_pathlib.py +63 -0
- package/releng/meson/mesonbuild/_typing.py +69 -0
- package/releng/meson/mesonbuild/arglist.py +321 -0
- package/releng/meson/mesonbuild/ast/__init__.py +23 -0
- package/releng/meson/mesonbuild/ast/interpreter.py +441 -0
- package/releng/meson/mesonbuild/ast/introspection.py +374 -0
- package/releng/meson/mesonbuild/ast/postprocess.py +109 -0
- package/releng/meson/mesonbuild/ast/printer.py +620 -0
- package/releng/meson/mesonbuild/ast/visitor.py +161 -0
- package/releng/meson/mesonbuild/backend/__init__.py +0 -0
- package/releng/meson/mesonbuild/backend/backends.py +2047 -0
- package/releng/meson/mesonbuild/backend/ninjabackend.py +3808 -0
- package/releng/meson/mesonbuild/backend/nonebackend.py +26 -0
- package/releng/meson/mesonbuild/backend/vs2010backend.py +2078 -0
- package/releng/meson/mesonbuild/backend/vs2012backend.py +35 -0
- package/releng/meson/mesonbuild/backend/vs2013backend.py +34 -0
- package/releng/meson/mesonbuild/backend/vs2015backend.py +35 -0
- package/releng/meson/mesonbuild/backend/vs2017backend.py +59 -0
- package/releng/meson/mesonbuild/backend/vs2019backend.py +54 -0
- package/releng/meson/mesonbuild/backend/vs2022backend.py +54 -0
- package/releng/meson/mesonbuild/backend/xcodebackend.py +1781 -0
- package/releng/meson/mesonbuild/build.py +3249 -0
- package/releng/meson/mesonbuild/cargo/__init__.py +5 -0
- package/releng/meson/mesonbuild/cargo/builder.py +238 -0
- package/releng/meson/mesonbuild/cargo/cfg.py +274 -0
- package/releng/meson/mesonbuild/cargo/interpreter.py +733 -0
- package/releng/meson/mesonbuild/cargo/manifest.py +227 -0
- package/releng/meson/mesonbuild/cargo/version.py +95 -0
- package/releng/meson/mesonbuild/cmake/__init__.py +28 -0
- package/releng/meson/mesonbuild/cmake/common.py +331 -0
- package/releng/meson/mesonbuild/cmake/data/__init__.py +0 -0
- package/releng/meson/mesonbuild/cmake/data/preload.cmake +82 -0
- package/releng/meson/mesonbuild/cmake/executor.py +241 -0
- package/releng/meson/mesonbuild/cmake/fileapi.py +324 -0
- package/releng/meson/mesonbuild/cmake/generator.py +186 -0
- package/releng/meson/mesonbuild/cmake/interpreter.py +1267 -0
- package/releng/meson/mesonbuild/cmake/toolchain.py +248 -0
- package/releng/meson/mesonbuild/cmake/traceparser.py +814 -0
- package/releng/meson/mesonbuild/cmake/tracetargets.py +161 -0
- package/releng/meson/mesonbuild/compilers/__init__.py +86 -0
- package/releng/meson/mesonbuild/compilers/asm.py +307 -0
- package/releng/meson/mesonbuild/compilers/c.py +788 -0
- package/releng/meson/mesonbuild/compilers/c_function_attributes.py +143 -0
- package/releng/meson/mesonbuild/compilers/compilers.py +1388 -0
- package/releng/meson/mesonbuild/compilers/cpp.py +1035 -0
- package/releng/meson/mesonbuild/compilers/cs.py +136 -0
- package/releng/meson/mesonbuild/compilers/cuda.py +806 -0
- package/releng/meson/mesonbuild/compilers/cython.py +91 -0
- package/releng/meson/mesonbuild/compilers/d.py +861 -0
- package/releng/meson/mesonbuild/compilers/detect.py +1396 -0
- package/releng/meson/mesonbuild/compilers/fortran.py +523 -0
- package/releng/meson/mesonbuild/compilers/java.py +113 -0
- package/releng/meson/mesonbuild/compilers/mixins/__init__.py +0 -0
- package/releng/meson/mesonbuild/compilers/mixins/arm.py +167 -0
- package/releng/meson/mesonbuild/compilers/mixins/ccrx.py +113 -0
- package/releng/meson/mesonbuild/compilers/mixins/clang.py +170 -0
- package/releng/meson/mesonbuild/compilers/mixins/clike.py +1330 -0
- package/releng/meson/mesonbuild/compilers/mixins/compcert.py +117 -0
- package/releng/meson/mesonbuild/compilers/mixins/elbrus.py +93 -0
- package/releng/meson/mesonbuild/compilers/mixins/emscripten.py +89 -0
- package/releng/meson/mesonbuild/compilers/mixins/gnu.py +629 -0
- package/releng/meson/mesonbuild/compilers/mixins/intel.py +167 -0
- package/releng/meson/mesonbuild/compilers/mixins/islinker.py +120 -0
- package/releng/meson/mesonbuild/compilers/mixins/metrowerks.py +279 -0
- package/releng/meson/mesonbuild/compilers/mixins/pgi.py +88 -0
- package/releng/meson/mesonbuild/compilers/mixins/ti.py +130 -0
- package/releng/meson/mesonbuild/compilers/mixins/visualstudio.py +458 -0
- package/releng/meson/mesonbuild/compilers/mixins/xc16.py +111 -0
- package/releng/meson/mesonbuild/compilers/objc.py +120 -0
- package/releng/meson/mesonbuild/compilers/objcpp.py +102 -0
- package/releng/meson/mesonbuild/compilers/rust.py +230 -0
- package/releng/meson/mesonbuild/compilers/swift.py +131 -0
- package/releng/meson/mesonbuild/compilers/vala.py +121 -0
- package/releng/meson/mesonbuild/coredata.py +1532 -0
- package/releng/meson/mesonbuild/dependencies/__init__.py +252 -0
- package/releng/meson/mesonbuild/dependencies/base.py +663 -0
- package/releng/meson/mesonbuild/dependencies/boost.py +1083 -0
- package/releng/meson/mesonbuild/dependencies/cmake.py +656 -0
- package/releng/meson/mesonbuild/dependencies/coarrays.py +80 -0
- package/releng/meson/mesonbuild/dependencies/configtool.py +163 -0
- package/releng/meson/mesonbuild/dependencies/cuda.py +295 -0
- package/releng/meson/mesonbuild/dependencies/data/CMakeLists.txt +102 -0
- package/releng/meson/mesonbuild/dependencies/data/CMakeListsLLVM.txt +204 -0
- package/releng/meson/mesonbuild/dependencies/data/CMakePathInfo.txt +31 -0
- package/releng/meson/mesonbuild/dependencies/data/__init__.py +0 -0
- package/releng/meson/mesonbuild/dependencies/detect.py +225 -0
- package/releng/meson/mesonbuild/dependencies/dev.py +707 -0
- package/releng/meson/mesonbuild/dependencies/dub.py +424 -0
- package/releng/meson/mesonbuild/dependencies/factory.py +146 -0
- package/releng/meson/mesonbuild/dependencies/framework.py +111 -0
- package/releng/meson/mesonbuild/dependencies/hdf5.py +168 -0
- package/releng/meson/mesonbuild/dependencies/misc.py +618 -0
- package/releng/meson/mesonbuild/dependencies/mpi.py +231 -0
- package/releng/meson/mesonbuild/dependencies/pkgconfig.py +570 -0
- package/releng/meson/mesonbuild/dependencies/platform.py +52 -0
- package/releng/meson/mesonbuild/dependencies/python.py +431 -0
- package/releng/meson/mesonbuild/dependencies/qt.py +484 -0
- package/releng/meson/mesonbuild/dependencies/scalapack.py +142 -0
- package/releng/meson/mesonbuild/dependencies/ui.py +281 -0
- package/releng/meson/mesonbuild/depfile.py +82 -0
- package/releng/meson/mesonbuild/envconfig.py +480 -0
- package/releng/meson/mesonbuild/environment.py +987 -0
- package/releng/meson/mesonbuild/interpreter/__init__.py +47 -0
- package/releng/meson/mesonbuild/interpreter/compiler.py +900 -0
- package/releng/meson/mesonbuild/interpreter/dependencyfallbacks.py +386 -0
- package/releng/meson/mesonbuild/interpreter/interpreter.py +3595 -0
- package/releng/meson/mesonbuild/interpreter/interpreterobjects.py +1096 -0
- package/releng/meson/mesonbuild/interpreter/kwargs.py +479 -0
- package/releng/meson/mesonbuild/interpreter/mesonmain.py +487 -0
- package/releng/meson/mesonbuild/interpreter/primitives/__init__.py +29 -0
- package/releng/meson/mesonbuild/interpreter/primitives/array.py +108 -0
- package/releng/meson/mesonbuild/interpreter/primitives/boolean.py +52 -0
- package/releng/meson/mesonbuild/interpreter/primitives/dict.py +88 -0
- package/releng/meson/mesonbuild/interpreter/primitives/integer.py +86 -0
- package/releng/meson/mesonbuild/interpreter/primitives/range.py +38 -0
- package/releng/meson/mesonbuild/interpreter/primitives/string.py +247 -0
- package/releng/meson/mesonbuild/interpreter/type_checking.py +853 -0
- package/releng/meson/mesonbuild/interpreterbase/__init__.py +126 -0
- package/releng/meson/mesonbuild/interpreterbase/_unholder.py +25 -0
- package/releng/meson/mesonbuild/interpreterbase/baseobjects.py +174 -0
- package/releng/meson/mesonbuild/interpreterbase/decorators.py +806 -0
- package/releng/meson/mesonbuild/interpreterbase/disabler.py +35 -0
- package/releng/meson/mesonbuild/interpreterbase/exceptions.py +22 -0
- package/releng/meson/mesonbuild/interpreterbase/helpers.py +67 -0
- package/releng/meson/mesonbuild/interpreterbase/interpreterbase.py +665 -0
- package/releng/meson/mesonbuild/interpreterbase/operator.py +32 -0
- package/releng/meson/mesonbuild/linkers/__init__.py +20 -0
- package/releng/meson/mesonbuild/linkers/base.py +39 -0
- package/releng/meson/mesonbuild/linkers/detect.py +229 -0
- package/releng/meson/mesonbuild/linkers/linkers.py +1614 -0
- package/releng/meson/mesonbuild/mcompile.py +380 -0
- package/releng/meson/mesonbuild/mconf.py +368 -0
- package/releng/meson/mesonbuild/mdevenv.py +234 -0
- package/releng/meson/mesonbuild/mdist.py +376 -0
- package/releng/meson/mesonbuild/mesondata.py +38 -0
- package/releng/meson/mesonbuild/mesonlib.py +23 -0
- package/releng/meson/mesonbuild/mesonmain.py +289 -0
- package/releng/meson/mesonbuild/minit.py +204 -0
- package/releng/meson/mesonbuild/minstall.py +864 -0
- package/releng/meson/mesonbuild/mintro.py +667 -0
- package/releng/meson/mesonbuild/mlog.py +542 -0
- package/releng/meson/mesonbuild/modules/__init__.py +270 -0
- package/releng/meson/mesonbuild/modules/cmake.py +442 -0
- package/releng/meson/mesonbuild/modules/cuda.py +377 -0
- package/releng/meson/mesonbuild/modules/dlang.py +117 -0
- package/releng/meson/mesonbuild/modules/external_project.py +306 -0
- package/releng/meson/mesonbuild/modules/fs.py +323 -0
- package/releng/meson/mesonbuild/modules/gnome.py +2215 -0
- package/releng/meson/mesonbuild/modules/hotdoc.py +487 -0
- package/releng/meson/mesonbuild/modules/i18n.py +405 -0
- package/releng/meson/mesonbuild/modules/icestorm.py +123 -0
- package/releng/meson/mesonbuild/modules/java.py +112 -0
- package/releng/meson/mesonbuild/modules/keyval.py +65 -0
- package/releng/meson/mesonbuild/modules/modtest.py +33 -0
- package/releng/meson/mesonbuild/modules/pkgconfig.py +744 -0
- package/releng/meson/mesonbuild/modules/python.py +556 -0
- package/releng/meson/mesonbuild/modules/python3.py +85 -0
- package/releng/meson/mesonbuild/modules/qt.py +621 -0
- package/releng/meson/mesonbuild/modules/qt4.py +23 -0
- package/releng/meson/mesonbuild/modules/qt5.py +23 -0
- package/releng/meson/mesonbuild/modules/qt6.py +22 -0
- package/releng/meson/mesonbuild/modules/rust.py +355 -0
- package/releng/meson/mesonbuild/modules/simd.py +114 -0
- package/releng/meson/mesonbuild/modules/sourceset.py +291 -0
- package/releng/meson/mesonbuild/modules/wayland.py +151 -0
- package/releng/meson/mesonbuild/modules/windows.py +207 -0
- package/releng/meson/mesonbuild/mparser.py +1114 -0
- package/releng/meson/mesonbuild/msetup.py +365 -0
- package/releng/meson/mesonbuild/msubprojects.py +764 -0
- package/releng/meson/mesonbuild/mtest.py +2201 -0
- package/releng/meson/mesonbuild/munstable_coredata.py +107 -0
- package/releng/meson/mesonbuild/optinterpreter.py +276 -0
- package/releng/meson/mesonbuild/programs.py +367 -0
- package/releng/meson/mesonbuild/rewriter.py +1075 -0
- package/releng/meson/mesonbuild/scripts/__init__.py +10 -0
- package/releng/meson/mesonbuild/scripts/clangformat.py +55 -0
- package/releng/meson/mesonbuild/scripts/clangtidy.py +30 -0
- package/releng/meson/mesonbuild/scripts/cleantrees.py +35 -0
- package/releng/meson/mesonbuild/scripts/cmake_run_ctgt.py +103 -0
- package/releng/meson/mesonbuild/scripts/cmd_or_ps.ps1 +17 -0
- package/releng/meson/mesonbuild/scripts/copy.py +19 -0
- package/releng/meson/mesonbuild/scripts/coverage.py +214 -0
- package/releng/meson/mesonbuild/scripts/delwithsuffix.py +27 -0
- package/releng/meson/mesonbuild/scripts/depfixer.py +495 -0
- package/releng/meson/mesonbuild/scripts/depscan.py +198 -0
- package/releng/meson/mesonbuild/scripts/dirchanger.py +20 -0
- package/releng/meson/mesonbuild/scripts/env2mfile.py +402 -0
- package/releng/meson/mesonbuild/scripts/externalproject.py +106 -0
- package/releng/meson/mesonbuild/scripts/gettext.py +86 -0
- package/releng/meson/mesonbuild/scripts/gtkdochelper.py +286 -0
- package/releng/meson/mesonbuild/scripts/hotdochelper.py +40 -0
- package/releng/meson/mesonbuild/scripts/itstool.py +77 -0
- package/releng/meson/mesonbuild/scripts/meson_exe.py +115 -0
- package/releng/meson/mesonbuild/scripts/msgfmthelper.py +29 -0
- package/releng/meson/mesonbuild/scripts/pycompile.py +54 -0
- package/releng/meson/mesonbuild/scripts/python_info.py +121 -0
- package/releng/meson/mesonbuild/scripts/regen_checker.py +55 -0
- package/releng/meson/mesonbuild/scripts/run_tool.py +58 -0
- package/releng/meson/mesonbuild/scripts/scanbuild.py +57 -0
- package/releng/meson/mesonbuild/scripts/symbolextractor.py +322 -0
- package/releng/meson/mesonbuild/scripts/tags.py +44 -0
- package/releng/meson/mesonbuild/scripts/test_loaded_modules.py +14 -0
- package/releng/meson/mesonbuild/scripts/uninstall.py +41 -0
- package/releng/meson/mesonbuild/scripts/vcstagger.py +35 -0
- package/releng/meson/mesonbuild/scripts/yasm.py +24 -0
- package/releng/meson/mesonbuild/templates/__init__.py +0 -0
- package/releng/meson/mesonbuild/templates/cpptemplates.py +143 -0
- package/releng/meson/mesonbuild/templates/cstemplates.py +90 -0
- package/releng/meson/mesonbuild/templates/ctemplates.py +126 -0
- package/releng/meson/mesonbuild/templates/cudatemplates.py +143 -0
- package/releng/meson/mesonbuild/templates/dlangtemplates.py +109 -0
- package/releng/meson/mesonbuild/templates/fortrantemplates.py +101 -0
- package/releng/meson/mesonbuild/templates/javatemplates.py +94 -0
- package/releng/meson/mesonbuild/templates/mesontemplates.py +70 -0
- package/releng/meson/mesonbuild/templates/objcpptemplates.py +126 -0
- package/releng/meson/mesonbuild/templates/objctemplates.py +126 -0
- package/releng/meson/mesonbuild/templates/rusttemplates.py +79 -0
- package/releng/meson/mesonbuild/templates/samplefactory.py +41 -0
- package/releng/meson/mesonbuild/templates/sampleimpl.py +160 -0
- package/releng/meson/mesonbuild/templates/valatemplates.py +82 -0
- package/releng/meson/mesonbuild/utils/__init__.py +0 -0
- package/releng/meson/mesonbuild/utils/core.py +166 -0
- package/releng/meson/mesonbuild/utils/platform.py +27 -0
- package/releng/meson/mesonbuild/utils/posix.py +32 -0
- package/releng/meson/mesonbuild/utils/universal.py +2445 -0
- package/releng/meson/mesonbuild/utils/vsenv.py +126 -0
- package/releng/meson/mesonbuild/utils/win32.py +29 -0
- package/releng/meson/mesonbuild/wrap/__init__.py +59 -0
- package/releng/meson/mesonbuild/wrap/wrap.py +846 -0
- package/releng/meson/mesonbuild/wrap/wraptool.py +198 -0
- package/releng/meson-scripts/BSDmakefile +6 -0
- package/releng/meson-scripts/Makefile +16 -0
- package/releng/meson-scripts/configure +18 -0
- package/releng/meson-scripts/configure.bat +22 -0
- package/releng/meson-scripts/make.bat +23 -0
- package/releng/meson_configure.py +506 -0
- package/releng/meson_make.py +131 -0
- package/releng/mkdevkit.py +107 -0
- package/releng/mkfatmacho.py +54 -0
- package/releng/post-process-oabi.py +97 -0
- package/releng/progress.py +14 -0
- package/releng/sync-from-upstream.py +185 -0
- package/releng/tomlkit/tomlkit/__init__.py +59 -0
- package/releng/tomlkit/tomlkit/_compat.py +22 -0
- package/releng/tomlkit/tomlkit/_types.py +83 -0
- package/releng/tomlkit/tomlkit/_utils.py +158 -0
- package/releng/tomlkit/tomlkit/api.py +308 -0
- package/releng/tomlkit/tomlkit/container.py +875 -0
- package/releng/tomlkit/tomlkit/exceptions.py +227 -0
- package/releng/tomlkit/tomlkit/items.py +1967 -0
- package/releng/tomlkit/tomlkit/parser.py +1141 -0
- package/releng/tomlkit/tomlkit/py.typed +0 -0
- package/releng/tomlkit/tomlkit/source.py +180 -0
- package/releng/tomlkit/tomlkit/toml_char.py +52 -0
- package/releng/tomlkit/tomlkit/toml_document.py +7 -0
- package/releng/tomlkit/tomlkit/toml_file.py +58 -0
- package/releng/winenv.py +140 -0
- package/scripts/adjust-version.py +19 -0
- package/scripts/detect-version.py +40 -0
- package/scripts/fetch-abi-bits.py +343 -0
- package/scripts/install.js +23 -0
- package/scripts/package.py +15 -0
- package/src/addon.cc +76 -0
- package/src/application.cc +148 -0
- package/src/application.h +31 -0
- package/src/authentication.cc +174 -0
- package/src/authentication.h +24 -0
- package/src/bus.cc +167 -0
- package/src/bus.h +33 -0
- package/src/cancellable.cc +117 -0
- package/src/cancellable.h +31 -0
- package/src/child.cc +150 -0
- package/src/child.h +32 -0
- package/src/crash.cc +122 -0
- package/src/crash.h +30 -0
- package/src/device.cc +1302 -0
- package/src/device.h +55 -0
- package/src/device_manager.cc +362 -0
- package/src/device_manager.h +35 -0
- package/src/endpoint_parameters.cc +171 -0
- package/src/endpoint_parameters.h +28 -0
- package/src/glib_context.cc +62 -0
- package/src/glib_context.h +29 -0
- package/src/glib_object.cc +25 -0
- package/src/glib_object.h +37 -0
- package/src/iostream.cc +247 -0
- package/src/iostream.h +30 -0
- package/src/meson.build +26 -0
- package/src/operation.h +94 -0
- package/src/portal_membership.cc +100 -0
- package/src/portal_membership.h +26 -0
- package/src/portal_service.cc +401 -0
- package/src/portal_service.h +40 -0
- package/src/process.cc +135 -0
- package/src/process.h +30 -0
- package/src/relay.cc +139 -0
- package/src/relay.h +31 -0
- package/src/runtime.cc +443 -0
- package/src/runtime.h +64 -0
- package/src/script.cc +301 -0
- package/src/script.h +36 -0
- package/src/session.cc +860 -0
- package/src/session.h +42 -0
- package/src/signals.cc +334 -0
- package/src/signals.h +47 -0
- package/src/spawn.cc +95 -0
- package/src/spawn.h +27 -0
- package/src/usage_monitor.h +117 -0
- package/src/uv_context.cc +118 -0
- package/src/uv_context.h +40 -0
- package/src/win_delay_load_hook.cc +63 -0
- package/subprojects/frida-core.wrap +8 -0
- package/subprojects/nan.wrap +9 -0
- package/subprojects/packagefiles/nan.patch +13 -0
- package/test/data/index.ts +13 -0
- package/test/data/unixvictim-linux-x86 +0 -0
- package/test/data/unixvictim-linux-x86_64 +0 -0
- package/test/data/unixvictim-macos +0 -0
- package/test/device.ts +27 -0
- package/test/device_manager.ts +16 -0
- package/test/labrat.ts +32 -0
- package/test/script.ts +176 -0
- package/test/session.ts +73 -0
- package/tsconfig.json +18 -0
|
@@ -0,0 +1,431 @@
|
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
# Copyright 2022 The Meson development team
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
import functools, json, os, textwrap
|
|
7
|
+
from pathlib import Path
|
|
8
|
+
import typing as T
|
|
9
|
+
|
|
10
|
+
from .. import mesonlib, mlog
|
|
11
|
+
from .base import process_method_kw, DependencyException, DependencyMethods, DependencyTypeName, ExternalDependency, SystemDependency
|
|
12
|
+
from .configtool import ConfigToolDependency
|
|
13
|
+
from .detect import packages
|
|
14
|
+
from .factory import DependencyFactory
|
|
15
|
+
from .framework import ExtraFrameworkDependency
|
|
16
|
+
from .pkgconfig import PkgConfigDependency
|
|
17
|
+
from ..environment import detect_cpu_family
|
|
18
|
+
from ..programs import ExternalProgram
|
|
19
|
+
|
|
20
|
+
if T.TYPE_CHECKING:
|
|
21
|
+
from typing_extensions import TypedDict
|
|
22
|
+
|
|
23
|
+
from .factory import DependencyGenerator
|
|
24
|
+
from ..environment import Environment
|
|
25
|
+
from ..mesonlib import MachineChoice
|
|
26
|
+
|
|
27
|
+
class PythonIntrospectionDict(TypedDict):
|
|
28
|
+
|
|
29
|
+
install_paths: T.Dict[str, str]
|
|
30
|
+
is_pypy: bool
|
|
31
|
+
is_venv: bool
|
|
32
|
+
link_libpython: bool
|
|
33
|
+
sysconfig_paths: T.Dict[str, str]
|
|
34
|
+
paths: T.Dict[str, str]
|
|
35
|
+
platform: str
|
|
36
|
+
suffix: str
|
|
37
|
+
limited_api_suffix: str
|
|
38
|
+
variables: T.Dict[str, str]
|
|
39
|
+
version: str
|
|
40
|
+
|
|
41
|
+
_Base = ExternalDependency
|
|
42
|
+
else:
|
|
43
|
+
_Base = object
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
class Pybind11ConfigToolDependency(ConfigToolDependency):
|
|
47
|
+
|
|
48
|
+
tools = ['pybind11-config']
|
|
49
|
+
|
|
50
|
+
# any version of the tool is valid, since this is header-only
|
|
51
|
+
allow_default_for_cross = True
|
|
52
|
+
|
|
53
|
+
# pybind11 in 2.10.4 added --version, sanity-check another flag unique to it
|
|
54
|
+
# in the meantime
|
|
55
|
+
skip_version = '--pkgconfigdir'
|
|
56
|
+
|
|
57
|
+
def __init__(self, name: str, environment: Environment, kwargs: T.Dict[str, T.Any]):
|
|
58
|
+
super().__init__(name, environment, kwargs)
|
|
59
|
+
if not self.is_found:
|
|
60
|
+
return
|
|
61
|
+
self.compile_args = self.get_config_value(['--includes'], 'compile_args')
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
class NumPyConfigToolDependency(ConfigToolDependency):
|
|
65
|
+
|
|
66
|
+
tools = ['numpy-config']
|
|
67
|
+
|
|
68
|
+
def __init__(self, name: str, environment: Environment, kwargs: T.Dict[str, T.Any]):
|
|
69
|
+
super().__init__(name, environment, kwargs)
|
|
70
|
+
if not self.is_found:
|
|
71
|
+
return
|
|
72
|
+
self.compile_args = self.get_config_value(['--cflags'], 'compile_args')
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
class BasicPythonExternalProgram(ExternalProgram):
|
|
76
|
+
def __init__(self, name: str, command: T.Optional[T.List[str]] = None,
|
|
77
|
+
ext_prog: T.Optional[ExternalProgram] = None):
|
|
78
|
+
if ext_prog is None:
|
|
79
|
+
super().__init__(name, command=command, silent=True)
|
|
80
|
+
else:
|
|
81
|
+
self.name = name
|
|
82
|
+
self.command = ext_prog.command
|
|
83
|
+
self.path = ext_prog.path
|
|
84
|
+
self.cached_version = None
|
|
85
|
+
|
|
86
|
+
# We want strong key values, so we always populate this with bogus data.
|
|
87
|
+
# Otherwise to make the type checkers happy we'd have to do .get() for
|
|
88
|
+
# everycall, even though we know that the introspection data will be
|
|
89
|
+
# complete
|
|
90
|
+
self.info: 'PythonIntrospectionDict' = {
|
|
91
|
+
'install_paths': {},
|
|
92
|
+
'is_pypy': False,
|
|
93
|
+
'is_venv': False,
|
|
94
|
+
'link_libpython': False,
|
|
95
|
+
'sysconfig_paths': {},
|
|
96
|
+
'paths': {},
|
|
97
|
+
'platform': 'sentinel',
|
|
98
|
+
'suffix': 'sentinel',
|
|
99
|
+
'limited_api_suffix': 'sentinel',
|
|
100
|
+
'variables': {},
|
|
101
|
+
'version': '0.0',
|
|
102
|
+
}
|
|
103
|
+
self.pure: bool = True
|
|
104
|
+
|
|
105
|
+
def _check_version(self, version: str) -> bool:
|
|
106
|
+
if self.name == 'python2':
|
|
107
|
+
return mesonlib.version_compare(version, '< 3.0')
|
|
108
|
+
elif self.name == 'python3':
|
|
109
|
+
return mesonlib.version_compare(version, '>= 3.0')
|
|
110
|
+
return True
|
|
111
|
+
|
|
112
|
+
def sanity(self) -> bool:
|
|
113
|
+
# Sanity check, we expect to have something that at least quacks in tune
|
|
114
|
+
|
|
115
|
+
import importlib.resources
|
|
116
|
+
|
|
117
|
+
with importlib.resources.path('mesonbuild.scripts', 'python_info.py') as f:
|
|
118
|
+
cmd = self.get_command() + [str(f)]
|
|
119
|
+
env = os.environ.copy()
|
|
120
|
+
env['SETUPTOOLS_USE_DISTUTILS'] = 'stdlib'
|
|
121
|
+
p, stdout, stderr = mesonlib.Popen_safe(cmd, env=env)
|
|
122
|
+
|
|
123
|
+
try:
|
|
124
|
+
info = json.loads(stdout)
|
|
125
|
+
except json.JSONDecodeError:
|
|
126
|
+
info = None
|
|
127
|
+
mlog.debug('Could not introspect Python (%s): exit code %d' % (str(p.args), p.returncode))
|
|
128
|
+
mlog.debug('Program stdout:\n')
|
|
129
|
+
mlog.debug(stdout)
|
|
130
|
+
mlog.debug('Program stderr:\n')
|
|
131
|
+
mlog.debug(stderr)
|
|
132
|
+
|
|
133
|
+
if info is not None and self._check_version(info['version']):
|
|
134
|
+
self.info = T.cast('PythonIntrospectionDict', info)
|
|
135
|
+
return True
|
|
136
|
+
else:
|
|
137
|
+
return False
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
class _PythonDependencyBase(_Base):
|
|
141
|
+
|
|
142
|
+
def __init__(self, python_holder: 'BasicPythonExternalProgram', embed: bool):
|
|
143
|
+
self.embed = embed
|
|
144
|
+
self.version: str = python_holder.info['version']
|
|
145
|
+
self.platform = python_holder.info['platform']
|
|
146
|
+
self.variables = python_holder.info['variables']
|
|
147
|
+
self.paths = python_holder.info['paths']
|
|
148
|
+
self.is_pypy = python_holder.info['is_pypy']
|
|
149
|
+
# The "-embed" version of python.pc / python-config was introduced in 3.8,
|
|
150
|
+
# and distutils extension linking was changed to be considered a non embed
|
|
151
|
+
# usage. Before then, this dependency always uses the embed=True handling
|
|
152
|
+
# because that is the only one that exists.
|
|
153
|
+
#
|
|
154
|
+
# On macOS and some Linux distros (Debian) distutils doesn't link extensions
|
|
155
|
+
# against libpython, even on 3.7 and below. We call into distutils and
|
|
156
|
+
# mirror its behavior. See https://github.com/mesonbuild/meson/issues/4117
|
|
157
|
+
self.link_libpython = python_holder.info['link_libpython'] or embed
|
|
158
|
+
self.info: T.Optional[T.Dict[str, str]] = None
|
|
159
|
+
if mesonlib.version_compare(self.version, '>= 3.0'):
|
|
160
|
+
self.major_version = 3
|
|
161
|
+
else:
|
|
162
|
+
self.major_version = 2
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
class PythonPkgConfigDependency(PkgConfigDependency, _PythonDependencyBase):
|
|
166
|
+
|
|
167
|
+
def __init__(self, name: str, environment: 'Environment',
|
|
168
|
+
kwargs: T.Dict[str, T.Any], installation: 'BasicPythonExternalProgram',
|
|
169
|
+
libpc: bool = False):
|
|
170
|
+
if libpc:
|
|
171
|
+
mlog.debug(f'Searching for {name!r} via pkgconfig lookup in LIBPC')
|
|
172
|
+
else:
|
|
173
|
+
mlog.debug(f'Searching for {name!r} via fallback pkgconfig lookup in default paths')
|
|
174
|
+
|
|
175
|
+
PkgConfigDependency.__init__(self, name, environment, kwargs)
|
|
176
|
+
_PythonDependencyBase.__init__(self, installation, kwargs.get('embed', False))
|
|
177
|
+
|
|
178
|
+
if libpc and not self.is_found:
|
|
179
|
+
mlog.debug(f'"python-{self.version}" could not be found in LIBPC, this is likely due to a relocated python installation')
|
|
180
|
+
|
|
181
|
+
# pkg-config files are usually accurate starting with python 3.8
|
|
182
|
+
if not self.link_libpython and mesonlib.version_compare(self.version, '< 3.8'):
|
|
183
|
+
self.link_args = []
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
class PythonFrameworkDependency(ExtraFrameworkDependency, _PythonDependencyBase):
|
|
187
|
+
|
|
188
|
+
def __init__(self, name: str, environment: 'Environment',
|
|
189
|
+
kwargs: T.Dict[str, T.Any], installation: 'BasicPythonExternalProgram'):
|
|
190
|
+
ExtraFrameworkDependency.__init__(self, name, environment, kwargs)
|
|
191
|
+
_PythonDependencyBase.__init__(self, installation, kwargs.get('embed', False))
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
class PythonSystemDependency(SystemDependency, _PythonDependencyBase):
|
|
195
|
+
|
|
196
|
+
def __init__(self, name: str, environment: 'Environment',
|
|
197
|
+
kwargs: T.Dict[str, T.Any], installation: 'BasicPythonExternalProgram'):
|
|
198
|
+
SystemDependency.__init__(self, name, environment, kwargs)
|
|
199
|
+
_PythonDependencyBase.__init__(self, installation, kwargs.get('embed', False))
|
|
200
|
+
|
|
201
|
+
# match pkg-config behavior
|
|
202
|
+
if self.link_libpython:
|
|
203
|
+
# link args
|
|
204
|
+
if mesonlib.is_windows():
|
|
205
|
+
self.find_libpy_windows(environment, limited_api=False)
|
|
206
|
+
else:
|
|
207
|
+
self.find_libpy(environment)
|
|
208
|
+
else:
|
|
209
|
+
self.is_found = True
|
|
210
|
+
|
|
211
|
+
# compile args
|
|
212
|
+
inc_paths = mesonlib.OrderedSet([
|
|
213
|
+
self.variables.get('INCLUDEPY'),
|
|
214
|
+
self.paths.get('include'),
|
|
215
|
+
self.paths.get('platinclude')])
|
|
216
|
+
|
|
217
|
+
self.compile_args += ['-I' + path for path in inc_paths if path]
|
|
218
|
+
|
|
219
|
+
# https://sourceforge.net/p/mingw-w64/mailman/message/30504611/
|
|
220
|
+
# https://github.com/python/cpython/pull/100137
|
|
221
|
+
if mesonlib.is_windows() and self.get_windows_python_arch().endswith('64') and mesonlib.version_compare(self.version, '<3.12'):
|
|
222
|
+
self.compile_args += ['-DMS_WIN64=']
|
|
223
|
+
|
|
224
|
+
if not self.clib_compiler.has_header('Python.h', '', environment, extra_args=self.compile_args):
|
|
225
|
+
self.is_found = False
|
|
226
|
+
|
|
227
|
+
def find_libpy(self, environment: 'Environment') -> None:
|
|
228
|
+
if self.is_pypy:
|
|
229
|
+
if self.major_version == 3:
|
|
230
|
+
libname = 'pypy3-c'
|
|
231
|
+
else:
|
|
232
|
+
libname = 'pypy-c'
|
|
233
|
+
libdir = os.path.join(self.variables.get('base'), 'bin')
|
|
234
|
+
libdirs = [libdir]
|
|
235
|
+
else:
|
|
236
|
+
libname = f'python{self.version}'
|
|
237
|
+
if 'DEBUG_EXT' in self.variables:
|
|
238
|
+
libname += self.variables['DEBUG_EXT']
|
|
239
|
+
if 'ABIFLAGS' in self.variables:
|
|
240
|
+
libname += self.variables['ABIFLAGS']
|
|
241
|
+
libdirs = []
|
|
242
|
+
|
|
243
|
+
largs = self.clib_compiler.find_library(libname, environment, libdirs)
|
|
244
|
+
if largs is not None:
|
|
245
|
+
self.link_args = largs
|
|
246
|
+
self.is_found = True
|
|
247
|
+
|
|
248
|
+
def get_windows_python_arch(self) -> str:
|
|
249
|
+
if self.platform.startswith('mingw'):
|
|
250
|
+
if 'x86_64' in self.platform:
|
|
251
|
+
return 'x86_64'
|
|
252
|
+
elif 'i686' in self.platform:
|
|
253
|
+
return 'x86'
|
|
254
|
+
elif 'aarch64' in self.platform:
|
|
255
|
+
return 'aarch64'
|
|
256
|
+
else:
|
|
257
|
+
raise DependencyException(f'MinGW Python built with unknown platform {self.platform!r}, please file a bug')
|
|
258
|
+
elif self.platform == 'win32':
|
|
259
|
+
return 'x86'
|
|
260
|
+
elif self.platform in {'win64', 'win-amd64'}:
|
|
261
|
+
return 'x86_64'
|
|
262
|
+
elif self.platform in {'win-arm64'}:
|
|
263
|
+
return 'aarch64'
|
|
264
|
+
raise DependencyException('Unknown Windows Python platform {self.platform!r}')
|
|
265
|
+
|
|
266
|
+
def get_windows_link_args(self, limited_api: bool) -> T.Optional[T.List[str]]:
|
|
267
|
+
if self.platform.startswith('win'):
|
|
268
|
+
vernum = self.variables.get('py_version_nodot')
|
|
269
|
+
verdot = self.variables.get('py_version_short')
|
|
270
|
+
imp_lower = self.variables.get('implementation_lower', 'python')
|
|
271
|
+
if self.static:
|
|
272
|
+
libpath = Path('libs') / f'libpython{vernum}.a'
|
|
273
|
+
else:
|
|
274
|
+
comp = self.get_compiler()
|
|
275
|
+
if comp.id == "gcc":
|
|
276
|
+
if imp_lower == 'pypy' and verdot == '3.8':
|
|
277
|
+
# The naming changed between 3.8 and 3.9
|
|
278
|
+
libpath = Path('libpypy3-c.dll')
|
|
279
|
+
elif imp_lower == 'pypy':
|
|
280
|
+
libpath = Path(f'libpypy{verdot}-c.dll')
|
|
281
|
+
else:
|
|
282
|
+
libpath = Path(f'python{vernum}.dll')
|
|
283
|
+
else:
|
|
284
|
+
if limited_api:
|
|
285
|
+
vernum = vernum[0]
|
|
286
|
+
libpath = Path('libs') / f'python{vernum}.lib'
|
|
287
|
+
# For a debug build, pyconfig.h may force linking with
|
|
288
|
+
# pythonX_d.lib (see meson#10776). This cannot be avoided
|
|
289
|
+
# and won't work unless we also have a debug build of
|
|
290
|
+
# Python itself (except with pybind11, which has an ugly
|
|
291
|
+
# hack to work around this) - so emit a warning to explain
|
|
292
|
+
# the cause of the expected link error.
|
|
293
|
+
buildtype = self.env.coredata.get_option(mesonlib.OptionKey('buildtype'))
|
|
294
|
+
assert isinstance(buildtype, str)
|
|
295
|
+
debug = self.env.coredata.get_option(mesonlib.OptionKey('debug'))
|
|
296
|
+
# `debugoptimized` buildtype may not set debug=True currently, see gh-11645
|
|
297
|
+
is_debug_build = debug or buildtype == 'debug'
|
|
298
|
+
vscrt_debug = False
|
|
299
|
+
if mesonlib.OptionKey('b_vscrt') in self.env.coredata.options:
|
|
300
|
+
vscrt = self.env.coredata.options[mesonlib.OptionKey('b_vscrt')].value
|
|
301
|
+
if vscrt in {'mdd', 'mtd', 'from_buildtype', 'static_from_buildtype'}:
|
|
302
|
+
vscrt_debug = True
|
|
303
|
+
if is_debug_build and vscrt_debug and not self.variables.get('Py_DEBUG'):
|
|
304
|
+
mlog.warning(textwrap.dedent('''\
|
|
305
|
+
Using a debug build type with MSVC or an MSVC-compatible compiler
|
|
306
|
+
when the Python interpreter is not also a debug build will almost
|
|
307
|
+
certainly result in a failed build. Prefer using a release build
|
|
308
|
+
type or a debug Python interpreter.
|
|
309
|
+
'''))
|
|
310
|
+
# base_prefix to allow for virtualenvs.
|
|
311
|
+
lib = Path(self.variables.get('base_prefix')) / libpath
|
|
312
|
+
elif self.platform.startswith('mingw'):
|
|
313
|
+
if self.static:
|
|
314
|
+
libname = self.variables.get('LIBRARY')
|
|
315
|
+
else:
|
|
316
|
+
libname = self.variables.get('LDLIBRARY')
|
|
317
|
+
lib = Path(self.variables.get('LIBDIR')) / libname
|
|
318
|
+
else:
|
|
319
|
+
raise mesonlib.MesonBugException(
|
|
320
|
+
'On a Windows path, but the OS doesn\'t appear to be Windows or MinGW.')
|
|
321
|
+
if not lib.exists():
|
|
322
|
+
mlog.log('Could not find Python3 library {!r}'.format(str(lib)))
|
|
323
|
+
return None
|
|
324
|
+
return [str(lib)]
|
|
325
|
+
|
|
326
|
+
def find_libpy_windows(self, env: 'Environment', limited_api: bool = False) -> None:
|
|
327
|
+
'''
|
|
328
|
+
Find python3 libraries on Windows and also verify that the arch matches
|
|
329
|
+
what we are building for.
|
|
330
|
+
'''
|
|
331
|
+
try:
|
|
332
|
+
pyarch = self.get_windows_python_arch()
|
|
333
|
+
except DependencyException as e:
|
|
334
|
+
mlog.log(str(e))
|
|
335
|
+
self.is_found = False
|
|
336
|
+
return
|
|
337
|
+
arch = detect_cpu_family(env.coredata.compilers.host)
|
|
338
|
+
if arch != pyarch:
|
|
339
|
+
mlog.log('Need', mlog.bold(self.name), f'for {arch}, but found {pyarch}')
|
|
340
|
+
self.is_found = False
|
|
341
|
+
return
|
|
342
|
+
# This can fail if the library is not found
|
|
343
|
+
largs = self.get_windows_link_args(limited_api)
|
|
344
|
+
if largs is None:
|
|
345
|
+
self.is_found = False
|
|
346
|
+
return
|
|
347
|
+
self.link_args = largs
|
|
348
|
+
self.is_found = True
|
|
349
|
+
|
|
350
|
+
@staticmethod
|
|
351
|
+
def log_tried() -> str:
|
|
352
|
+
return 'sysconfig'
|
|
353
|
+
|
|
354
|
+
def python_factory(env: 'Environment', for_machine: 'MachineChoice',
|
|
355
|
+
kwargs: T.Dict[str, T.Any],
|
|
356
|
+
installation: T.Optional['BasicPythonExternalProgram'] = None) -> T.List['DependencyGenerator']:
|
|
357
|
+
# We can't use the factory_methods decorator here, as we need to pass the
|
|
358
|
+
# extra installation argument
|
|
359
|
+
methods = process_method_kw({DependencyMethods.PKGCONFIG, DependencyMethods.SYSTEM}, kwargs)
|
|
360
|
+
embed = kwargs.get('embed', False)
|
|
361
|
+
candidates: T.List['DependencyGenerator'] = []
|
|
362
|
+
from_installation = installation is not None
|
|
363
|
+
# When not invoked through the python module, default installation.
|
|
364
|
+
if installation is None:
|
|
365
|
+
installation = BasicPythonExternalProgram('python3', mesonlib.python_command)
|
|
366
|
+
installation.sanity()
|
|
367
|
+
pkg_version = installation.info['variables'].get('LDVERSION') or installation.info['version']
|
|
368
|
+
|
|
369
|
+
if DependencyMethods.PKGCONFIG in methods:
|
|
370
|
+
if from_installation:
|
|
371
|
+
pkg_libdir = installation.info['variables'].get('LIBPC')
|
|
372
|
+
pkg_embed = '-embed' if embed and mesonlib.version_compare(installation.info['version'], '>=3.8') else ''
|
|
373
|
+
pkg_name = f'python-{pkg_version}{pkg_embed}'
|
|
374
|
+
|
|
375
|
+
# If python-X.Y.pc exists in LIBPC, we will try to use it
|
|
376
|
+
def wrap_in_pythons_pc_dir(name: str, env: 'Environment', kwargs: T.Dict[str, T.Any],
|
|
377
|
+
installation: 'BasicPythonExternalProgram') -> 'ExternalDependency':
|
|
378
|
+
if not pkg_libdir:
|
|
379
|
+
# there is no LIBPC, so we can't search in it
|
|
380
|
+
empty = ExternalDependency(DependencyTypeName('pkgconfig'), env, {})
|
|
381
|
+
empty.name = 'python'
|
|
382
|
+
return empty
|
|
383
|
+
|
|
384
|
+
old_pkg_libdir = os.environ.pop('PKG_CONFIG_LIBDIR', None)
|
|
385
|
+
old_pkg_path = os.environ.pop('PKG_CONFIG_PATH', None)
|
|
386
|
+
os.environ['PKG_CONFIG_LIBDIR'] = pkg_libdir
|
|
387
|
+
try:
|
|
388
|
+
return PythonPkgConfigDependency(name, env, kwargs, installation, True)
|
|
389
|
+
finally:
|
|
390
|
+
def set_env(name: str, value: str) -> None:
|
|
391
|
+
if value is not None:
|
|
392
|
+
os.environ[name] = value
|
|
393
|
+
elif name in os.environ:
|
|
394
|
+
del os.environ[name]
|
|
395
|
+
set_env('PKG_CONFIG_LIBDIR', old_pkg_libdir)
|
|
396
|
+
set_env('PKG_CONFIG_PATH', old_pkg_path)
|
|
397
|
+
|
|
398
|
+
candidates.append(functools.partial(wrap_in_pythons_pc_dir, pkg_name, env, kwargs, installation))
|
|
399
|
+
# We only need to check both, if a python install has a LIBPC. It might point to the wrong location,
|
|
400
|
+
# e.g. relocated / cross compilation, but the presence of LIBPC indicates we should definitely look for something.
|
|
401
|
+
if pkg_libdir is not None:
|
|
402
|
+
candidates.append(functools.partial(PythonPkgConfigDependency, pkg_name, env, kwargs, installation))
|
|
403
|
+
else:
|
|
404
|
+
candidates.append(functools.partial(PkgConfigDependency, 'python3', env, kwargs))
|
|
405
|
+
|
|
406
|
+
if DependencyMethods.SYSTEM in methods:
|
|
407
|
+
candidates.append(functools.partial(PythonSystemDependency, 'python', env, kwargs, installation))
|
|
408
|
+
|
|
409
|
+
if DependencyMethods.EXTRAFRAMEWORK in methods:
|
|
410
|
+
nkwargs = kwargs.copy()
|
|
411
|
+
if mesonlib.version_compare(pkg_version, '>= 3'):
|
|
412
|
+
# There is a python in /System/Library/Frameworks, but that's python 2.x,
|
|
413
|
+
# Python 3 will always be in /Library
|
|
414
|
+
nkwargs['paths'] = ['/Library/Frameworks']
|
|
415
|
+
candidates.append(functools.partial(PythonFrameworkDependency, 'Python', env, nkwargs, installation))
|
|
416
|
+
|
|
417
|
+
return candidates
|
|
418
|
+
|
|
419
|
+
packages['python3'] = python_factory
|
|
420
|
+
|
|
421
|
+
packages['pybind11'] = pybind11_factory = DependencyFactory(
|
|
422
|
+
'pybind11',
|
|
423
|
+
[DependencyMethods.PKGCONFIG, DependencyMethods.CONFIG_TOOL, DependencyMethods.CMAKE],
|
|
424
|
+
configtool_class=Pybind11ConfigToolDependency,
|
|
425
|
+
)
|
|
426
|
+
|
|
427
|
+
packages['numpy'] = numpy_factory = DependencyFactory(
|
|
428
|
+
'numpy',
|
|
429
|
+
[DependencyMethods.PKGCONFIG, DependencyMethods.CONFIG_TOOL],
|
|
430
|
+
configtool_class=NumPyConfigToolDependency,
|
|
431
|
+
)
|