koffi 2.1.3 → 2.1.5

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 (374) hide show
  1. package/ChangeLog.md +17 -0
  2. package/doc/contribute.md +5 -5
  3. package/doc/index.rst +1 -1
  4. package/doc/memory.md +1 -0
  5. package/doc/templates/badges.html +1 -1
  6. package/package.json +44 -68
  7. package/src/cnoke/LICENSE.txt +661 -0
  8. package/src/cnoke/README.md +97 -0
  9. package/src/cnoke/assets/FindCNoke.cmake +71 -0
  10. package/src/cnoke/assets/win_delay_hook.c +34 -0
  11. package/src/cnoke/cnoke.js +968 -0
  12. package/src/cnoke/package.json +25 -0
  13. package/{vendor → src/core}/libcc/libcc.cc +38 -11
  14. package/{vendor → src/core}/libcc/libcc.hh +4 -2
  15. package/{CMakeLists.txt → src/koffi/CMakeLists.txt} +3 -3
  16. package/{benchmark → src/koffi/benchmark}/CMakeLists.txt +9 -6
  17. package/{benchmark → src/koffi/benchmark}/atoi_koffi.js +0 -0
  18. package/{benchmark → src/koffi/benchmark}/atoi_napi.cc +1 -1
  19. package/{benchmark → src/koffi/benchmark}/atoi_napi.js +0 -0
  20. package/{benchmark → src/koffi/benchmark}/atoi_node_ffi.js +0 -0
  21. package/src/koffi/benchmark/benchmark.js +118 -0
  22. package/src/koffi/benchmark/rand_koffi.js +52 -0
  23. package/src/koffi/benchmark/rand_napi.cc +69 -0
  24. package/src/koffi/benchmark/rand_napi.js +47 -0
  25. package/src/koffi/benchmark/rand_node_ffi.js +55 -0
  26. package/{benchmark → src/koffi/benchmark}/raylib_cc.cc +2 -2
  27. package/{benchmark → src/koffi/benchmark}/raylib_cc.js +0 -0
  28. package/{benchmark → src/koffi/benchmark}/raylib_koffi.js +0 -0
  29. package/{benchmark → src/koffi/benchmark}/raylib_node_ffi.js +0 -0
  30. package/{benchmark → src/koffi/benchmark}/raylib_node_raylib.js +0 -0
  31. package/src/koffi/build/2.1.5/koffi_darwin_arm64.tar.gz +0 -0
  32. package/src/koffi/build/2.1.5/koffi_darwin_x64.tar.gz +0 -0
  33. package/src/koffi/build/2.1.5/koffi_freebsd_arm64.tar.gz +0 -0
  34. package/src/koffi/build/2.1.5/koffi_freebsd_ia32.tar.gz +0 -0
  35. package/src/koffi/build/2.1.5/koffi_freebsd_x64.tar.gz +0 -0
  36. package/src/koffi/build/2.1.5/koffi_linux_arm32hf.tar.gz +0 -0
  37. package/src/koffi/build/2.1.5/koffi_linux_arm64.tar.gz +0 -0
  38. package/src/koffi/build/2.1.5/koffi_linux_ia32.tar.gz +0 -0
  39. package/src/koffi/build/2.1.5/koffi_linux_riscv64hf64.tar.gz +0 -0
  40. package/src/koffi/build/2.1.5/koffi_linux_x64.tar.gz +0 -0
  41. package/src/koffi/build/2.1.5/koffi_openbsd_ia32.tar.gz +0 -0
  42. package/src/koffi/build/2.1.5/koffi_openbsd_x64.tar.gz +0 -0
  43. package/src/koffi/build/2.1.5/koffi_win32_arm64.tar.gz +0 -0
  44. package/src/koffi/build/2.1.5/koffi_win32_ia32.tar.gz +0 -0
  45. package/src/koffi/build/2.1.5/koffi_win32_x64.tar.gz +0 -0
  46. package/src/koffi/qemu/qemu/.gitkeep +0 -0
  47. package/{qemu → src/koffi/qemu}/qemu.js +227 -133
  48. package/{qemu → src/koffi/qemu}/registry/machines.json +24 -0
  49. package/{qemu → src/koffi/qemu}/registry/sha256sum.txt +0 -0
  50. package/src/{abi_arm32.cc → koffi/src/abi_arm32.cc} +1 -1
  51. package/src/{abi_arm32_fwd.S → koffi/src/abi_arm32_fwd.S} +0 -0
  52. package/src/{abi_arm64.cc → koffi/src/abi_arm64.cc} +1 -1
  53. package/src/{abi_arm64_fwd.S → koffi/src/abi_arm64_fwd.S} +0 -0
  54. package/src/{abi_arm64_fwd.asm → koffi/src/abi_arm64_fwd.asm} +0 -0
  55. package/src/{abi_riscv64.cc → koffi/src/abi_riscv64.cc} +1 -1
  56. package/src/{abi_riscv64_fwd.S → koffi/src/abi_riscv64_fwd.S} +0 -0
  57. package/src/{abi_x64_sysv.cc → koffi/src/abi_x64_sysv.cc} +1 -1
  58. package/src/{abi_x64_sysv_fwd.S → koffi/src/abi_x64_sysv_fwd.S} +0 -0
  59. package/src/{abi_x64_win.cc → koffi/src/abi_x64_win.cc} +1 -1
  60. package/src/{abi_x64_win_fwd.asm → koffi/src/abi_x64_win_fwd.asm} +0 -0
  61. package/src/{abi_x86.cc → koffi/src/abi_x86.cc} +1 -1
  62. package/src/{abi_x86_fwd.S → koffi/src/abi_x86_fwd.S} +0 -0
  63. package/src/{abi_x86_fwd.asm → koffi/src/abi_x86_fwd.asm} +0 -0
  64. package/src/{call.cc → koffi/src/call.cc} +1 -1
  65. package/src/{call.hh → koffi/src/call.hh} +2 -2
  66. package/src/{ffi.cc → koffi/src/ffi.cc} +34 -18
  67. package/src/{ffi.hh → koffi/src/ffi.hh} +5 -3
  68. package/src/{index.js → koffi/src/index.js} +0 -0
  69. package/src/{parser.cc → koffi/src/parser.cc} +1 -1
  70. package/src/{parser.hh → koffi/src/parser.hh} +1 -1
  71. package/src/{util.cc → koffi/src/util.cc} +1 -1
  72. package/src/{util.hh → koffi/src/util.hh} +1 -1
  73. package/{test → src/koffi/test}/CMakeLists.txt +14 -15
  74. package/{test → src/koffi/test}/async.js +0 -0
  75. package/{test → src/koffi/test}/callbacks.js +0 -0
  76. package/{test → src/koffi/test}/misc.c +13 -0
  77. package/{test → src/koffi/test}/misc.def +0 -0
  78. package/{test → src/koffi/test}/raylib.js +0 -0
  79. package/{test → src/koffi/test}/sqlite.js +1 -1
  80. package/{test → src/koffi/test}/sync.js +17 -0
  81. package/vendor/brotli/BUILD +144 -0
  82. package/vendor/brotli/CMakeLists.txt +421 -0
  83. package/vendor/brotli/CONTRIBUTING.md +27 -0
  84. package/vendor/brotli/LICENSE +19 -0
  85. package/vendor/brotli/MANIFEST.in +17 -0
  86. package/vendor/brotli/Makefile +55 -0
  87. package/vendor/brotli/Makefile.am +38 -0
  88. package/vendor/brotli/README +15 -0
  89. package/vendor/brotli/README.md +104 -0
  90. package/vendor/brotli/WORKSPACE +21 -0
  91. package/vendor/brotli/bootstrap +35 -0
  92. package/vendor/brotli/c/common/constants.c +15 -0
  93. package/vendor/brotli/c/common/constants.h +200 -0
  94. package/vendor/brotli/c/common/context.c +156 -0
  95. package/vendor/brotli/c/common/context.h +113 -0
  96. package/vendor/brotli/c/common/dictionary.c +5914 -0
  97. package/vendor/brotli/c/common/dictionary.h +64 -0
  98. package/vendor/brotli/c/common/platform.c +22 -0
  99. package/vendor/brotli/c/common/platform.h +594 -0
  100. package/vendor/brotli/c/common/transform.c +291 -0
  101. package/vendor/brotli/c/common/transform.h +85 -0
  102. package/vendor/brotli/c/common/version.h +26 -0
  103. package/vendor/brotli/c/dec/bit_reader.c +76 -0
  104. package/vendor/brotli/c/dec/bit_reader.h +351 -0
  105. package/vendor/brotli/c/dec/decode.c +2608 -0
  106. package/vendor/brotli/c/dec/huffman.c +339 -0
  107. package/vendor/brotli/c/dec/huffman.h +121 -0
  108. package/vendor/brotli/c/dec/prefix.h +732 -0
  109. package/vendor/brotli/c/dec/state.c +159 -0
  110. package/vendor/brotli/c/dec/state.h +365 -0
  111. package/vendor/brotli/c/enc/backward_references.c +145 -0
  112. package/vendor/brotli/c/enc/backward_references.h +39 -0
  113. package/vendor/brotli/c/enc/backward_references_hq.c +843 -0
  114. package/vendor/brotli/c/enc/backward_references_hq.h +95 -0
  115. package/vendor/brotli/c/enc/backward_references_inc.h +163 -0
  116. package/vendor/brotli/c/enc/bit_cost.c +35 -0
  117. package/vendor/brotli/c/enc/bit_cost.h +63 -0
  118. package/vendor/brotli/c/enc/bit_cost_inc.h +127 -0
  119. package/vendor/brotli/c/enc/block_encoder_inc.h +34 -0
  120. package/vendor/brotli/c/enc/block_splitter.c +194 -0
  121. package/vendor/brotli/c/enc/block_splitter.h +51 -0
  122. package/vendor/brotli/c/enc/block_splitter_inc.h +440 -0
  123. package/vendor/brotli/c/enc/brotli_bit_stream.c +1314 -0
  124. package/vendor/brotli/c/enc/brotli_bit_stream.h +84 -0
  125. package/vendor/brotli/c/enc/cluster.c +56 -0
  126. package/vendor/brotli/c/enc/cluster.h +48 -0
  127. package/vendor/brotli/c/enc/cluster_inc.h +320 -0
  128. package/vendor/brotli/c/enc/command.c +28 -0
  129. package/vendor/brotli/c/enc/command.h +190 -0
  130. package/vendor/brotli/c/enc/compress_fragment.c +790 -0
  131. package/vendor/brotli/c/enc/compress_fragment.h +61 -0
  132. package/vendor/brotli/c/enc/compress_fragment_two_pass.c +645 -0
  133. package/vendor/brotli/c/enc/compress_fragment_two_pass.h +54 -0
  134. package/vendor/brotli/c/enc/dictionary_hash.c +1846 -0
  135. package/vendor/brotli/c/enc/dictionary_hash.h +25 -0
  136. package/vendor/brotli/c/enc/encode.c +1927 -0
  137. package/vendor/brotli/c/enc/encoder_dict.c +33 -0
  138. package/vendor/brotli/c/enc/encoder_dict.h +43 -0
  139. package/vendor/brotli/c/enc/entropy_encode.c +503 -0
  140. package/vendor/brotli/c/enc/entropy_encode.h +122 -0
  141. package/vendor/brotli/c/enc/entropy_encode_static.h +539 -0
  142. package/vendor/brotli/c/enc/fast_log.c +105 -0
  143. package/vendor/brotli/c/enc/fast_log.h +66 -0
  144. package/vendor/brotli/c/enc/find_match_length.h +79 -0
  145. package/vendor/brotli/c/enc/hash.h +488 -0
  146. package/vendor/brotli/c/enc/hash_composite_inc.h +125 -0
  147. package/vendor/brotli/c/enc/hash_forgetful_chain_inc.h +293 -0
  148. package/vendor/brotli/c/enc/hash_longest_match64_inc.h +267 -0
  149. package/vendor/brotli/c/enc/hash_longest_match_inc.h +262 -0
  150. package/vendor/brotli/c/enc/hash_longest_match_quickly_inc.h +266 -0
  151. package/vendor/brotli/c/enc/hash_rolling_inc.h +212 -0
  152. package/vendor/brotli/c/enc/hash_to_binary_tree_inc.h +329 -0
  153. package/vendor/brotli/c/enc/histogram.c +100 -0
  154. package/vendor/brotli/c/enc/histogram.h +63 -0
  155. package/vendor/brotli/c/enc/histogram_inc.h +51 -0
  156. package/vendor/brotli/c/enc/literal_cost.c +175 -0
  157. package/vendor/brotli/c/enc/literal_cost.h +30 -0
  158. package/vendor/brotli/c/enc/memory.c +170 -0
  159. package/vendor/brotli/c/enc/memory.h +114 -0
  160. package/vendor/brotli/c/enc/metablock.c +663 -0
  161. package/vendor/brotli/c/enc/metablock.h +105 -0
  162. package/vendor/brotli/c/enc/metablock_inc.h +183 -0
  163. package/vendor/brotli/c/enc/params.h +46 -0
  164. package/vendor/brotli/c/enc/prefix.h +53 -0
  165. package/vendor/brotli/c/enc/quality.h +165 -0
  166. package/vendor/brotli/c/enc/ringbuffer.h +167 -0
  167. package/vendor/brotli/c/enc/static_dict.c +486 -0
  168. package/vendor/brotli/c/enc/static_dict.h +40 -0
  169. package/vendor/brotli/c/enc/static_dict_lut.h +5864 -0
  170. package/vendor/brotli/c/enc/utf8_util.c +85 -0
  171. package/vendor/brotli/c/enc/utf8_util.h +32 -0
  172. package/vendor/brotli/c/enc/write_bits.h +87 -0
  173. package/vendor/brotli/c/include/brotli/decode.h +344 -0
  174. package/vendor/brotli/c/include/brotli/encode.h +448 -0
  175. package/vendor/brotli/c/include/brotli/port.h +288 -0
  176. package/vendor/brotli/c/include/brotli/types.h +83 -0
  177. package/vendor/brotli/c/tools/brotli.c +1116 -0
  178. package/vendor/brotli/c/tools/brotli.md +107 -0
  179. package/vendor/brotli/compiler_config_setting.bzl +28 -0
  180. package/vendor/brotli/configure +8 -0
  181. package/vendor/brotli/configure-cmake +318 -0
  182. package/vendor/brotli/configure.ac +14 -0
  183. package/vendor/brotli/docs/brotli.1 +132 -0
  184. package/vendor/brotli/docs/constants.h.3 +47 -0
  185. package/vendor/brotli/docs/decode.h.3 +415 -0
  186. package/vendor/brotli/docs/encode.h.3 +586 -0
  187. package/vendor/brotli/docs/types.h.3 +117 -0
  188. package/vendor/brotli/premake5.lua +78 -0
  189. package/vendor/brotli/python/Makefile +57 -0
  190. package/vendor/brotli/python/README.md +54 -0
  191. package/vendor/brotli/python/_brotli.cc +753 -0
  192. package/vendor/brotli/python/bro.py +160 -0
  193. package/vendor/brotli/python/brotli.py +56 -0
  194. package/vendor/brotli/python/tests/__init__.py +0 -0
  195. package/vendor/brotli/python/tests/_test_utils.py +112 -0
  196. package/vendor/brotli/python/tests/bro_test.py +102 -0
  197. package/vendor/brotli/python/tests/compress_test.py +41 -0
  198. package/vendor/brotli/python/tests/compressor_test.py +94 -0
  199. package/vendor/brotli/python/tests/decompress_test.py +42 -0
  200. package/vendor/brotli/python/tests/decompressor_test.py +59 -0
  201. package/vendor/brotli/scripts/libbrotlicommon.pc.in +11 -0
  202. package/vendor/brotli/scripts/libbrotlidec.pc.in +12 -0
  203. package/vendor/brotli/scripts/libbrotlienc.pc.in +12 -0
  204. package/vendor/brotli/scripts/sources.lst +104 -0
  205. package/vendor/brotli/setup.cfg +5 -0
  206. package/vendor/brotli/setup.py +293 -0
  207. package/vendor/brotli/tests/Makefile +17 -0
  208. package/vendor/brotli/tests/compatibility_test.sh +25 -0
  209. package/vendor/brotli/tests/roundtrip_test.sh +36 -0
  210. package/vendor/brotli/tests/run-compatibility-test.cmake +31 -0
  211. package/vendor/brotli/tests/run-roundtrip-test.cmake +36 -0
  212. package/vendor/brotli/tests/testdata/empty +0 -0
  213. package/vendor/brotli/tests/testdata/empty.compressed +1 -0
  214. package/vendor/brotli/tests/testdata/ukkonooa +1 -0
  215. package/vendor/brotli/tests/testdata/ukkonooa.compressed +0 -0
  216. package/vendor/miniz/ChangeLog.md +235 -0
  217. package/vendor/miniz/LICENSE +22 -0
  218. package/vendor/miniz/examples/example1.c +105 -0
  219. package/vendor/miniz/examples/example2.c +164 -0
  220. package/vendor/miniz/examples/example3.c +269 -0
  221. package/vendor/miniz/examples/example4.c +102 -0
  222. package/vendor/miniz/examples/example5.c +327 -0
  223. package/vendor/miniz/examples/example6.c +166 -0
  224. package/vendor/miniz/miniz.c +7835 -0
  225. package/vendor/miniz/miniz.h +1422 -0
  226. package/vendor/miniz/readme.md +46 -0
  227. package/vendor/{sqlite3 → sqlite3mc}/sqlite3ext.h +18 -2
  228. package/vendor/{sqlite3/sqlite3.c → sqlite3mc/sqlite3mc.c} +60872 -4890
  229. package/vendor/sqlite3mc/sqlite3mc.def +312 -0
  230. package/vendor/{sqlite3/sqlite3.h → sqlite3mc/sqlite3mc.h} +480 -36
  231. package/build/qemu/2.1.3/koffi_darwin_arm64.tar.gz +0 -0
  232. package/build/qemu/2.1.3/koffi_darwin_x64.tar.gz +0 -0
  233. package/build/qemu/2.1.3/koffi_freebsd_arm64.tar.gz +0 -0
  234. package/build/qemu/2.1.3/koffi_freebsd_ia32.tar.gz +0 -0
  235. package/build/qemu/2.1.3/koffi_freebsd_x64.tar.gz +0 -0
  236. package/build/qemu/2.1.3/koffi_linux_arm32hf.tar.gz +0 -0
  237. package/build/qemu/2.1.3/koffi_linux_arm64.tar.gz +0 -0
  238. package/build/qemu/2.1.3/koffi_linux_ia32.tar.gz +0 -0
  239. package/build/qemu/2.1.3/koffi_linux_riscv64hf64.tar.gz +0 -0
  240. package/build/qemu/2.1.3/koffi_linux_x64.tar.gz +0 -0
  241. package/build/qemu/2.1.3/koffi_openbsd_ia32.tar.gz +0 -0
  242. package/build/qemu/2.1.3/koffi_openbsd_x64.tar.gz +0 -0
  243. package/build/qemu/2.1.3/koffi_win32_arm64.tar.gz +0 -0
  244. package/build/qemu/2.1.3/koffi_win32_ia32.tar.gz +0 -0
  245. package/build/qemu/2.1.3/koffi_win32_x64.tar.gz +0 -0
  246. package/vendor/_patches/glfw_001_fix_openbsd_xlib_soname.patch +0 -145
  247. package/vendor/raylib/projects/VS2019-Android/raylib_android/raylib_android.NativeActivity/raylib_android.NativeActivity.vcxproj +0 -226
  248. package/vendor/raylib/projects/VS2019-Android/raylib_android/raylib_android.NativeActivity/raylib_android.NativeActivity.vcxproj.filters +0 -10
  249. package/vendor/raylib/projects/VS2019-Android/raylib_android/raylib_android.NativeActivity/raylib_android.NativeActivity.vcxproj.user +0 -4
  250. package/vendor/raylib/projects/VS2019-Android/raylib_android.sln +0 -75
  251. package/vendor/raylib/projects/VS2022/examples/audio_module_playing.vcxproj +0 -390
  252. package/vendor/raylib/projects/VS2022/examples/audio_multichannel_sound.vcxproj +0 -390
  253. package/vendor/raylib/projects/VS2022/examples/audio_music_stream.vcxproj +0 -390
  254. package/vendor/raylib/projects/VS2022/examples/audio_raw_stream.vcxproj +0 -390
  255. package/vendor/raylib/projects/VS2022/examples/audio_sound_loading.vcxproj +0 -390
  256. package/vendor/raylib/projects/VS2022/examples/audio_stream_effects.vcxproj +0 -390
  257. package/vendor/raylib/projects/VS2022/examples/core_2d_camera.vcxproj +0 -390
  258. package/vendor/raylib/projects/VS2022/examples/core_2d_camera_mouse_zoom.vcxproj +0 -390
  259. package/vendor/raylib/projects/VS2022/examples/core_2d_camera_platformer.vcxproj +0 -390
  260. package/vendor/raylib/projects/VS2022/examples/core_3d_camera_first_person.vcxproj +0 -390
  261. package/vendor/raylib/projects/VS2022/examples/core_3d_camera_free.vcxproj +0 -390
  262. package/vendor/raylib/projects/VS2022/examples/core_3d_camera_mode.vcxproj +0 -390
  263. package/vendor/raylib/projects/VS2022/examples/core_3d_picking.vcxproj +0 -390
  264. package/vendor/raylib/projects/VS2022/examples/core_basic_screen_manager.vcxproj +0 -390
  265. package/vendor/raylib/projects/VS2022/examples/core_basic_window.vcxproj +0 -390
  266. package/vendor/raylib/projects/VS2022/examples/core_custom_frame_control.vcxproj +0 -390
  267. package/vendor/raylib/projects/VS2022/examples/core_custom_logging.vcxproj +0 -390
  268. package/vendor/raylib/projects/VS2022/examples/core_drop_files.vcxproj +0 -390
  269. package/vendor/raylib/projects/VS2022/examples/core_input_gamepad.vcxproj +0 -387
  270. package/vendor/raylib/projects/VS2022/examples/core_input_gestures.vcxproj +0 -387
  271. package/vendor/raylib/projects/VS2022/examples/core_input_keys.vcxproj +0 -387
  272. package/vendor/raylib/projects/VS2022/examples/core_input_mouse.vcxproj +0 -387
  273. package/vendor/raylib/projects/VS2022/examples/core_input_mouse_wheel.vcxproj +0 -387
  274. package/vendor/raylib/projects/VS2022/examples/core_input_multitouch.vcxproj +0 -387
  275. package/vendor/raylib/projects/VS2022/examples/core_loading_thread.vcxproj +0 -387
  276. package/vendor/raylib/projects/VS2022/examples/core_random_values.vcxproj +0 -387
  277. package/vendor/raylib/projects/VS2022/examples/core_scissor_test.vcxproj +0 -387
  278. package/vendor/raylib/projects/VS2022/examples/core_split_screen.vcxproj +0 -387
  279. package/vendor/raylib/projects/VS2022/examples/core_storage_values.vcxproj +0 -387
  280. package/vendor/raylib/projects/VS2022/examples/core_vr_simulator.vcxproj +0 -387
  281. package/vendor/raylib/projects/VS2022/examples/core_window_flags.vcxproj +0 -387
  282. package/vendor/raylib/projects/VS2022/examples/core_window_letterbox.vcxproj +0 -387
  283. package/vendor/raylib/projects/VS2022/examples/core_window_should_close.vcxproj +0 -390
  284. package/vendor/raylib/projects/VS2022/examples/core_world_screen.vcxproj +0 -387
  285. package/vendor/raylib/projects/VS2022/examples/easings_testbed.vcxproj +0 -387
  286. package/vendor/raylib/projects/VS2022/examples/embedded_files_loading.vcxproj +0 -387
  287. package/vendor/raylib/projects/VS2022/examples/models_animation.vcxproj +0 -387
  288. package/vendor/raylib/projects/VS2022/examples/models_billboard.vcxproj +0 -387
  289. package/vendor/raylib/projects/VS2022/examples/models_box_collisions.vcxproj +0 -387
  290. package/vendor/raylib/projects/VS2022/examples/models_cubicmap.vcxproj +0 -387
  291. package/vendor/raylib/projects/VS2022/examples/models_first_person_maze.vcxproj +0 -387
  292. package/vendor/raylib/projects/VS2022/examples/models_geometric_shapes.vcxproj +0 -387
  293. package/vendor/raylib/projects/VS2022/examples/models_heightmap.vcxproj +0 -387
  294. package/vendor/raylib/projects/VS2022/examples/models_loading.vcxproj +0 -387
  295. package/vendor/raylib/projects/VS2022/examples/models_loading_gltf.vcxproj +0 -387
  296. package/vendor/raylib/projects/VS2022/examples/models_loading_vox.vcxproj +0 -387
  297. package/vendor/raylib/projects/VS2022/examples/models_mesh_generation.vcxproj +0 -387
  298. package/vendor/raylib/projects/VS2022/examples/models_mesh_picking.vcxproj +0 -387
  299. package/vendor/raylib/projects/VS2022/examples/models_orthographic_projection.vcxproj +0 -387
  300. package/vendor/raylib/projects/VS2022/examples/models_rlgl_solar_system.vcxproj +0 -387
  301. package/vendor/raylib/projects/VS2022/examples/models_skybox.vcxproj +0 -387
  302. package/vendor/raylib/projects/VS2022/examples/models_waving_cubes.vcxproj +0 -387
  303. package/vendor/raylib/projects/VS2022/examples/models_yaw_pitch_roll.vcxproj +0 -387
  304. package/vendor/raylib/projects/VS2022/examples/rlgl_compute_shaders.vcxproj +0 -391
  305. package/vendor/raylib/projects/VS2022/examples/rlgl_standalone.vcxproj +0 -391
  306. package/vendor/raylib/projects/VS2022/examples/shaders_basic_lighting.vcxproj +0 -387
  307. package/vendor/raylib/projects/VS2022/examples/shaders_custom_uniform.vcxproj +0 -387
  308. package/vendor/raylib/projects/VS2022/examples/shaders_eratosthenes.vcxproj +0 -387
  309. package/vendor/raylib/projects/VS2022/examples/shaders_fog.vcxproj +0 -387
  310. package/vendor/raylib/projects/VS2022/examples/shaders_hot_reloading.vcxproj +0 -387
  311. package/vendor/raylib/projects/VS2022/examples/shaders_julia_set.vcxproj +0 -387
  312. package/vendor/raylib/projects/VS2022/examples/shaders_mesh_instancing.vcxproj +0 -387
  313. package/vendor/raylib/projects/VS2022/examples/shaders_model_shader.vcxproj +0 -387
  314. package/vendor/raylib/projects/VS2022/examples/shaders_multi_sample2d.vcxproj +0 -387
  315. package/vendor/raylib/projects/VS2022/examples/shaders_palette_switch.vcxproj +0 -387
  316. package/vendor/raylib/projects/VS2022/examples/shaders_postprocessing.vcxproj +0 -387
  317. package/vendor/raylib/projects/VS2022/examples/shaders_raymarching.vcxproj +0 -387
  318. package/vendor/raylib/projects/VS2022/examples/shaders_shapes_textures.vcxproj +0 -387
  319. package/vendor/raylib/projects/VS2022/examples/shaders_simple_mask.vcxproj +0 -387
  320. package/vendor/raylib/projects/VS2022/examples/shaders_spotlight.vcxproj +0 -387
  321. package/vendor/raylib/projects/VS2022/examples/shaders_texture_drawing.vcxproj +0 -387
  322. package/vendor/raylib/projects/VS2022/examples/shaders_texture_waves.vcxproj +0 -387
  323. package/vendor/raylib/projects/VS2022/examples/shapes_basic_shapes.vcxproj +0 -387
  324. package/vendor/raylib/projects/VS2022/examples/shapes_bouncing_ball.vcxproj +0 -387
  325. package/vendor/raylib/projects/VS2022/examples/shapes_collision_area.vcxproj +0 -387
  326. package/vendor/raylib/projects/VS2022/examples/shapes_colors_palette.vcxproj +0 -387
  327. package/vendor/raylib/projects/VS2022/examples/shapes_draw_circle_sector.vcxproj +0 -387
  328. package/vendor/raylib/projects/VS2022/examples/shapes_draw_rectangle_rounded.vcxproj +0 -387
  329. package/vendor/raylib/projects/VS2022/examples/shapes_draw_ring.vcxproj +0 -387
  330. package/vendor/raylib/projects/VS2022/examples/shapes_easings_ball_anim.vcxproj +0 -387
  331. package/vendor/raylib/projects/VS2022/examples/shapes_easings_box_anim.vcxproj +0 -387
  332. package/vendor/raylib/projects/VS2022/examples/shapes_easings_rectangle_array.vcxproj +0 -387
  333. package/vendor/raylib/projects/VS2022/examples/shapes_following_eyes.vcxproj +0 -387
  334. package/vendor/raylib/projects/VS2022/examples/shapes_lines_bezier.vcxproj +0 -387
  335. package/vendor/raylib/projects/VS2022/examples/shapes_logo_raylib.vcxproj +0 -387
  336. package/vendor/raylib/projects/VS2022/examples/shapes_logo_raylib_anim.vcxproj +0 -387
  337. package/vendor/raylib/projects/VS2022/examples/shapes_rectangle_scaling.vcxproj +0 -387
  338. package/vendor/raylib/projects/VS2022/examples/text_codepoints_loading.vcxproj +0 -387
  339. package/vendor/raylib/projects/VS2022/examples/text_draw_3d.vcxproj +0 -387
  340. package/vendor/raylib/projects/VS2022/examples/text_font_filters.vcxproj +0 -387
  341. package/vendor/raylib/projects/VS2022/examples/text_font_loading.vcxproj +0 -387
  342. package/vendor/raylib/projects/VS2022/examples/text_font_sdf.vcxproj +0 -387
  343. package/vendor/raylib/projects/VS2022/examples/text_font_spritefont.vcxproj +0 -387
  344. package/vendor/raylib/projects/VS2022/examples/text_format_text.vcxproj +0 -387
  345. package/vendor/raylib/projects/VS2022/examples/text_input_box.vcxproj +0 -387
  346. package/vendor/raylib/projects/VS2022/examples/text_raylib_fonts.vcxproj +0 -387
  347. package/vendor/raylib/projects/VS2022/examples/text_rectangle_bounds.vcxproj +0 -387
  348. package/vendor/raylib/projects/VS2022/examples/text_unicode.vcxproj +0 -387
  349. package/vendor/raylib/projects/VS2022/examples/text_writing_anim.vcxproj +0 -387
  350. package/vendor/raylib/projects/VS2022/examples/textures_background_scrolling.vcxproj +0 -387
  351. package/vendor/raylib/projects/VS2022/examples/textures_blend_modes.vcxproj +0 -387
  352. package/vendor/raylib/projects/VS2022/examples/textures_bunnymark.vcxproj +0 -387
  353. package/vendor/raylib/projects/VS2022/examples/textures_draw_tiled.vcxproj +0 -387
  354. package/vendor/raylib/projects/VS2022/examples/textures_fog_of_war.vcxproj +0 -387
  355. package/vendor/raylib/projects/VS2022/examples/textures_gif_player.vcxproj +0 -387
  356. package/vendor/raylib/projects/VS2022/examples/textures_image_drawing.vcxproj +0 -387
  357. package/vendor/raylib/projects/VS2022/examples/textures_image_generation.vcxproj +0 -387
  358. package/vendor/raylib/projects/VS2022/examples/textures_image_loading.vcxproj +0 -387
  359. package/vendor/raylib/projects/VS2022/examples/textures_image_processing.vcxproj +0 -387
  360. package/vendor/raylib/projects/VS2022/examples/textures_image_text.vcxproj +0 -387
  361. package/vendor/raylib/projects/VS2022/examples/textures_logo_raylib.vcxproj +0 -387
  362. package/vendor/raylib/projects/VS2022/examples/textures_mouse_painting.vcxproj +0 -387
  363. package/vendor/raylib/projects/VS2022/examples/textures_npatch_drawing.vcxproj +0 -387
  364. package/vendor/raylib/projects/VS2022/examples/textures_particles_blending.vcxproj +0 -387
  365. package/vendor/raylib/projects/VS2022/examples/textures_polygon.vcxproj +0 -387
  366. package/vendor/raylib/projects/VS2022/examples/textures_raw_data.vcxproj +0 -387
  367. package/vendor/raylib/projects/VS2022/examples/textures_sprite_anim.vcxproj +0 -387
  368. package/vendor/raylib/projects/VS2022/examples/textures_sprite_button.vcxproj +0 -387
  369. package/vendor/raylib/projects/VS2022/examples/textures_sprite_explosion.vcxproj +0 -387
  370. package/vendor/raylib/projects/VS2022/examples/textures_srcrec_dstrec.vcxproj +0 -387
  371. package/vendor/raylib/projects/VS2022/examples/textures_to_image.vcxproj +0 -387
  372. package/vendor/raylib/projects/VS2022/raylib/raylib.vcxproj +0 -340
  373. package/vendor/raylib/projects/VS2022/raylib.sln +0 -2347
  374. 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,40 @@ 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
+ let npm = (process.platform == 'win32') ? 'npm.cmd' : 'npm';
287
300
 
288
- let json = fs.readFileSync(root_dir + '/koffi/package.json', { encoding: 'utf-8' });
301
+ execFileSync(npm, ['pack', '--pack-destination', pack_dir], {
302
+ cwd: dist_dir,
303
+ stdio: 'inherit',
304
+ });
305
+ }
306
+
307
+ async function publish() {
308
+ let dist_dir = script_dir + '/../build/dist';
309
+
310
+ let success = await prepare(dist_dir);
311
+ if (!success)
312
+ return false;
313
+
314
+ let npm = (process.platform == 'win32') ? 'npm.cmd' : 'npm';
315
+
316
+ execFileSync(npm, ['publish'], {
317
+ cwd: dist_dir,
318
+ stdio: 'inherit'
319
+ });
320
+ }
321
+
322
+ async function prepare(dist_dir) {
323
+ let snapshot_dir = snapshot();
324
+
325
+ let json = fs.readFileSync(root_dir + '/src/koffi/package.json', { encoding: 'utf-8' });
289
326
  let version = JSON.parse(json).version;
290
327
 
291
328
  console.log('>> Version:', version);
@@ -296,7 +333,7 @@ async function pack() {
296
333
  for (let suite in machine.builds) {
297
334
  let build = machine.builds[suite];
298
335
 
299
- let archive_filename = root_dir + `/koffi/build/qemu/${version}/koffi_${machine.platform}_${build.arch}.tar.gz`;
336
+ let archive_filename = root_dir + `/src/koffi/build/qemu/${version}/koffi_${machine.platform}_${build.arch}.tar.gz`;
300
337
 
301
338
  if (fs.existsSync(archive_filename)) {
302
339
  log(machine, `${suite} > Status`, chalk.bold.green(`[ok]`));
@@ -314,142 +351,187 @@ async function pack() {
314
351
  }
315
352
 
316
353
  let ready = ignore.size;
354
+ let artifacts = [];
317
355
 
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]'));
345
-
346
- if (ret.stdout || ret.stderr)
347
- console.error('');
348
-
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
- }
356
+ // Run machine commands
357
+ {
358
+ let success = true;
360
359
 
361
- ignore.add(machine);
362
- success = false;
363
- }
364
- }));
365
- }));
360
+ if (ready < machines.length) {
361
+ success &= await start(false);
362
+ success &= await upload(snapshot_dir, machine => Object.values(machine.builds).map(build => build.directory));
366
363
 
367
- console.log('>> Get build artifacts');
368
- {
369
- let build_dir = root_dir + '/koffi/build/qemu';
364
+ console.log('>> Run build commands...');
365
+ await Promise.all(machines.map(async machine => {
366
+ if (ignore.has(machine))
367
+ return;
370
368
 
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
- }
369
+ await Promise.all(Object.keys(machine.builds).map(async suite => {
370
+ let build = machine.builds[suite];
371
+
372
+ let cmd = build.build;
373
+ let cwd = build.directory + '/src/koffi';
374
+
375
+ let start = process.hrtime.bigint();
376
+ let ret = await exec_remote(machine, cmd, cwd);
377
+ let time = Number((process.hrtime.bigint() - start) / 1000000n);
378
+
379
+ if (ret.code == 0) {
380
+ log(machine, `${suite} > Build`, chalk.bold.green(`[${(time / 1000).toFixed(2)}s]`));
381
+ } else {
382
+ log(machine, `${suite} > Build`, chalk.bold.red('[error]'));
383
+
384
+ if (ret.stdout || ret.stderr)
385
+ console.error('');
386
+
387
+ let align = log.align + 9;
388
+ if (ret.stdout) {
389
+ let str = ' '.repeat(align) + 'Standard output:\n' +
390
+ chalk.yellow(ret.stdout.replace(/^/gm, ' '.repeat(align + 4))) + '\n';
391
+ console.error(str);
392
+ }
393
+ if (ret.stderr) {
394
+ let str = ' '.repeat(align) + 'Standard error:\n' +
395
+ chalk.yellow(ret.stderr.replace(/^/gm, ' '.repeat(align + 4))) + '\n';
396
+ console.error(str);
397
+ }
398
+
399
+ ignore.add(machine);
400
+ success = false;
401
+ }
402
+ }));
403
+ }));
377
404
  }
378
405
 
379
- await Promise.all(machines.map(async machine => {
380
- if (ignore.has(machine))
381
- return;
406
+ console.log('>> Get build artifacts');
407
+ {
408
+ let build_dir = root_dir + '/src/koffi/build/qemu';
409
+
410
+ await Promise.all(machines.map(async machine => {
411
+ let copied = true;
412
+
413
+ await Promise.all(Object.keys(machine.builds).map(async suite => {
414
+ let build = machine.builds[suite];
415
+
416
+ let src_dir = build.directory + '/src/koffi/build';
417
+ let dest_dir = build_dir + `/${version}/koffi_${machine.platform}_${build.arch}`;
418
+ let dest_filename = dest_dir + '.tar.gz';
419
+
420
+ artifacts.push(dest_filename);
421
+
422
+ if (ignore.has(machine))
423
+ return;
424
+
425
+ unlink_recursive(dest_dir);
426
+ fs.mkdirSync(dest_dir, { mode: 0o755, recursive: true });
427
+
428
+ try {
429
+ await machine.ssh.getDirectory(dest_dir, src_dir, {
430
+ recursive: false,
431
+ concurrency: 4,
432
+ validate: filename => !path.basename(filename).match(/^v[0-9]+/)
433
+ });
434
+
435
+ tar.c({
436
+ gzip: true,
437
+ file: dest_filename,
438
+ sync: true,
439
+ cwd: dest_dir + '/..'
440
+ }, [path.basename(dest_dir)]);
441
+ } catch (err) {
442
+ ignore.add(machine);
443
+ success = false;
444
+ copied = false;
445
+ }
446
+ }));
382
447
 
383
- let copied = true;
448
+ let status = copied ? chalk.bold.green('[ok]') : chalk.bold.red('[error]');
449
+ log(machine, 'Pack', status);
450
+ }));
451
+ }
384
452
 
385
- await Promise.all(Object.keys(machine.builds).map(async suite => {
386
- let build = machine.builds[suite];
453
+ if (machines.some(machine => machine.started))
454
+ success &= await stop(false);
455
+ success &= (ignore.size == ready);
387
456
 
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';
457
+ if (!success) {
458
+ console.log('');
459
+ console.log('>> Status: ' + chalk.bold.red('FAILED'));
460
+ return false;
461
+ }
462
+ }
391
463
 
392
- unlink_recursive(dest_dir);
393
- fs.mkdirSync(dest_dir, { mode: 0o755, recursive: true });
464
+ console.log('>> Prepare NPM package');
465
+ {
466
+ let build_dir = dist_dir + '/src/koffi/build/' + version;
394
467
 
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
- }));
468
+ unlink_recursive(dist_dir);
469
+ fs.mkdirSync(dist_dir, { mode: 0o755, recursive: true });
414
470
 
415
- let status = copied ? chalk.bold.green('[ok]') : chalk.bold.red('[error]');
416
- log(machine, 'Pack', status);
417
- }));
418
- }
471
+ copy_recursive(snapshot_dir, dist_dir);
472
+ fs.mkdirSync(build_dir, { mode: 0o755, recursive: true });
419
473
 
420
- if (machines.some(machine => machine.started))
421
- success &= await stop(false);
422
- success &= (ignore.size == ready);
474
+ for (let artifact of artifacts) {
475
+ let dest_filename = build_dir + '/' + path.basename(artifact);
476
+ fs.copyFileSync(artifact, dest_filename);
477
+ }
423
478
 
424
- console.log('');
425
- if (success) {
426
- console.log('>> Status: ' + chalk.bold.green('SUCCESS'));
427
- } else {
428
- console.log('>> Status: ' + chalk.bold.red('FAILED'));
479
+ let pkg = JSON.parse(json);
480
+
481
+ pkg.main = "src/koffi/src/index.js";
482
+ pkg.scripts = {
483
+ install: "cnoke --prebuild -d src/koffi",
484
+ test: "node src/koffi/qemu/qemu.js test"
485
+ };
486
+ pkg.cnoke.prebuild = "src/koffi/" + pkg.cnoke.prebuild;
487
+ pkg.cnoke.require = "./src/koffi/build/koffi.node";
488
+
489
+ fs.writeFileSync(dist_dir + '/package.json', JSON.stringify(pkg, null, 4));
490
+ fs.unlinkSync(dist_dir + '/src/koffi/package.json');
491
+ fs.unlinkSync(dist_dir + '/src/koffi/.gitignore');
492
+ fs.renameSync(dist_dir + '/src/koffi/README.md', dist_dir + '/README.md');
493
+ fs.renameSync(dist_dir + '/src/koffi/LICENSE.txt', dist_dir + '/LICENSE.txt');
494
+ fs.renameSync(dist_dir + '/src/koffi/ChangeLog.md', dist_dir + '/ChangeLog.md');
495
+ fs.renameSync(dist_dir + '/src/koffi/doc', dist_dir + '/doc');
429
496
  }
430
497
 
431
- return success;
498
+ return true;
432
499
  }
433
500
 
434
- async function copy(func) {
435
- let success = true;
501
+ function snapshot() {
502
+ let snapshot_dir = script_dir + '/../build/snapshot';
436
503
 
437
- let snapshot_dir = fs.mkdtempSync(path.join(os.tmpdir(), 'luigi_'));
438
- process.on('exit', () => unlink_recursive(snapshot_dir));
504
+ unlink_recursive(snapshot_dir);
505
+ fs.mkdirSync(snapshot_dir, { mode: 0o755, recursive: true });
439
506
 
440
507
  console.log('>> Snapshot code...');
441
508
  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';
509
+ let parts = filename.split('/');
510
+
511
+ if (parts[0] == 'src' && parts[1] == 'core') {
512
+ return parts[2] == null || parts[2] == 'libcc';
513
+ } else if (parts[0] == 'src') {
514
+ return parts[1] == null || parts[1] == 'cnoke' ||
515
+ parts[1] == 'koffi';
516
+ } else if (parts[0] == 'vendor') {
517
+ return parts[1] == null || parts[1] == 'brotli' ||
518
+ parts[1] == 'dragonbox' ||
519
+ parts[1] == 'miniz' ||
520
+ parts[1] == 'node-addon-api' ||
521
+ parts[1] == 'raylib' ||
522
+ parts[1] == 'sqlite3mc';
523
+ } else {
524
+ return false;
525
+ }
450
526
  });
451
527
 
452
- console.log('>> Copy source code...');
528
+ return snapshot_dir;
529
+ }
530
+
531
+ async function upload(snapshot_dir, func) {
532
+ let success = true;
533
+
534
+ console.log('>> Upload source code...');
453
535
  await Promise.all(machines.map(async machine => {
454
536
  if (ignore.has(machine))
455
537
  return;
@@ -489,10 +571,12 @@ async function copy(func) {
489
571
  }
490
572
 
491
573
  async function test() {
574
+ let snapshot_dir = snapshot();
575
+
492
576
  let success = true;
493
577
 
494
578
  success &= await start(false);
495
- success &= await copy(machine => Object.values(machine.tests).map(test => test.directory));
579
+ success &= await upload(snapshot_dir, machine => Object.values(machine.tests).map(test => test.directory));
496
580
 
497
581
  console.log('>> Run test commands...');
498
582
  await Promise.all(machines.map(async machine => {
@@ -508,7 +592,7 @@ async function test() {
508
592
 
509
593
  for (let name in commands) {
510
594
  let cmd = commands[name];
511
- let cwd = test.directory + '/koffi';
595
+ let cwd = test.directory + '/src/koffi';
512
596
 
513
597
  let start = process.hrtime.bigint();
514
598
  let ret = await exec_remote(machine, cmd, cwd);
@@ -651,7 +735,7 @@ async function reset() {
651
735
  return;
652
736
 
653
737
  let dirname = `qemu/${machine.key}`;
654
- let disk = dirname + '/disk.qcow2';
738
+ let disk = dirname + '/' + machine.qemu.disk;
655
739
 
656
740
  if (!fs.existsSync(dirname)) {
657
741
  log(machine, 'Missing files', chalk.bold.gray('[ignore]'));
@@ -706,20 +790,30 @@ function check_qemu() {
706
790
  }
707
791
 
708
792
  function copy_recursive(src, dest, validate = filename => true) {
709
- let entries = fs.readdirSync(src, { withFileTypes: true });
793
+ let proc = spawnSync('git', ['ls-files', '-i', '-o', '--exclude-standard', '--directory'], { cwd: src });
794
+ let ignored = new Set(proc.stdout.toString().split('\n').map(it => it.trim().replace(/[\\\/+]$/, '').replaceAll('\\', '/')).filter(it => it));
710
795
 
711
- for (let entry of entries) {
712
- let filename = path.join(src, entry.name);
713
- let destname = path.join(dest, entry.name);
796
+ recurse(src, dest, '');
714
797
 
715
- if (!validate(filename))
716
- continue;
798
+ function recurse(src, dest, nice) {
799
+ let entries = fs.readdirSync(src, { withFileTypes: true });
800
+
801
+ for (let entry of entries) {
802
+ let src_filename = path.join(src, entry.name);
803
+ let dest_filename = path.join(dest, entry.name);
804
+ let filename = nice + (nice ? '/' : '') + entry.name;
717
805
 
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);
806
+ if (ignored.has(filename))
807
+ continue;
808
+ if (!validate(filename))
809
+ continue;
810
+
811
+ if (entry.isDirectory()) {
812
+ fs.mkdirSync(dest_filename, { mode: 0o755 });
813
+ recurse(src_filename, dest_filename, filename);
814
+ } else if (entry.isFile()) {
815
+ fs.copyFileSync(src_filename, dest_filename);
816
+ }
723
817
  }
724
818
  }
725
819
  }
@@ -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"