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,41 @@
|
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
# Copyright 2019 The Meson development team
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
import typing as T
|
|
7
|
+
|
|
8
|
+
from mesonbuild.templates.valatemplates import ValaProject
|
|
9
|
+
from mesonbuild.templates.fortrantemplates import FortranProject
|
|
10
|
+
from mesonbuild.templates.objcpptemplates import ObjCppProject
|
|
11
|
+
from mesonbuild.templates.dlangtemplates import DlangProject
|
|
12
|
+
from mesonbuild.templates.rusttemplates import RustProject
|
|
13
|
+
from mesonbuild.templates.javatemplates import JavaProject
|
|
14
|
+
from mesonbuild.templates.cudatemplates import CudaProject
|
|
15
|
+
from mesonbuild.templates.objctemplates import ObjCProject
|
|
16
|
+
from mesonbuild.templates.cpptemplates import CppProject
|
|
17
|
+
from mesonbuild.templates.cstemplates import CSharpProject
|
|
18
|
+
from mesonbuild.templates.ctemplates import CProject
|
|
19
|
+
|
|
20
|
+
if T.TYPE_CHECKING:
|
|
21
|
+
from ..minit import Arguments
|
|
22
|
+
from .sampleimpl import ClassImpl, FileHeaderImpl, FileImpl, SampleImpl
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
_IMPL: T.Mapping[str, T.Union[T.Type[ClassImpl], T.Type[FileHeaderImpl], T.Type[FileImpl]]] = {
|
|
26
|
+
'c': CProject,
|
|
27
|
+
'cpp': CppProject,
|
|
28
|
+
'cs': CSharpProject,
|
|
29
|
+
'cuda': CudaProject,
|
|
30
|
+
'objc': ObjCProject,
|
|
31
|
+
'objcpp': ObjCppProject,
|
|
32
|
+
'java': JavaProject,
|
|
33
|
+
'd': DlangProject,
|
|
34
|
+
'rust': RustProject,
|
|
35
|
+
'fortran': FortranProject,
|
|
36
|
+
'vala': ValaProject,
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def sample_generator(options: Arguments) -> SampleImpl:
|
|
41
|
+
return _IMPL[options.language](options)
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
# Copyright 2019 The Meson development team
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
import abc
|
|
7
|
+
import re
|
|
8
|
+
import typing as T
|
|
9
|
+
|
|
10
|
+
if T.TYPE_CHECKING:
|
|
11
|
+
from ..minit import Arguments
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class SampleImpl(metaclass=abc.ABCMeta):
|
|
15
|
+
|
|
16
|
+
def __init__(self, args: Arguments):
|
|
17
|
+
self.name = args.name
|
|
18
|
+
self.version = args.version
|
|
19
|
+
self.lowercase_token = re.sub(r'[^a-z0-9]', '_', self.name.lower())
|
|
20
|
+
self.uppercase_token = self.lowercase_token.upper()
|
|
21
|
+
self.capitalized_token = self.lowercase_token.capitalize()
|
|
22
|
+
|
|
23
|
+
@abc.abstractmethod
|
|
24
|
+
def create_executable(self) -> None:
|
|
25
|
+
pass
|
|
26
|
+
|
|
27
|
+
@abc.abstractmethod
|
|
28
|
+
def create_library(self) -> None:
|
|
29
|
+
pass
|
|
30
|
+
|
|
31
|
+
@abc.abstractproperty
|
|
32
|
+
def exe_template(self) -> str:
|
|
33
|
+
pass
|
|
34
|
+
|
|
35
|
+
@abc.abstractproperty
|
|
36
|
+
def exe_meson_template(self) -> str:
|
|
37
|
+
pass
|
|
38
|
+
|
|
39
|
+
@abc.abstractproperty
|
|
40
|
+
def lib_template(self) -> str:
|
|
41
|
+
pass
|
|
42
|
+
|
|
43
|
+
@abc.abstractproperty
|
|
44
|
+
def lib_test_template(self) -> str:
|
|
45
|
+
pass
|
|
46
|
+
|
|
47
|
+
@abc.abstractproperty
|
|
48
|
+
def lib_meson_template(self) -> str:
|
|
49
|
+
pass
|
|
50
|
+
|
|
51
|
+
@abc.abstractproperty
|
|
52
|
+
def source_ext(self) -> str:
|
|
53
|
+
pass
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
class ClassImpl(SampleImpl):
|
|
57
|
+
|
|
58
|
+
"""For Class based languages, like Java and C#"""
|
|
59
|
+
|
|
60
|
+
def create_executable(self) -> None:
|
|
61
|
+
source_name = f'{self.capitalized_token}.{self.source_ext}'
|
|
62
|
+
with open(source_name, 'w', encoding='utf-8') as f:
|
|
63
|
+
f.write(self.exe_template.format(project_name=self.name,
|
|
64
|
+
class_name=self.capitalized_token))
|
|
65
|
+
with open('meson.build', 'w', encoding='utf-8') as f:
|
|
66
|
+
f.write(self.exe_meson_template.format(project_name=self.name,
|
|
67
|
+
exe_name=self.name,
|
|
68
|
+
source_name=source_name,
|
|
69
|
+
version=self.version))
|
|
70
|
+
|
|
71
|
+
def create_library(self) -> None:
|
|
72
|
+
lib_name = f'{self.capitalized_token}.{self.source_ext}'
|
|
73
|
+
test_name = f'{self.capitalized_token}_test.{self.source_ext}'
|
|
74
|
+
kwargs = {'utoken': self.uppercase_token,
|
|
75
|
+
'ltoken': self.lowercase_token,
|
|
76
|
+
'class_test': f'{self.capitalized_token}_test',
|
|
77
|
+
'class_name': self.capitalized_token,
|
|
78
|
+
'source_file': lib_name,
|
|
79
|
+
'test_source_file': test_name,
|
|
80
|
+
'test_exe_name': f'{self.lowercase_token}_test',
|
|
81
|
+
'project_name': self.name,
|
|
82
|
+
'lib_name': self.lowercase_token,
|
|
83
|
+
'test_name': self.lowercase_token,
|
|
84
|
+
'version': self.version,
|
|
85
|
+
}
|
|
86
|
+
with open(lib_name, 'w', encoding='utf-8') as f:
|
|
87
|
+
f.write(self.lib_template.format(**kwargs))
|
|
88
|
+
with open(test_name, 'w', encoding='utf-8') as f:
|
|
89
|
+
f.write(self.lib_test_template.format(**kwargs))
|
|
90
|
+
with open('meson.build', 'w', encoding='utf-8') as f:
|
|
91
|
+
f.write(self.lib_meson_template.format(**kwargs))
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
class FileImpl(SampleImpl):
|
|
95
|
+
|
|
96
|
+
"""File based languages without headers"""
|
|
97
|
+
|
|
98
|
+
def create_executable(self) -> None:
|
|
99
|
+
source_name = f'{self.lowercase_token}.{self.source_ext}'
|
|
100
|
+
with open(source_name, 'w', encoding='utf-8') as f:
|
|
101
|
+
f.write(self.exe_template.format(project_name=self.name))
|
|
102
|
+
with open('meson.build', 'w', encoding='utf-8') as f:
|
|
103
|
+
f.write(self.exe_meson_template.format(project_name=self.name,
|
|
104
|
+
exe_name=self.name,
|
|
105
|
+
source_name=source_name,
|
|
106
|
+
version=self.version))
|
|
107
|
+
|
|
108
|
+
def lib_kwargs(self) -> T.Dict[str, str]:
|
|
109
|
+
"""Get Language specific keyword arguments
|
|
110
|
+
|
|
111
|
+
:return: A dictionary of key: values to fill in the templates
|
|
112
|
+
"""
|
|
113
|
+
return {
|
|
114
|
+
'utoken': self.uppercase_token,
|
|
115
|
+
'ltoken': self.lowercase_token,
|
|
116
|
+
'header_dir': self.lowercase_token,
|
|
117
|
+
'class_name': self.capitalized_token,
|
|
118
|
+
'function_name': f'{self.lowercase_token[0:3]}_func',
|
|
119
|
+
'namespace': self.lowercase_token,
|
|
120
|
+
'source_file': f'{self.lowercase_token}.{self.source_ext}',
|
|
121
|
+
'test_source_file': f'{self.lowercase_token}_test.{self.source_ext}',
|
|
122
|
+
'test_exe_name': f'{self.lowercase_token}_test',
|
|
123
|
+
'project_name': self.name,
|
|
124
|
+
'lib_name': self.lowercase_token,
|
|
125
|
+
'test_name': self.lowercase_token,
|
|
126
|
+
'version': self.version,
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
def create_library(self) -> None:
|
|
130
|
+
lib_name = f'{self.lowercase_token}.{self.source_ext}'
|
|
131
|
+
test_name = f'{self.lowercase_token}_test.{self.source_ext}'
|
|
132
|
+
kwargs = self.lib_kwargs()
|
|
133
|
+
with open(lib_name, 'w', encoding='utf-8') as f:
|
|
134
|
+
f.write(self.lib_template.format(**kwargs))
|
|
135
|
+
with open(test_name, 'w', encoding='utf-8') as f:
|
|
136
|
+
f.write(self.lib_test_template.format(**kwargs))
|
|
137
|
+
with open('meson.build', 'w', encoding='utf-8') as f:
|
|
138
|
+
f.write(self.lib_meson_template.format(**kwargs))
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
class FileHeaderImpl(FileImpl):
|
|
142
|
+
|
|
143
|
+
@abc.abstractproperty
|
|
144
|
+
def header_ext(self) -> str:
|
|
145
|
+
pass
|
|
146
|
+
|
|
147
|
+
@abc.abstractproperty
|
|
148
|
+
def lib_header_template(self) -> str:
|
|
149
|
+
pass
|
|
150
|
+
|
|
151
|
+
def lib_kwargs(self) -> T.Dict[str, str]:
|
|
152
|
+
kwargs = super().lib_kwargs()
|
|
153
|
+
kwargs['header_file'] = f'{self.lowercase_token}.{self.header_ext}'
|
|
154
|
+
return kwargs
|
|
155
|
+
|
|
156
|
+
def create_library(self) -> None:
|
|
157
|
+
super().create_library()
|
|
158
|
+
kwargs = self.lib_kwargs()
|
|
159
|
+
with open(kwargs['header_file'], 'w', encoding='utf-8') as f:
|
|
160
|
+
f.write(self.lib_header_template.format_map(kwargs))
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
# Copyright 2019 The Meson development team
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
from mesonbuild.templates.sampleimpl import FileImpl
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
hello_vala_template = '''void main (string[] args) {{
|
|
10
|
+
stdout.printf ("Hello {project_name}!\\n");
|
|
11
|
+
}}
|
|
12
|
+
'''
|
|
13
|
+
|
|
14
|
+
hello_vala_meson_template = '''project('{project_name}', ['c', 'vala'],
|
|
15
|
+
version : '{version}')
|
|
16
|
+
|
|
17
|
+
dependencies = [
|
|
18
|
+
dependency('glib-2.0'),
|
|
19
|
+
dependency('gobject-2.0'),
|
|
20
|
+
]
|
|
21
|
+
|
|
22
|
+
exe = executable('{exe_name}', '{source_name}', dependencies : dependencies,
|
|
23
|
+
install : true)
|
|
24
|
+
|
|
25
|
+
test('basic', exe)
|
|
26
|
+
'''
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
lib_vala_template = '''namespace {namespace} {{
|
|
30
|
+
public int sum(int a, int b) {{
|
|
31
|
+
return(a + b);
|
|
32
|
+
}}
|
|
33
|
+
|
|
34
|
+
public int square(int a) {{
|
|
35
|
+
return(a * a);
|
|
36
|
+
}}
|
|
37
|
+
}}
|
|
38
|
+
'''
|
|
39
|
+
|
|
40
|
+
lib_vala_test_template = '''using {namespace};
|
|
41
|
+
|
|
42
|
+
public void main() {{
|
|
43
|
+
stdout.printf("\nTesting shlib");
|
|
44
|
+
stdout.printf("\n\t2 + 3 is %d", sum(2, 3));
|
|
45
|
+
stdout.printf("\n\t8 squared is %d\\n", square(8));
|
|
46
|
+
}}
|
|
47
|
+
'''
|
|
48
|
+
|
|
49
|
+
lib_vala_meson_template = '''project('{project_name}', ['c', 'vala'],
|
|
50
|
+
version : '{version}')
|
|
51
|
+
|
|
52
|
+
dependencies = [
|
|
53
|
+
dependency('glib-2.0'),
|
|
54
|
+
dependency('gobject-2.0'),
|
|
55
|
+
]
|
|
56
|
+
|
|
57
|
+
# These arguments are only used to build the shared library
|
|
58
|
+
# not the executables that use the library.
|
|
59
|
+
shlib = shared_library('foo', '{source_file}',
|
|
60
|
+
dependencies: dependencies,
|
|
61
|
+
install: true,
|
|
62
|
+
install_dir: [true, true, true])
|
|
63
|
+
|
|
64
|
+
test_exe = executable('{test_exe_name}', '{test_source_file}', dependencies : dependencies,
|
|
65
|
+
link_with : shlib)
|
|
66
|
+
test('{test_name}', test_exe)
|
|
67
|
+
|
|
68
|
+
# Make this library usable as a Meson subproject.
|
|
69
|
+
{ltoken}_dep = declare_dependency(
|
|
70
|
+
include_directories: include_directories('.'),
|
|
71
|
+
link_with : shlib)
|
|
72
|
+
'''
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
class ValaProject(FileImpl):
|
|
76
|
+
|
|
77
|
+
source_ext = 'vala'
|
|
78
|
+
exe_template = hello_vala_template
|
|
79
|
+
exe_meson_template = hello_vala_meson_template
|
|
80
|
+
lib_template = lib_vala_template
|
|
81
|
+
lib_test_template = lib_vala_test_template
|
|
82
|
+
lib_meson_template = lib_vala_meson_template
|
|
File without changes
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
# Copyright 2012-2022 The Meson development team
|
|
3
|
+
|
|
4
|
+
"""
|
|
5
|
+
Contains the strict minimum to run scripts.
|
|
6
|
+
|
|
7
|
+
When the backend needs to call back into Meson during compilation for running
|
|
8
|
+
scripts or wrapping commands, it is important to load as little python modules
|
|
9
|
+
as possible for performance reasons.
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
from __future__ import annotations
|
|
13
|
+
from dataclasses import dataclass
|
|
14
|
+
import os
|
|
15
|
+
import abc
|
|
16
|
+
import typing as T
|
|
17
|
+
|
|
18
|
+
if T.TYPE_CHECKING:
|
|
19
|
+
from hashlib import _Hash
|
|
20
|
+
from typing_extensions import Literal
|
|
21
|
+
from ..mparser import BaseNode
|
|
22
|
+
from ..interpreterbase import SubProject
|
|
23
|
+
from .. import programs
|
|
24
|
+
|
|
25
|
+
EnvironOrDict = T.Union[T.Dict[str, str], os._Environ[str]]
|
|
26
|
+
|
|
27
|
+
EnvInitValueType = T.Dict[str, T.Union[str, T.List[str]]]
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class MesonException(Exception):
|
|
31
|
+
'''Exceptions thrown by Meson'''
|
|
32
|
+
|
|
33
|
+
def __init__(self, *args: object, file: T.Optional[str] = None,
|
|
34
|
+
lineno: T.Optional[int] = None, colno: T.Optional[int] = None):
|
|
35
|
+
super().__init__(*args)
|
|
36
|
+
self.file = file
|
|
37
|
+
self.lineno = lineno
|
|
38
|
+
self.colno = colno
|
|
39
|
+
|
|
40
|
+
@classmethod
|
|
41
|
+
def from_node(cls, *args: object, node: BaseNode) -> MesonException:
|
|
42
|
+
"""Create a MesonException with location data from a BaseNode
|
|
43
|
+
|
|
44
|
+
:param node: A BaseNode to set location data from
|
|
45
|
+
:return: A Meson Exception instance
|
|
46
|
+
"""
|
|
47
|
+
return cls(*args, file=node.filename, lineno=node.lineno, colno=node.colno)
|
|
48
|
+
|
|
49
|
+
class MesonBugException(MesonException):
|
|
50
|
+
'''Exceptions thrown when there is a clear Meson bug that should be reported'''
|
|
51
|
+
|
|
52
|
+
def __init__(self, msg: str, file: T.Optional[str] = None,
|
|
53
|
+
lineno: T.Optional[int] = None, colno: T.Optional[int] = None):
|
|
54
|
+
super().__init__(msg + '\n\n This is a Meson bug and should be reported!',
|
|
55
|
+
file=file, lineno=lineno, colno=colno)
|
|
56
|
+
|
|
57
|
+
class HoldableObject(metaclass=abc.ABCMeta):
|
|
58
|
+
''' Dummy base class for all objects that can be
|
|
59
|
+
held by an interpreter.baseobjects.ObjectHolder '''
|
|
60
|
+
|
|
61
|
+
class EnvironmentVariables(HoldableObject):
|
|
62
|
+
def __init__(self, values: T.Optional[EnvInitValueType] = None,
|
|
63
|
+
init_method: Literal['set', 'prepend', 'append'] = 'set', separator: str = os.pathsep) -> None:
|
|
64
|
+
self.envvars: T.List[T.Tuple[T.Callable[[T.Dict[str, str], str, T.List[str], str, T.Optional[str]], str], str, T.List[str], str]] = []
|
|
65
|
+
# The set of all env vars we have operations for. Only used for self.has_name()
|
|
66
|
+
self.varnames: T.Set[str] = set()
|
|
67
|
+
self.unset_vars: T.Set[str] = set()
|
|
68
|
+
|
|
69
|
+
if values:
|
|
70
|
+
init_func = getattr(self, init_method)
|
|
71
|
+
for name, value in values.items():
|
|
72
|
+
v = value if isinstance(value, list) else [value]
|
|
73
|
+
init_func(name, v, separator)
|
|
74
|
+
|
|
75
|
+
def __repr__(self) -> str:
|
|
76
|
+
repr_str = "<{0}: {1}>"
|
|
77
|
+
return repr_str.format(self.__class__.__name__, self.envvars)
|
|
78
|
+
|
|
79
|
+
def hash(self, hasher: _Hash) -> None:
|
|
80
|
+
myenv = self.get_env({})
|
|
81
|
+
for key in sorted(myenv.keys()):
|
|
82
|
+
hasher.update(bytes(key, encoding='utf-8'))
|
|
83
|
+
hasher.update(b',')
|
|
84
|
+
hasher.update(bytes(myenv[key], encoding='utf-8'))
|
|
85
|
+
hasher.update(b';')
|
|
86
|
+
|
|
87
|
+
def has_name(self, name: str) -> bool:
|
|
88
|
+
return name in self.varnames
|
|
89
|
+
|
|
90
|
+
def get_names(self) -> T.Set[str]:
|
|
91
|
+
return self.varnames
|
|
92
|
+
|
|
93
|
+
def merge(self, other: EnvironmentVariables) -> None:
|
|
94
|
+
for method, name, values, separator in other.envvars:
|
|
95
|
+
self.varnames.add(name)
|
|
96
|
+
self.envvars.append((method, name, values, separator))
|
|
97
|
+
if name in self.unset_vars:
|
|
98
|
+
self.unset_vars.remove(name)
|
|
99
|
+
self.unset_vars.update(other.unset_vars)
|
|
100
|
+
|
|
101
|
+
def set(self, name: str, values: T.List[str], separator: str = os.pathsep) -> None:
|
|
102
|
+
if name in self.unset_vars:
|
|
103
|
+
raise MesonException(f'You cannot set the already unset variable {name!r}')
|
|
104
|
+
self.varnames.add(name)
|
|
105
|
+
self.envvars.append((self._set, name, values, separator))
|
|
106
|
+
|
|
107
|
+
def unset(self, name: str) -> None:
|
|
108
|
+
if name in self.varnames:
|
|
109
|
+
raise MesonException(f'You cannot unset the {name!r} variable because it is already set')
|
|
110
|
+
self.unset_vars.add(name)
|
|
111
|
+
|
|
112
|
+
def append(self, name: str, values: T.List[str], separator: str = os.pathsep) -> None:
|
|
113
|
+
if name in self.unset_vars:
|
|
114
|
+
raise MesonException(f'You cannot append to unset variable {name!r}')
|
|
115
|
+
self.varnames.add(name)
|
|
116
|
+
self.envvars.append((self._append, name, values, separator))
|
|
117
|
+
|
|
118
|
+
def prepend(self, name: str, values: T.List[str], separator: str = os.pathsep) -> None:
|
|
119
|
+
if name in self.unset_vars:
|
|
120
|
+
raise MesonException(f'You cannot prepend to unset variable {name!r}')
|
|
121
|
+
self.varnames.add(name)
|
|
122
|
+
self.envvars.append((self._prepend, name, values, separator))
|
|
123
|
+
|
|
124
|
+
@staticmethod
|
|
125
|
+
def _set(env: T.Dict[str, str], name: str, values: T.List[str], separator: str, default_value: T.Optional[str]) -> str:
|
|
126
|
+
return separator.join(values)
|
|
127
|
+
|
|
128
|
+
@staticmethod
|
|
129
|
+
def _append(env: T.Dict[str, str], name: str, values: T.List[str], separator: str, default_value: T.Optional[str]) -> str:
|
|
130
|
+
curr = env.get(name, default_value)
|
|
131
|
+
return separator.join(values if curr is None else [curr] + values)
|
|
132
|
+
|
|
133
|
+
@staticmethod
|
|
134
|
+
def _prepend(env: T.Dict[str, str], name: str, values: T.List[str], separator: str, default_value: T.Optional[str]) -> str:
|
|
135
|
+
curr = env.get(name, default_value)
|
|
136
|
+
return separator.join(values if curr is None else values + [curr])
|
|
137
|
+
|
|
138
|
+
def get_env(self, full_env: EnvironOrDict, default_fmt: T.Optional[str] = None) -> T.Dict[str, str]:
|
|
139
|
+
env = full_env.copy()
|
|
140
|
+
for method, name, values, separator in self.envvars:
|
|
141
|
+
default_value = default_fmt.format(name) if default_fmt else None
|
|
142
|
+
env[name] = method(env, name, values, separator, default_value)
|
|
143
|
+
for name in self.unset_vars:
|
|
144
|
+
env.pop(name, None)
|
|
145
|
+
return env
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
@dataclass(eq=False)
|
|
149
|
+
class ExecutableSerialisation:
|
|
150
|
+
|
|
151
|
+
cmd_args: T.List[str]
|
|
152
|
+
env: T.Optional[EnvironmentVariables] = None
|
|
153
|
+
exe_wrapper: T.Optional['programs.ExternalProgram'] = None
|
|
154
|
+
workdir: T.Optional[str] = None
|
|
155
|
+
extra_paths: T.Optional[T.List] = None
|
|
156
|
+
capture: T.Optional[str] = None
|
|
157
|
+
feed: T.Optional[str] = None
|
|
158
|
+
tag: T.Optional[str] = None
|
|
159
|
+
verbose: bool = False
|
|
160
|
+
installdir_map: T.Optional[T.Dict[str, str]] = None
|
|
161
|
+
|
|
162
|
+
def __post_init__(self) -> None:
|
|
163
|
+
self.pickled = False
|
|
164
|
+
self.skip_if_destdir = False
|
|
165
|
+
self.subproject = T.cast('SubProject', '') # avoid circular import
|
|
166
|
+
self.dry_run = False
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
# Copyright 2012-2021 The Meson development team
|
|
3
|
+
# Copyright © 2021-2023 Intel Corporation
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
"""base classes providing no-op functionality.."""
|
|
8
|
+
|
|
9
|
+
import os
|
|
10
|
+
import typing as T
|
|
11
|
+
|
|
12
|
+
from .. import mlog
|
|
13
|
+
|
|
14
|
+
__all__ = ['BuildDirLock']
|
|
15
|
+
|
|
16
|
+
# This needs to be inherited by the specific implementations to make type
|
|
17
|
+
# checking happy
|
|
18
|
+
class BuildDirLock:
|
|
19
|
+
|
|
20
|
+
def __init__(self, builddir: str) -> None:
|
|
21
|
+
self.lockfilename = os.path.join(builddir, 'meson-private/meson.lock')
|
|
22
|
+
|
|
23
|
+
def __enter__(self) -> None:
|
|
24
|
+
mlog.debug('Calling the no-op version of BuildDirLock')
|
|
25
|
+
|
|
26
|
+
def __exit__(self, *args: T.Any) -> None:
|
|
27
|
+
pass
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
# Copyright 2012-2021 The Meson development team
|
|
3
|
+
# Copyright © 2021-2023 Intel Corporation
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
"""Posix specific implementations of mesonlib functionality."""
|
|
8
|
+
|
|
9
|
+
import fcntl
|
|
10
|
+
import typing as T
|
|
11
|
+
|
|
12
|
+
from .core import MesonException
|
|
13
|
+
from .platform import BuildDirLock as BuildDirLockBase
|
|
14
|
+
|
|
15
|
+
__all__ = ['BuildDirLock']
|
|
16
|
+
|
|
17
|
+
class BuildDirLock(BuildDirLockBase):
|
|
18
|
+
|
|
19
|
+
def __enter__(self) -> None:
|
|
20
|
+
self.lockfile = open(self.lockfilename, 'w', encoding='utf-8')
|
|
21
|
+
try:
|
|
22
|
+
fcntl.flock(self.lockfile, fcntl.LOCK_EX | fcntl.LOCK_NB)
|
|
23
|
+
except (BlockingIOError, PermissionError):
|
|
24
|
+
self.lockfile.close()
|
|
25
|
+
raise MesonException('Some other Meson process is already using this build directory. Exiting.')
|
|
26
|
+
except OSError as e:
|
|
27
|
+
self.lockfile.close()
|
|
28
|
+
raise MesonException(f'Failed to lock the build directory: {e.strerror}')
|
|
29
|
+
|
|
30
|
+
def __exit__(self, *args: T.Any) -> None:
|
|
31
|
+
fcntl.flock(self.lockfile, fcntl.LOCK_UN)
|
|
32
|
+
self.lockfile.close()
|