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.
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,376 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ # Copyright 2017 The Meson development team
3
+ # Copyright © 2023 Intel Corporation
4
+
5
+ from __future__ import annotations
6
+
7
+
8
+ import abc
9
+ import argparse
10
+ import gzip
11
+ import os
12
+ import sys
13
+ import shlex
14
+ import shutil
15
+ import subprocess
16
+ import tarfile
17
+ import tempfile
18
+ import hashlib
19
+ import typing as T
20
+
21
+ from dataclasses import dataclass
22
+ from glob import glob
23
+ from pathlib import Path
24
+ from mesonbuild.environment import Environment, detect_ninja
25
+ from mesonbuild.mesonlib import (MesonException, RealPathAction, get_meson_command, quiet_git,
26
+ windows_proof_rmtree, setup_vsenv, OptionKey)
27
+ from mesonbuild.msetup import add_arguments as msetup_argparse
28
+ from mesonbuild.wrap import wrap
29
+ from mesonbuild import mlog, build, coredata
30
+ from .scripts.meson_exe import run_exe
31
+
32
+ if T.TYPE_CHECKING:
33
+ from ._typing import ImmutableListProtocol
34
+ from .interpreterbase.baseobjects import SubProject
35
+ from .mesonlib import ExecutableSerialisation
36
+
37
+ archive_choices = ['gztar', 'xztar', 'zip']
38
+
39
+ archive_extension = {'gztar': '.tar.gz',
40
+ 'xztar': '.tar.xz',
41
+ 'zip': '.zip'}
42
+
43
+ # Note: when adding arguments, please also add them to the completion
44
+ # scripts in $MESONSRC/data/shell-completions/
45
+ def add_arguments(parser: argparse.ArgumentParser) -> None:
46
+ parser.add_argument('-C', dest='wd', action=RealPathAction,
47
+ help='directory to cd into before running')
48
+ parser.add_argument('--allow-dirty', action='store_true',
49
+ help='Allow even when repository contains uncommitted changes.')
50
+ parser.add_argument('--formats', default='xztar',
51
+ help='Comma separated list of archive types to create. Supports xztar (default), gztar, and zip.')
52
+ parser.add_argument('--include-subprojects', action='store_true',
53
+ help='Include source code of subprojects that have been used for the build.')
54
+ parser.add_argument('--no-tests', action='store_true',
55
+ help='Do not build and test generated packages.')
56
+
57
+
58
+ def create_hash(fname: str) -> None:
59
+ hashname = fname + '.sha256sum'
60
+ m = hashlib.sha256()
61
+ m.update(open(fname, 'rb').read())
62
+ with open(hashname, 'w', encoding='utf-8') as f:
63
+ # A space and an asterisk because that is the format defined by GNU coreutils
64
+ # and accepted by busybox and the Perl shasum tool.
65
+ f.write('{} *{}\n'.format(m.hexdigest(), os.path.basename(fname)))
66
+
67
+
68
+ msg_uncommitted_changes = 'Repository has uncommitted changes that will not be included in the dist tarball'
69
+
70
+ def handle_dirty_opt(msg: str, allow_dirty: bool) -> None:
71
+ if allow_dirty:
72
+ mlog.warning(msg)
73
+ else:
74
+ mlog.error(msg + '\n' + 'Use --allow-dirty to ignore the warning and proceed anyway')
75
+ sys.exit(1)
76
+
77
+ def is_git(src_root: str) -> bool:
78
+ '''
79
+ Checks if meson.build file at the root source directory is tracked by git.
80
+ It could be a subproject part of the parent project git repository.
81
+ '''
82
+ return quiet_git(['ls-files', '--error-unmatch', 'meson.build'], src_root)[0]
83
+
84
+ def is_hg(src_root: str) -> bool:
85
+ return os.path.isdir(os.path.join(src_root, '.hg'))
86
+
87
+
88
+ @dataclass
89
+ class Dist(metaclass=abc.ABCMeta):
90
+ dist_name: str
91
+ src_root: str
92
+ bld_root: str
93
+ dist_scripts: T.List[ExecutableSerialisation]
94
+ subprojects: T.Dict[SubProject, str]
95
+ options: argparse.Namespace
96
+
97
+ def __post_init__(self) -> None:
98
+ self.dist_sub = os.path.join(self.bld_root, 'meson-dist')
99
+ self.distdir = os.path.join(self.dist_sub, self.dist_name)
100
+
101
+ @abc.abstractmethod
102
+ def create_dist(self, archives: T.List[str]) -> T.List[str]:
103
+ pass
104
+
105
+ def run_dist_scripts(self) -> None:
106
+ assert os.path.isabs(self.distdir)
107
+ mesonrewrite = Environment.get_build_command() + ['rewrite']
108
+ env = {'MESON_DIST_ROOT': self.distdir,
109
+ 'MESON_SOURCE_ROOT': self.src_root,
110
+ 'MESON_BUILD_ROOT': self.bld_root,
111
+ 'MESONREWRITE': ' '.join(shlex.quote(x) for x in mesonrewrite),
112
+ }
113
+ for d in self.dist_scripts:
114
+ if d.subproject and d.subproject not in self.subprojects:
115
+ continue
116
+ subdir = self.subprojects.get(d.subproject, '')
117
+ env['MESON_PROJECT_DIST_ROOT'] = os.path.join(self.distdir, subdir)
118
+ env['MESON_PROJECT_SOURCE_ROOT'] = os.path.join(self.src_root, subdir)
119
+ env['MESON_PROJECT_BUILD_ROOT'] = os.path.join(self.bld_root, subdir)
120
+ name = ' '.join(d.cmd_args)
121
+ print(f'Running custom dist script {name!r}')
122
+ try:
123
+ rc = run_exe(d, env)
124
+ if rc != 0:
125
+ sys.exit('Dist script errored out')
126
+ except OSError:
127
+ print(f'Failed to run dist script {name!r}')
128
+ sys.exit(1)
129
+
130
+
131
+ class GitDist(Dist):
132
+ def git_root(self, dir_: str) -> Path:
133
+ # Cannot use --show-toplevel here because git in our CI prints cygwin paths
134
+ # that python cannot resolve. Workaround this by taking parent of src_root.
135
+ prefix = quiet_git(['rev-parse', '--show-prefix'], dir_, check=True)[1].strip()
136
+ if not prefix:
137
+ return Path(dir_)
138
+ prefix_level = len(Path(prefix).parents)
139
+ return Path(dir_).parents[prefix_level - 1]
140
+
141
+ def have_dirty_index(self) -> bool:
142
+ '''Check whether there are uncommitted changes in git'''
143
+ ret = subprocess.call(['git', '-C', self.src_root, 'diff-index', '--quiet', 'HEAD'])
144
+ return ret == 1
145
+
146
+ def copy_git(self, src: T.Union[str, os.PathLike], distdir: str, revision: str = 'HEAD',
147
+ prefix: T.Optional[str] = None, subdir: T.Optional[str] = None) -> None:
148
+ cmd = ['git', 'archive', '--format', 'tar', revision]
149
+ if prefix is not None:
150
+ cmd.insert(2, f'--prefix={prefix}/')
151
+ if subdir is not None:
152
+ cmd.extend(['--', subdir])
153
+ with tempfile.TemporaryFile() as f:
154
+ subprocess.check_call(cmd, cwd=src, stdout=f)
155
+ f.seek(0)
156
+ t = tarfile.open(fileobj=f) # [ignore encoding]
157
+ t.extractall(path=distdir)
158
+
159
+ def process_git_project(self, src_root: str, distdir: str) -> None:
160
+ if self.have_dirty_index():
161
+ handle_dirty_opt(msg_uncommitted_changes, self.options.allow_dirty)
162
+ if os.path.exists(distdir):
163
+ windows_proof_rmtree(distdir)
164
+ repo_root = self.git_root(src_root)
165
+ if repo_root.samefile(src_root):
166
+ os.makedirs(distdir)
167
+ self.copy_git(src_root, distdir)
168
+ else:
169
+ subdir = Path(src_root).relative_to(repo_root)
170
+ tmp_distdir = distdir + '-tmp'
171
+ if os.path.exists(tmp_distdir):
172
+ windows_proof_rmtree(tmp_distdir)
173
+ os.makedirs(tmp_distdir)
174
+ self.copy_git(repo_root, tmp_distdir, subdir=str(subdir))
175
+ Path(tmp_distdir, subdir).rename(distdir)
176
+ windows_proof_rmtree(tmp_distdir)
177
+ self.process_submodules(src_root, distdir)
178
+
179
+ def process_submodules(self, src: str, distdir: str) -> None:
180
+ module_file = os.path.join(src, '.gitmodules')
181
+ if not os.path.exists(module_file):
182
+ return
183
+ cmd = ['git', 'submodule', 'status', '--cached', '--recursive']
184
+ modlist = subprocess.check_output(cmd, cwd=src, universal_newlines=True).splitlines()
185
+ for submodule in modlist:
186
+ status = submodule[:1]
187
+ sha1, rest = submodule[1:].split(' ', 1)
188
+ subpath = rest.rsplit(' ', 1)[0]
189
+
190
+ if status == '-':
191
+ mlog.warning(f'Submodule {subpath!r} is not checked out and cannot be added to the dist')
192
+ continue
193
+ elif status in {'+', 'U'}:
194
+ handle_dirty_opt(f'Submodule {subpath!r} has uncommitted changes that will not be included in the dist tarball', self.options.allow_dirty)
195
+
196
+ self.copy_git(os.path.join(src, subpath), distdir, revision=sha1, prefix=subpath)
197
+
198
+ def create_dist(self, archives: T.List[str]) -> T.List[str]:
199
+ self.process_git_project(self.src_root, self.distdir)
200
+ for path in self.subprojects.values():
201
+ sub_src_root = os.path.join(self.src_root, path)
202
+ sub_distdir = os.path.join(self.distdir, path)
203
+ if os.path.exists(sub_distdir):
204
+ continue
205
+ if is_git(sub_src_root):
206
+ self.process_git_project(sub_src_root, sub_distdir)
207
+ else:
208
+ shutil.copytree(sub_src_root, sub_distdir)
209
+ self.run_dist_scripts()
210
+ output_names = []
211
+ for a in archives:
212
+ compressed_name = self.distdir + archive_extension[a]
213
+ shutil.make_archive(self.distdir, a, root_dir=self.dist_sub, base_dir=self.dist_name)
214
+ output_names.append(compressed_name)
215
+ windows_proof_rmtree(self.distdir)
216
+ return output_names
217
+
218
+
219
+ class HgDist(Dist):
220
+ def have_dirty_index(self) -> bool:
221
+ '''Check whether there are uncommitted changes in hg'''
222
+ out = subprocess.check_output(['hg', '-R', self.src_root, 'summary'])
223
+ return b'commit: (clean)' not in out
224
+
225
+ def create_dist(self, archives: T.List[str]) -> T.List[str]:
226
+ if self.have_dirty_index():
227
+ handle_dirty_opt(msg_uncommitted_changes, self.options.allow_dirty)
228
+ if self.dist_scripts:
229
+ mlog.warning('dist scripts are not supported in Mercurial projects')
230
+
231
+ os.makedirs(self.dist_sub, exist_ok=True)
232
+ tarname = os.path.join(self.dist_sub, self.dist_name + '.tar')
233
+ xzname = tarname + '.xz'
234
+ gzname = tarname + '.gz'
235
+ zipname = os.path.join(self.dist_sub, self.dist_name + '.zip')
236
+ # Note that -X interprets relative paths using the current working
237
+ # directory, not the repository root, so this must be an absolute path:
238
+ # https://bz.mercurial-scm.org/show_bug.cgi?id=6267
239
+ #
240
+ # .hg[a-z]* is used instead of .hg* to keep .hg_archival.txt, which may
241
+ # be useful to link the tarball to the Mercurial revision for either
242
+ # manual inspection or in case any code interprets it for a --version or
243
+ # similar.
244
+ subprocess.check_call(['hg', 'archive', '-R', self.src_root, '-S', '-t', 'tar',
245
+ '-X', self.src_root + '/.hg[a-z]*', tarname])
246
+ output_names = []
247
+ if 'xztar' in archives:
248
+ import lzma
249
+ with lzma.open(xzname, 'wb') as xf, open(tarname, 'rb') as tf:
250
+ shutil.copyfileobj(tf, xf)
251
+ output_names.append(xzname)
252
+ if 'gztar' in archives:
253
+ with gzip.open(gzname, 'wb') as zf, open(tarname, 'rb') as tf:
254
+ shutil.copyfileobj(tf, zf)
255
+ output_names.append(gzname)
256
+ os.unlink(tarname)
257
+ if 'zip' in archives:
258
+ subprocess.check_call(['hg', 'archive', '-R', self.src_root, '-S', '-t', 'zip', zipname])
259
+ output_names.append(zipname)
260
+ return output_names
261
+
262
+
263
+ def run_dist_steps(meson_command: T.List[str], unpacked_src_dir: str, builddir: str, installdir: str, ninja_args: T.List[str]) -> int:
264
+ if subprocess.call(meson_command + ['--backend=ninja', unpacked_src_dir, builddir]) != 0:
265
+ print('Running Meson on distribution package failed')
266
+ return 1
267
+ if subprocess.call(ninja_args, cwd=builddir) != 0:
268
+ print('Compiling the distribution package failed')
269
+ return 1
270
+ if subprocess.call(ninja_args + ['test'], cwd=builddir) != 0:
271
+ print('Running unit tests on the distribution package failed')
272
+ return 1
273
+ myenv = os.environ.copy()
274
+ myenv['DESTDIR'] = installdir
275
+ if subprocess.call(ninja_args + ['install'], cwd=builddir, env=myenv) != 0:
276
+ print('Installing the distribution package failed')
277
+ return 1
278
+ return 0
279
+
280
+ def check_dist(packagename: str, meson_command: ImmutableListProtocol[str], extra_meson_args: T.List[str], bld_root: str, privdir: str) -> int:
281
+ print(f'Testing distribution package {packagename}')
282
+ unpackdir = os.path.join(privdir, 'dist-unpack')
283
+ builddir = os.path.join(privdir, 'dist-build')
284
+ installdir = os.path.join(privdir, 'dist-install')
285
+ for p in (unpackdir, builddir, installdir):
286
+ if os.path.exists(p):
287
+ windows_proof_rmtree(p)
288
+ os.mkdir(p)
289
+ ninja_args = detect_ninja()
290
+ shutil.unpack_archive(packagename, unpackdir)
291
+ unpacked_files = glob(os.path.join(unpackdir, '*'))
292
+ assert len(unpacked_files) == 1
293
+ unpacked_src_dir = unpacked_files[0]
294
+ meson_command += ['setup']
295
+ meson_command += create_cmdline_args(bld_root)
296
+ meson_command += extra_meson_args
297
+
298
+ ret = run_dist_steps(meson_command, unpacked_src_dir, builddir, installdir, ninja_args)
299
+ if ret > 0:
300
+ print(f'Dist check build directory was {builddir}')
301
+ else:
302
+ windows_proof_rmtree(unpackdir)
303
+ windows_proof_rmtree(builddir)
304
+ windows_proof_rmtree(installdir)
305
+ print(f'Distribution package {packagename} tested')
306
+ return ret
307
+
308
+ def create_cmdline_args(bld_root: str) -> T.List[str]:
309
+ parser = argparse.ArgumentParser()
310
+ msetup_argparse(parser)
311
+ args = T.cast('coredata.SharedCMDOptions', parser.parse_args([]))
312
+ coredata.parse_cmd_line_options(args)
313
+ coredata.read_cmd_line_file(bld_root, args)
314
+ args.cmd_line_options.pop(OptionKey('backend'), '')
315
+ return shlex.split(coredata.format_cmd_line_options(args))
316
+
317
+ def determine_archives_to_generate(options: argparse.Namespace) -> T.List[str]:
318
+ result = []
319
+ for i in options.formats.split(','):
320
+ if i not in archive_choices:
321
+ sys.exit(f'Value "{i}" not one of permitted values {archive_choices}.')
322
+ result.append(i)
323
+ if len(i) == 0:
324
+ sys.exit('No archive types specified.')
325
+ return result
326
+
327
+ def run(options: argparse.Namespace) -> int:
328
+ buildfile = Path(options.wd) / 'meson-private' / 'build.dat'
329
+ if not buildfile.is_file():
330
+ raise MesonException(f'Directory {options.wd!r} does not seem to be a Meson build directory.')
331
+ b = build.load(options.wd)
332
+ need_vsenv = T.cast('bool', b.environment.coredata.get_option(OptionKey('vsenv')))
333
+ setup_vsenv(need_vsenv)
334
+ src_root = b.environment.source_dir
335
+ bld_root = b.environment.build_dir
336
+ priv_dir = os.path.join(bld_root, 'meson-private')
337
+
338
+ dist_name = b.project_name + '-' + b.project_version
339
+
340
+ archives = determine_archives_to_generate(options)
341
+
342
+ subprojects = {}
343
+ extra_meson_args = []
344
+ if options.include_subprojects:
345
+ subproject_dir = os.path.join(src_root, b.subproject_dir)
346
+ for sub in b.subprojects.host:
347
+ directory = wrap.get_directory(subproject_dir, sub)
348
+ subprojects[sub] = os.path.join(b.subproject_dir, directory)
349
+ extra_meson_args.append('-Dwrap_mode=nodownload')
350
+
351
+ cls: T.Type[Dist]
352
+ if is_git(src_root):
353
+ cls = GitDist
354
+ elif is_hg(src_root):
355
+ if subprojects:
356
+ print('--include-subprojects option currently not supported with Mercurial')
357
+ return 1
358
+ cls = HgDist
359
+ else:
360
+ print('Dist currently only works with Git or Mercurial repos')
361
+ return 1
362
+
363
+ project = cls(dist_name, src_root, bld_root, b.dist_scripts, subprojects, options)
364
+ names = project.create_dist(archives)
365
+
366
+ if names is None:
367
+ return 1
368
+ rc = 0
369
+ if not options.no_tests:
370
+ # Check only one.
371
+ rc = check_dist(names[0], get_meson_command(), extra_meson_args, bld_root, priv_dir)
372
+ if rc == 0:
373
+ for name in names:
374
+ create_hash(name)
375
+ print('Created', name)
376
+ return rc
@@ -0,0 +1,38 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ # Copyright 2021 The Meson development team
3
+
4
+ from __future__ import annotations
5
+
6
+
7
+ import importlib.resources
8
+ from pathlib import PurePosixPath, Path
9
+ import typing as T
10
+
11
+ if T.TYPE_CHECKING:
12
+ from .environment import Environment
13
+
14
+ class DataFile:
15
+ def __init__(self, path: str) -> None:
16
+ self.path = PurePosixPath(path)
17
+
18
+ def write_once(self, path: Path) -> None:
19
+ if not path.exists():
20
+ data = importlib.resources.read_text( # [ignore encoding] it's on the next lines, Mr. Lint
21
+ ('mesonbuild' / self.path.parent).as_posix().replace('/', '.'),
22
+ self.path.name,
23
+ encoding='utf-8')
24
+ path.write_text(data, encoding='utf-8')
25
+
26
+ def write_to_private(self, env: 'Environment') -> Path:
27
+ try:
28
+ resource = importlib.resources.files('mesonbuild') / self.path
29
+ if isinstance(resource, Path):
30
+ return resource
31
+ except AttributeError:
32
+ # fall through to python 3.7 compatible code
33
+ pass
34
+
35
+ out_file = Path(env.scratch_dir) / 'data' / self.path.name
36
+ out_file.parent.mkdir(exist_ok=True)
37
+ self.write_once(out_file)
38
+ return out_file
@@ -0,0 +1,23 @@
1
+ # SPDX-license-identifier: Apache-2.0
2
+ # Copyright 2012-2021 The Meson development team
3
+ # Copyright © 2021-2023 Intel Corporation
4
+
5
+ # pylint: skip-file
6
+
7
+ """Helper functions and classes."""
8
+
9
+ import os
10
+
11
+ from .utils.core import *
12
+ from .utils.vsenv import *
13
+
14
+ from .utils.universal import *
15
+
16
+ # Here we import either the posix implementations, the windows implementations,
17
+ # or a generic no-op implementation
18
+ if os.name == 'posix':
19
+ from .utils.posix import *
20
+ elif os.name == 'nt':
21
+ from .utils.win32 import *
22
+ else:
23
+ from .utils.platform import *