koffi 2.1.3 → 2.1.4

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 (401) hide show
  1. package/package.json +44 -68
  2. package/{LICENSE.txt → src/cnoke/LICENSE.txt} +0 -0
  3. package/src/cnoke/README.md +97 -0
  4. package/src/cnoke/assets/FindCNoke.cmake +71 -0
  5. package/src/cnoke/assets/win_delay_hook.c +34 -0
  6. package/src/cnoke/cnoke.js +968 -0
  7. package/src/cnoke/package.json +25 -0
  8. package/{vendor → src/core}/libcc/libcc.cc +38 -11
  9. package/{vendor → src/core}/libcc/libcc.hh +4 -2
  10. package/{CMakeLists.txt → src/koffi/CMakeLists.txt} +3 -3
  11. package/{ChangeLog.md → src/koffi/ChangeLog.md} +11 -0
  12. package/src/koffi/LICENSE.txt +661 -0
  13. package/{README.md → src/koffi/README.md} +0 -0
  14. package/{benchmark → src/koffi/benchmark}/CMakeLists.txt +9 -6
  15. package/{benchmark → src/koffi/benchmark}/atoi_koffi.js +0 -0
  16. package/{benchmark → src/koffi/benchmark}/atoi_napi.cc +1 -1
  17. package/{benchmark → src/koffi/benchmark}/atoi_napi.js +0 -0
  18. package/{benchmark → src/koffi/benchmark}/atoi_node_ffi.js +0 -0
  19. package/src/koffi/benchmark/benchmark.js +118 -0
  20. package/src/koffi/benchmark/rand_koffi.js +52 -0
  21. package/src/koffi/benchmark/rand_napi.cc +69 -0
  22. package/src/koffi/benchmark/rand_napi.js +47 -0
  23. package/src/koffi/benchmark/rand_node_ffi.js +55 -0
  24. package/{benchmark → src/koffi/benchmark}/raylib_cc.cc +2 -2
  25. package/{benchmark → src/koffi/benchmark}/raylib_cc.js +0 -0
  26. package/{benchmark → src/koffi/benchmark}/raylib_koffi.js +0 -0
  27. package/{benchmark → src/koffi/benchmark}/raylib_node_ffi.js +0 -0
  28. package/{benchmark → src/koffi/benchmark}/raylib_node_raylib.js +0 -0
  29. package/src/koffi/build/2.1.4/koffi_darwin_arm64.tar.gz +0 -0
  30. package/src/koffi/build/2.1.4/koffi_darwin_x64.tar.gz +0 -0
  31. package/src/koffi/build/2.1.4/koffi_freebsd_arm64.tar.gz +0 -0
  32. package/src/koffi/build/2.1.4/koffi_freebsd_ia32.tar.gz +0 -0
  33. package/src/koffi/build/2.1.4/koffi_freebsd_x64.tar.gz +0 -0
  34. package/src/koffi/build/2.1.4/koffi_linux_arm32hf.tar.gz +0 -0
  35. package/src/koffi/build/2.1.4/koffi_linux_arm64.tar.gz +0 -0
  36. package/src/koffi/build/2.1.4/koffi_linux_ia32.tar.gz +0 -0
  37. package/src/koffi/build/2.1.4/koffi_linux_riscv64hf64.tar.gz +0 -0
  38. package/src/koffi/build/2.1.4/koffi_linux_x64.tar.gz +0 -0
  39. package/src/koffi/build/2.1.4/koffi_openbsd_ia32.tar.gz +0 -0
  40. package/src/koffi/build/2.1.4/koffi_openbsd_x64.tar.gz +0 -0
  41. package/src/koffi/build/2.1.4/koffi_win32_arm64.tar.gz +0 -0
  42. package/src/koffi/build/2.1.4/koffi_win32_ia32.tar.gz +0 -0
  43. package/src/koffi/build/2.1.4/koffi_win32_x64.tar.gz +0 -0
  44. package/{doc → src/koffi/doc}/Makefile +0 -0
  45. package/{doc → src/koffi/doc}/benchmarks.md +0 -0
  46. package/{doc → src/koffi/doc}/benchmarks.xlsx +0 -0
  47. package/{doc → src/koffi/doc}/changes.md +0 -0
  48. package/{doc → src/koffi/doc}/conf.py +0 -0
  49. package/{doc → src/koffi/doc}/contribute.md +5 -5
  50. package/{doc → src/koffi/doc}/functions.md +0 -0
  51. package/{doc → src/koffi/doc}/index.rst +1 -1
  52. package/{doc → src/koffi/doc}/make.bat +0 -0
  53. package/{doc → src/koffi/doc}/memory.md +1 -0
  54. package/{doc → src/koffi/doc}/platforms.md +0 -0
  55. package/{doc → src/koffi/doc}/poetry.lock +0 -0
  56. package/{doc → src/koffi/doc}/pyproject.toml +0 -0
  57. package/{doc → src/koffi/doc}/start.md +0 -0
  58. package/{doc → src/koffi/doc}/static/bench_linux.png +0 -0
  59. package/{doc → src/koffi/doc}/static/bench_windows.png +0 -0
  60. package/{doc → src/koffi/doc}/static/custom.css +0 -0
  61. package/{doc → src/koffi/doc}/static/perf_linux_20220623.png +0 -0
  62. package/{doc → src/koffi/doc}/static/perf_linux_20220623_2.png +0 -0
  63. package/{doc → src/koffi/doc}/static/perf_linux_20220627.png +0 -0
  64. package/{doc → src/koffi/doc}/static/perf_linux_20220628.png +0 -0
  65. package/{doc → src/koffi/doc}/static/perf_linux_20220812.png +0 -0
  66. package/{doc → src/koffi/doc}/static/perf_windows_20220623.png +0 -0
  67. package/{doc → src/koffi/doc}/static/perf_windows_20220623_2.png +0 -0
  68. package/{doc → src/koffi/doc}/static/perf_windows_20220627.png +0 -0
  69. package/{doc → src/koffi/doc}/static/perf_windows_20220628.png +0 -0
  70. package/{doc → src/koffi/doc}/static/perf_windows_20220812.png +0 -0
  71. package/{doc → src/koffi/doc}/templates/badges.html +1 -1
  72. package/{doc → src/koffi/doc}/types.md +0 -0
  73. package/src/koffi/qemu/qemu/.gitkeep +0 -0
  74. package/{qemu → src/koffi/qemu}/qemu.js +217 -131
  75. package/{qemu → src/koffi/qemu}/registry/machines.json +24 -0
  76. package/{qemu → src/koffi/qemu}/registry/sha256sum.txt +0 -0
  77. package/src/{abi_arm32.cc → koffi/src/abi_arm32.cc} +1 -1
  78. package/src/{abi_arm32_fwd.S → koffi/src/abi_arm32_fwd.S} +0 -0
  79. package/src/{abi_arm64.cc → koffi/src/abi_arm64.cc} +1 -1
  80. package/src/{abi_arm64_fwd.S → koffi/src/abi_arm64_fwd.S} +0 -0
  81. package/src/{abi_arm64_fwd.asm → koffi/src/abi_arm64_fwd.asm} +0 -0
  82. package/src/{abi_riscv64.cc → koffi/src/abi_riscv64.cc} +1 -1
  83. package/src/{abi_riscv64_fwd.S → koffi/src/abi_riscv64_fwd.S} +0 -0
  84. package/src/{abi_x64_sysv.cc → koffi/src/abi_x64_sysv.cc} +1 -1
  85. package/src/{abi_x64_sysv_fwd.S → koffi/src/abi_x64_sysv_fwd.S} +0 -0
  86. package/src/{abi_x64_win.cc → koffi/src/abi_x64_win.cc} +1 -1
  87. package/src/{abi_x64_win_fwd.asm → koffi/src/abi_x64_win_fwd.asm} +0 -0
  88. package/src/{abi_x86.cc → koffi/src/abi_x86.cc} +1 -1
  89. package/src/{abi_x86_fwd.S → koffi/src/abi_x86_fwd.S} +0 -0
  90. package/src/{abi_x86_fwd.asm → koffi/src/abi_x86_fwd.asm} +0 -0
  91. package/src/{call.cc → koffi/src/call.cc} +1 -1
  92. package/src/{call.hh → koffi/src/call.hh} +2 -2
  93. package/src/{ffi.cc → koffi/src/ffi.cc} +34 -18
  94. package/src/{ffi.hh → koffi/src/ffi.hh} +5 -3
  95. package/src/{index.js → koffi/src/index.js} +0 -0
  96. package/src/{parser.cc → koffi/src/parser.cc} +1 -1
  97. package/src/{parser.hh → koffi/src/parser.hh} +1 -1
  98. package/src/{util.cc → koffi/src/util.cc} +1 -1
  99. package/src/{util.hh → koffi/src/util.hh} +1 -1
  100. package/{test → src/koffi/test}/CMakeLists.txt +14 -15
  101. package/{test → src/koffi/test}/async.js +0 -0
  102. package/{test → src/koffi/test}/callbacks.js +0 -0
  103. package/{test → src/koffi/test}/misc.c +13 -0
  104. package/{test → src/koffi/test}/misc.def +0 -0
  105. package/{test → src/koffi/test}/raylib.js +0 -0
  106. package/{test → src/koffi/test}/sqlite.js +1 -1
  107. package/{test → src/koffi/test}/sync.js +17 -0
  108. package/vendor/brotli/BUILD +144 -0
  109. package/vendor/brotli/CMakeLists.txt +421 -0
  110. package/vendor/brotli/CONTRIBUTING.md +27 -0
  111. package/vendor/brotli/LICENSE +19 -0
  112. package/vendor/brotli/MANIFEST.in +17 -0
  113. package/vendor/brotli/Makefile +55 -0
  114. package/vendor/brotli/Makefile.am +38 -0
  115. package/vendor/brotli/README +15 -0
  116. package/vendor/brotli/README.md +104 -0
  117. package/vendor/brotli/WORKSPACE +21 -0
  118. package/vendor/brotli/bootstrap +35 -0
  119. package/vendor/brotli/c/common/constants.c +15 -0
  120. package/vendor/brotli/c/common/constants.h +200 -0
  121. package/vendor/brotli/c/common/context.c +156 -0
  122. package/vendor/brotli/c/common/context.h +113 -0
  123. package/vendor/brotli/c/common/dictionary.c +5914 -0
  124. package/vendor/brotli/c/common/dictionary.h +64 -0
  125. package/vendor/brotli/c/common/platform.c +22 -0
  126. package/vendor/brotli/c/common/platform.h +594 -0
  127. package/vendor/brotli/c/common/transform.c +291 -0
  128. package/vendor/brotli/c/common/transform.h +85 -0
  129. package/vendor/brotli/c/common/version.h +26 -0
  130. package/vendor/brotli/c/dec/bit_reader.c +76 -0
  131. package/vendor/brotli/c/dec/bit_reader.h +351 -0
  132. package/vendor/brotli/c/dec/decode.c +2608 -0
  133. package/vendor/brotli/c/dec/huffman.c +339 -0
  134. package/vendor/brotli/c/dec/huffman.h +121 -0
  135. package/vendor/brotli/c/dec/prefix.h +732 -0
  136. package/vendor/brotli/c/dec/state.c +159 -0
  137. package/vendor/brotli/c/dec/state.h +365 -0
  138. package/vendor/brotli/c/enc/backward_references.c +145 -0
  139. package/vendor/brotli/c/enc/backward_references.h +39 -0
  140. package/vendor/brotli/c/enc/backward_references_hq.c +843 -0
  141. package/vendor/brotli/c/enc/backward_references_hq.h +95 -0
  142. package/vendor/brotli/c/enc/backward_references_inc.h +163 -0
  143. package/vendor/brotli/c/enc/bit_cost.c +35 -0
  144. package/vendor/brotli/c/enc/bit_cost.h +63 -0
  145. package/vendor/brotli/c/enc/bit_cost_inc.h +127 -0
  146. package/vendor/brotli/c/enc/block_encoder_inc.h +34 -0
  147. package/vendor/brotli/c/enc/block_splitter.c +194 -0
  148. package/vendor/brotli/c/enc/block_splitter.h +51 -0
  149. package/vendor/brotli/c/enc/block_splitter_inc.h +440 -0
  150. package/vendor/brotli/c/enc/brotli_bit_stream.c +1314 -0
  151. package/vendor/brotli/c/enc/brotli_bit_stream.h +84 -0
  152. package/vendor/brotli/c/enc/cluster.c +56 -0
  153. package/vendor/brotli/c/enc/cluster.h +48 -0
  154. package/vendor/brotli/c/enc/cluster_inc.h +320 -0
  155. package/vendor/brotli/c/enc/command.c +28 -0
  156. package/vendor/brotli/c/enc/command.h +190 -0
  157. package/vendor/brotli/c/enc/compress_fragment.c +790 -0
  158. package/vendor/brotli/c/enc/compress_fragment.h +61 -0
  159. package/vendor/brotli/c/enc/compress_fragment_two_pass.c +645 -0
  160. package/vendor/brotli/c/enc/compress_fragment_two_pass.h +54 -0
  161. package/vendor/brotli/c/enc/dictionary_hash.c +1846 -0
  162. package/vendor/brotli/c/enc/dictionary_hash.h +25 -0
  163. package/vendor/brotli/c/enc/encode.c +1927 -0
  164. package/vendor/brotli/c/enc/encoder_dict.c +33 -0
  165. package/vendor/brotli/c/enc/encoder_dict.h +43 -0
  166. package/vendor/brotli/c/enc/entropy_encode.c +503 -0
  167. package/vendor/brotli/c/enc/entropy_encode.h +122 -0
  168. package/vendor/brotli/c/enc/entropy_encode_static.h +539 -0
  169. package/vendor/brotli/c/enc/fast_log.c +105 -0
  170. package/vendor/brotli/c/enc/fast_log.h +66 -0
  171. package/vendor/brotli/c/enc/find_match_length.h +79 -0
  172. package/vendor/brotli/c/enc/hash.h +488 -0
  173. package/vendor/brotli/c/enc/hash_composite_inc.h +125 -0
  174. package/vendor/brotli/c/enc/hash_forgetful_chain_inc.h +293 -0
  175. package/vendor/brotli/c/enc/hash_longest_match64_inc.h +267 -0
  176. package/vendor/brotli/c/enc/hash_longest_match_inc.h +262 -0
  177. package/vendor/brotli/c/enc/hash_longest_match_quickly_inc.h +266 -0
  178. package/vendor/brotli/c/enc/hash_rolling_inc.h +212 -0
  179. package/vendor/brotli/c/enc/hash_to_binary_tree_inc.h +329 -0
  180. package/vendor/brotli/c/enc/histogram.c +100 -0
  181. package/vendor/brotli/c/enc/histogram.h +63 -0
  182. package/vendor/brotli/c/enc/histogram_inc.h +51 -0
  183. package/vendor/brotli/c/enc/literal_cost.c +175 -0
  184. package/vendor/brotli/c/enc/literal_cost.h +30 -0
  185. package/vendor/brotli/c/enc/memory.c +170 -0
  186. package/vendor/brotli/c/enc/memory.h +114 -0
  187. package/vendor/brotli/c/enc/metablock.c +663 -0
  188. package/vendor/brotli/c/enc/metablock.h +105 -0
  189. package/vendor/brotli/c/enc/metablock_inc.h +183 -0
  190. package/vendor/brotli/c/enc/params.h +46 -0
  191. package/vendor/brotli/c/enc/prefix.h +53 -0
  192. package/vendor/brotli/c/enc/quality.h +165 -0
  193. package/vendor/brotli/c/enc/ringbuffer.h +167 -0
  194. package/vendor/brotli/c/enc/static_dict.c +486 -0
  195. package/vendor/brotli/c/enc/static_dict.h +40 -0
  196. package/vendor/brotli/c/enc/static_dict_lut.h +5864 -0
  197. package/vendor/brotli/c/enc/utf8_util.c +85 -0
  198. package/vendor/brotli/c/enc/utf8_util.h +32 -0
  199. package/vendor/brotli/c/enc/write_bits.h +87 -0
  200. package/vendor/brotli/c/include/brotli/decode.h +344 -0
  201. package/vendor/brotli/c/include/brotli/encode.h +448 -0
  202. package/vendor/brotli/c/include/brotli/port.h +288 -0
  203. package/vendor/brotli/c/include/brotli/types.h +83 -0
  204. package/vendor/brotli/c/tools/brotli.c +1116 -0
  205. package/vendor/brotli/c/tools/brotli.md +107 -0
  206. package/vendor/brotli/compiler_config_setting.bzl +28 -0
  207. package/vendor/brotli/configure +8 -0
  208. package/vendor/brotli/configure-cmake +318 -0
  209. package/vendor/brotli/configure.ac +14 -0
  210. package/vendor/brotli/docs/brotli.1 +132 -0
  211. package/vendor/brotli/docs/constants.h.3 +47 -0
  212. package/vendor/brotli/docs/decode.h.3 +415 -0
  213. package/vendor/brotli/docs/encode.h.3 +586 -0
  214. package/vendor/brotli/docs/types.h.3 +117 -0
  215. package/vendor/brotli/premake5.lua +78 -0
  216. package/vendor/brotli/python/Makefile +57 -0
  217. package/vendor/brotli/python/README.md +54 -0
  218. package/vendor/brotli/python/_brotli.cc +753 -0
  219. package/vendor/brotli/python/bro.py +160 -0
  220. package/vendor/brotli/python/brotli.py +56 -0
  221. package/vendor/brotli/python/tests/__init__.py +0 -0
  222. package/vendor/brotli/python/tests/_test_utils.py +112 -0
  223. package/vendor/brotli/python/tests/bro_test.py +102 -0
  224. package/vendor/brotli/python/tests/compress_test.py +41 -0
  225. package/vendor/brotli/python/tests/compressor_test.py +94 -0
  226. package/vendor/brotli/python/tests/decompress_test.py +42 -0
  227. package/vendor/brotli/python/tests/decompressor_test.py +59 -0
  228. package/vendor/brotli/scripts/libbrotlicommon.pc.in +11 -0
  229. package/vendor/brotli/scripts/libbrotlidec.pc.in +12 -0
  230. package/vendor/brotli/scripts/libbrotlienc.pc.in +12 -0
  231. package/vendor/brotli/scripts/sources.lst +104 -0
  232. package/vendor/brotli/setup.cfg +5 -0
  233. package/vendor/brotli/setup.py +293 -0
  234. package/vendor/brotli/tests/Makefile +17 -0
  235. package/vendor/brotli/tests/compatibility_test.sh +25 -0
  236. package/vendor/brotli/tests/roundtrip_test.sh +36 -0
  237. package/vendor/brotli/tests/run-compatibility-test.cmake +31 -0
  238. package/vendor/brotli/tests/run-roundtrip-test.cmake +36 -0
  239. package/vendor/brotli/tests/testdata/empty +0 -0
  240. package/vendor/brotli/tests/testdata/empty.compressed +1 -0
  241. package/vendor/brotli/tests/testdata/ukkonooa +1 -0
  242. package/vendor/brotli/tests/testdata/ukkonooa.compressed +0 -0
  243. package/vendor/miniz/ChangeLog.md +235 -0
  244. package/vendor/miniz/LICENSE +22 -0
  245. package/vendor/miniz/examples/example1.c +105 -0
  246. package/vendor/miniz/examples/example2.c +164 -0
  247. package/vendor/miniz/examples/example3.c +269 -0
  248. package/vendor/miniz/examples/example4.c +102 -0
  249. package/vendor/miniz/examples/example5.c +327 -0
  250. package/vendor/miniz/examples/example6.c +166 -0
  251. package/vendor/miniz/miniz.c +7835 -0
  252. package/vendor/miniz/miniz.h +1422 -0
  253. package/vendor/miniz/readme.md +46 -0
  254. package/vendor/{sqlite3 → sqlite3mc}/sqlite3ext.h +18 -2
  255. package/vendor/{sqlite3/sqlite3.c → sqlite3mc/sqlite3mc.c} +60872 -4890
  256. package/vendor/sqlite3mc/sqlite3mc.def +312 -0
  257. package/vendor/{sqlite3/sqlite3.h → sqlite3mc/sqlite3mc.h} +480 -36
  258. package/build/qemu/2.1.3/koffi_darwin_arm64.tar.gz +0 -0
  259. package/build/qemu/2.1.3/koffi_darwin_x64.tar.gz +0 -0
  260. package/build/qemu/2.1.3/koffi_freebsd_arm64.tar.gz +0 -0
  261. package/build/qemu/2.1.3/koffi_freebsd_ia32.tar.gz +0 -0
  262. package/build/qemu/2.1.3/koffi_freebsd_x64.tar.gz +0 -0
  263. package/build/qemu/2.1.3/koffi_linux_arm32hf.tar.gz +0 -0
  264. package/build/qemu/2.1.3/koffi_linux_arm64.tar.gz +0 -0
  265. package/build/qemu/2.1.3/koffi_linux_ia32.tar.gz +0 -0
  266. package/build/qemu/2.1.3/koffi_linux_riscv64hf64.tar.gz +0 -0
  267. package/build/qemu/2.1.3/koffi_linux_x64.tar.gz +0 -0
  268. package/build/qemu/2.1.3/koffi_openbsd_ia32.tar.gz +0 -0
  269. package/build/qemu/2.1.3/koffi_openbsd_x64.tar.gz +0 -0
  270. package/build/qemu/2.1.3/koffi_win32_arm64.tar.gz +0 -0
  271. package/build/qemu/2.1.3/koffi_win32_ia32.tar.gz +0 -0
  272. package/build/qemu/2.1.3/koffi_win32_x64.tar.gz +0 -0
  273. package/vendor/_patches/glfw_001_fix_openbsd_xlib_soname.patch +0 -145
  274. package/vendor/raylib/projects/VS2019-Android/raylib_android/raylib_android.NativeActivity/raylib_android.NativeActivity.vcxproj +0 -226
  275. package/vendor/raylib/projects/VS2019-Android/raylib_android/raylib_android.NativeActivity/raylib_android.NativeActivity.vcxproj.filters +0 -10
  276. package/vendor/raylib/projects/VS2019-Android/raylib_android/raylib_android.NativeActivity/raylib_android.NativeActivity.vcxproj.user +0 -4
  277. package/vendor/raylib/projects/VS2019-Android/raylib_android.sln +0 -75
  278. package/vendor/raylib/projects/VS2022/examples/audio_module_playing.vcxproj +0 -390
  279. package/vendor/raylib/projects/VS2022/examples/audio_multichannel_sound.vcxproj +0 -390
  280. package/vendor/raylib/projects/VS2022/examples/audio_music_stream.vcxproj +0 -390
  281. package/vendor/raylib/projects/VS2022/examples/audio_raw_stream.vcxproj +0 -390
  282. package/vendor/raylib/projects/VS2022/examples/audio_sound_loading.vcxproj +0 -390
  283. package/vendor/raylib/projects/VS2022/examples/audio_stream_effects.vcxproj +0 -390
  284. package/vendor/raylib/projects/VS2022/examples/core_2d_camera.vcxproj +0 -390
  285. package/vendor/raylib/projects/VS2022/examples/core_2d_camera_mouse_zoom.vcxproj +0 -390
  286. package/vendor/raylib/projects/VS2022/examples/core_2d_camera_platformer.vcxproj +0 -390
  287. package/vendor/raylib/projects/VS2022/examples/core_3d_camera_first_person.vcxproj +0 -390
  288. package/vendor/raylib/projects/VS2022/examples/core_3d_camera_free.vcxproj +0 -390
  289. package/vendor/raylib/projects/VS2022/examples/core_3d_camera_mode.vcxproj +0 -390
  290. package/vendor/raylib/projects/VS2022/examples/core_3d_picking.vcxproj +0 -390
  291. package/vendor/raylib/projects/VS2022/examples/core_basic_screen_manager.vcxproj +0 -390
  292. package/vendor/raylib/projects/VS2022/examples/core_basic_window.vcxproj +0 -390
  293. package/vendor/raylib/projects/VS2022/examples/core_custom_frame_control.vcxproj +0 -390
  294. package/vendor/raylib/projects/VS2022/examples/core_custom_logging.vcxproj +0 -390
  295. package/vendor/raylib/projects/VS2022/examples/core_drop_files.vcxproj +0 -390
  296. package/vendor/raylib/projects/VS2022/examples/core_input_gamepad.vcxproj +0 -387
  297. package/vendor/raylib/projects/VS2022/examples/core_input_gestures.vcxproj +0 -387
  298. package/vendor/raylib/projects/VS2022/examples/core_input_keys.vcxproj +0 -387
  299. package/vendor/raylib/projects/VS2022/examples/core_input_mouse.vcxproj +0 -387
  300. package/vendor/raylib/projects/VS2022/examples/core_input_mouse_wheel.vcxproj +0 -387
  301. package/vendor/raylib/projects/VS2022/examples/core_input_multitouch.vcxproj +0 -387
  302. package/vendor/raylib/projects/VS2022/examples/core_loading_thread.vcxproj +0 -387
  303. package/vendor/raylib/projects/VS2022/examples/core_random_values.vcxproj +0 -387
  304. package/vendor/raylib/projects/VS2022/examples/core_scissor_test.vcxproj +0 -387
  305. package/vendor/raylib/projects/VS2022/examples/core_split_screen.vcxproj +0 -387
  306. package/vendor/raylib/projects/VS2022/examples/core_storage_values.vcxproj +0 -387
  307. package/vendor/raylib/projects/VS2022/examples/core_vr_simulator.vcxproj +0 -387
  308. package/vendor/raylib/projects/VS2022/examples/core_window_flags.vcxproj +0 -387
  309. package/vendor/raylib/projects/VS2022/examples/core_window_letterbox.vcxproj +0 -387
  310. package/vendor/raylib/projects/VS2022/examples/core_window_should_close.vcxproj +0 -390
  311. package/vendor/raylib/projects/VS2022/examples/core_world_screen.vcxproj +0 -387
  312. package/vendor/raylib/projects/VS2022/examples/easings_testbed.vcxproj +0 -387
  313. package/vendor/raylib/projects/VS2022/examples/embedded_files_loading.vcxproj +0 -387
  314. package/vendor/raylib/projects/VS2022/examples/models_animation.vcxproj +0 -387
  315. package/vendor/raylib/projects/VS2022/examples/models_billboard.vcxproj +0 -387
  316. package/vendor/raylib/projects/VS2022/examples/models_box_collisions.vcxproj +0 -387
  317. package/vendor/raylib/projects/VS2022/examples/models_cubicmap.vcxproj +0 -387
  318. package/vendor/raylib/projects/VS2022/examples/models_first_person_maze.vcxproj +0 -387
  319. package/vendor/raylib/projects/VS2022/examples/models_geometric_shapes.vcxproj +0 -387
  320. package/vendor/raylib/projects/VS2022/examples/models_heightmap.vcxproj +0 -387
  321. package/vendor/raylib/projects/VS2022/examples/models_loading.vcxproj +0 -387
  322. package/vendor/raylib/projects/VS2022/examples/models_loading_gltf.vcxproj +0 -387
  323. package/vendor/raylib/projects/VS2022/examples/models_loading_vox.vcxproj +0 -387
  324. package/vendor/raylib/projects/VS2022/examples/models_mesh_generation.vcxproj +0 -387
  325. package/vendor/raylib/projects/VS2022/examples/models_mesh_picking.vcxproj +0 -387
  326. package/vendor/raylib/projects/VS2022/examples/models_orthographic_projection.vcxproj +0 -387
  327. package/vendor/raylib/projects/VS2022/examples/models_rlgl_solar_system.vcxproj +0 -387
  328. package/vendor/raylib/projects/VS2022/examples/models_skybox.vcxproj +0 -387
  329. package/vendor/raylib/projects/VS2022/examples/models_waving_cubes.vcxproj +0 -387
  330. package/vendor/raylib/projects/VS2022/examples/models_yaw_pitch_roll.vcxproj +0 -387
  331. package/vendor/raylib/projects/VS2022/examples/rlgl_compute_shaders.vcxproj +0 -391
  332. package/vendor/raylib/projects/VS2022/examples/rlgl_standalone.vcxproj +0 -391
  333. package/vendor/raylib/projects/VS2022/examples/shaders_basic_lighting.vcxproj +0 -387
  334. package/vendor/raylib/projects/VS2022/examples/shaders_custom_uniform.vcxproj +0 -387
  335. package/vendor/raylib/projects/VS2022/examples/shaders_eratosthenes.vcxproj +0 -387
  336. package/vendor/raylib/projects/VS2022/examples/shaders_fog.vcxproj +0 -387
  337. package/vendor/raylib/projects/VS2022/examples/shaders_hot_reloading.vcxproj +0 -387
  338. package/vendor/raylib/projects/VS2022/examples/shaders_julia_set.vcxproj +0 -387
  339. package/vendor/raylib/projects/VS2022/examples/shaders_mesh_instancing.vcxproj +0 -387
  340. package/vendor/raylib/projects/VS2022/examples/shaders_model_shader.vcxproj +0 -387
  341. package/vendor/raylib/projects/VS2022/examples/shaders_multi_sample2d.vcxproj +0 -387
  342. package/vendor/raylib/projects/VS2022/examples/shaders_palette_switch.vcxproj +0 -387
  343. package/vendor/raylib/projects/VS2022/examples/shaders_postprocessing.vcxproj +0 -387
  344. package/vendor/raylib/projects/VS2022/examples/shaders_raymarching.vcxproj +0 -387
  345. package/vendor/raylib/projects/VS2022/examples/shaders_shapes_textures.vcxproj +0 -387
  346. package/vendor/raylib/projects/VS2022/examples/shaders_simple_mask.vcxproj +0 -387
  347. package/vendor/raylib/projects/VS2022/examples/shaders_spotlight.vcxproj +0 -387
  348. package/vendor/raylib/projects/VS2022/examples/shaders_texture_drawing.vcxproj +0 -387
  349. package/vendor/raylib/projects/VS2022/examples/shaders_texture_waves.vcxproj +0 -387
  350. package/vendor/raylib/projects/VS2022/examples/shapes_basic_shapes.vcxproj +0 -387
  351. package/vendor/raylib/projects/VS2022/examples/shapes_bouncing_ball.vcxproj +0 -387
  352. package/vendor/raylib/projects/VS2022/examples/shapes_collision_area.vcxproj +0 -387
  353. package/vendor/raylib/projects/VS2022/examples/shapes_colors_palette.vcxproj +0 -387
  354. package/vendor/raylib/projects/VS2022/examples/shapes_draw_circle_sector.vcxproj +0 -387
  355. package/vendor/raylib/projects/VS2022/examples/shapes_draw_rectangle_rounded.vcxproj +0 -387
  356. package/vendor/raylib/projects/VS2022/examples/shapes_draw_ring.vcxproj +0 -387
  357. package/vendor/raylib/projects/VS2022/examples/shapes_easings_ball_anim.vcxproj +0 -387
  358. package/vendor/raylib/projects/VS2022/examples/shapes_easings_box_anim.vcxproj +0 -387
  359. package/vendor/raylib/projects/VS2022/examples/shapes_easings_rectangle_array.vcxproj +0 -387
  360. package/vendor/raylib/projects/VS2022/examples/shapes_following_eyes.vcxproj +0 -387
  361. package/vendor/raylib/projects/VS2022/examples/shapes_lines_bezier.vcxproj +0 -387
  362. package/vendor/raylib/projects/VS2022/examples/shapes_logo_raylib.vcxproj +0 -387
  363. package/vendor/raylib/projects/VS2022/examples/shapes_logo_raylib_anim.vcxproj +0 -387
  364. package/vendor/raylib/projects/VS2022/examples/shapes_rectangle_scaling.vcxproj +0 -387
  365. package/vendor/raylib/projects/VS2022/examples/text_codepoints_loading.vcxproj +0 -387
  366. package/vendor/raylib/projects/VS2022/examples/text_draw_3d.vcxproj +0 -387
  367. package/vendor/raylib/projects/VS2022/examples/text_font_filters.vcxproj +0 -387
  368. package/vendor/raylib/projects/VS2022/examples/text_font_loading.vcxproj +0 -387
  369. package/vendor/raylib/projects/VS2022/examples/text_font_sdf.vcxproj +0 -387
  370. package/vendor/raylib/projects/VS2022/examples/text_font_spritefont.vcxproj +0 -387
  371. package/vendor/raylib/projects/VS2022/examples/text_format_text.vcxproj +0 -387
  372. package/vendor/raylib/projects/VS2022/examples/text_input_box.vcxproj +0 -387
  373. package/vendor/raylib/projects/VS2022/examples/text_raylib_fonts.vcxproj +0 -387
  374. package/vendor/raylib/projects/VS2022/examples/text_rectangle_bounds.vcxproj +0 -387
  375. package/vendor/raylib/projects/VS2022/examples/text_unicode.vcxproj +0 -387
  376. package/vendor/raylib/projects/VS2022/examples/text_writing_anim.vcxproj +0 -387
  377. package/vendor/raylib/projects/VS2022/examples/textures_background_scrolling.vcxproj +0 -387
  378. package/vendor/raylib/projects/VS2022/examples/textures_blend_modes.vcxproj +0 -387
  379. package/vendor/raylib/projects/VS2022/examples/textures_bunnymark.vcxproj +0 -387
  380. package/vendor/raylib/projects/VS2022/examples/textures_draw_tiled.vcxproj +0 -387
  381. package/vendor/raylib/projects/VS2022/examples/textures_fog_of_war.vcxproj +0 -387
  382. package/vendor/raylib/projects/VS2022/examples/textures_gif_player.vcxproj +0 -387
  383. package/vendor/raylib/projects/VS2022/examples/textures_image_drawing.vcxproj +0 -387
  384. package/vendor/raylib/projects/VS2022/examples/textures_image_generation.vcxproj +0 -387
  385. package/vendor/raylib/projects/VS2022/examples/textures_image_loading.vcxproj +0 -387
  386. package/vendor/raylib/projects/VS2022/examples/textures_image_processing.vcxproj +0 -387
  387. package/vendor/raylib/projects/VS2022/examples/textures_image_text.vcxproj +0 -387
  388. package/vendor/raylib/projects/VS2022/examples/textures_logo_raylib.vcxproj +0 -387
  389. package/vendor/raylib/projects/VS2022/examples/textures_mouse_painting.vcxproj +0 -387
  390. package/vendor/raylib/projects/VS2022/examples/textures_npatch_drawing.vcxproj +0 -387
  391. package/vendor/raylib/projects/VS2022/examples/textures_particles_blending.vcxproj +0 -387
  392. package/vendor/raylib/projects/VS2022/examples/textures_polygon.vcxproj +0 -387
  393. package/vendor/raylib/projects/VS2022/examples/textures_raw_data.vcxproj +0 -387
  394. package/vendor/raylib/projects/VS2022/examples/textures_sprite_anim.vcxproj +0 -387
  395. package/vendor/raylib/projects/VS2022/examples/textures_sprite_button.vcxproj +0 -387
  396. package/vendor/raylib/projects/VS2022/examples/textures_sprite_explosion.vcxproj +0 -387
  397. package/vendor/raylib/projects/VS2022/examples/textures_srcrec_dstrec.vcxproj +0 -387
  398. package/vendor/raylib/projects/VS2022/examples/textures_to_image.vcxproj +0 -387
  399. package/vendor/raylib/projects/VS2022/raylib/raylib.vcxproj +0 -340
  400. package/vendor/raylib/projects/VS2022/raylib.sln +0 -2347
  401. package/vendor/sqlite3/shell.c +0 -23496
@@ -20,7 +20,7 @@ const fs = require('fs');
20
20
  const os = require('os');
21
21
  const path = require('path');
22
22
  const util = require('util');
23
- const { spawn, spawnSync } = require('child_process');
23
+ const { spawn, spawnSync, execFileSync } = require('child_process');
24
24
  const { NodeSSH } = require('node-ssh');
25
25
  const chalk = require('chalk');
26
26
  const minimatch = require('minimatch');
@@ -43,7 +43,7 @@ main();
43
43
 
44
44
  async function main() {
45
45
  script_dir = fs.realpathSync(__dirname);
46
- root_dir = fs.realpathSync(script_dir + '/../..');
46
+ root_dir = fs.realpathSync(script_dir + '/../../..');
47
47
 
48
48
  // All the code assumes we are working from the script directory
49
49
  process.chdir(script_dir);
@@ -53,11 +53,16 @@ async function main() {
53
53
 
54
54
  // Parse options
55
55
  {
56
+ if (process.argv[2] == '--help') {
57
+ print_usage();
58
+ return;
59
+ }
56
60
  if (process.argv.length < 3 || process.argv[2][0] == '-')
57
61
  throw new Error(`Missing command, use --help`);
58
62
 
59
63
  switch (process.argv[2]) {
60
64
  case 'pack': { command = pack; } break;
65
+ case 'publish': { command = publish; } break;
61
66
  case 'test': { command = test; } break;
62
67
  case 'start': { command = start; } break;
63
68
  case 'stop': { command = stop; } break;
@@ -198,7 +203,8 @@ function print_usage() {
198
203
 
199
204
  Commands:
200
205
  test Run the machines and perform the tests (default)
201
- pack Use machines to package prebuilt Koffi binaries
206
+ pack Create NPM package with prebuilt Koffi binaries
207
+ publish Publish NPM package with prebuilt Koffi binaries
202
208
 
203
209
  start Start the machines but don't run anythingh
204
210
  stop Stop running machines
@@ -208,7 +214,7 @@ Commands:
208
214
  reset Reset initial disk snapshot
209
215
 
210
216
  Options:
211
- --no-accel Disable QEMU acceleration
217
+ --no_accel Disable QEMU acceleration
212
218
  `;
213
219
 
214
220
  console.log(help);
@@ -283,9 +289,36 @@ async function start(detach = true) {
283
289
  }
284
290
 
285
291
  async function pack() {
286
- let success = true;
292
+ let pack_dir = script_dir + '/../build';
293
+ let dist_dir = script_dir + '/../build/dist';
294
+
295
+ let success = await prepare(dist_dir);
296
+ if (!success)
297
+ return false;
298
+
299
+ execFileSync('npm', ['pack', '--pack-destination', pack_dir], {
300
+ cwd: dist_dir,
301
+ stdio: 'inherit',
302
+ });
303
+ }
304
+
305
+ async function publish() {
306
+ let dist_dir = script_dir + '/../build/dist';
307
+
308
+ let success = await prepare(dist_dir);
309
+ if (!success)
310
+ return false;
311
+
312
+ execFileSync('npm', ['publish'], {
313
+ cwd: dist_dir,
314
+ stdio: 'inherit'
315
+ });
316
+ }
317
+
318
+ async function prepare(dist_dir) {
319
+ let snapshot_dir = snapshot();
287
320
 
288
- let json = fs.readFileSync(root_dir + '/koffi/package.json', { encoding: 'utf-8' });
321
+ let json = fs.readFileSync(root_dir + '/src/koffi/package.json', { encoding: 'utf-8' });
289
322
  let version = JSON.parse(json).version;
290
323
 
291
324
  console.log('>> Version:', version);
@@ -296,7 +329,7 @@ async function pack() {
296
329
  for (let suite in machine.builds) {
297
330
  let build = machine.builds[suite];
298
331
 
299
- let archive_filename = root_dir + `/koffi/build/qemu/${version}/koffi_${machine.platform}_${build.arch}.tar.gz`;
332
+ let archive_filename = root_dir + `/src/koffi/build/qemu/${version}/koffi_${machine.platform}_${build.arch}.tar.gz`;
300
333
 
301
334
  if (fs.existsSync(archive_filename)) {
302
335
  log(machine, `${suite} > Status`, chalk.bold.green(`[ok]`));
@@ -314,142 +347,183 @@ async function pack() {
314
347
  }
315
348
 
316
349
  let ready = ignore.size;
350
+ let artifacts = [];
317
351
 
318
- if (ready >= machines.length) {
319
- console.log('>> Nothing to do!');
320
- return true;
321
- }
322
-
323
- success &= await start(false);
324
- success &= await copy(machine => Object.values(machine.builds).map(build => build.directory));
325
-
326
- console.log('>> Run build commands...');
327
- await Promise.all(machines.map(async machine => {
328
- if (ignore.has(machine))
329
- return;
330
-
331
- await Promise.all(Object.keys(machine.builds).map(async suite => {
332
- let build = machine.builds[suite];
333
-
334
- let cmd = build.build;
335
- let cwd = build.directory + '/koffi';
336
-
337
- let start = process.hrtime.bigint();
338
- let ret = await exec_remote(machine, cmd, cwd);
339
- let time = Number((process.hrtime.bigint() - start) / 1000000n);
340
-
341
- if (ret.code == 0) {
342
- log(machine, `${suite} > Build`, chalk.bold.green(`[${(time / 1000).toFixed(2)}s]`));
343
- } else {
344
- log(machine, `${suite} > Build`, chalk.bold.red('[error]'));
352
+ // Run machine commands
353
+ {
354
+ let success = true;
345
355
 
346
- if (ret.stdout || ret.stderr)
347
- console.error('');
356
+ if (ready < machines.length) {
357
+ success &= await start(false);
358
+ success &= await upload(snapshot_dir, machine => Object.values(machine.builds).map(build => build.directory));
348
359
 
349
- let align = log.align + 9;
350
- if (ret.stdout) {
351
- let str = ' '.repeat(align) + 'Standard output:\n' +
352
- chalk.yellow(ret.stdout.replace(/^/gm, ' '.repeat(align + 4))) + '\n';
353
- console.error(str);
354
- }
355
- if (ret.stderr) {
356
- let str = ' '.repeat(align) + 'Standard error:\n' +
357
- chalk.yellow(ret.stderr.replace(/^/gm, ' '.repeat(align + 4))) + '\n';
358
- console.error(str);
359
- }
360
+ console.log('>> Run build commands...');
361
+ await Promise.all(machines.map(async machine => {
362
+ if (ignore.has(machine))
363
+ return;
360
364
 
361
- ignore.add(machine);
362
- success = false;
363
- }
364
- }));
365
- }));
365
+ await Promise.all(Object.keys(machine.builds).map(async suite => {
366
+ let build = machine.builds[suite];
367
+
368
+ let cmd = build.build;
369
+ let cwd = build.directory + '/src/koffi';
370
+
371
+ let start = process.hrtime.bigint();
372
+ let ret = await exec_remote(machine, cmd, cwd);
373
+ let time = Number((process.hrtime.bigint() - start) / 1000000n);
374
+
375
+ if (ret.code == 0) {
376
+ log(machine, `${suite} > Build`, chalk.bold.green(`[${(time / 1000).toFixed(2)}s]`));
377
+ } else {
378
+ log(machine, `${suite} > Build`, chalk.bold.red('[error]'));
379
+
380
+ if (ret.stdout || ret.stderr)
381
+ console.error('');
382
+
383
+ let align = log.align + 9;
384
+ if (ret.stdout) {
385
+ let str = ' '.repeat(align) + 'Standard output:\n' +
386
+ chalk.yellow(ret.stdout.replace(/^/gm, ' '.repeat(align + 4))) + '\n';
387
+ console.error(str);
388
+ }
389
+ if (ret.stderr) {
390
+ let str = ' '.repeat(align) + 'Standard error:\n' +
391
+ chalk.yellow(ret.stderr.replace(/^/gm, ' '.repeat(align + 4))) + '\n';
392
+ console.error(str);
393
+ }
394
+
395
+ ignore.add(machine);
396
+ success = false;
397
+ }
398
+ }));
399
+ }));
400
+ }
366
401
 
367
- console.log('>> Get build artifacts');
368
- {
369
- let build_dir = root_dir + '/koffi/build/qemu';
402
+ console.log('>> Get build artifacts');
403
+ {
404
+ let build_dir = root_dir + '/src/koffi/build/qemu';
405
+
406
+ await Promise.all(machines.map(async machine => {
407
+ let copied = true;
408
+
409
+ await Promise.all(Object.keys(machine.builds).map(async suite => {
410
+ let build = machine.builds[suite];
411
+
412
+ let src_dir = build.directory + '/src/koffi/build';
413
+ let dest_dir = build_dir + `/${version}/koffi_${machine.platform}_${build.arch}`;
414
+ let dest_filename = dest_dir + '.tar.gz';
415
+
416
+ artifacts.push(dest_filename);
417
+
418
+ if (ignore.has(machine))
419
+ return;
420
+
421
+ unlink_recursive(dest_dir);
422
+ fs.mkdirSync(dest_dir, { mode: 0o755, recursive: true });
423
+
424
+ try {
425
+ await machine.ssh.getDirectory(dest_dir, src_dir, {
426
+ recursive: false,
427
+ concurrency: 4,
428
+ validate: filename => !path.basename(filename).match(/^v[0-9]+/)
429
+ });
430
+
431
+ tar.c({
432
+ gzip: true,
433
+ file: dest_filename,
434
+ sync: true,
435
+ cwd: dest_dir + '/..'
436
+ }, [path.basename(dest_dir)]);
437
+ } catch (err) {
438
+ ignore.add(machine);
439
+ success = false;
440
+ copied = false;
441
+ }
442
+ }));
370
443
 
371
- // Clean up old files
372
- if (fs.existsSync(build_dir)) {
373
- for (let basename of fs.readdirSync(build_dir)) {
374
- if (basename !== version)
375
- unlink_recursive(build_dir + '/' + basename);
376
- }
444
+ let status = copied ? chalk.bold.green('[ok]') : chalk.bold.red('[error]');
445
+ log(machine, 'Pack', status);
446
+ }));
377
447
  }
378
448
 
379
- await Promise.all(machines.map(async machine => {
380
- if (ignore.has(machine))
381
- return;
449
+ if (machines.some(machine => machine.started))
450
+ success &= await stop(false);
451
+ success &= (ignore.size == ready);
382
452
 
383
- let copied = true;
453
+ if (!success) {
454
+ console.log('');
455
+ console.log('>> Status: ' + chalk.bold.red('FAILED'));
456
+ return false;
457
+ }
458
+ }
384
459
 
385
- await Promise.all(Object.keys(machine.builds).map(async suite => {
386
- let build = machine.builds[suite];
460
+ console.log('>> Prepare NPM package');
461
+ {
462
+ let build_dir = dist_dir + '/src/koffi/build/' + version;
387
463
 
388
- let src_dir = build.directory + '/koffi/build';
389
- let dest_dir = build_dir + `/${version}/koffi_${machine.platform}_${build.arch}`;
390
- let dest_filename = dest_dir + '.tar.gz';
464
+ unlink_recursive(dist_dir);
465
+ fs.mkdirSync(dist_dir, { mode: 0o755, recursive: true });
391
466
 
392
- unlink_recursive(dest_dir);
393
- fs.mkdirSync(dest_dir, { mode: 0o755, recursive: true });
467
+ copy_recursive(snapshot_dir, dist_dir);
468
+ fs.mkdirSync(build_dir, { mode: 0o755, recursive: true });
394
469
 
395
- try {
396
- await machine.ssh.getDirectory(dest_dir, src_dir, {
397
- recursive: false,
398
- concurrency: 4,
399
- validate: filename => !path.basename(filename).match(/^v[0-9]+/)
400
- });
401
-
402
- tar.c({
403
- gzip: true,
404
- file: dest_filename,
405
- sync: true,
406
- cwd: dest_dir + '/..'
407
- }, [path.basename(dest_dir)]);
408
- } catch (err) {
409
- ignore.add(machine);
410
- success = false;
411
- copied = false;
412
- }
413
- }));
470
+ for (let artifact of artifacts) {
471
+ let dest_filename = build_dir + '/' + path.basename(artifact);
472
+ fs.copyFileSync(artifact, dest_filename);
473
+ }
414
474
 
415
- let status = copied ? chalk.bold.green('[ok]') : chalk.bold.red('[error]');
416
- log(machine, 'Pack', status);
417
- }));
418
- }
475
+ let pkg = JSON.parse(json);
419
476
 
420
- if (machines.some(machine => machine.started))
421
- success &= await stop(false);
422
- success &= (ignore.size == ready);
477
+ pkg.main = "src/koffi/src/index.js";
478
+ pkg.scripts = {
479
+ install: "cnoke --prebuild -d src/koffi",
480
+ test: "node src/koffi/qemu/qemu.js test"
481
+ };
482
+ pkg.cnoke.prebuild = "src/koffi/" + pkg.cnoke.prebuild;
483
+ pkg.cnoke.require = "./src/koffi/build/koffi.node";
423
484
 
424
- console.log('');
425
- if (success) {
426
- console.log('>> Status: ' + chalk.bold.green('SUCCESS'));
427
- } else {
428
- console.log('>> Status: ' + chalk.bold.red('FAILED'));
485
+ fs.writeFileSync(dist_dir + '/package.json', JSON.stringify(pkg, null, 4));
486
+ fs.unlinkSync(dist_dir + '/src/koffi/package.json', '');
487
+ fs.unlinkSync(dist_dir + '/src/koffi/.gitignore', '');
429
488
  }
430
489
 
431
- return success;
490
+ return true;
432
491
  }
433
492
 
434
- async function copy(func) {
435
- let success = true;
493
+ function snapshot() {
494
+ let snapshot_dir = script_dir + '/../build/snapshot';
436
495
 
437
- let snapshot_dir = fs.mkdtempSync(path.join(os.tmpdir(), 'luigi_'));
438
- process.on('exit', () => unlink_recursive(snapshot_dir));
496
+ unlink_recursive(snapshot_dir);
497
+ fs.mkdirSync(snapshot_dir, { mode: 0o755, recursive: true });
439
498
 
440
499
  console.log('>> Snapshot code...');
441
500
  copy_recursive(root_dir, snapshot_dir, filename => {
442
- let basename = path.basename(filename);
443
-
444
- return basename !== '.git' &&
445
- basename !== 'qemu' && !basename.startsWith('qemu_') &&
446
- basename !== 'node_modules' &&
447
- basename !== 'node' &&
448
- basename !== 'build' &&
449
- basename !== 'luiggi';
501
+ let parts = filename.split(/[\/\\]/);
502
+
503
+ if (parts[0] == 'src' && parts[1] == 'core') {
504
+ return parts[2] == null || parts[2] == 'libcc';
505
+ } else if (parts[0] == 'src') {
506
+ return parts[1] == null || parts[1] == 'cnoke' ||
507
+ parts[1] == 'koffi';
508
+ } else if (parts[0] == 'vendor') {
509
+ return parts[1] == null || parts[1] == 'brotli' ||
510
+ parts[1] == 'dragonbox' ||
511
+ parts[1] == 'miniz' ||
512
+ parts[1] == 'node-addon-api' ||
513
+ parts[1] == 'raylib' ||
514
+ parts[1] == 'sqlite3mc';
515
+ } else {
516
+ return false;
517
+ }
450
518
  });
451
519
 
452
- console.log('>> Copy source code...');
520
+ return snapshot_dir;
521
+ }
522
+
523
+ async function upload(snapshot_dir, func) {
524
+ let success = true;
525
+
526
+ console.log('>> Upload source code...');
453
527
  await Promise.all(machines.map(async machine => {
454
528
  if (ignore.has(machine))
455
529
  return;
@@ -489,10 +563,12 @@ async function copy(func) {
489
563
  }
490
564
 
491
565
  async function test() {
566
+ let snapshot_dir = snapshot();
567
+
492
568
  let success = true;
493
569
 
494
570
  success &= await start(false);
495
- success &= await copy(machine => Object.values(machine.tests).map(test => test.directory));
571
+ success &= await upload(snapshot_dir, machine => Object.values(machine.tests).map(test => test.directory));
496
572
 
497
573
  console.log('>> Run test commands...');
498
574
  await Promise.all(machines.map(async machine => {
@@ -508,7 +584,7 @@ async function test() {
508
584
 
509
585
  for (let name in commands) {
510
586
  let cmd = commands[name];
511
- let cwd = test.directory + '/koffi';
587
+ let cwd = test.directory + '/src/koffi';
512
588
 
513
589
  let start = process.hrtime.bigint();
514
590
  let ret = await exec_remote(machine, cmd, cwd);
@@ -651,7 +727,7 @@ async function reset() {
651
727
  return;
652
728
 
653
729
  let dirname = `qemu/${machine.key}`;
654
- let disk = dirname + '/disk.qcow2';
730
+ let disk = dirname + '/' + machine.qemu.disk;
655
731
 
656
732
  if (!fs.existsSync(dirname)) {
657
733
  log(machine, 'Missing files', chalk.bold.gray('[ignore]'));
@@ -706,20 +782,30 @@ function check_qemu() {
706
782
  }
707
783
 
708
784
  function copy_recursive(src, dest, validate = filename => true) {
709
- let entries = fs.readdirSync(src, { withFileTypes: true });
785
+ let proc = spawnSync('git', ['ls-files', '-i', '-o', '--exclude-standard', '--directory'], { cwd: src });
786
+ let ignored = new Set(proc.stdout.toString().split('\n').map(it => it.trim().replace(/[\\\/+]$/, '')).filter(it => it));
710
787
 
711
- for (let entry of entries) {
712
- let filename = path.join(src, entry.name);
713
- let destname = path.join(dest, entry.name);
788
+ recurse(src, dest, '');
714
789
 
715
- if (!validate(filename))
716
- continue;
790
+ function recurse(src, dest, nice) {
791
+ let entries = fs.readdirSync(src, { withFileTypes: true });
792
+
793
+ for (let entry of entries) {
794
+ let src_filename = path.join(src, entry.name);
795
+ let dest_filename = path.join(dest, entry.name);
796
+ let filename = path.join(nice, entry.name);
717
797
 
718
- if (entry.isDirectory()) {
719
- fs.mkdirSync(destname, { mode: 0o755 });
720
- copy_recursive(filename, destname, validate);
721
- } else if (entry.isFile()) {
722
- fs.copyFileSync(filename, destname);
798
+ if (ignored.has(filename))
799
+ continue;
800
+ if (!validate(filename))
801
+ continue;
802
+
803
+ if (entry.isDirectory()) {
804
+ fs.mkdirSync(dest_filename, { mode: 0o755 });
805
+ recurse(src_filename, dest_filename, filename);
806
+ } else if (entry.isFile()) {
807
+ fs.copyFileSync(src_filename, dest_filename);
808
+ }
723
809
  }
724
810
  }
725
811
  }
@@ -8,6 +8,8 @@
8
8
  "arguments": ["-M", "virt", "-cpu", "cortex-a15", "-m", "1G", "-smp", 2, "-kernel", "vmlinuz-5.10.0-12-armmp-lpae", "-initrd", "initrd.img-5.10.0-12-armmp-lpae", "-append", "root=/dev/vda2 apparmor=0", "-drive", "if=none,file=disk.qcow2,format=qcow2,id=hd", "-device", "virtio-blk-device,drive=hd", "-netdev", "user,id=mynet,hostfwd=tcp::22201-:22", "-device", "virtio-net-device,netdev=mynet", "-vnc", "127.0.0.1:11"],
9
9
  "version": 3,
10
10
 
11
+ "disk": "disk.qcow2",
12
+
11
13
  "ssh_port": 22201,
12
14
  "vnc_port": 5911,
13
15
 
@@ -51,6 +53,8 @@
51
53
  "arguments": ["-M", "virt", "-cpu", "cortex-a53", "-m", "1G", "-smp", 2, "-kernel", "vmlinuz-5.10.0-12-arm64", "-initrd", "initrd.img-5.10.0-12-arm64", "-append", "root=/dev/vda2 apparmor=0", "-drive", "if=none,file=disk.qcow2,format=qcow2,id=hd", "-device", "virtio-blk-device,drive=hd", "-netdev", "user,id=mynet,hostfwd=tcp::22202-:22", "-device", "virtio-net-device,netdev=mynet", "-vnc", "127.0.0.1:12"],
52
54
  "version": 3,
53
55
 
56
+ "disk": "disk.qcow2",
57
+
54
58
  "ssh_port": 22202,
55
59
  "vnc_port": 5912,
56
60
 
@@ -94,6 +98,8 @@
94
98
  "arguments": ["-cpu", "max", "-m", "1G", "-smp", 2, "-kernel", "vmlinuz-5.10.0-12-686-pae", "-initrd", "initrd.img-5.10.0-12-686-pae", "-append", "root=/dev/sda1 apparmor=0", "-hda", "disk.qcow2", "-netdev", "user,id=mynet,hostfwd=tcp::22203-:22", "-device", "e1000,netdev=mynet", "-vnc", "127.0.0.1:13"],
95
99
  "version": 3,
96
100
 
101
+ "disk": "disk.qcow2",
102
+
97
103
  "ssh_port": 22203,
98
104
  "vnc_port": 5913,
99
105
 
@@ -137,6 +143,8 @@
137
143
  "arguments": ["-m", "1G", "-smp", 2, "-kernel", "vmlinuz-5.10.0-12-amd64", "-initrd", "initrd.img-5.10.0-12-amd64", "-append", "root=/dev/sda1 apparmor=0", "-hda", "disk.qcow2", "-netdev", "user,id=mynet,hostfwd=tcp::22204-:22", "-device", "e1000,netdev=mynet", "-vnc", "127.0.0.1:14"],
138
144
  "version": 3,
139
145
 
146
+ "disk": "disk.qcow2",
147
+
140
148
  "ssh_port": 22204,
141
149
  "vnc_port": 5914,
142
150
 
@@ -180,6 +188,8 @@
180
188
  "arguments": ["-m", "3G", "-smp", 4, "-rtc", "clock=host,base=localtime", "-bios", "bios.bin", "-hda", "disk.qcow2", "-netdev", "user,id=mynet,hostfwd=tcp::22205-:22", "-device", "e1000,netdev=mynet", "-vga", "std", "-device", "qemu-xhci", "-device", "usb-tablet", "-vnc", "127.0.0.1:15"],
181
189
  "version": 11,
182
190
 
191
+ "disk": "disk.qcow2",
192
+
183
193
  "ssh_port": 22205,
184
194
  "vnc_port": 5915,
185
195
 
@@ -249,6 +259,8 @@
249
259
  "arguments": ["-m", "1G", "-smp", 2, "-hda", "disk.qcow2", "-netdev", "user,id=mynet,hostfwd=tcp::22206-:22", "-device", "e1000,netdev=mynet", "-vnc", "127.0.0.1:16"],
250
260
  "version": 3,
251
261
 
262
+ "disk": "disk.qcow2",
263
+
252
264
  "ssh_port": 22206,
253
265
  "vnc_port": 5916,
254
266
 
@@ -292,6 +304,8 @@
292
304
  "arguments": ["-m", "1G", "-smp", 2, "-hda", "disk.qcow2", "-netdev", "user,id=mynet,hostfwd=tcp::22207-:22", "-device", "e1000,netdev=mynet", "-vnc", "127.0.0.1:17"],
293
305
  "version": 3,
294
306
 
307
+ "disk": "disk.qcow2",
308
+
295
309
  "ssh_port": 22207,
296
310
  "vnc_port": 5917,
297
311
 
@@ -335,6 +349,8 @@
335
349
  "arguments": ["-M", "virt", "-cpu", "cortex-a53", "-m", "1G", "-smp", 2, "-drive", "if=pflash,format=raw,file=QEMU_EFI.img", "-drive", "if=pflash,file=varstore.img", "-drive", "if=virtio,file=disk.qcow2,format=qcow2", "-netdev", "user,id=mynet,hostfwd=tcp::22208-:22", "-device", "virtio-net-device,netdev=mynet", "-vnc", "127.0.0.1:18"],
336
350
  "version": 3,
337
351
 
352
+ "disk": "disk.qcow2",
353
+
338
354
  "ssh_port": 22208,
339
355
  "vnc_port": 5918,
340
356
 
@@ -378,6 +394,8 @@
378
394
  "arguments": ["-m", "3G", "-machine", "q35", "-smp", 2, "-cpu", "Penryn,vendor=GenuineIntel,kvm=on,+sse3,+sse4.2,+aes,+xsave,+avx,+xsaveopt,+xsavec,+xgetbv1,+avx2,+bmi2,+smep,+bmi1,+fma,+movbe,+invtsc", "-device", "isa-applesmc,osk=ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc", "-smbios", "type=2", "-drive", "if=pflash,format=raw,readonly=on,file=OVMF_CODE.fd", "-drive", "if=pflash,format=raw,file=OVMF_VARS-1024x768.fd", "-vga", "qxl", "-device", "ich9-intel-hda", "-device", "hda-output", "-usb", "-device", "usb-kbd", "-device", "usb-tablet", "-netdev", "user,id=net0,hostfwd=tcp::22209-:22", "-device", "e1000-82545em,netdev=net0,id=net0,mac=52:54:00:c9:18:27", "-device", "ich9-ahci,id=sata", "-drive", "id=ESP,if=none,format=qcow2,file=ESP.qcow2", "-device", "ide-hd,bus=sata.2,drive=ESP", "-drive", "id=SystemDisk,if=none,file=macOS.qcow2", "-device", "ide-hd,bus=sata.4,drive=SystemDisk", "-vnc", "127.0.0.1:19"],
379
395
  "version": 2,
380
396
 
397
+ "disk": "macOS.qcow2",
398
+
381
399
  "ssh_port": 22209,
382
400
  "vnc_port": 5919,
383
401
 
@@ -426,6 +444,8 @@
426
444
  "arguments": ["-m", "1G", "-smp", 2, "-hda", "disk.qcow2", "-netdev", "user,id=mynet,hostfwd=tcp::22210-:22", "-device", "e1000,netdev=mynet", "-vnc", "127.0.0.1:20"],
427
445
  "version": 2,
428
446
 
447
+ "disk": "disk.qcow2",
448
+
429
449
  "ssh_port": 22210,
430
450
  "vnc_port": 5920,
431
451
 
@@ -469,6 +489,8 @@
469
489
  "arguments": ["-m", "1G", "-smp", 2, "-hda", "disk.qcow2", "-netdev", "user,id=mynet,hostfwd=tcp::22211-:22", "-device", "e1000,netdev=mynet", "-vnc", "127.0.0.1:21"],
470
490
  "version": 3,
471
491
 
492
+ "disk": "disk.qcow2",
493
+
472
494
  "ssh_port": 22211,
473
495
  "vnc_port": 5921,
474
496
 
@@ -512,6 +534,8 @@
512
534
  "arguments": ["-machine", "virt", "-cpu", "rv64", "-m", "1G", "-smp", 2, "-device", "virtio-blk-device,drive=hd", "-drive", "file=disk.qcow2,if=none,id=hd", "-device", "virtio-net-device,netdev=net", "-netdev", "user,id=net,hostfwd=tcp::22212-:22", "-bios", "fw_jump.elf", "-kernel", "uboot.elf", "-append", "root=LABEL=rootfs console=ttyS0", "-vnc", "127.0.0.1:22"],
513
535
  "version": 1,
514
536
 
537
+ "disk": "disk.qcow2",
538
+
515
539
  "ssh_port": 22212,
516
540
  "vnc_port": 5912,
517
541
 
File without changes
@@ -13,7 +13,7 @@
13
13
 
14
14
  #if defined(__arm__) || (defined(__M_ARM) && !defined(_M_ARM64))
15
15
 
16
- #include "vendor/libcc/libcc.hh"
16
+ #include "src/core/libcc/libcc.hh"
17
17
  #include "ffi.hh"
18
18
  #include "call.hh"
19
19
  #include "util.hh"
@@ -13,7 +13,7 @@
13
13
 
14
14
  #if defined(__aarch64__) || defined(_M_ARM64)
15
15
 
16
- #include "vendor/libcc/libcc.hh"
16
+ #include "src/core/libcc/libcc.hh"
17
17
  #include "ffi.hh"
18
18
  #include "call.hh"
19
19
  #include "util.hh"
@@ -13,7 +13,7 @@
13
13
 
14
14
  #if __riscv_xlen == 64
15
15
 
16
- #include "vendor/libcc/libcc.hh"
16
+ #include "src/core/libcc/libcc.hh"
17
17
  #include "ffi.hh"
18
18
  #include "call.hh"
19
19
  #include "util.hh"
@@ -13,7 +13,7 @@
13
13
 
14
14
  #if defined(__x86_64__) && !defined(_WIN32)
15
15
 
16
- #include "vendor/libcc/libcc.hh"
16
+ #include "src/core/libcc/libcc.hh"
17
17
  #include "ffi.hh"
18
18
  #include "call.hh"
19
19
  #include "util.hh"
@@ -13,7 +13,7 @@
13
13
 
14
14
  #if defined(_WIN32) && (defined(__x86_64__) || defined(_M_AMD64))
15
15
 
16
- #include "vendor/libcc/libcc.hh"
16
+ #include "src/core/libcc/libcc.hh"
17
17
  #include "ffi.hh"
18
18
  #include "call.hh"
19
19
  #include "util.hh"
@@ -13,7 +13,7 @@
13
13
 
14
14
  #if defined(__i386__) || defined(_M_IX86)
15
15
 
16
- #include "vendor/libcc/libcc.hh"
16
+ #include "src/core/libcc/libcc.hh"
17
17
  #include "ffi.hh"
18
18
  #include "call.hh"
19
19
  #include "util.hh"
File without changes