frida 16.2.0 → 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,10 @@
|
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
# Copyright 2016 The Meson development team
|
|
3
|
+
|
|
4
|
+
from pathlib import PurePath
|
|
5
|
+
|
|
6
|
+
def destdir_join(d1: str, d2: str) -> str:
|
|
7
|
+
if not d1:
|
|
8
|
+
return d2
|
|
9
|
+
# c:\destdir + c:\prefix must produce c:\destdir\prefix
|
|
10
|
+
return str(PurePath(d1, *PurePath(d2).parts[1:]))
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
# Copyright 2018 The Meson development team
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
import argparse
|
|
7
|
+
import subprocess
|
|
8
|
+
from pathlib import Path
|
|
9
|
+
|
|
10
|
+
from .run_tool import run_tool
|
|
11
|
+
from ..environment import detect_clangformat
|
|
12
|
+
from ..mesonlib import version_compare
|
|
13
|
+
from ..programs import ExternalProgram
|
|
14
|
+
import typing as T
|
|
15
|
+
|
|
16
|
+
def run_clang_format(fname: Path, exelist: T.List[str], check: bool, cformat_ver: T.Optional[str]) -> subprocess.CompletedProcess:
|
|
17
|
+
clangformat_10 = False
|
|
18
|
+
if check and cformat_ver:
|
|
19
|
+
if version_compare(cformat_ver, '>=10'):
|
|
20
|
+
clangformat_10 = True
|
|
21
|
+
exelist = exelist + ['--dry-run', '--Werror']
|
|
22
|
+
else:
|
|
23
|
+
original = fname.read_bytes()
|
|
24
|
+
before = fname.stat().st_mtime
|
|
25
|
+
ret = subprocess.run(exelist + ['-style=file', '-i', str(fname)])
|
|
26
|
+
after = fname.stat().st_mtime
|
|
27
|
+
if before != after:
|
|
28
|
+
print('File reformatted: ', fname)
|
|
29
|
+
if check and not clangformat_10:
|
|
30
|
+
# Restore the original if only checking.
|
|
31
|
+
fname.write_bytes(original)
|
|
32
|
+
ret.returncode = 1
|
|
33
|
+
return ret
|
|
34
|
+
|
|
35
|
+
def run(args: T.List[str]) -> int:
|
|
36
|
+
parser = argparse.ArgumentParser()
|
|
37
|
+
parser.add_argument('--check', action='store_true')
|
|
38
|
+
parser.add_argument('sourcedir')
|
|
39
|
+
parser.add_argument('builddir')
|
|
40
|
+
options = parser.parse_args(args)
|
|
41
|
+
|
|
42
|
+
srcdir = Path(options.sourcedir)
|
|
43
|
+
builddir = Path(options.builddir)
|
|
44
|
+
|
|
45
|
+
exelist = detect_clangformat()
|
|
46
|
+
if not exelist:
|
|
47
|
+
print('Could not execute clang-format "%s"' % ' '.join(exelist))
|
|
48
|
+
return 1
|
|
49
|
+
|
|
50
|
+
if options.check:
|
|
51
|
+
cformat_ver = ExternalProgram('clang-format', exelist, silent=True).get_version()
|
|
52
|
+
else:
|
|
53
|
+
cformat_ver = None
|
|
54
|
+
|
|
55
|
+
return run_tool('clang-format', srcdir, builddir, run_clang_format, exelist, options.check, cformat_ver)
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
# Copyright 2019 The Meson development team
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
import argparse
|
|
7
|
+
import subprocess
|
|
8
|
+
from pathlib import Path
|
|
9
|
+
|
|
10
|
+
from .run_tool import run_tool
|
|
11
|
+
import typing as T
|
|
12
|
+
|
|
13
|
+
def run_clang_tidy(fname: Path, builddir: Path) -> subprocess.CompletedProcess:
|
|
14
|
+
return subprocess.run(['clang-tidy', '-p', str(builddir), str(fname)])
|
|
15
|
+
|
|
16
|
+
def run_clang_tidy_fix(fname: Path, builddir: Path) -> subprocess.CompletedProcess:
|
|
17
|
+
return subprocess.run(['run-clang-tidy', '-fix', '-format', '-quiet', '-p', str(builddir), str(fname)])
|
|
18
|
+
|
|
19
|
+
def run(args: T.List[str]) -> int:
|
|
20
|
+
parser = argparse.ArgumentParser()
|
|
21
|
+
parser.add_argument('--fix', action='store_true')
|
|
22
|
+
parser.add_argument('sourcedir')
|
|
23
|
+
parser.add_argument('builddir')
|
|
24
|
+
options = parser.parse_args(args)
|
|
25
|
+
|
|
26
|
+
srcdir = Path(options.sourcedir)
|
|
27
|
+
builddir = Path(options.builddir)
|
|
28
|
+
|
|
29
|
+
run_func = run_clang_tidy_fix if options.fix else run_clang_tidy
|
|
30
|
+
return run_tool('clang-tidy', srcdir, builddir, run_func, builddir)
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
# Copyright 2016 The Meson development team
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
import os
|
|
7
|
+
import sys
|
|
8
|
+
import shutil
|
|
9
|
+
import pickle
|
|
10
|
+
import typing as T
|
|
11
|
+
|
|
12
|
+
def rmtrees(build_dir: str, trees: T.List[str]) -> None:
|
|
13
|
+
for t in trees:
|
|
14
|
+
# Never delete trees outside of the builddir
|
|
15
|
+
if os.path.isabs(t):
|
|
16
|
+
print(f'Cannot delete dir with absolute path {t!r}')
|
|
17
|
+
continue
|
|
18
|
+
bt = os.path.join(build_dir, t)
|
|
19
|
+
# Skip if it doesn't exist, or if it is not a directory
|
|
20
|
+
if os.path.isdir(bt):
|
|
21
|
+
shutil.rmtree(bt, ignore_errors=True)
|
|
22
|
+
|
|
23
|
+
def run(args: T.List[str]) -> int:
|
|
24
|
+
if len(args) != 1:
|
|
25
|
+
print('Cleaner script for Meson. Do not run on your own please.')
|
|
26
|
+
print('cleantrees.py <data-file>')
|
|
27
|
+
return 1
|
|
28
|
+
with open(args[0], 'rb') as f:
|
|
29
|
+
data = pickle.load(f)
|
|
30
|
+
rmtrees(data.build_dir, data.trees)
|
|
31
|
+
# Never fail cleaning
|
|
32
|
+
return 0
|
|
33
|
+
|
|
34
|
+
if __name__ == '__main__':
|
|
35
|
+
run(sys.argv[1:])
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
from __future__ import annotations
|
|
3
|
+
|
|
4
|
+
import argparse
|
|
5
|
+
import subprocess
|
|
6
|
+
import shutil
|
|
7
|
+
import sys
|
|
8
|
+
from pathlib import Path
|
|
9
|
+
import typing as T
|
|
10
|
+
|
|
11
|
+
def run(argsv: T.List[str]) -> int:
|
|
12
|
+
commands: T.List[T.List[str]] = [[]]
|
|
13
|
+
SEPARATOR = ';;;'
|
|
14
|
+
|
|
15
|
+
# Generate CMD parameters
|
|
16
|
+
parser = argparse.ArgumentParser(description='Wrapper for add_custom_command')
|
|
17
|
+
parser.add_argument('-d', '--directory', type=str, metavar='D', required=True, help='Working directory to cwd to')
|
|
18
|
+
parser.add_argument('-o', '--outputs', nargs='+', metavar='O', required=True, help='Expected output files')
|
|
19
|
+
parser.add_argument('-O', '--original-outputs', nargs='*', metavar='O', default=[], help='Output files expected by CMake')
|
|
20
|
+
parser.add_argument('commands', nargs=argparse.REMAINDER, help=f'A "{SEPARATOR}" separated list of commands')
|
|
21
|
+
|
|
22
|
+
# Parse
|
|
23
|
+
args = parser.parse_args(argsv)
|
|
24
|
+
directory = Path(args.directory)
|
|
25
|
+
|
|
26
|
+
dummy_target = None
|
|
27
|
+
if len(args.outputs) == 1 and len(args.original_outputs) == 0:
|
|
28
|
+
dummy_target = Path(args.outputs[0])
|
|
29
|
+
elif len(args.outputs) != len(args.original_outputs):
|
|
30
|
+
print('Length of output list and original output list differ')
|
|
31
|
+
return 1
|
|
32
|
+
|
|
33
|
+
for i in args.commands:
|
|
34
|
+
if i == SEPARATOR:
|
|
35
|
+
commands += [[]]
|
|
36
|
+
continue
|
|
37
|
+
|
|
38
|
+
i = i.replace('"', '') # Remove leftover quotes
|
|
39
|
+
commands[-1] += [i]
|
|
40
|
+
|
|
41
|
+
# Execute
|
|
42
|
+
for i in commands:
|
|
43
|
+
# Skip empty lists
|
|
44
|
+
if not i:
|
|
45
|
+
continue
|
|
46
|
+
|
|
47
|
+
cmd = []
|
|
48
|
+
stdout = None
|
|
49
|
+
stderr = None
|
|
50
|
+
capture_file = ''
|
|
51
|
+
|
|
52
|
+
for j in i:
|
|
53
|
+
if j in {'>', '>>'}:
|
|
54
|
+
stdout = subprocess.PIPE
|
|
55
|
+
continue
|
|
56
|
+
elif j in {'&>', '&>>'}:
|
|
57
|
+
stdout = subprocess.PIPE
|
|
58
|
+
stderr = subprocess.STDOUT
|
|
59
|
+
continue
|
|
60
|
+
|
|
61
|
+
if stdout is not None or stderr is not None:
|
|
62
|
+
capture_file += j
|
|
63
|
+
else:
|
|
64
|
+
cmd += [j]
|
|
65
|
+
|
|
66
|
+
try:
|
|
67
|
+
directory.mkdir(parents=True, exist_ok=True)
|
|
68
|
+
|
|
69
|
+
res = subprocess.run(cmd, stdout=stdout, stderr=stderr, cwd=str(directory), check=True)
|
|
70
|
+
if capture_file:
|
|
71
|
+
out_file = directory / capture_file
|
|
72
|
+
out_file.write_bytes(res.stdout)
|
|
73
|
+
except subprocess.CalledProcessError:
|
|
74
|
+
return 1
|
|
75
|
+
|
|
76
|
+
if dummy_target:
|
|
77
|
+
dummy_target.touch()
|
|
78
|
+
return 0
|
|
79
|
+
|
|
80
|
+
# Copy outputs
|
|
81
|
+
zipped_outputs = zip([Path(x) for x in args.outputs], [Path(x) for x in args.original_outputs])
|
|
82
|
+
for expected, generated in zipped_outputs:
|
|
83
|
+
do_copy = False
|
|
84
|
+
if not expected.exists():
|
|
85
|
+
if not generated.exists():
|
|
86
|
+
print('Unable to find generated file. This can cause the build to fail:')
|
|
87
|
+
print(generated)
|
|
88
|
+
do_copy = False
|
|
89
|
+
else:
|
|
90
|
+
do_copy = True
|
|
91
|
+
elif generated.exists():
|
|
92
|
+
if generated.stat().st_mtime > expected.stat().st_mtime:
|
|
93
|
+
do_copy = True
|
|
94
|
+
|
|
95
|
+
if do_copy:
|
|
96
|
+
if expected.exists():
|
|
97
|
+
expected.unlink()
|
|
98
|
+
shutil.copyfile(str(generated), str(expected))
|
|
99
|
+
|
|
100
|
+
return 0
|
|
101
|
+
|
|
102
|
+
if __name__ == '__main__':
|
|
103
|
+
sys.exit(run(sys.argv[1:]))
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Copied from GStreamer project
|
|
2
|
+
# Author: Seungha Yang <seungha.yang@navercorp.com>
|
|
3
|
+
# Xavier Claessens <xclaesse@gmail.com>
|
|
4
|
+
|
|
5
|
+
$i=1
|
|
6
|
+
$ppid=$PID
|
|
7
|
+
do {
|
|
8
|
+
$ppid=(Get-CimInstance Win32_Process -Filter "ProcessId=$ppid").parentprocessid
|
|
9
|
+
$pname=(Get-Process -id $ppid).Name
|
|
10
|
+
if($pname -eq "cmd" -Or $pname -eq "powershell" -Or $pname -eq "pwsh") {
|
|
11
|
+
Write-Host ("{0}.exe" -f $pname)
|
|
12
|
+
Break
|
|
13
|
+
}
|
|
14
|
+
# not found yet, find grand parent
|
|
15
|
+
# 10 times iteration seems to be sufficient
|
|
16
|
+
$i++
|
|
17
|
+
} while ($i -lt 10)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
# Copyright © 2021-2023 Intel Corporation
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
"""Helper script to copy files at build time.
|
|
6
|
+
|
|
7
|
+
This is easier than trying to detect whether to use copy, cp, or something else.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
import shutil
|
|
11
|
+
import typing as T
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def run(args: T.List[str]) -> int:
|
|
15
|
+
try:
|
|
16
|
+
shutil.copy2(args[0], args[1])
|
|
17
|
+
except Exception:
|
|
18
|
+
return 1
|
|
19
|
+
return 0
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
# Copyright 2017 The Meson development team
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
from mesonbuild import environment, mesonlib
|
|
7
|
+
|
|
8
|
+
import argparse, re, sys, os, subprocess, pathlib, stat
|
|
9
|
+
import typing as T
|
|
10
|
+
|
|
11
|
+
def coverage(outputs: T.List[str], source_root: str, subproject_root: str, build_root: str, log_dir: str, use_llvm_cov: bool,
|
|
12
|
+
gcovr_exe: str, llvm_cov_exe: str) -> int:
|
|
13
|
+
outfiles = []
|
|
14
|
+
exitcode = 0
|
|
15
|
+
|
|
16
|
+
if gcovr_exe == '':
|
|
17
|
+
gcovr_exe = None
|
|
18
|
+
else:
|
|
19
|
+
gcovr_exe, gcovr_version = environment.detect_gcovr(gcovr_exe)
|
|
20
|
+
if llvm_cov_exe == '' or not mesonlib.exe_exists([llvm_cov_exe, '--version']):
|
|
21
|
+
llvm_cov_exe = None
|
|
22
|
+
|
|
23
|
+
lcov_exe, lcov_version, genhtml_exe = environment.detect_lcov_genhtml()
|
|
24
|
+
|
|
25
|
+
# load config files for tools if available in the source tree
|
|
26
|
+
# - lcov requires manually specifying a per-project config
|
|
27
|
+
# - gcovr picks up the per-project config, and also supports filtering files
|
|
28
|
+
# so don't exclude subprojects ourselves, if the project has a config,
|
|
29
|
+
# because they either don't want that, or should set it themselves
|
|
30
|
+
lcovrc = os.path.join(source_root, '.lcovrc')
|
|
31
|
+
if os.path.exists(lcovrc):
|
|
32
|
+
lcov_config = ['--config-file', lcovrc]
|
|
33
|
+
else:
|
|
34
|
+
lcov_config = []
|
|
35
|
+
|
|
36
|
+
if lcov_exe and mesonlib.version_compare(lcov_version, '>=2.0'):
|
|
37
|
+
lcov_exe_rc_branch_coverage = ['--rc', 'branch_coverage=1']
|
|
38
|
+
else:
|
|
39
|
+
lcov_exe_rc_branch_coverage = ['--rc', 'lcov_branch_coverage=1']
|
|
40
|
+
|
|
41
|
+
gcovr_config = ['-e', re.escape(subproject_root)]
|
|
42
|
+
|
|
43
|
+
# gcovr >= 4.2 requires a different syntax for out of source builds
|
|
44
|
+
if gcovr_exe and mesonlib.version_compare(gcovr_version, '>=4.2'):
|
|
45
|
+
gcovr_base_cmd = [gcovr_exe, '-r', source_root, build_root]
|
|
46
|
+
# it also started supporting the config file
|
|
47
|
+
if os.path.exists(os.path.join(source_root, 'gcovr.cfg')):
|
|
48
|
+
gcovr_config = []
|
|
49
|
+
else:
|
|
50
|
+
gcovr_base_cmd = [gcovr_exe, '-r', build_root]
|
|
51
|
+
|
|
52
|
+
if use_llvm_cov:
|
|
53
|
+
gcov_exe_args = ['--gcov-executable', llvm_cov_exe + ' gcov']
|
|
54
|
+
else:
|
|
55
|
+
gcov_exe_args = []
|
|
56
|
+
|
|
57
|
+
if not outputs or 'xml' in outputs:
|
|
58
|
+
if gcovr_exe and mesonlib.version_compare(gcovr_version, '>=3.3'):
|
|
59
|
+
subprocess.check_call(gcovr_base_cmd + gcovr_config +
|
|
60
|
+
['-x',
|
|
61
|
+
'-o', os.path.join(log_dir, 'coverage.xml')
|
|
62
|
+
] + gcov_exe_args)
|
|
63
|
+
outfiles.append(('Xml', pathlib.Path(log_dir, 'coverage.xml')))
|
|
64
|
+
elif outputs:
|
|
65
|
+
print('gcovr >= 3.3 needed to generate Xml coverage report')
|
|
66
|
+
exitcode = 1
|
|
67
|
+
|
|
68
|
+
if not outputs or 'sonarqube' in outputs:
|
|
69
|
+
if gcovr_exe and mesonlib.version_compare(gcovr_version, '>=4.2'):
|
|
70
|
+
subprocess.check_call(gcovr_base_cmd + gcovr_config +
|
|
71
|
+
['--sonarqube',
|
|
72
|
+
'-o', os.path.join(log_dir, 'sonarqube.xml'),
|
|
73
|
+
] + gcov_exe_args)
|
|
74
|
+
outfiles.append(('Sonarqube', pathlib.Path(log_dir, 'sonarqube.xml')))
|
|
75
|
+
elif outputs:
|
|
76
|
+
print('gcovr >= 4.2 needed to generate Xml coverage report')
|
|
77
|
+
exitcode = 1
|
|
78
|
+
|
|
79
|
+
if not outputs or 'text' in outputs:
|
|
80
|
+
if gcovr_exe and mesonlib.version_compare(gcovr_version, '>=3.3'):
|
|
81
|
+
subprocess.check_call(gcovr_base_cmd + gcovr_config +
|
|
82
|
+
['-o', os.path.join(log_dir, 'coverage.txt')] +
|
|
83
|
+
gcov_exe_args)
|
|
84
|
+
outfiles.append(('Text', pathlib.Path(log_dir, 'coverage.txt')))
|
|
85
|
+
elif outputs:
|
|
86
|
+
print('gcovr >= 3.3 needed to generate text coverage report')
|
|
87
|
+
exitcode = 1
|
|
88
|
+
|
|
89
|
+
if not outputs or 'html' in outputs:
|
|
90
|
+
if lcov_exe and genhtml_exe:
|
|
91
|
+
htmloutdir = os.path.join(log_dir, 'coveragereport')
|
|
92
|
+
covinfo = os.path.join(log_dir, 'coverage.info')
|
|
93
|
+
initial_tracefile = covinfo + '.initial'
|
|
94
|
+
run_tracefile = covinfo + '.run'
|
|
95
|
+
raw_tracefile = covinfo + '.raw'
|
|
96
|
+
lcov_subpoject_exclude = []
|
|
97
|
+
if os.path.exists(subproject_root):
|
|
98
|
+
lcov_subpoject_exclude.append(os.path.join(subproject_root, '*'))
|
|
99
|
+
if use_llvm_cov:
|
|
100
|
+
# Create a shim to allow using llvm-cov as a gcov tool.
|
|
101
|
+
if mesonlib.is_windows():
|
|
102
|
+
llvm_cov_shim_path = os.path.join(log_dir, 'llvm-cov.bat')
|
|
103
|
+
with open(llvm_cov_shim_path, 'w', encoding='utf-8') as llvm_cov_bat:
|
|
104
|
+
llvm_cov_bat.write(f'@"{llvm_cov_exe}" gcov %*')
|
|
105
|
+
else:
|
|
106
|
+
llvm_cov_shim_path = os.path.join(log_dir, 'llvm-cov.sh')
|
|
107
|
+
with open(llvm_cov_shim_path, 'w', encoding='utf-8') as llvm_cov_sh:
|
|
108
|
+
llvm_cov_sh.write(f'#!/usr/bin/env sh\nexec "{llvm_cov_exe}" gcov $@')
|
|
109
|
+
os.chmod(llvm_cov_shim_path, os.stat(llvm_cov_shim_path).st_mode | stat.S_IEXEC)
|
|
110
|
+
gcov_tool_args = ['--gcov-tool', llvm_cov_shim_path]
|
|
111
|
+
else:
|
|
112
|
+
gcov_tool_args = []
|
|
113
|
+
subprocess.check_call([lcov_exe,
|
|
114
|
+
'--directory', build_root,
|
|
115
|
+
'--capture',
|
|
116
|
+
'--initial',
|
|
117
|
+
'--output-file',
|
|
118
|
+
initial_tracefile] +
|
|
119
|
+
lcov_config +
|
|
120
|
+
gcov_tool_args)
|
|
121
|
+
subprocess.check_call([lcov_exe,
|
|
122
|
+
'--directory', build_root,
|
|
123
|
+
'--capture',
|
|
124
|
+
'--output-file', run_tracefile,
|
|
125
|
+
'--no-checksum',
|
|
126
|
+
*lcov_exe_rc_branch_coverage] +
|
|
127
|
+
lcov_config +
|
|
128
|
+
gcov_tool_args)
|
|
129
|
+
# Join initial and test results.
|
|
130
|
+
subprocess.check_call([lcov_exe,
|
|
131
|
+
'-a', initial_tracefile,
|
|
132
|
+
'-a', run_tracefile,
|
|
133
|
+
*lcov_exe_rc_branch_coverage,
|
|
134
|
+
'-o', raw_tracefile] + lcov_config)
|
|
135
|
+
# Remove all directories outside the source_root from the covinfo
|
|
136
|
+
subprocess.check_call([lcov_exe,
|
|
137
|
+
'--extract', raw_tracefile,
|
|
138
|
+
os.path.join(source_root, '*'),
|
|
139
|
+
*lcov_exe_rc_branch_coverage,
|
|
140
|
+
'--output-file', covinfo] + lcov_config)
|
|
141
|
+
# Remove all directories inside subproject dir
|
|
142
|
+
subprocess.check_call([lcov_exe,
|
|
143
|
+
'--remove', covinfo,
|
|
144
|
+
*lcov_subpoject_exclude,
|
|
145
|
+
*lcov_exe_rc_branch_coverage,
|
|
146
|
+
'--ignore-errors', 'unused',
|
|
147
|
+
'--output-file', covinfo] + lcov_config)
|
|
148
|
+
subprocess.check_call([genhtml_exe,
|
|
149
|
+
'--prefix', build_root,
|
|
150
|
+
'--prefix', source_root,
|
|
151
|
+
'--output-directory', htmloutdir,
|
|
152
|
+
'--title', 'Code coverage',
|
|
153
|
+
'--legend',
|
|
154
|
+
'--show-details',
|
|
155
|
+
'--branch-coverage',
|
|
156
|
+
covinfo] + lcov_config)
|
|
157
|
+
outfiles.append(('Html', pathlib.Path(htmloutdir, 'index.html')))
|
|
158
|
+
elif gcovr_exe and mesonlib.version_compare(gcovr_version, '>=3.3'):
|
|
159
|
+
htmloutdir = os.path.join(log_dir, 'coveragereport')
|
|
160
|
+
if not os.path.isdir(htmloutdir):
|
|
161
|
+
os.mkdir(htmloutdir)
|
|
162
|
+
subprocess.check_call(gcovr_base_cmd + gcovr_config +
|
|
163
|
+
['--html',
|
|
164
|
+
'--html-details',
|
|
165
|
+
'--print-summary',
|
|
166
|
+
'-o', os.path.join(htmloutdir, 'index.html'),
|
|
167
|
+
] + gcov_exe_args)
|
|
168
|
+
outfiles.append(('Html', pathlib.Path(htmloutdir, 'index.html')))
|
|
169
|
+
elif outputs:
|
|
170
|
+
print('lcov/genhtml or gcovr >= 3.3 needed to generate Html coverage report')
|
|
171
|
+
exitcode = 1
|
|
172
|
+
|
|
173
|
+
if not outputs and not outfiles:
|
|
174
|
+
print('Need gcovr or lcov/genhtml to generate any coverage reports')
|
|
175
|
+
exitcode = 1
|
|
176
|
+
|
|
177
|
+
if outfiles:
|
|
178
|
+
print('')
|
|
179
|
+
for (filetype, path) in outfiles:
|
|
180
|
+
print(filetype + ' coverage report can be found at', path.as_uri())
|
|
181
|
+
|
|
182
|
+
return exitcode
|
|
183
|
+
|
|
184
|
+
def run(args: T.List[str]) -> int:
|
|
185
|
+
if not os.path.isfile('build.ninja'):
|
|
186
|
+
print('Coverage currently only works with the Ninja backend.')
|
|
187
|
+
return 1
|
|
188
|
+
parser = argparse.ArgumentParser(description='Generate coverage reports')
|
|
189
|
+
parser.add_argument('--text', dest='outputs', action='append_const',
|
|
190
|
+
const='text', help='generate Text report')
|
|
191
|
+
parser.add_argument('--xml', dest='outputs', action='append_const',
|
|
192
|
+
const='xml', help='generate Xml report')
|
|
193
|
+
parser.add_argument('--sonarqube', dest='outputs', action='append_const',
|
|
194
|
+
const='sonarqube', help='generate Sonarqube Xml report')
|
|
195
|
+
parser.add_argument('--html', dest='outputs', action='append_const',
|
|
196
|
+
const='html', help='generate Html report')
|
|
197
|
+
parser.add_argument('--use-llvm-cov', action='store_true',
|
|
198
|
+
help='use llvm-cov')
|
|
199
|
+
parser.add_argument('--gcovr', action='store', default='',
|
|
200
|
+
help='The gcovr executable to use if specified')
|
|
201
|
+
parser.add_argument('--llvm-cov', action='store', default='',
|
|
202
|
+
help='The llvm-cov executable to use if specified')
|
|
203
|
+
parser.add_argument('source_root')
|
|
204
|
+
parser.add_argument('subproject_root')
|
|
205
|
+
parser.add_argument('build_root')
|
|
206
|
+
parser.add_argument('log_dir')
|
|
207
|
+
options = parser.parse_args(args)
|
|
208
|
+
return coverage(options.outputs, options.source_root,
|
|
209
|
+
options.subproject_root, options.build_root,
|
|
210
|
+
options.log_dir, options.use_llvm_cov,
|
|
211
|
+
options.gcovr, options.llvm_cov)
|
|
212
|
+
|
|
213
|
+
if __name__ == '__main__':
|
|
214
|
+
sys.exit(run(sys.argv[1:]))
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
# Copyright 2013 The Meson development team
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
|
|
6
|
+
import os, sys
|
|
7
|
+
import typing as T
|
|
8
|
+
|
|
9
|
+
def run(args: T.List[str]) -> int:
|
|
10
|
+
if len(args) != 2:
|
|
11
|
+
print('delwithsuffix.py <root of subdir to process> <suffix to delete>')
|
|
12
|
+
sys.exit(1)
|
|
13
|
+
|
|
14
|
+
topdir = args[0]
|
|
15
|
+
suffix = args[1]
|
|
16
|
+
if suffix[0] != '.':
|
|
17
|
+
suffix = '.' + suffix
|
|
18
|
+
|
|
19
|
+
for (root, _, files) in os.walk(topdir):
|
|
20
|
+
for f in files:
|
|
21
|
+
if f.endswith(suffix):
|
|
22
|
+
fullname = os.path.join(root, f)
|
|
23
|
+
os.unlink(fullname)
|
|
24
|
+
return 0
|
|
25
|
+
|
|
26
|
+
if __name__ == '__main__':
|
|
27
|
+
run(sys.argv[1:])
|