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.
Files changed (386) hide show
  1. package/BSDmakefile +6 -0
  2. package/Makefile +16 -0
  3. package/README.md +14 -11
  4. package/configure +18 -0
  5. package/configure.bat +22 -0
  6. package/dist/native.js +0 -8
  7. package/lib/application.ts +98 -0
  8. package/lib/authentication.ts +3 -0
  9. package/lib/build.py +50 -0
  10. package/lib/bus.ts +30 -0
  11. package/lib/cancellable.ts +33 -0
  12. package/lib/child.ts +15 -0
  13. package/lib/crash.ts +11 -0
  14. package/lib/device.ts +329 -0
  15. package/lib/device_manager.ts +69 -0
  16. package/lib/endpoint_parameters.ts +56 -0
  17. package/lib/icon.ts +15 -0
  18. package/lib/index.ts +311 -0
  19. package/lib/iostream.ts +78 -0
  20. package/lib/meson.build +53 -0
  21. package/lib/native.ts +9 -0
  22. package/lib/portal_membership.ts +10 -0
  23. package/lib/portal_service.ts +105 -0
  24. package/lib/process.ts +57 -0
  25. package/lib/relay.ts +44 -0
  26. package/lib/script.ts +352 -0
  27. package/lib/session.ts +113 -0
  28. package/lib/signals.ts +45 -0
  29. package/lib/socket_address.ts +35 -0
  30. package/lib/spawn.ts +4 -0
  31. package/lib/system_parameters.ts +78 -0
  32. package/make.bat +23 -0
  33. package/meson.build +160 -0
  34. package/meson.options +11 -0
  35. package/package.json +27 -6
  36. package/releng/deps.py +1133 -0
  37. package/releng/deps.toml +391 -0
  38. package/releng/devkit-assets/frida-core-example-unix.c +188 -0
  39. package/releng/devkit-assets/frida-core-example-windows.c +197 -0
  40. package/releng/devkit-assets/frida-core-example.sln +28 -0
  41. package/releng/devkit-assets/frida-core-example.vcxproj +157 -0
  42. package/releng/devkit-assets/frida-core-example.vcxproj.filters +27 -0
  43. package/releng/devkit-assets/frida-gum-example-unix.c +122 -0
  44. package/releng/devkit-assets/frida-gum-example-windows.c +132 -0
  45. package/releng/devkit-assets/frida-gum-example.sln +28 -0
  46. package/releng/devkit-assets/frida-gum-example.vcxproj +157 -0
  47. package/releng/devkit-assets/frida-gum-example.vcxproj.filters +27 -0
  48. package/releng/devkit-assets/frida-gumjs-example-unix.c +84 -0
  49. package/releng/devkit-assets/frida-gumjs-example-windows.c +91 -0
  50. package/releng/devkit-assets/frida-gumjs-example.sln +28 -0
  51. package/releng/devkit-assets/frida-gumjs-example.vcxproj +157 -0
  52. package/releng/devkit-assets/frida-gumjs-example.vcxproj.filters +27 -0
  53. package/releng/devkit.py +535 -0
  54. package/releng/env.py +420 -0
  55. package/releng/env_android.py +150 -0
  56. package/releng/env_apple.py +176 -0
  57. package/releng/env_generic.py +373 -0
  58. package/releng/frida_version.py +69 -0
  59. package/releng/machine_file.py +44 -0
  60. package/releng/machine_spec.py +290 -0
  61. package/releng/meson/meson.py +27 -0
  62. package/releng/meson/mesonbuild/__init__.py +0 -0
  63. package/releng/meson/mesonbuild/_pathlib.py +63 -0
  64. package/releng/meson/mesonbuild/_typing.py +69 -0
  65. package/releng/meson/mesonbuild/arglist.py +321 -0
  66. package/releng/meson/mesonbuild/ast/__init__.py +23 -0
  67. package/releng/meson/mesonbuild/ast/interpreter.py +441 -0
  68. package/releng/meson/mesonbuild/ast/introspection.py +374 -0
  69. package/releng/meson/mesonbuild/ast/postprocess.py +109 -0
  70. package/releng/meson/mesonbuild/ast/printer.py +620 -0
  71. package/releng/meson/mesonbuild/ast/visitor.py +161 -0
  72. package/releng/meson/mesonbuild/backend/__init__.py +0 -0
  73. package/releng/meson/mesonbuild/backend/backends.py +2047 -0
  74. package/releng/meson/mesonbuild/backend/ninjabackend.py +3808 -0
  75. package/releng/meson/mesonbuild/backend/nonebackend.py +26 -0
  76. package/releng/meson/mesonbuild/backend/vs2010backend.py +2078 -0
  77. package/releng/meson/mesonbuild/backend/vs2012backend.py +35 -0
  78. package/releng/meson/mesonbuild/backend/vs2013backend.py +34 -0
  79. package/releng/meson/mesonbuild/backend/vs2015backend.py +35 -0
  80. package/releng/meson/mesonbuild/backend/vs2017backend.py +59 -0
  81. package/releng/meson/mesonbuild/backend/vs2019backend.py +54 -0
  82. package/releng/meson/mesonbuild/backend/vs2022backend.py +54 -0
  83. package/releng/meson/mesonbuild/backend/xcodebackend.py +1781 -0
  84. package/releng/meson/mesonbuild/build.py +3249 -0
  85. package/releng/meson/mesonbuild/cargo/__init__.py +5 -0
  86. package/releng/meson/mesonbuild/cargo/builder.py +238 -0
  87. package/releng/meson/mesonbuild/cargo/cfg.py +274 -0
  88. package/releng/meson/mesonbuild/cargo/interpreter.py +733 -0
  89. package/releng/meson/mesonbuild/cargo/manifest.py +227 -0
  90. package/releng/meson/mesonbuild/cargo/version.py +95 -0
  91. package/releng/meson/mesonbuild/cmake/__init__.py +28 -0
  92. package/releng/meson/mesonbuild/cmake/common.py +331 -0
  93. package/releng/meson/mesonbuild/cmake/data/__init__.py +0 -0
  94. package/releng/meson/mesonbuild/cmake/data/preload.cmake +82 -0
  95. package/releng/meson/mesonbuild/cmake/executor.py +241 -0
  96. package/releng/meson/mesonbuild/cmake/fileapi.py +324 -0
  97. package/releng/meson/mesonbuild/cmake/generator.py +186 -0
  98. package/releng/meson/mesonbuild/cmake/interpreter.py +1267 -0
  99. package/releng/meson/mesonbuild/cmake/toolchain.py +248 -0
  100. package/releng/meson/mesonbuild/cmake/traceparser.py +814 -0
  101. package/releng/meson/mesonbuild/cmake/tracetargets.py +161 -0
  102. package/releng/meson/mesonbuild/compilers/__init__.py +86 -0
  103. package/releng/meson/mesonbuild/compilers/asm.py +307 -0
  104. package/releng/meson/mesonbuild/compilers/c.py +788 -0
  105. package/releng/meson/mesonbuild/compilers/c_function_attributes.py +143 -0
  106. package/releng/meson/mesonbuild/compilers/compilers.py +1388 -0
  107. package/releng/meson/mesonbuild/compilers/cpp.py +1035 -0
  108. package/releng/meson/mesonbuild/compilers/cs.py +136 -0
  109. package/releng/meson/mesonbuild/compilers/cuda.py +806 -0
  110. package/releng/meson/mesonbuild/compilers/cython.py +91 -0
  111. package/releng/meson/mesonbuild/compilers/d.py +861 -0
  112. package/releng/meson/mesonbuild/compilers/detect.py +1396 -0
  113. package/releng/meson/mesonbuild/compilers/fortran.py +523 -0
  114. package/releng/meson/mesonbuild/compilers/java.py +113 -0
  115. package/releng/meson/mesonbuild/compilers/mixins/__init__.py +0 -0
  116. package/releng/meson/mesonbuild/compilers/mixins/arm.py +167 -0
  117. package/releng/meson/mesonbuild/compilers/mixins/ccrx.py +113 -0
  118. package/releng/meson/mesonbuild/compilers/mixins/clang.py +170 -0
  119. package/releng/meson/mesonbuild/compilers/mixins/clike.py +1330 -0
  120. package/releng/meson/mesonbuild/compilers/mixins/compcert.py +117 -0
  121. package/releng/meson/mesonbuild/compilers/mixins/elbrus.py +93 -0
  122. package/releng/meson/mesonbuild/compilers/mixins/emscripten.py +89 -0
  123. package/releng/meson/mesonbuild/compilers/mixins/gnu.py +629 -0
  124. package/releng/meson/mesonbuild/compilers/mixins/intel.py +167 -0
  125. package/releng/meson/mesonbuild/compilers/mixins/islinker.py +120 -0
  126. package/releng/meson/mesonbuild/compilers/mixins/metrowerks.py +279 -0
  127. package/releng/meson/mesonbuild/compilers/mixins/pgi.py +88 -0
  128. package/releng/meson/mesonbuild/compilers/mixins/ti.py +130 -0
  129. package/releng/meson/mesonbuild/compilers/mixins/visualstudio.py +458 -0
  130. package/releng/meson/mesonbuild/compilers/mixins/xc16.py +111 -0
  131. package/releng/meson/mesonbuild/compilers/objc.py +120 -0
  132. package/releng/meson/mesonbuild/compilers/objcpp.py +102 -0
  133. package/releng/meson/mesonbuild/compilers/rust.py +230 -0
  134. package/releng/meson/mesonbuild/compilers/swift.py +131 -0
  135. package/releng/meson/mesonbuild/compilers/vala.py +121 -0
  136. package/releng/meson/mesonbuild/coredata.py +1532 -0
  137. package/releng/meson/mesonbuild/dependencies/__init__.py +252 -0
  138. package/releng/meson/mesonbuild/dependencies/base.py +663 -0
  139. package/releng/meson/mesonbuild/dependencies/boost.py +1083 -0
  140. package/releng/meson/mesonbuild/dependencies/cmake.py +656 -0
  141. package/releng/meson/mesonbuild/dependencies/coarrays.py +80 -0
  142. package/releng/meson/mesonbuild/dependencies/configtool.py +163 -0
  143. package/releng/meson/mesonbuild/dependencies/cuda.py +295 -0
  144. package/releng/meson/mesonbuild/dependencies/data/CMakeLists.txt +102 -0
  145. package/releng/meson/mesonbuild/dependencies/data/CMakeListsLLVM.txt +204 -0
  146. package/releng/meson/mesonbuild/dependencies/data/CMakePathInfo.txt +31 -0
  147. package/releng/meson/mesonbuild/dependencies/data/__init__.py +0 -0
  148. package/releng/meson/mesonbuild/dependencies/detect.py +225 -0
  149. package/releng/meson/mesonbuild/dependencies/dev.py +707 -0
  150. package/releng/meson/mesonbuild/dependencies/dub.py +424 -0
  151. package/releng/meson/mesonbuild/dependencies/factory.py +146 -0
  152. package/releng/meson/mesonbuild/dependencies/framework.py +111 -0
  153. package/releng/meson/mesonbuild/dependencies/hdf5.py +168 -0
  154. package/releng/meson/mesonbuild/dependencies/misc.py +618 -0
  155. package/releng/meson/mesonbuild/dependencies/mpi.py +231 -0
  156. package/releng/meson/mesonbuild/dependencies/pkgconfig.py +570 -0
  157. package/releng/meson/mesonbuild/dependencies/platform.py +52 -0
  158. package/releng/meson/mesonbuild/dependencies/python.py +431 -0
  159. package/releng/meson/mesonbuild/dependencies/qt.py +484 -0
  160. package/releng/meson/mesonbuild/dependencies/scalapack.py +142 -0
  161. package/releng/meson/mesonbuild/dependencies/ui.py +281 -0
  162. package/releng/meson/mesonbuild/depfile.py +82 -0
  163. package/releng/meson/mesonbuild/envconfig.py +480 -0
  164. package/releng/meson/mesonbuild/environment.py +987 -0
  165. package/releng/meson/mesonbuild/interpreter/__init__.py +47 -0
  166. package/releng/meson/mesonbuild/interpreter/compiler.py +900 -0
  167. package/releng/meson/mesonbuild/interpreter/dependencyfallbacks.py +386 -0
  168. package/releng/meson/mesonbuild/interpreter/interpreter.py +3595 -0
  169. package/releng/meson/mesonbuild/interpreter/interpreterobjects.py +1096 -0
  170. package/releng/meson/mesonbuild/interpreter/kwargs.py +479 -0
  171. package/releng/meson/mesonbuild/interpreter/mesonmain.py +487 -0
  172. package/releng/meson/mesonbuild/interpreter/primitives/__init__.py +29 -0
  173. package/releng/meson/mesonbuild/interpreter/primitives/array.py +108 -0
  174. package/releng/meson/mesonbuild/interpreter/primitives/boolean.py +52 -0
  175. package/releng/meson/mesonbuild/interpreter/primitives/dict.py +88 -0
  176. package/releng/meson/mesonbuild/interpreter/primitives/integer.py +86 -0
  177. package/releng/meson/mesonbuild/interpreter/primitives/range.py +38 -0
  178. package/releng/meson/mesonbuild/interpreter/primitives/string.py +247 -0
  179. package/releng/meson/mesonbuild/interpreter/type_checking.py +853 -0
  180. package/releng/meson/mesonbuild/interpreterbase/__init__.py +126 -0
  181. package/releng/meson/mesonbuild/interpreterbase/_unholder.py +25 -0
  182. package/releng/meson/mesonbuild/interpreterbase/baseobjects.py +174 -0
  183. package/releng/meson/mesonbuild/interpreterbase/decorators.py +806 -0
  184. package/releng/meson/mesonbuild/interpreterbase/disabler.py +35 -0
  185. package/releng/meson/mesonbuild/interpreterbase/exceptions.py +22 -0
  186. package/releng/meson/mesonbuild/interpreterbase/helpers.py +67 -0
  187. package/releng/meson/mesonbuild/interpreterbase/interpreterbase.py +665 -0
  188. package/releng/meson/mesonbuild/interpreterbase/operator.py +32 -0
  189. package/releng/meson/mesonbuild/linkers/__init__.py +20 -0
  190. package/releng/meson/mesonbuild/linkers/base.py +39 -0
  191. package/releng/meson/mesonbuild/linkers/detect.py +229 -0
  192. package/releng/meson/mesonbuild/linkers/linkers.py +1614 -0
  193. package/releng/meson/mesonbuild/mcompile.py +380 -0
  194. package/releng/meson/mesonbuild/mconf.py +368 -0
  195. package/releng/meson/mesonbuild/mdevenv.py +234 -0
  196. package/releng/meson/mesonbuild/mdist.py +376 -0
  197. package/releng/meson/mesonbuild/mesondata.py +38 -0
  198. package/releng/meson/mesonbuild/mesonlib.py +23 -0
  199. package/releng/meson/mesonbuild/mesonmain.py +289 -0
  200. package/releng/meson/mesonbuild/minit.py +204 -0
  201. package/releng/meson/mesonbuild/minstall.py +864 -0
  202. package/releng/meson/mesonbuild/mintro.py +667 -0
  203. package/releng/meson/mesonbuild/mlog.py +542 -0
  204. package/releng/meson/mesonbuild/modules/__init__.py +270 -0
  205. package/releng/meson/mesonbuild/modules/cmake.py +442 -0
  206. package/releng/meson/mesonbuild/modules/cuda.py +377 -0
  207. package/releng/meson/mesonbuild/modules/dlang.py +117 -0
  208. package/releng/meson/mesonbuild/modules/external_project.py +306 -0
  209. package/releng/meson/mesonbuild/modules/fs.py +323 -0
  210. package/releng/meson/mesonbuild/modules/gnome.py +2215 -0
  211. package/releng/meson/mesonbuild/modules/hotdoc.py +487 -0
  212. package/releng/meson/mesonbuild/modules/i18n.py +405 -0
  213. package/releng/meson/mesonbuild/modules/icestorm.py +123 -0
  214. package/releng/meson/mesonbuild/modules/java.py +112 -0
  215. package/releng/meson/mesonbuild/modules/keyval.py +65 -0
  216. package/releng/meson/mesonbuild/modules/modtest.py +33 -0
  217. package/releng/meson/mesonbuild/modules/pkgconfig.py +744 -0
  218. package/releng/meson/mesonbuild/modules/python.py +556 -0
  219. package/releng/meson/mesonbuild/modules/python3.py +85 -0
  220. package/releng/meson/mesonbuild/modules/qt.py +621 -0
  221. package/releng/meson/mesonbuild/modules/qt4.py +23 -0
  222. package/releng/meson/mesonbuild/modules/qt5.py +23 -0
  223. package/releng/meson/mesonbuild/modules/qt6.py +22 -0
  224. package/releng/meson/mesonbuild/modules/rust.py +355 -0
  225. package/releng/meson/mesonbuild/modules/simd.py +114 -0
  226. package/releng/meson/mesonbuild/modules/sourceset.py +291 -0
  227. package/releng/meson/mesonbuild/modules/wayland.py +151 -0
  228. package/releng/meson/mesonbuild/modules/windows.py +207 -0
  229. package/releng/meson/mesonbuild/mparser.py +1114 -0
  230. package/releng/meson/mesonbuild/msetup.py +365 -0
  231. package/releng/meson/mesonbuild/msubprojects.py +764 -0
  232. package/releng/meson/mesonbuild/mtest.py +2201 -0
  233. package/releng/meson/mesonbuild/munstable_coredata.py +107 -0
  234. package/releng/meson/mesonbuild/optinterpreter.py +276 -0
  235. package/releng/meson/mesonbuild/programs.py +367 -0
  236. package/releng/meson/mesonbuild/rewriter.py +1075 -0
  237. package/releng/meson/mesonbuild/scripts/__init__.py +10 -0
  238. package/releng/meson/mesonbuild/scripts/clangformat.py +55 -0
  239. package/releng/meson/mesonbuild/scripts/clangtidy.py +30 -0
  240. package/releng/meson/mesonbuild/scripts/cleantrees.py +35 -0
  241. package/releng/meson/mesonbuild/scripts/cmake_run_ctgt.py +103 -0
  242. package/releng/meson/mesonbuild/scripts/cmd_or_ps.ps1 +17 -0
  243. package/releng/meson/mesonbuild/scripts/copy.py +19 -0
  244. package/releng/meson/mesonbuild/scripts/coverage.py +214 -0
  245. package/releng/meson/mesonbuild/scripts/delwithsuffix.py +27 -0
  246. package/releng/meson/mesonbuild/scripts/depfixer.py +495 -0
  247. package/releng/meson/mesonbuild/scripts/depscan.py +198 -0
  248. package/releng/meson/mesonbuild/scripts/dirchanger.py +20 -0
  249. package/releng/meson/mesonbuild/scripts/env2mfile.py +402 -0
  250. package/releng/meson/mesonbuild/scripts/externalproject.py +106 -0
  251. package/releng/meson/mesonbuild/scripts/gettext.py +86 -0
  252. package/releng/meson/mesonbuild/scripts/gtkdochelper.py +286 -0
  253. package/releng/meson/mesonbuild/scripts/hotdochelper.py +40 -0
  254. package/releng/meson/mesonbuild/scripts/itstool.py +77 -0
  255. package/releng/meson/mesonbuild/scripts/meson_exe.py +115 -0
  256. package/releng/meson/mesonbuild/scripts/msgfmthelper.py +29 -0
  257. package/releng/meson/mesonbuild/scripts/pycompile.py +54 -0
  258. package/releng/meson/mesonbuild/scripts/python_info.py +121 -0
  259. package/releng/meson/mesonbuild/scripts/regen_checker.py +55 -0
  260. package/releng/meson/mesonbuild/scripts/run_tool.py +58 -0
  261. package/releng/meson/mesonbuild/scripts/scanbuild.py +57 -0
  262. package/releng/meson/mesonbuild/scripts/symbolextractor.py +322 -0
  263. package/releng/meson/mesonbuild/scripts/tags.py +44 -0
  264. package/releng/meson/mesonbuild/scripts/test_loaded_modules.py +14 -0
  265. package/releng/meson/mesonbuild/scripts/uninstall.py +41 -0
  266. package/releng/meson/mesonbuild/scripts/vcstagger.py +35 -0
  267. package/releng/meson/mesonbuild/scripts/yasm.py +24 -0
  268. package/releng/meson/mesonbuild/templates/__init__.py +0 -0
  269. package/releng/meson/mesonbuild/templates/cpptemplates.py +143 -0
  270. package/releng/meson/mesonbuild/templates/cstemplates.py +90 -0
  271. package/releng/meson/mesonbuild/templates/ctemplates.py +126 -0
  272. package/releng/meson/mesonbuild/templates/cudatemplates.py +143 -0
  273. package/releng/meson/mesonbuild/templates/dlangtemplates.py +109 -0
  274. package/releng/meson/mesonbuild/templates/fortrantemplates.py +101 -0
  275. package/releng/meson/mesonbuild/templates/javatemplates.py +94 -0
  276. package/releng/meson/mesonbuild/templates/mesontemplates.py +70 -0
  277. package/releng/meson/mesonbuild/templates/objcpptemplates.py +126 -0
  278. package/releng/meson/mesonbuild/templates/objctemplates.py +126 -0
  279. package/releng/meson/mesonbuild/templates/rusttemplates.py +79 -0
  280. package/releng/meson/mesonbuild/templates/samplefactory.py +41 -0
  281. package/releng/meson/mesonbuild/templates/sampleimpl.py +160 -0
  282. package/releng/meson/mesonbuild/templates/valatemplates.py +82 -0
  283. package/releng/meson/mesonbuild/utils/__init__.py +0 -0
  284. package/releng/meson/mesonbuild/utils/core.py +166 -0
  285. package/releng/meson/mesonbuild/utils/platform.py +27 -0
  286. package/releng/meson/mesonbuild/utils/posix.py +32 -0
  287. package/releng/meson/mesonbuild/utils/universal.py +2445 -0
  288. package/releng/meson/mesonbuild/utils/vsenv.py +126 -0
  289. package/releng/meson/mesonbuild/utils/win32.py +29 -0
  290. package/releng/meson/mesonbuild/wrap/__init__.py +59 -0
  291. package/releng/meson/mesonbuild/wrap/wrap.py +846 -0
  292. package/releng/meson/mesonbuild/wrap/wraptool.py +198 -0
  293. package/releng/meson-scripts/BSDmakefile +6 -0
  294. package/releng/meson-scripts/Makefile +16 -0
  295. package/releng/meson-scripts/configure +18 -0
  296. package/releng/meson-scripts/configure.bat +22 -0
  297. package/releng/meson-scripts/make.bat +23 -0
  298. package/releng/meson_configure.py +506 -0
  299. package/releng/meson_make.py +131 -0
  300. package/releng/mkdevkit.py +107 -0
  301. package/releng/mkfatmacho.py +54 -0
  302. package/releng/post-process-oabi.py +97 -0
  303. package/releng/progress.py +14 -0
  304. package/releng/sync-from-upstream.py +185 -0
  305. package/releng/tomlkit/tomlkit/__init__.py +59 -0
  306. package/releng/tomlkit/tomlkit/_compat.py +22 -0
  307. package/releng/tomlkit/tomlkit/_types.py +83 -0
  308. package/releng/tomlkit/tomlkit/_utils.py +158 -0
  309. package/releng/tomlkit/tomlkit/api.py +308 -0
  310. package/releng/tomlkit/tomlkit/container.py +875 -0
  311. package/releng/tomlkit/tomlkit/exceptions.py +227 -0
  312. package/releng/tomlkit/tomlkit/items.py +1967 -0
  313. package/releng/tomlkit/tomlkit/parser.py +1141 -0
  314. package/releng/tomlkit/tomlkit/py.typed +0 -0
  315. package/releng/tomlkit/tomlkit/source.py +180 -0
  316. package/releng/tomlkit/tomlkit/toml_char.py +52 -0
  317. package/releng/tomlkit/tomlkit/toml_document.py +7 -0
  318. package/releng/tomlkit/tomlkit/toml_file.py +58 -0
  319. package/releng/winenv.py +140 -0
  320. package/scripts/adjust-version.py +19 -0
  321. package/scripts/detect-version.py +40 -0
  322. package/scripts/fetch-abi-bits.py +343 -0
  323. package/scripts/install.js +23 -0
  324. package/scripts/package.py +15 -0
  325. package/src/addon.cc +76 -0
  326. package/src/application.cc +148 -0
  327. package/src/application.h +31 -0
  328. package/src/authentication.cc +174 -0
  329. package/src/authentication.h +24 -0
  330. package/src/bus.cc +167 -0
  331. package/src/bus.h +33 -0
  332. package/src/cancellable.cc +117 -0
  333. package/src/cancellable.h +31 -0
  334. package/src/child.cc +150 -0
  335. package/src/child.h +32 -0
  336. package/src/crash.cc +122 -0
  337. package/src/crash.h +30 -0
  338. package/src/device.cc +1302 -0
  339. package/src/device.h +55 -0
  340. package/src/device_manager.cc +362 -0
  341. package/src/device_manager.h +35 -0
  342. package/src/endpoint_parameters.cc +171 -0
  343. package/src/endpoint_parameters.h +28 -0
  344. package/src/glib_context.cc +62 -0
  345. package/src/glib_context.h +29 -0
  346. package/src/glib_object.cc +25 -0
  347. package/src/glib_object.h +37 -0
  348. package/src/iostream.cc +247 -0
  349. package/src/iostream.h +30 -0
  350. package/src/meson.build +26 -0
  351. package/src/operation.h +94 -0
  352. package/src/portal_membership.cc +100 -0
  353. package/src/portal_membership.h +26 -0
  354. package/src/portal_service.cc +401 -0
  355. package/src/portal_service.h +40 -0
  356. package/src/process.cc +135 -0
  357. package/src/process.h +30 -0
  358. package/src/relay.cc +139 -0
  359. package/src/relay.h +31 -0
  360. package/src/runtime.cc +443 -0
  361. package/src/runtime.h +64 -0
  362. package/src/script.cc +301 -0
  363. package/src/script.h +36 -0
  364. package/src/session.cc +860 -0
  365. package/src/session.h +42 -0
  366. package/src/signals.cc +334 -0
  367. package/src/signals.h +47 -0
  368. package/src/spawn.cc +95 -0
  369. package/src/spawn.h +27 -0
  370. package/src/usage_monitor.h +117 -0
  371. package/src/uv_context.cc +118 -0
  372. package/src/uv_context.h +40 -0
  373. package/src/win_delay_load_hook.cc +63 -0
  374. package/subprojects/frida-core.wrap +8 -0
  375. package/subprojects/nan.wrap +9 -0
  376. package/subprojects/packagefiles/nan.patch +13 -0
  377. package/test/data/index.ts +13 -0
  378. package/test/data/unixvictim-linux-x86 +0 -0
  379. package/test/data/unixvictim-linux-x86_64 +0 -0
  380. package/test/data/unixvictim-macos +0 -0
  381. package/test/device.ts +27 -0
  382. package/test/device_manager.ts +16 -0
  383. package/test/labrat.ts +32 -0
  384. package/test/script.ts +176 -0
  385. package/test/session.ts +73 -0
  386. package/tsconfig.json +18 -0
@@ -0,0 +1,365 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ # Copyright 2016-2018 The Meson development team
3
+ # Copyright © 2023-2024 Intel Corporation
4
+
5
+ from __future__ import annotations
6
+
7
+ import argparse, datetime, glob, json, os, platform, shutil, sys, tempfile, time
8
+ import cProfile as profile
9
+ from pathlib import Path
10
+ import typing as T
11
+
12
+ from . import build, coredata, environment, interpreter, mesonlib, mintro, mlog
13
+ from .mesonlib import MesonException
14
+
15
+ if T.TYPE_CHECKING:
16
+ from typing_extensions import Protocol
17
+ from .coredata import SharedCMDOptions
18
+
19
+ class CMDOptions(SharedCMDOptions, Protocol):
20
+
21
+ profile: bool
22
+ fatal_warnings: bool
23
+ reconfigure: bool
24
+ wipe: bool
25
+ clearcache: bool
26
+ builddir: str
27
+ sourcedir: str
28
+ pager: bool
29
+
30
+ git_ignore_file = '''# This file is autogenerated by Meson. If you change or delete it, it won't be recreated.
31
+ *
32
+ '''
33
+
34
+ hg_ignore_file = '''# This file is autogenerated by Meson. If you change or delete it, it won't be recreated.
35
+ syntax: glob
36
+ **/*
37
+ '''
38
+
39
+
40
+ # Note: when adding arguments, please also add them to the completion
41
+ # scripts in $MESONSRC/data/shell-completions/
42
+ def add_arguments(parser: argparse.ArgumentParser) -> None:
43
+ coredata.register_builtin_arguments(parser)
44
+ parser.add_argument('--native-file',
45
+ default=[],
46
+ action='append',
47
+ help='File containing overrides for native compilation environment.')
48
+ parser.add_argument('--cross-file',
49
+ default=[],
50
+ action='append',
51
+ help='File describing cross compilation environment.')
52
+ parser.add_argument('-v', '--version', action='version',
53
+ version=coredata.version)
54
+ parser.add_argument('--profile-self', action='store_true', dest='profile',
55
+ help=argparse.SUPPRESS)
56
+ parser.add_argument('--fatal-meson-warnings', action='store_true', dest='fatal_warnings',
57
+ help='Make all Meson warnings fatal')
58
+ parser.add_argument('--reconfigure', action='store_true',
59
+ help='Set options and reconfigure the project. Useful when new ' +
60
+ 'options have been added to the project and the default value ' +
61
+ 'is not working.')
62
+ parser.add_argument('--wipe', action='store_true',
63
+ help='Wipe build directory and reconfigure using previous command line options. ' +
64
+ 'Useful when build directory got corrupted, or when rebuilding with a ' +
65
+ 'newer version of meson.')
66
+ parser.add_argument('--clearcache', action='store_true', default=False,
67
+ help='Clear cached state (e.g. found dependencies). Since 1.3.0.')
68
+ parser.add_argument('builddir', nargs='?', default=None)
69
+ parser.add_argument('sourcedir', nargs='?', default=None)
70
+
71
+ class MesonApp:
72
+ def __init__(self, options: CMDOptions) -> None:
73
+ self.options = options
74
+ (self.source_dir, self.build_dir) = self.validate_dirs()
75
+ if options.wipe:
76
+ # Make a copy of the cmd line file to make sure we can always
77
+ # restore that file if anything bad happens. For example if
78
+ # configuration fails we need to be able to wipe again.
79
+ restore = []
80
+ with tempfile.TemporaryDirectory() as d:
81
+ for filename in [coredata.get_cmd_line_file(self.build_dir)] + glob.glob(os.path.join(self.build_dir, environment.Environment.private_dir, '*.ini')):
82
+ try:
83
+ restore.append((shutil.copy(filename, d), filename))
84
+ except FileNotFoundError:
85
+ # validate_dirs() already verified that build_dir has
86
+ # a partial build or is empty.
87
+ pass
88
+
89
+ coredata.read_cmd_line_file(self.build_dir, options)
90
+
91
+ try:
92
+ # Don't delete the whole tree, just all of the files and
93
+ # folders in the tree. Otherwise calling wipe form the builddir
94
+ # will cause a crash
95
+ for l in os.listdir(self.build_dir):
96
+ l = os.path.join(self.build_dir, l)
97
+ if os.path.isdir(l) and not os.path.islink(l):
98
+ mesonlib.windows_proof_rmtree(l)
99
+ else:
100
+ mesonlib.windows_proof_rm(l)
101
+ finally:
102
+ self.add_vcs_ignore_files(self.build_dir)
103
+ for b, f in restore:
104
+ os.makedirs(os.path.dirname(f), exist_ok=True)
105
+ shutil.move(b, f)
106
+
107
+ def has_build_file(self, dirname: str) -> bool:
108
+ fname = os.path.join(dirname, environment.build_filename)
109
+ return os.path.exists(fname)
110
+
111
+ def validate_core_dirs(self, dir1: T.Optional[str], dir2: T.Optional[str]) -> T.Tuple[str, str]:
112
+ invalid_msg_prefix = f'Neither source directory {dir1!r} nor build directory {dir2!r}'
113
+ if dir1 is None:
114
+ if dir2 is None:
115
+ if not self.has_build_file('.') and self.has_build_file('..'):
116
+ dir2 = '..'
117
+ else:
118
+ raise MesonException('Must specify at least one directory name.')
119
+ dir1 = os.getcwd()
120
+ if dir2 is None:
121
+ dir2 = os.getcwd()
122
+ ndir1 = os.path.abspath(os.path.realpath(dir1))
123
+ ndir2 = os.path.abspath(os.path.realpath(dir2))
124
+ if not os.path.exists(ndir1) and not os.path.exists(ndir2):
125
+ raise MesonException(f'{invalid_msg_prefix} exist.')
126
+ try:
127
+ os.makedirs(ndir1, exist_ok=True)
128
+ except FileExistsError as e:
129
+ raise MesonException(f'{dir1} is not a directory') from e
130
+ try:
131
+ os.makedirs(ndir2, exist_ok=True)
132
+ except FileExistsError as e:
133
+ raise MesonException(f'{dir2} is not a directory') from e
134
+ if os.path.samefile(ndir1, ndir2):
135
+ # Fallback to textual compare if undefined entries found
136
+ has_undefined = any((s.st_ino == 0 and s.st_dev == 0) for s in (os.stat(ndir1), os.stat(ndir2)))
137
+ if not has_undefined or ndir1 == ndir2:
138
+ raise MesonException('Source and build directories must not be the same. Create a pristine build directory.')
139
+ if self.has_build_file(ndir1):
140
+ if self.has_build_file(ndir2):
141
+ raise MesonException(f'Both directories contain a build file {environment.build_filename}.')
142
+ return ndir1, ndir2
143
+ if self.has_build_file(ndir2):
144
+ return ndir2, ndir1
145
+ raise MesonException(f'{invalid_msg_prefix} contain a build file {environment.build_filename}.')
146
+
147
+ def add_vcs_ignore_files(self, build_dir: str) -> None:
148
+ with open(os.path.join(build_dir, '.gitignore'), 'w', encoding='utf-8') as ofile:
149
+ ofile.write(git_ignore_file)
150
+ with open(os.path.join(build_dir, '.hgignore'), 'w', encoding='utf-8') as ofile:
151
+ ofile.write(hg_ignore_file)
152
+
153
+ def validate_dirs(self) -> T.Tuple[str, str]:
154
+ (src_dir, build_dir) = self.validate_core_dirs(self.options.builddir, self.options.sourcedir)
155
+ if Path(build_dir) in Path(src_dir).parents:
156
+ raise MesonException(f'Build directory {build_dir} cannot be a parent of source directory {src_dir}')
157
+ if not os.listdir(build_dir):
158
+ self.add_vcs_ignore_files(build_dir)
159
+ return src_dir, build_dir
160
+ priv_dir = os.path.join(build_dir, 'meson-private')
161
+ has_valid_build = os.path.exists(os.path.join(priv_dir, 'coredata.dat'))
162
+ has_partial_build = os.path.isdir(priv_dir)
163
+ if has_valid_build:
164
+ if not self.options.reconfigure and not self.options.wipe:
165
+ print('Directory already configured.\n\n'
166
+ 'Just run your build command (e.g. ninja) and Meson will regenerate as necessary.\n'
167
+ 'Run "meson setup --reconfigure to force Meson to regenerate.\n\n'
168
+ 'If build failures persist, run "meson setup --wipe" to rebuild from scratch\n'
169
+ 'using the same options as passed when configuring the build.')
170
+ if self.options.cmd_line_options:
171
+ from . import mconf
172
+ raise SystemExit(mconf.run_impl(self.options, build_dir))
173
+ raise SystemExit(0)
174
+ elif not has_partial_build and self.options.wipe:
175
+ raise MesonException(f'Directory is not empty and does not contain a previous build:\n{build_dir}')
176
+ return src_dir, build_dir
177
+
178
+ # See class Backend's 'generate' for comments on capture args and returned dictionary.
179
+ def generate(self, capture: bool = False, vslite_ctx: T.Optional[dict] = None) -> T.Optional[dict]:
180
+ env = environment.Environment(self.source_dir, self.build_dir, self.options)
181
+ mlog.initialize(env.get_log_dir(), self.options.fatal_warnings)
182
+ if self.options.profile:
183
+ mlog.set_timestamp_start(time.monotonic())
184
+ if self.options.clearcache:
185
+ env.coredata.clear_cache()
186
+ with mesonlib.BuildDirLock(self.build_dir):
187
+ return self._generate(env, capture, vslite_ctx)
188
+
189
+ def _generate(self, env: environment.Environment, capture: bool, vslite_ctx: T.Optional[dict]) -> T.Optional[dict]:
190
+ # Get all user defined options, including options that have been defined
191
+ # during a previous invocation or using meson configure.
192
+ user_defined_options = T.cast('CMDOptions', argparse.Namespace(**vars(self.options)))
193
+ coredata.read_cmd_line_file(self.build_dir, user_defined_options)
194
+
195
+ mlog.debug('Build started at', datetime.datetime.now().isoformat())
196
+ mlog.debug('Main binary:', sys.executable)
197
+ mlog.debug('Build Options:', coredata.format_cmd_line_options(user_defined_options))
198
+ mlog.debug('Python system:', platform.system())
199
+ mlog.log(mlog.bold('The Meson build system'))
200
+ mlog.log('Version:', coredata.version)
201
+ mlog.log('Source dir:', mlog.bold(self.source_dir))
202
+ mlog.log('Build dir:', mlog.bold(self.build_dir))
203
+ if env.is_cross_build():
204
+ mlog.log('Build type:', mlog.bold('cross build'))
205
+ else:
206
+ mlog.log('Build type:', mlog.bold('native build'))
207
+ b = build.Build(env)
208
+
209
+ intr = interpreter.Interpreter(b, user_defined_options=user_defined_options)
210
+ # Super hack because mlog.log and mlog.debug have different signatures,
211
+ # and there is currently no way to annotate them correctly, unionize them, or
212
+ # even to write `T.Callable[[*mlog.TV_Loggable], None]`
213
+ logger_fun = T.cast('T.Callable[[mlog.TV_Loggable, mlog.TV_Loggable], None]',
214
+ (mlog.log if env.is_cross_build() else mlog.debug))
215
+ logger_fun('Build machine cpu family:', mlog.bold(env.machines.build.cpu_family))
216
+ logger_fun('Build machine cpu:', mlog.bold(env.machines.build.cpu))
217
+ mlog.log('Host machine cpu family:', mlog.bold(env.machines.host.cpu_family))
218
+ mlog.log('Host machine cpu:', mlog.bold(env.machines.host.cpu))
219
+ logger_fun('Target machine cpu family:', mlog.bold(env.machines.target.cpu_family))
220
+ logger_fun('Target machine cpu:', mlog.bold(env.machines.target.cpu))
221
+ try:
222
+ if self.options.profile:
223
+ fname = os.path.join(self.build_dir, 'meson-logs', 'profile-interpreter.log')
224
+ profile.runctx('intr.run()', globals(), locals(), filename=fname)
225
+ else:
226
+ intr.run()
227
+ except Exception as e:
228
+ mintro.write_meson_info_file(b, [e])
229
+ raise
230
+
231
+ cdf: T.Optional[str] = None
232
+ captured_compile_args: T.Optional[dict] = None
233
+ try:
234
+ dumpfile = os.path.join(env.get_scratch_dir(), 'build.dat')
235
+ # We would like to write coredata as late as possible since we use the existence of
236
+ # this file to check if we generated the build file successfully. Since coredata
237
+ # includes settings, the build files must depend on it and appear newer. However, due
238
+ # to various kernel caches, we cannot guarantee that any time in Python is exactly in
239
+ # sync with the time that gets applied to any files. Thus, we dump this file as late as
240
+ # possible, but before build files, and if any error occurs, delete it.
241
+ cdf = env.dump_coredata()
242
+
243
+ self.finalize_postconf_hooks(b, intr)
244
+ if self.options.profile:
245
+ fname = f'profile-{intr.backend.name}-backend.log'
246
+ fname = os.path.join(self.build_dir, 'meson-logs', fname)
247
+ profile.runctx('gen_result = intr.backend.generate(capture, vslite_ctx)', globals(), locals(), filename=fname)
248
+ captured_compile_args = locals()['gen_result']
249
+ assert captured_compile_args is None or isinstance(captured_compile_args, dict)
250
+ else:
251
+ captured_compile_args = intr.backend.generate(capture, vslite_ctx)
252
+
253
+ build.save(b, dumpfile)
254
+ if env.first_invocation:
255
+ # Use path resolved by coredata because they could have been
256
+ # read from a pipe and wrote into a private file.
257
+ self.options.cross_file = env.coredata.cross_files
258
+ self.options.native_file = env.coredata.config_files
259
+ coredata.write_cmd_line_file(self.build_dir, self.options)
260
+ else:
261
+ coredata.update_cmd_line_file(self.build_dir, self.options)
262
+
263
+ # Generate an IDE introspection file with the same syntax as the already existing API
264
+ if self.options.profile:
265
+ fname = os.path.join(self.build_dir, 'meson-logs', 'profile-introspector.log')
266
+ profile.runctx('mintro.generate_introspection_file(b, intr.backend)', globals(), locals(), filename=fname)
267
+ else:
268
+ mintro.generate_introspection_file(b, intr.backend)
269
+ mintro.write_meson_info_file(b, [], True)
270
+
271
+ # Post-conf scripts must be run after writing coredata or else introspection fails.
272
+ intr.backend.run_postconf_scripts()
273
+
274
+ # collect warnings about unsupported build configurations; must be done after full arg processing
275
+ # by Interpreter() init, but this is most visible at the end
276
+ if env.coredata.options[mesonlib.OptionKey('backend')].value == 'xcode':
277
+ mlog.warning('xcode backend is currently unmaintained, patches welcome')
278
+ if env.coredata.options[mesonlib.OptionKey('layout')].value == 'flat':
279
+ mlog.warning('-Dlayout=flat is unsupported and probably broken. It was a failed experiment at '
280
+ 'making Windows build artifacts runnable while uninstalled, due to PATH considerations, '
281
+ 'but was untested by CI and anyways breaks reasonable use of conflicting targets in different subdirs. '
282
+ 'Please consider using `meson devenv` instead. See https://github.com/mesonbuild/meson/pull/9243 '
283
+ 'for details.')
284
+
285
+ if self.options.profile:
286
+ fname = os.path.join(self.build_dir, 'meson-logs', 'profile-startup-modules.json')
287
+ mods = set(sys.modules.keys())
288
+ mesonmods = {mod for mod in mods if (mod+'.').startswith('mesonbuild.')}
289
+ stdmods = sorted(mods - mesonmods)
290
+ data = {'stdlib': {'modules': stdmods, 'count': len(stdmods)}, 'meson': {'modules': sorted(mesonmods), 'count': len(mesonmods)}}
291
+ with open(fname, 'w', encoding='utf-8') as f:
292
+ json.dump(data, f)
293
+
294
+ mlog.log("meson setup completed") # Display timestamp
295
+
296
+ except Exception as e:
297
+ mintro.write_meson_info_file(b, [e])
298
+ if cdf is not None:
299
+ old_cdf = cdf + '.prev'
300
+ if os.path.exists(old_cdf):
301
+ os.replace(old_cdf, cdf)
302
+ else:
303
+ os.unlink(cdf)
304
+ raise
305
+
306
+ return captured_compile_args
307
+
308
+ def finalize_postconf_hooks(self, b: build.Build, intr: interpreter.Interpreter) -> None:
309
+ b.devenv.append(intr.backend.get_devenv())
310
+ for mod in intr.modules.values():
311
+ mod.postconf_hook(b)
312
+
313
+ def run_genvslite_setup(options: CMDOptions) -> None:
314
+ # With --genvslite, we essentially want to invoke multiple 'setup' iterations. I.e. -
315
+ # meson setup ... builddirprefix_debug
316
+ # meson setup ... builddirprefix_debugoptimized
317
+ # meson setup ... builddirprefix_release
318
+ # along with also setting up a new, thin/lite visual studio solution and projects with the multiple debug/opt/release configurations that
319
+ # invoke the appropriate 'meson compile ...' build commands upon the normal visual studio build/rebuild/clean actions, instead of using
320
+ # the native VS/msbuild system.
321
+ builddir_prefix = options.builddir
322
+ genvsliteval = options.cmd_line_options.pop(mesonlib.OptionKey('genvslite'))
323
+ # The command line may specify a '--backend' option, which doesn't make sense in conjunction with
324
+ # '--genvslite', where we always want to use a ninja back end -
325
+ k_backend = mesonlib.OptionKey('backend')
326
+ if k_backend in options.cmd_line_options.keys():
327
+ if options.cmd_line_options[k_backend] != 'ninja':
328
+ raise MesonException('Explicitly specifying a backend option with \'genvslite\' is not necessary '
329
+ '(the ninja backend is always used) but specifying a non-ninja backend '
330
+ 'conflicts with a \'genvslite\' setup')
331
+ else:
332
+ options.cmd_line_options[k_backend] = 'ninja'
333
+ buildtypes_list = coredata.get_genvs_default_buildtype_list()
334
+ vslite_ctx = {}
335
+
336
+ for buildtypestr in buildtypes_list:
337
+ options.builddir = f'{builddir_prefix}_{buildtypestr}' # E.g. builddir_release
338
+ options.cmd_line_options[mesonlib.OptionKey('buildtype')] = buildtypestr
339
+ app = MesonApp(options)
340
+ vslite_ctx[buildtypestr] = app.generate(capture=True)
341
+ #Now for generating the 'lite' solution and project files, which will use these builds we've just set up, above.
342
+ options.builddir = f'{builddir_prefix}_vs'
343
+ options.cmd_line_options[mesonlib.OptionKey('genvslite')] = genvsliteval
344
+ app = MesonApp(options)
345
+ app.generate(capture=False, vslite_ctx=vslite_ctx)
346
+
347
+ def run(options: T.Union[CMDOptions, T.List[str]]) -> int:
348
+ if isinstance(options, list):
349
+ parser = argparse.ArgumentParser()
350
+ add_arguments(parser)
351
+ options = T.cast('CMDOptions', parser.parse_args(options))
352
+ coredata.parse_cmd_line_options(options)
353
+
354
+ # Msetup doesn't actually use this option, but we pass msetup options to
355
+ # mconf, and it does. We won't actally hit the path that uses it, but don't
356
+ # lie
357
+ options.pager = False
358
+
359
+ if mesonlib.OptionKey('genvslite') in options.cmd_line_options.keys():
360
+ run_genvslite_setup(options)
361
+ else:
362
+ app = MesonApp(options)
363
+ app.generate()
364
+
365
+ return 0