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,286 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ # Copyright 2015-2016 The Meson development team
3
+
4
+ from __future__ import annotations
5
+
6
+ import sys, os
7
+ import subprocess
8
+ import shutil
9
+ import argparse
10
+ from ..mesonlib import MesonException, Popen_safe, is_windows, is_cygwin, split_args
11
+ from . import destdir_join
12
+ import typing as T
13
+
14
+ parser = argparse.ArgumentParser()
15
+
16
+ parser.add_argument('--sourcedir', dest='sourcedir')
17
+ parser.add_argument('--builddir', dest='builddir')
18
+ parser.add_argument('--subdir', dest='subdir')
19
+ parser.add_argument('--headerdirs', dest='headerdirs')
20
+ parser.add_argument('--mainfile', dest='mainfile')
21
+ parser.add_argument('--modulename', dest='modulename')
22
+ parser.add_argument('--moduleversion', dest='moduleversion')
23
+ parser.add_argument('--htmlargs', dest='htmlargs', default='')
24
+ parser.add_argument('--scanargs', dest='scanargs', default='')
25
+ parser.add_argument('--scanobjsargs', dest='scanobjsargs', default='')
26
+ parser.add_argument('--gobjects-types-file', dest='gobject_typesfile', default='')
27
+ parser.add_argument('--fixxrefargs', dest='fixxrefargs', default='')
28
+ parser.add_argument('--mkdbargs', dest='mkdbargs', default='')
29
+ parser.add_argument('--ld', dest='ld', default='')
30
+ parser.add_argument('--cc', dest='cc', default='')
31
+ parser.add_argument('--ldflags', dest='ldflags', default='')
32
+ parser.add_argument('--cflags', dest='cflags', default='')
33
+ parser.add_argument('--content-files', dest='content_files', default='')
34
+ parser.add_argument('--expand-content-files', dest='expand_content_files', default='')
35
+ parser.add_argument('--html-assets', dest='html_assets', default='')
36
+ parser.add_argument('--ignore-headers', dest='ignore_headers', default='')
37
+ parser.add_argument('--namespace', dest='namespace', default='')
38
+ parser.add_argument('--mode', dest='mode', default='')
39
+ parser.add_argument('--installdir', dest='install_dir')
40
+ parser.add_argument('--run', dest='run', default='')
41
+ for tool in ['scan', 'scangobj', 'mkdb', 'mkhtml', 'fixxref']:
42
+ program_name = 'gtkdoc-' + tool
43
+ parser.add_argument('--' + program_name, dest=program_name.replace('-', '_'))
44
+
45
+ def gtkdoc_run_check(cmd: T.List[str], cwd: str, library_paths: T.Optional[T.List[str]] = None) -> None:
46
+ if library_paths is None:
47
+ library_paths = []
48
+
49
+ env = dict(os.environ)
50
+ if is_windows() or is_cygwin():
51
+ if 'PATH' in env:
52
+ library_paths.extend(env['PATH'].split(os.pathsep))
53
+ env['PATH'] = os.pathsep.join(library_paths)
54
+ else:
55
+ if 'LD_LIBRARY_PATH' in env:
56
+ library_paths.extend(env['LD_LIBRARY_PATH'].split(os.pathsep))
57
+ env['LD_LIBRARY_PATH'] = os.pathsep.join(library_paths)
58
+
59
+ if is_windows():
60
+ cmd.insert(0, sys.executable)
61
+
62
+ # Put stderr into stdout since we want to print it out anyway.
63
+ # This preserves the order of messages.
64
+ p, out = Popen_safe(cmd, cwd=cwd, env=env, stderr=subprocess.STDOUT)[0:2]
65
+ if p.returncode != 0:
66
+ err_msg = [f"{cmd!r} failed with status {p.returncode:d}"]
67
+ if out:
68
+ err_msg.append(out)
69
+ raise MesonException('\n'.join(err_msg))
70
+ elif out:
71
+ # Unfortunately Windows cmd.exe consoles may be using a codepage
72
+ # that might choke print() with a UnicodeEncodeError, so let's
73
+ # ignore such errors for now, as a compromise as we are outputting
74
+ # console output here...
75
+ try:
76
+ print(out)
77
+ except UnicodeEncodeError:
78
+ pass
79
+
80
+ def build_gtkdoc(source_root: str, build_root: str, doc_subdir: str, src_subdirs: T.List[str],
81
+ main_file: str, module: str, module_version: str,
82
+ html_args: T.List[str], scan_args: T.List[str], fixxref_args: T.List[str], mkdb_args: T.List[str],
83
+ gobject_typesfile: str, scanobjs_args: T.List[str], run: str, ld: str, cc: str, ldflags: str, cflags: str,
84
+ html_assets: T.List[str], content_files: T.List[str], ignore_headers: T.List[str], namespace: str,
85
+ expand_content_files: T.List[str], mode: str, options: argparse.Namespace) -> None:
86
+ print("Building documentation for %s" % module)
87
+
88
+ src_dir_args = []
89
+ for src_dir in src_subdirs:
90
+ if not os.path.isabs(src_dir):
91
+ dirs = [os.path.join(source_root, src_dir),
92
+ os.path.join(build_root, src_dir)]
93
+ else:
94
+ dirs = [src_dir]
95
+ src_dir_args += ['--source-dir=' + d for d in dirs]
96
+
97
+ doc_src = os.path.join(source_root, doc_subdir)
98
+ abs_out = os.path.join(build_root, doc_subdir)
99
+ htmldir = os.path.join(abs_out, 'html')
100
+
101
+ content_files += [main_file]
102
+ sections = os.path.join(doc_src, module + "-sections.txt")
103
+ if os.path.exists(sections):
104
+ content_files.append(sections)
105
+
106
+ overrides = os.path.join(doc_src, module + "-overrides.txt")
107
+ if os.path.exists(overrides):
108
+ content_files.append(overrides)
109
+
110
+ # Copy files to build directory
111
+ for f in content_files:
112
+ # FIXME: Use mesonlib.File objects so we don't need to do this
113
+ if not os.path.isabs(f):
114
+ f = os.path.join(doc_src, f)
115
+ elif os.path.commonpath([f, build_root]) == build_root:
116
+ continue
117
+ shutil.copyfile(f, os.path.join(abs_out, os.path.basename(f)))
118
+
119
+ shutil.rmtree(htmldir, ignore_errors=True)
120
+ try:
121
+ os.mkdir(htmldir)
122
+ except Exception:
123
+ pass
124
+
125
+ for f in html_assets:
126
+ f_abs = os.path.join(doc_src, f)
127
+ shutil.copyfile(f_abs, os.path.join(htmldir, os.path.basename(f_abs)))
128
+
129
+ scan_cmd = [options.gtkdoc_scan, '--module=' + module] + src_dir_args
130
+ if ignore_headers:
131
+ scan_cmd.append('--ignore-headers=' + ' '.join(ignore_headers))
132
+ # Add user-specified arguments
133
+ scan_cmd += scan_args
134
+ gtkdoc_run_check(scan_cmd, abs_out)
135
+
136
+ # Use the generated types file when available, otherwise gobject_typesfile
137
+ # would often be a path to source dir instead of build dir.
138
+ if '--rebuild-types' in scan_args:
139
+ gobject_typesfile = os.path.join(abs_out, module + '.types')
140
+
141
+ if gobject_typesfile:
142
+ scanobjs_cmd = [options.gtkdoc_scangobj] + scanobjs_args
143
+ scanobjs_cmd += ['--types=' + gobject_typesfile,
144
+ '--module=' + module,
145
+ '--run=' + run,
146
+ '--cflags=' + cflags,
147
+ '--ldflags=' + ldflags,
148
+ '--cc=' + cc,
149
+ '--ld=' + ld,
150
+ '--output-dir=' + abs_out]
151
+
152
+ library_paths = []
153
+ for ldflag in split_args(ldflags):
154
+ if ldflag.startswith('-Wl,-rpath,'):
155
+ library_paths.append(ldflag[11:])
156
+
157
+ gtkdoc_run_check(scanobjs_cmd, build_root, library_paths)
158
+
159
+ # Make docbook files
160
+ if mode == 'auto':
161
+ # Guessing is probably a poor idea but these keeps compat
162
+ # with previous behavior
163
+ if main_file.endswith('sgml'):
164
+ modeflag = '--sgml-mode'
165
+ else:
166
+ modeflag = '--xml-mode'
167
+ elif mode == 'xml':
168
+ modeflag = '--xml-mode'
169
+ elif mode == 'sgml':
170
+ modeflag = '--sgml-mode'
171
+ else: # none
172
+ modeflag = None
173
+
174
+ mkdb_cmd = [options.gtkdoc_mkdb,
175
+ '--module=' + module,
176
+ '--output-format=xml',
177
+ '--expand-content-files=' + ' '.join(expand_content_files),
178
+ ] + src_dir_args
179
+ if namespace:
180
+ mkdb_cmd.append('--name-space=' + namespace)
181
+ if modeflag:
182
+ mkdb_cmd.append(modeflag)
183
+ if main_file:
184
+ # Yes, this is the flag even if the file is in xml.
185
+ mkdb_cmd.append('--main-sgml-file=' + main_file)
186
+ # Add user-specified arguments
187
+ mkdb_cmd += mkdb_args
188
+ gtkdoc_run_check(mkdb_cmd, abs_out)
189
+
190
+ # Make HTML documentation
191
+ mkhtml_cmd = [options.gtkdoc_mkhtml,
192
+ '--path=' + os.pathsep.join((doc_src, abs_out)),
193
+ module,
194
+ ] + html_args
195
+ if main_file:
196
+ mkhtml_cmd.append('../' + main_file)
197
+ else:
198
+ mkhtml_cmd.append('%s-docs.xml' % module)
199
+ # html gen must be run in the HTML dir
200
+ gtkdoc_run_check(mkhtml_cmd, htmldir)
201
+
202
+ # Fix cross-references in HTML files
203
+ fixref_cmd = [options.gtkdoc_fixxref,
204
+ '--module=' + module,
205
+ '--module-dir=html'] + fixxref_args
206
+ gtkdoc_run_check(fixref_cmd, abs_out)
207
+
208
+ if module_version:
209
+ shutil.move(os.path.join(htmldir, f'{module}.devhelp2'),
210
+ os.path.join(htmldir, f'{module}-{module_version}.devhelp2'))
211
+
212
+ def install_gtkdoc(build_root: str, doc_subdir: str, install_prefix: str, datadir: str, module: str) -> None:
213
+ source = os.path.join(build_root, doc_subdir, 'html')
214
+ final_destination = os.path.join(install_prefix, datadir, module)
215
+ shutil.rmtree(final_destination, ignore_errors=True)
216
+ shutil.copytree(source, final_destination)
217
+
218
+ def run(args: T.List[str]) -> int:
219
+ options = parser.parse_args(args)
220
+ if options.htmlargs:
221
+ htmlargs = options.htmlargs.split('@@')
222
+ else:
223
+ htmlargs = []
224
+ if options.scanargs:
225
+ scanargs = options.scanargs.split('@@')
226
+ else:
227
+ scanargs = []
228
+ if options.scanobjsargs:
229
+ scanobjsargs = options.scanobjsargs.split('@@')
230
+ else:
231
+ scanobjsargs = []
232
+ if options.fixxrefargs:
233
+ fixxrefargs = options.fixxrefargs.split('@@')
234
+ else:
235
+ fixxrefargs = []
236
+ if options.mkdbargs:
237
+ mkdbargs = options.mkdbargs.split('@@')
238
+ else:
239
+ mkdbargs = []
240
+ build_gtkdoc(
241
+ options.sourcedir,
242
+ options.builddir,
243
+ options.subdir,
244
+ options.headerdirs.split('@@'),
245
+ options.mainfile,
246
+ options.modulename,
247
+ options.moduleversion,
248
+ htmlargs,
249
+ scanargs,
250
+ fixxrefargs,
251
+ mkdbargs,
252
+ options.gobject_typesfile,
253
+ scanobjsargs,
254
+ options.run,
255
+ options.ld,
256
+ options.cc,
257
+ options.ldflags,
258
+ options.cflags,
259
+ options.html_assets.split('@@') if options.html_assets else [],
260
+ options.content_files.split('@@') if options.content_files else [],
261
+ options.ignore_headers.split('@@') if options.ignore_headers else [],
262
+ options.namespace,
263
+ options.expand_content_files.split('@@') if options.expand_content_files else [],
264
+ options.mode,
265
+ options)
266
+
267
+ if 'MESON_INSTALL_PREFIX' in os.environ:
268
+ destdir = os.environ.get('DESTDIR', '')
269
+ install_prefix = destdir_join(destdir, os.environ['MESON_INSTALL_PREFIX'])
270
+ if options.install_dir:
271
+ install_dir = options.install_dir
272
+ else:
273
+ install_dir = options.modulename
274
+ if options.moduleversion:
275
+ install_dir += '-' + options.moduleversion
276
+ if os.path.isabs(install_dir):
277
+ install_dir = destdir_join(destdir, install_dir)
278
+ install_gtkdoc(options.builddir,
279
+ options.subdir,
280
+ install_prefix,
281
+ 'share/gtk-doc/html',
282
+ install_dir)
283
+ return 0
284
+
285
+ if __name__ == '__main__':
286
+ sys.exit(run(sys.argv[1:]))
@@ -0,0 +1,40 @@
1
+ from __future__ import annotations
2
+
3
+ import os
4
+ import shutil
5
+ import subprocess
6
+
7
+ from . import destdir_join
8
+
9
+ import argparse
10
+ import typing as T
11
+
12
+ parser = argparse.ArgumentParser()
13
+ parser.add_argument('--install')
14
+ parser.add_argument('--extra-extension-path', action="append", default=[])
15
+ parser.add_argument('--name')
16
+ parser.add_argument('--builddir')
17
+ parser.add_argument('--project-version')
18
+ parser.add_argument('--docdir')
19
+
20
+
21
+ def run(argv: T.List[str]) -> int:
22
+ options, args = parser.parse_known_args(argv)
23
+ subenv = os.environ.copy()
24
+
25
+ val = subenv.get('PYTHONPATH')
26
+ paths = [val] if val else []
27
+ subenv['PYTHONPATH'] = os.pathsep.join(paths + options.extra_extension_path)
28
+
29
+ res = subprocess.call(args, cwd=options.builddir, env=subenv)
30
+ if res != 0:
31
+ return res
32
+
33
+ if options.install:
34
+ source_dir = os.path.join(options.builddir, options.install)
35
+ destdir = os.environ.get('DESTDIR', '')
36
+ installdir = destdir_join(destdir, options.docdir)
37
+
38
+ shutil.rmtree(installdir, ignore_errors=True)
39
+ shutil.copytree(source_dir, installdir)
40
+ return 0
@@ -0,0 +1,77 @@
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 argparse
8
+ import subprocess
9
+ import tempfile
10
+ import shlex
11
+ import shutil
12
+ import typing as T
13
+
14
+ parser = argparse.ArgumentParser()
15
+ parser.add_argument('command')
16
+ parser.add_argument('--build-dir', default='')
17
+ parser.add_argument('-i', '--input', default='')
18
+ parser.add_argument('-o', '--output', default='')
19
+ parser.add_argument('--itstool', default='itstool')
20
+ parser.add_argument('--its', action='append', default=[])
21
+ parser.add_argument('mo_files', nargs='+')
22
+
23
+
24
+ def run_join(build_dir: str, itstool: str, its_files: T.List[str], mo_files: T.List[str],
25
+ in_fname: str, out_fname: str) -> int:
26
+ if not mo_files:
27
+ print('No mo files specified to use for translation.')
28
+ return 1
29
+
30
+ with tempfile.TemporaryDirectory(prefix=os.path.basename(in_fname), dir=build_dir) as tmp_dir:
31
+ # copy mo files to have the right names so itstool can infer their locale
32
+ locale_mo_files = []
33
+ for mo_file in mo_files:
34
+ if not os.path.exists(mo_file):
35
+ print(f'Could not find mo file {mo_file}')
36
+ return 1
37
+ if not mo_file.endswith('.mo'):
38
+ print(f'File is not a mo file: {mo_file}')
39
+ return 1
40
+ # determine locale of this mo file
41
+ parts = mo_file.partition('LC_MESSAGES')
42
+ if parts[0].endswith((os.sep, '/')):
43
+ locale = os.path.basename(parts[0][:-1])
44
+ else:
45
+ locale = os.path.basename(parts[0])
46
+ tmp_mo_fname = os.path.join(tmp_dir, locale + '.mo')
47
+ shutil.copy(mo_file, tmp_mo_fname)
48
+ locale_mo_files.append(tmp_mo_fname)
49
+
50
+ cmd = shlex.split(itstool)
51
+ if its_files:
52
+ for fname in its_files:
53
+ cmd.extend(['-i', fname])
54
+ cmd.extend(['-j', in_fname,
55
+ '-o', out_fname])
56
+ cmd.extend(locale_mo_files)
57
+
58
+ return subprocess.call(cmd)
59
+
60
+
61
+ def run(args: T.List[str]) -> int:
62
+ options = parser.parse_args(args)
63
+ command = options.command
64
+ build_dir = os.environ.get('MESON_BUILD_ROOT', os.getcwd())
65
+ if options.build_dir:
66
+ build_dir = options.build_dir
67
+
68
+ if command == 'join':
69
+ return run_join(build_dir,
70
+ options.itstool,
71
+ options.its,
72
+ options.mo_files,
73
+ options.input,
74
+ options.output)
75
+ else:
76
+ print('Unknown subcommand.')
77
+ return 1
@@ -0,0 +1,115 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ # Copyright 2013-2016 The Meson development team
3
+
4
+ from __future__ import annotations
5
+
6
+ import os
7
+ import sys
8
+ import argparse
9
+ import pickle
10
+ import subprocess
11
+ import typing as T
12
+ import locale
13
+
14
+ from ..utils.core import ExecutableSerialisation
15
+
16
+ def buildparser() -> argparse.ArgumentParser:
17
+ parser = argparse.ArgumentParser(description='Custom executable wrapper for Meson. Do not run on your own, mmm\'kay?')
18
+ parser.add_argument('--unpickle')
19
+ parser.add_argument('--capture')
20
+ parser.add_argument('--feed')
21
+ return parser
22
+
23
+ def run_exe(exe: ExecutableSerialisation, extra_env: T.Optional[T.Dict[str, str]] = None) -> int:
24
+ if exe.exe_wrapper:
25
+ if not exe.exe_wrapper.found():
26
+ raise AssertionError('BUG: Can\'t run cross-compiled exe {!r} with not-found '
27
+ 'wrapper {!r}'.format(exe.cmd_args[0], exe.exe_wrapper.get_path()))
28
+ cmd_args = exe.exe_wrapper.get_command() + exe.cmd_args
29
+ else:
30
+ cmd_args = exe.cmd_args
31
+ child_env = os.environ.copy()
32
+ if extra_env:
33
+ child_env.update(extra_env)
34
+ if exe.env:
35
+ child_env = exe.env.get_env(child_env)
36
+ if exe.extra_paths:
37
+ child_env['PATH'] = (os.pathsep.join(exe.extra_paths + ['']) +
38
+ child_env['PATH'])
39
+ if exe.exe_wrapper and any('wine' in i for i in exe.exe_wrapper.get_command()):
40
+ from .. import mesonlib
41
+ child_env['WINEPATH'] = mesonlib.get_wine_shortpath(
42
+ exe.exe_wrapper.get_command(),
43
+ ['Z:' + p for p in exe.extra_paths] + child_env.get('WINEPATH', '').split(';'),
44
+ exe.workdir
45
+ )
46
+
47
+ stdin = None
48
+ if exe.feed:
49
+ stdin = open(exe.feed, 'rb')
50
+
51
+ pipe = subprocess.PIPE
52
+ if exe.verbose:
53
+ assert not exe.capture, 'Cannot capture and print to console at the same time'
54
+ pipe = None
55
+
56
+ p = subprocess.Popen(cmd_args, env=child_env, cwd=exe.workdir,
57
+ close_fds=False, stdin=stdin, stdout=pipe, stderr=pipe)
58
+ stdout, stderr = p.communicate()
59
+
60
+ if stdin is not None:
61
+ stdin.close()
62
+
63
+ if p.returncode == 0xc0000135:
64
+ # STATUS_DLL_NOT_FOUND on Windows indicating a common problem that is otherwise hard to diagnose
65
+ strerror = 'Failed to run due to missing DLLs, with path: ' + child_env['PATH']
66
+ raise FileNotFoundError(p.returncode, strerror, cmd_args)
67
+
68
+ if p.returncode != 0:
69
+ if exe.pickled:
70
+ print(f'while executing {cmd_args!r}')
71
+ if exe.verbose:
72
+ return p.returncode
73
+ encoding = locale.getpreferredencoding()
74
+ if not exe.capture:
75
+ print('--- stdout ---')
76
+ print(stdout.decode(encoding=encoding, errors='replace'))
77
+ print('--- stderr ---')
78
+ print(stderr.decode(encoding=encoding, errors='replace'))
79
+ return p.returncode
80
+
81
+ if exe.capture:
82
+ skip_write = False
83
+ try:
84
+ with open(exe.capture, 'rb') as cur:
85
+ skip_write = cur.read() == stdout
86
+ except OSError:
87
+ pass
88
+ if not skip_write:
89
+ with open(exe.capture, 'wb') as output:
90
+ output.write(stdout)
91
+
92
+ return 0
93
+
94
+ def run(args: T.List[str]) -> int:
95
+ parser = buildparser()
96
+ options, cmd_args = parser.parse_known_args(args)
97
+ # argparse supports double dash to separate options and positional arguments,
98
+ # but the user has to remove it manually.
99
+ if cmd_args and cmd_args[0] == '--':
100
+ cmd_args = cmd_args[1:]
101
+ if not options.unpickle and not cmd_args:
102
+ parser.error('either --unpickle or executable and arguments are required')
103
+ if options.unpickle:
104
+ if cmd_args or options.capture or options.feed:
105
+ parser.error('no other arguments can be used with --unpickle')
106
+ with open(options.unpickle, 'rb') as f:
107
+ exe = pickle.load(f)
108
+ exe.pickled = True
109
+ else:
110
+ exe = ExecutableSerialisation(cmd_args, capture=options.capture, feed=options.feed)
111
+
112
+ return run_exe(exe)
113
+
114
+ if __name__ == '__main__':
115
+ sys.exit(run(sys.argv[1:]))
@@ -0,0 +1,29 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ # Copyright 2016 The Meson development team
3
+
4
+ from __future__ import annotations
5
+
6
+ import argparse
7
+ import subprocess
8
+ import os
9
+ import typing as T
10
+
11
+ parser = argparse.ArgumentParser()
12
+ parser.add_argument('input')
13
+ parser.add_argument('output')
14
+ parser.add_argument('type')
15
+ parser.add_argument('podir')
16
+ parser.add_argument('--msgfmt', default='msgfmt')
17
+ parser.add_argument('--datadirs', default='')
18
+ parser.add_argument('args', default=[], metavar='extra msgfmt argument', nargs='*')
19
+
20
+
21
+ def run(args: T.List[str]) -> int:
22
+ options = parser.parse_args(args)
23
+ env = None
24
+ if options.datadirs:
25
+ env = os.environ.copy()
26
+ env.update({'GETTEXTDATADIRS': options.datadirs})
27
+ return subprocess.call([options.msgfmt, '--' + options.type, '-d', options.podir,
28
+ '--template', options.input, '-o', options.output] + options.args,
29
+ env=env)
@@ -0,0 +1,54 @@
1
+ # SPDX-License-Identifier: Apache-2.0
2
+ # Copyright 2016 The Meson development team
3
+
4
+ # ignore all lints for this file, since it is run by python2 as well
5
+
6
+ # type: ignore
7
+ # pylint: disable=deprecated-module
8
+
9
+ import json, os, subprocess, sys
10
+ from compileall import compile_file
11
+
12
+ quiet = int(os.environ.get('MESON_INSTALL_QUIET', 0))
13
+
14
+ def compileall(files):
15
+ for f in files:
16
+ # f is prefixed by {py_xxxxlib}, both variants are 12 chars
17
+ # the key is the middle 10 chars of the prefix
18
+ key = f[1:11].upper()
19
+ f = f[12:]
20
+
21
+ ddir = None
22
+ fullpath = absf = os.environ['MESON_INSTALL_DESTDIR_'+key] + f
23
+ f = os.environ['MESON_INSTALL_'+key] + f
24
+
25
+ if absf != f:
26
+ ddir = os.path.dirname(f)
27
+
28
+ if os.path.isdir(absf):
29
+ for root, _, files in os.walk(absf):
30
+ if ddir is not None:
31
+ ddir = root.replace(absf, f, 1)
32
+ for dirf in files:
33
+ if dirf.endswith('.py'):
34
+ fullpath = os.path.join(root, dirf)
35
+ compile_file(fullpath, ddir, force=True, quiet=quiet)
36
+ else:
37
+ compile_file(fullpath, ddir, force=True, quiet=quiet)
38
+
39
+ def run(manifest):
40
+ data_file = os.path.join(os.path.dirname(__file__), manifest)
41
+ with open(data_file, 'rb') as f:
42
+ dat = json.load(f)
43
+ compileall(dat)
44
+
45
+ if __name__ == '__main__':
46
+ manifest = sys.argv[1]
47
+ run(manifest)
48
+ if len(sys.argv) > 2:
49
+ optlevel = int(sys.argv[2])
50
+ # python2 only needs one or the other
51
+ if optlevel == 1 or (sys.version_info >= (3,) and optlevel > 0):
52
+ subprocess.check_call([sys.executable, '-O'] + sys.argv[:2])
53
+ if optlevel == 2:
54
+ subprocess.check_call([sys.executable, '-OO'] + sys.argv[:2])