script_core 0.1.1 → 0.2.0

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 (381) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.rubocop.yml +8 -6
  4. data/.ruby-version +1 -1
  5. data/Gemfile +2 -1
  6. data/bin/sandbox +1 -1
  7. data/ext/enterprise_script_service/Rakefile +1 -1
  8. data/ext/enterprise_script_service/flags.rb +5 -0
  9. data/ext/enterprise_script_service/libseccomp/CHANGELOG +15 -0
  10. data/ext/enterprise_script_service/libseccomp/CREDITS +3 -0
  11. data/ext/enterprise_script_service/libseccomp/Makefile.am +1 -1
  12. data/ext/enterprise_script_service/libseccomp/README.md +1 -1
  13. data/ext/enterprise_script_service/libseccomp/SECURITY.md +45 -0
  14. data/ext/enterprise_script_service/libseccomp/configure.ac +3 -3
  15. data/ext/enterprise_script_service/libseccomp/doc/admin/MAINTAINER_PROCESS.md +95 -0
  16. data/ext/enterprise_script_service/libseccomp/{RELEASE_PROCESS.md → doc/admin/RELEASE_PROCESS.md} +9 -1
  17. data/ext/enterprise_script_service/libseccomp/include/Makefile.am +1 -1
  18. data/ext/enterprise_script_service/libseccomp/include/seccomp-syscalls.h +2292 -0
  19. data/ext/enterprise_script_service/libseccomp/include/seccomp.h.in +3 -1065
  20. data/ext/enterprise_script_service/libseccomp/src/arch-aarch64-syscalls.c +35 -3
  21. data/ext/enterprise_script_service/libseccomp/src/arch-arm-syscalls.c +35 -3
  22. data/ext/enterprise_script_service/libseccomp/src/arch-mips-syscalls.c +43 -11
  23. data/ext/enterprise_script_service/libseccomp/src/arch-mips64-syscalls.c +33 -1
  24. data/ext/enterprise_script_service/libseccomp/src/arch-mips64n32-syscalls.c +33 -1
  25. data/ext/enterprise_script_service/libseccomp/src/arch-parisc-syscalls.c +34 -2
  26. data/ext/enterprise_script_service/libseccomp/src/arch-ppc-syscalls.c +43 -11
  27. data/ext/enterprise_script_service/libseccomp/src/arch-ppc64-syscalls.c +44 -12
  28. data/ext/enterprise_script_service/libseccomp/src/arch-s390-syscalls.c +46 -14
  29. data/ext/enterprise_script_service/libseccomp/src/arch-s390.c +142 -18
  30. data/ext/enterprise_script_service/libseccomp/src/arch-s390x-syscalls.c +47 -15
  31. data/ext/enterprise_script_service/libseccomp/src/arch-s390x.c +143 -17
  32. data/ext/enterprise_script_service/libseccomp/src/arch-x32-syscalls.c +33 -1
  33. data/ext/enterprise_script_service/libseccomp/src/arch-x86-syscalls.c +94 -12
  34. data/ext/enterprise_script_service/libseccomp/src/arch-x86.c +142 -19
  35. data/ext/enterprise_script_service/libseccomp/src/arch-x86_64-syscalls.c +33 -1
  36. data/ext/enterprise_script_service/libseccomp/src/db.c +1 -0
  37. data/ext/enterprise_script_service/libseccomp/src/gen_bpf.c +10 -3
  38. data/ext/enterprise_script_service/libseccomp/src/python/Makefile.am +4 -4
  39. data/ext/enterprise_script_service/libseccomp/src/python/seccomp.pyx +2 -0
  40. data/ext/enterprise_script_service/libseccomp/tests/.gitignore +1 -0
  41. data/ext/enterprise_script_service/libseccomp/tests/50-sim-hash_collision.c +98 -0
  42. data/ext/enterprise_script_service/libseccomp/tests/50-sim-hash_collision.py +61 -0
  43. data/ext/enterprise_script_service/libseccomp/tests/50-sim-hash_collision.tests +18 -0
  44. data/ext/enterprise_script_service/libseccomp/tests/Makefile.am +6 -3
  45. data/ext/enterprise_script_service/libseccomp/tools/Makefile.am +0 -2
  46. data/ext/enterprise_script_service/libseccomp/tools/check-syntax +1 -0
  47. data/ext/enterprise_script_service/libseccomp/tools/scmp_bpf_sim.c +2 -0
  48. data/ext/enterprise_script_service/mruby-mpdecimal/src/ext.c +1 -1
  49. data/ext/enterprise_script_service/mruby/.gitignore +2 -2
  50. data/ext/enterprise_script_service/mruby/CONTRIBUTING.md +10 -3
  51. data/ext/enterprise_script_service/mruby/Doxyfile +2408 -0
  52. data/ext/enterprise_script_service/mruby/README.md +21 -8
  53. data/ext/enterprise_script_service/mruby/Rakefile +4 -13
  54. data/ext/enterprise_script_service/mruby/appveyor_config.rb +1 -1
  55. data/ext/enterprise_script_service/mruby/build_config.rb +3 -3
  56. data/ext/enterprise_script_service/mruby/doc/guides/compile.md +42 -42
  57. data/ext/enterprise_script_service/mruby/doc/guides/debugger.md +1 -1
  58. data/ext/enterprise_script_service/mruby/doc/guides/mrbconf.md +45 -6
  59. data/ext/enterprise_script_service/mruby/doc/guides/mrbgems.md +5 -0
  60. data/ext/enterprise_script_service/mruby/doc/limitations.md +88 -38
  61. data/ext/enterprise_script_service/mruby/doc/mruby_logo_red_icon.png +0 -0
  62. data/ext/enterprise_script_service/mruby/doc/opcode.md +94 -94
  63. data/ext/enterprise_script_service/mruby/include/mrbconf.h +74 -11
  64. data/ext/enterprise_script_service/mruby/include/mruby.h +242 -146
  65. data/ext/enterprise_script_service/mruby/include/mruby/array.h +7 -7
  66. data/ext/enterprise_script_service/mruby/include/mruby/boxing_nan.h +2 -9
  67. data/ext/enterprise_script_service/mruby/include/mruby/boxing_no.h +11 -10
  68. data/ext/enterprise_script_service/mruby/include/mruby/boxing_word.h +104 -69
  69. data/ext/enterprise_script_service/mruby/include/mruby/class.h +7 -5
  70. data/ext/enterprise_script_service/mruby/include/mruby/common.h +9 -7
  71. data/ext/enterprise_script_service/mruby/include/mruby/compile.h +6 -6
  72. data/ext/enterprise_script_service/mruby/include/mruby/data.h +5 -5
  73. data/ext/enterprise_script_service/mruby/include/mruby/debug.h +2 -2
  74. data/ext/enterprise_script_service/mruby/include/mruby/dump.h +3 -7
  75. data/ext/enterprise_script_service/mruby/include/mruby/error.h +34 -6
  76. data/ext/enterprise_script_service/mruby/include/mruby/gc.h +2 -2
  77. data/ext/enterprise_script_service/mruby/include/mruby/hash.h +4 -11
  78. data/ext/enterprise_script_service/mruby/include/mruby/irep.h +16 -4
  79. data/ext/enterprise_script_service/mruby/include/mruby/istruct.h +4 -4
  80. data/ext/enterprise_script_service/mruby/include/mruby/khash.h +2 -2
  81. data/ext/enterprise_script_service/mruby/include/mruby/numeric.h +41 -7
  82. data/ext/enterprise_script_service/mruby/include/mruby/object.h +8 -9
  83. data/ext/enterprise_script_service/mruby/include/mruby/opcode.h +2 -2
  84. data/ext/enterprise_script_service/mruby/include/mruby/ops.h +6 -6
  85. data/ext/enterprise_script_service/mruby/include/mruby/proc.h +19 -13
  86. data/ext/enterprise_script_service/mruby/include/mruby/range.h +10 -4
  87. data/ext/enterprise_script_service/mruby/include/mruby/re.h +2 -2
  88. data/ext/enterprise_script_service/mruby/include/mruby/string.h +130 -107
  89. data/ext/enterprise_script_service/mruby/include/mruby/throw.h +2 -2
  90. data/ext/enterprise_script_service/mruby/include/mruby/value.h +137 -49
  91. data/ext/enterprise_script_service/mruby/include/mruby/variable.h +3 -5
  92. data/ext/enterprise_script_service/mruby/include/mruby/version.h +24 -10
  93. data/ext/enterprise_script_service/mruby/lib/mruby-core-ext.rb +2 -39
  94. data/ext/enterprise_script_service/mruby/lib/mruby/build.rb +32 -15
  95. data/ext/enterprise_script_service/mruby/lib/mruby/build/command.rb +63 -17
  96. data/ext/enterprise_script_service/mruby/lib/mruby/build/load_gems.rb +24 -10
  97. data/ext/enterprise_script_service/mruby/lib/mruby/gem.rb +11 -7
  98. data/ext/enterprise_script_service/mruby/lib/mruby/lockfile.rb +81 -0
  99. data/ext/enterprise_script_service/mruby/minirake +27 -11
  100. data/ext/enterprise_script_service/mruby/mrbgems/default.gembox +3 -0
  101. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/mrbgem.rake +0 -1
  102. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/mrblib/array.rb +47 -9
  103. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/src/array.c +3 -3
  104. data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/test/array.rb +50 -29
  105. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apibreak.c +3 -3
  106. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.c +2 -2
  107. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/cmdprint.c +3 -3
  108. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.c +2 -2
  109. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.h +1 -1
  110. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdbconf.h +4 -0
  111. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +28 -1
  112. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mrbc/tools/mrbc/mrbc.c +1 -2
  113. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/bintest/mruby.rb +75 -8
  114. data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +134 -90
  115. data/ext/enterprise_script_service/mruby/mrbgems/mruby-class-ext/src/class.c +7 -8
  116. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/codegen.c +69 -46
  117. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/keywords +0 -3
  118. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/lex.def +51 -59
  119. data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/parse.y +430 -241
  120. data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/mrbgem.rake +10 -0
  121. data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/mrblib/complex.rb +122 -0
  122. data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/src/complex.c +249 -0
  123. data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/test/complex.rb +153 -0
  124. data/ext/enterprise_script_service/mruby/mrbgems/mruby-enum-chain/mrblib/chain.rb +19 -17
  125. data/ext/enterprise_script_service/mruby/mrbgems/mruby-enum-chain/test/enum_chain.rb +41 -9
  126. data/ext/enterprise_script_service/mruby/mrbgems/mruby-enum-ext/mrblib/enum.rb +30 -4
  127. data/ext/enterprise_script_service/mruby/mrbgems/mruby-enum-ext/test/enum.rb +8 -3
  128. data/ext/enterprise_script_service/mruby/mrbgems/mruby-enumerator/mrbgem.rake +0 -1
  129. data/ext/enterprise_script_service/mruby/mrbgems/mruby-enumerator/mrblib/enumerator.rb +46 -14
  130. data/ext/enterprise_script_service/mruby/mrbgems/mruby-enumerator/test/enumerator.rb +51 -2
  131. data/ext/enterprise_script_service/mruby/mrbgems/mruby-error/src/exception.c +10 -0
  132. data/ext/enterprise_script_service/mruby/mrbgems/mruby-eval/src/eval.c +47 -44
  133. data/ext/enterprise_script_service/mruby/mrbgems/mruby-eval/test/eval.rb +2 -2
  134. data/ext/enterprise_script_service/mruby/mrbgems/mruby-exit/src/mruby-exit.c +9 -4
  135. data/ext/enterprise_script_service/mruby/mrbgems/mruby-fiber/src/fiber.c +16 -12
  136. data/ext/enterprise_script_service/mruby/mrbgems/mruby-fiber/test/fiber.rb +1 -1
  137. data/ext/enterprise_script_service/mruby/mrbgems/mruby-hash-ext/mrbgem.rake +0 -2
  138. data/ext/enterprise_script_service/mruby/mrbgems/mruby-hash-ext/mrblib/hash.rb +3 -0
  139. data/ext/enterprise_script_service/mruby/mrbgems/mruby-hash-ext/test/hash.rb +3 -7
  140. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/README.md +1 -3
  141. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrbgem.rake +1 -1
  142. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/file.rb +0 -5
  143. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/io.rb +24 -38
  144. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/kernel.rb +16 -0
  145. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file.c +19 -18
  146. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file_test.c +5 -16
  147. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/io.c +54 -42
  148. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/file.rb +24 -20
  149. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/file_test.rb +4 -9
  150. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/io.rb +41 -35
  151. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/mruby_io_test.c +9 -36
  152. data/ext/enterprise_script_service/mruby/mrbgems/mruby-kernel-ext/mrbgem.rake +1 -1
  153. data/ext/enterprise_script_service/mruby/mrbgems/mruby-kernel-ext/src/kernel.c +9 -27
  154. data/ext/enterprise_script_service/mruby/mrbgems/mruby-kernel-ext/test/kernel.rb +2 -0
  155. data/ext/enterprise_script_service/mruby/mrbgems/mruby-math/src/math.c +5 -2
  156. data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/src/metaprog.c +39 -24
  157. data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/test/metaprog.rb +48 -17
  158. data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/mrblib/method.rb +0 -12
  159. data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/src/method.c +134 -101
  160. data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/test/method.rb +9 -1
  161. data/ext/enterprise_script_service/mruby/mrbgems/mruby-numeric-ext/mrblib/numeric_ext.rb +1 -5
  162. data/ext/enterprise_script_service/mruby/mrbgems/mruby-numeric-ext/src/numeric_ext.c +17 -37
  163. data/ext/enterprise_script_service/mruby/mrbgems/mruby-numeric-ext/test/numeric.rb +0 -8
  164. data/ext/enterprise_script_service/mruby/mrbgems/mruby-object-ext/mrbgem.rake +1 -1
  165. data/ext/enterprise_script_service/mruby/mrbgems/mruby-object-ext/mrblib/object.rb +15 -1
  166. data/ext/enterprise_script_service/mruby/mrbgems/mruby-object-ext/src/object.c +35 -6
  167. data/ext/enterprise_script_service/mruby/mrbgems/mruby-object-ext/test/nil.rb +4 -0
  168. data/ext/enterprise_script_service/mruby/mrbgems/mruby-objectspace/src/mruby_objectspace.c +1 -5
  169. data/ext/enterprise_script_service/mruby/mrbgems/mruby-objectspace/test/objectspace.rb +1 -1
  170. data/ext/enterprise_script_service/mruby/mrbgems/mruby-pack/src/pack.c +28 -23
  171. data/ext/enterprise_script_service/mruby/mrbgems/mruby-pack/test/pack.rb +43 -49
  172. data/ext/enterprise_script_service/mruby/mrbgems/mruby-print/mrblib/print.rb +3 -9
  173. data/ext/enterprise_script_service/mruby/mrbgems/mruby-proc-ext/src/proc.c +6 -9
  174. data/ext/enterprise_script_service/mruby/mrbgems/mruby-proc-ext/test/proc.rb +21 -5
  175. data/ext/enterprise_script_service/mruby/mrbgems/mruby-random/src/random.c +157 -124
  176. data/ext/enterprise_script_service/mruby/mrbgems/mruby-random/test/random.rb +72 -26
  177. data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/mrblib/range.rb +38 -0
  178. data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/src/range.c +26 -11
  179. data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/test/range.rb +111 -1
  180. data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/mrbgem.rake +5 -0
  181. data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/mrblib/rational.rb +117 -0
  182. data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/src/rational.c +209 -0
  183. data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/test/rational.rb +308 -0
  184. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/README.md +1 -1
  185. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/src/socket.c +10 -9
  186. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/src/kernel.c +2 -2
  187. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/src/sprintf.c +22 -24
  188. data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/mrbgem.rake +0 -1
  189. data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/mrblib/string.rb +8 -4
  190. data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/src/string.c +116 -117
  191. data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/test/numeric.rb +29 -0
  192. data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/test/range.rb +26 -0
  193. data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/test/string.rb +32 -50
  194. data/ext/enterprise_script_service/mruby/mrbgems/mruby-struct/mrblib/struct.rb +5 -7
  195. data/ext/enterprise_script_service/mruby/mrbgems/mruby-struct/src/struct.c +43 -57
  196. data/ext/enterprise_script_service/mruby/mrbgems/mruby-struct/test/struct.rb +16 -11
  197. data/ext/enterprise_script_service/mruby/mrbgems/mruby-symbol-ext/src/symbol.c +2 -2
  198. data/ext/enterprise_script_service/mruby/mrbgems/mruby-symbol-ext/test/symbol.rb +1 -1
  199. data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/driver.c +152 -1
  200. data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/mrbgem.rake +4 -3
  201. data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/vformat.c +200 -0
  202. data/ext/enterprise_script_service/mruby/mrbgems/mruby-time/include/mruby/time.h +2 -1
  203. data/ext/enterprise_script_service/mruby/mrbgems/mruby-time/src/time.c +199 -68
  204. data/ext/enterprise_script_service/mruby/mrbgems/mruby-time/test/time.rb +81 -46
  205. data/ext/enterprise_script_service/mruby/mrblib/array.rb +14 -16
  206. data/ext/enterprise_script_service/mruby/mrblib/enum.rb +13 -9
  207. data/ext/enterprise_script_service/mruby/mrblib/hash.rb +5 -7
  208. data/ext/enterprise_script_service/mruby/mrblib/kernel.rb +1 -1
  209. data/ext/enterprise_script_service/mruby/mrblib/numeric.rb +4 -4
  210. data/ext/enterprise_script_service/mruby/mrblib/range.rb +1 -1
  211. data/ext/enterprise_script_service/mruby/mrblib/string.rb +55 -112
  212. data/ext/enterprise_script_service/mruby/mruby-source.gemspec +1 -1
  213. data/ext/enterprise_script_service/mruby/oss-fuzz/config/mruby.dict +105 -0
  214. data/ext/enterprise_script_service/mruby/oss-fuzz/config/mruby_fuzzer.options +5 -0
  215. data/ext/enterprise_script_service/mruby/oss-fuzz/config/mruby_proto_fuzzer.options +4 -0
  216. data/ext/enterprise_script_service/mruby/oss-fuzz/mruby_fuzzer.c +18 -0
  217. data/ext/enterprise_script_service/mruby/oss-fuzz/mruby_proto_fuzzer.cpp +44 -0
  218. data/ext/enterprise_script_service/mruby/oss-fuzz/proto_to_ruby.cpp +455 -0
  219. data/ext/enterprise_script_service/mruby/oss-fuzz/proto_to_ruby.h +55 -0
  220. data/ext/enterprise_script_service/mruby/oss-fuzz/ruby.proto +201 -0
  221. data/ext/enterprise_script_service/mruby/src/array.c +95 -46
  222. data/ext/enterprise_script_service/mruby/src/backtrace.c +6 -8
  223. data/ext/enterprise_script_service/mruby/src/class.c +370 -278
  224. data/ext/enterprise_script_service/mruby/src/codedump.c +34 -34
  225. data/ext/enterprise_script_service/mruby/src/debug.c +2 -2
  226. data/ext/enterprise_script_service/mruby/src/dump.c +8 -6
  227. data/ext/enterprise_script_service/mruby/src/enum.c +1 -1
  228. data/ext/enterprise_script_service/mruby/src/error.c +157 -55
  229. data/ext/enterprise_script_service/mruby/src/etc.c +13 -46
  230. data/ext/enterprise_script_service/mruby/src/fmt_fp.c +2 -2
  231. data/ext/enterprise_script_service/mruby/src/gc.c +30 -11
  232. data/ext/enterprise_script_service/mruby/src/hash.c +23 -14
  233. data/ext/enterprise_script_service/mruby/src/kernel.c +16 -54
  234. data/ext/enterprise_script_service/mruby/src/load.c +40 -76
  235. data/ext/enterprise_script_service/mruby/src/numeric.c +164 -94
  236. data/ext/enterprise_script_service/mruby/src/object.c +16 -39
  237. data/ext/enterprise_script_service/mruby/src/pool.c +0 -2
  238. data/ext/enterprise_script_service/mruby/src/proc.c +47 -48
  239. data/ext/enterprise_script_service/mruby/src/range.c +22 -35
  240. data/ext/enterprise_script_service/mruby/src/state.c +5 -94
  241. data/ext/enterprise_script_service/mruby/src/string.c +874 -710
  242. data/ext/enterprise_script_service/mruby/src/symbol.c +73 -48
  243. data/ext/enterprise_script_service/mruby/src/variable.c +58 -38
  244. data/ext/enterprise_script_service/mruby/src/vm.c +133 -304
  245. data/ext/enterprise_script_service/mruby/tasks/doc.rake +48 -0
  246. data/ext/enterprise_script_service/mruby/tasks/toolchains/clang.rake +3 -4
  247. data/ext/enterprise_script_service/mruby/tasks/toolchains/gcc.rake +20 -19
  248. data/ext/enterprise_script_service/mruby/tasks/toolchains/visualcpp.rake +0 -12
  249. data/ext/enterprise_script_service/mruby/test/assert.rb +186 -25
  250. data/ext/enterprise_script_service/mruby/test/t/array.rb +34 -6
  251. data/ext/enterprise_script_service/mruby/test/t/class.rb +26 -0
  252. data/ext/enterprise_script_service/mruby/test/t/enumerable.rb +2 -2
  253. data/ext/enterprise_script_service/mruby/test/t/float.rb +17 -17
  254. data/ext/enterprise_script_service/mruby/test/t/hash.rb +2 -0
  255. data/ext/enterprise_script_service/mruby/test/t/integer.rb +14 -6
  256. data/ext/enterprise_script_service/mruby/test/t/kernel.rb +38 -19
  257. data/ext/enterprise_script_service/mruby/test/t/module.rb +87 -14
  258. data/ext/enterprise_script_service/mruby/test/t/numeric.rb +65 -23
  259. data/ext/enterprise_script_service/mruby/test/t/range.rb +4 -4
  260. data/ext/enterprise_script_service/mruby/test/t/string.rb +211 -49
  261. data/ext/enterprise_script_service/mruby/test/t/syntax.rb +19 -2
  262. data/ext/enterprise_script_service/mruby/test/t/vformat.rb +92 -0
  263. data/ext/enterprise_script_service/mruby/travis_config.rb +2 -2
  264. data/ext/enterprise_script_service/mruby_config.rb +10 -0
  265. data/ext/enterprise_script_service/mruby_engine.cpp +2 -2
  266. data/ext/enterprise_script_service/mruby_engine.gembox +1 -0
  267. data/ext/enterprise_script_service/msgpack/CHANGELOG.md +14 -0
  268. data/ext/enterprise_script_service/msgpack/Files.cmake +4 -0
  269. data/ext/enterprise_script_service/msgpack/README.md +1 -1
  270. data/ext/enterprise_script_service/msgpack/appveyor.yml +1 -1
  271. data/ext/enterprise_script_service/msgpack/erb/v1/cpp03_msgpack_tuple.hpp.erb +1 -1
  272. data/ext/enterprise_script_service/msgpack/erb/v1/cpp03_msgpack_tuple_decl.hpp.erb +1 -1
  273. data/ext/enterprise_script_service/msgpack/erb/v1/cpp03_zone.hpp.erb +3 -3
  274. data/ext/enterprise_script_service/msgpack/example/boost/asio_send_recv.cpp +1 -1
  275. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/cpp11/timespec.hpp +16 -0
  276. data/ext/enterprise_script_service/msgpack/include/msgpack/adaptor/wstring.hpp +15 -0
  277. data/ext/enterprise_script_service/msgpack/include/msgpack/object.h +2 -0
  278. data/ext/enterprise_script_service/msgpack/include/msgpack/pack_template.h +17 -9
  279. data/ext/enterprise_script_service/msgpack/include/msgpack/sysdep.h +27 -16
  280. data/ext/enterprise_script_service/msgpack/include/msgpack/type.hpp +2 -0
  281. data/ext/enterprise_script_service/msgpack/include/msgpack/unpack_template.h +5 -0
  282. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/array_ref.hpp +0 -1
  283. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/check_container_size.hpp +1 -1
  284. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp11/chrono.hpp +5 -5
  285. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp11/timespec.hpp +140 -0
  286. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/detail/cpp03_msgpack_tuple.hpp +32 -32
  287. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/detail/cpp03_msgpack_tuple_decl.hpp +32 -32
  288. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/detail/cpp11_msgpack_tuple.hpp +6 -6
  289. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/detail/cpp11_msgpack_tuple_decl.hpp +10 -10
  290. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/ext.hpp +1 -1
  291. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/fixint.hpp +5 -4
  292. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/int.hpp +40 -13
  293. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/int_decl.hpp +3 -2
  294. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/wstring.hpp +121 -0
  295. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/detail/cpp03_zone.hpp +3 -3
  296. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/detail/cpp11_zone.hpp +3 -3
  297. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/object.hpp +6 -6
  298. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/object_fwd.hpp +1 -1
  299. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/pack.hpp +40 -5
  300. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/unpack.hpp +11 -11
  301. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/vrefbuffer.hpp +7 -7
  302. data/ext/enterprise_script_service/msgpack/include/msgpack/v1/zbuffer.hpp +5 -5
  303. data/ext/enterprise_script_service/msgpack/include/msgpack/v2/adaptor/int_decl.hpp +1 -1
  304. data/ext/enterprise_script_service/msgpack/include/msgpack/v2/create_object_visitor.hpp +1 -1
  305. data/ext/enterprise_script_service/msgpack/include/msgpack/v2/parse.hpp +13 -13
  306. data/ext/enterprise_script_service/msgpack/include/msgpack/v2/x3_parse.hpp +28 -26
  307. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/adaptor/int_decl.hpp +1 -1
  308. data/ext/enterprise_script_service/msgpack/include/msgpack/v3/parse.hpp +13 -13
  309. data/ext/enterprise_script_service/msgpack/include/msgpack/version_master.h +2 -2
  310. data/ext/enterprise_script_service/msgpack/include/msgpack/zbuffer.h +6 -6
  311. data/ext/enterprise_script_service/msgpack/include/msgpack/zone.h +1 -1
  312. data/ext/enterprise_script_service/msgpack/src/objectc.c +83 -148
  313. data/ext/enterprise_script_service/msgpack/src/unpack.c +73 -47
  314. data/ext/enterprise_script_service/msgpack/test/CMakeLists.txt +1 -1
  315. data/ext/enterprise_script_service/msgpack/test/array_ref.cpp +5 -0
  316. data/ext/enterprise_script_service/msgpack/test/boost_fusion.cpp +5 -0
  317. data/ext/enterprise_script_service/msgpack/test/boost_optional.cpp +7 -0
  318. data/ext/enterprise_script_service/msgpack/test/boost_string_ref.cpp +7 -0
  319. data/ext/enterprise_script_service/msgpack/test/boost_string_view.cpp +6 -0
  320. data/ext/enterprise_script_service/msgpack/test/boost_variant.cpp +15 -9
  321. data/ext/enterprise_script_service/msgpack/test/buffer.cpp +7 -0
  322. data/ext/enterprise_script_service/msgpack/test/carray.cpp +7 -0
  323. data/ext/enterprise_script_service/msgpack/test/cases.cpp +7 -1
  324. data/ext/enterprise_script_service/msgpack/test/convert.cpp +6 -0
  325. data/ext/enterprise_script_service/msgpack/test/fixint.cpp +7 -1
  326. data/ext/enterprise_script_service/msgpack/test/fixint_c.cpp +6 -1
  327. data/ext/enterprise_script_service/msgpack/test/fuzz_unpack_pack_fuzzer_cpp11.cpp +5 -0
  328. data/ext/enterprise_script_service/msgpack/test/iterator_cpp11.cpp +8 -2
  329. data/ext/enterprise_script_service/msgpack/test/json.cpp +6 -0
  330. data/ext/enterprise_script_service/msgpack/test/limit.cpp +7 -0
  331. data/ext/enterprise_script_service/msgpack/test/msgpack_basic.cpp +128 -6
  332. data/ext/enterprise_script_service/msgpack/test/msgpack_c.cpp +7 -2
  333. data/ext/enterprise_script_service/msgpack/test/msgpack_container.cpp +20 -3
  334. data/ext/enterprise_script_service/msgpack/test/msgpack_cpp11.cpp +159 -0
  335. data/ext/enterprise_script_service/msgpack/test/msgpack_cpp17.cpp +5 -0
  336. data/ext/enterprise_script_service/msgpack/test/msgpack_stream.cpp +8 -3
  337. data/ext/enterprise_script_service/msgpack/test/msgpack_tuple.cpp +6 -0
  338. data/ext/enterprise_script_service/msgpack/test/msgpack_vref.cpp +5 -0
  339. data/ext/enterprise_script_service/msgpack/test/msgpack_x3_parse.cpp +23 -18
  340. data/ext/enterprise_script_service/msgpack/test/object.cpp +77 -45
  341. data/ext/enterprise_script_service/msgpack/test/object_with_zone.cpp +28 -10
  342. data/ext/enterprise_script_service/msgpack/test/pack_unpack.cpp +25 -18
  343. data/ext/enterprise_script_service/msgpack/test/pack_unpack_c.cpp +7 -0
  344. data/ext/enterprise_script_service/msgpack/test/raw.cpp +17 -12
  345. data/ext/enterprise_script_service/msgpack/test/reference.cpp +6 -0
  346. data/ext/enterprise_script_service/msgpack/test/reference_cpp11.cpp +6 -0
  347. data/ext/enterprise_script_service/msgpack/test/reference_wrapper_cpp11.cpp +6 -0
  348. data/ext/enterprise_script_service/msgpack/test/shared_ptr_cpp11.cpp +6 -0
  349. data/ext/enterprise_script_service/msgpack/test/size_equal_only.cpp +6 -2
  350. data/ext/enterprise_script_service/msgpack/test/streaming.cpp +10 -3
  351. data/ext/enterprise_script_service/msgpack/test/streaming_c.cpp +7 -0
  352. data/ext/enterprise_script_service/msgpack/test/unique_ptr_cpp11.cpp +6 -0
  353. data/ext/enterprise_script_service/msgpack/test/user_class.cpp +5 -0
  354. data/ext/enterprise_script_service/msgpack/test/version.cpp +6 -0
  355. data/ext/enterprise_script_service/msgpack/test/visitor.cpp +7 -0
  356. data/ext/enterprise_script_service/msgpack/test/zone.cpp +6 -0
  357. data/lib/script_core/version.rb +1 -1
  358. data/lib/tasks/mruby/engine.gembox.example +1 -0
  359. data/lib/tasks/script_core.rake +21 -3
  360. data/spec/dummy/app/helpers/fields_helper.rb +2 -2
  361. data/spec/dummy/mruby/engine.gembox +1 -0
  362. data/spec/script_core_spec.rb +1 -1
  363. metadata +38 -22
  364. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/.gitignore +0 -1
  365. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/.travis.yml +0 -2
  366. data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/run_test.rb +0 -26
  367. data/ext/enterprise_script_service/mruby/mrbgems/mruby-kernel-ext/mrblib/kernel.rb +0 -15
  368. data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/mrblib/unbound_method.rb +0 -9
  369. data/ext/enterprise_script_service/mruby/mrbgems/mruby-pack/.gitignore +0 -5
  370. data/ext/enterprise_script_service/mruby/mrbgems/mruby-pack/.travis.yml +0 -2
  371. data/ext/enterprise_script_service/mruby/mrbgems/mruby-pack/packtest.rb +0 -157
  372. data/ext/enterprise_script_service/mruby/mrbgems/mruby-pack/run_test.rb +0 -26
  373. data/ext/enterprise_script_service/mruby/mrbgems/mruby-random/src/mt19937ar.c +0 -224
  374. data/ext/enterprise_script_service/mruby/mrbgems/mruby-random/src/mt19937ar.h +0 -80
  375. data/ext/enterprise_script_service/mruby/mrbgems/mruby-random/src/random.h +0 -12
  376. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/.gitignore +0 -4
  377. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/.travis.yml +0 -29
  378. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/.travis_build_config.rb +0 -6
  379. data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/Rakefile +0 -29
  380. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/.travis.yml +0 -4
  381. data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/run_test.rb +0 -28
@@ -1,3 +1,5 @@
1
+ autoload :Pathname, 'pathname'
2
+
1
3
  class Object
2
4
  class << self
3
5
  def attr_block(*syms)
@@ -16,45 +18,6 @@ def relative_path_from(dir)
16
18
  def relative_path
17
19
  relative_path_from(Dir.pwd)
18
20
  end
19
-
20
- # Compatible with 1.9 on 1.8
21
- unless (sprintf("%{a}", :a => 1) rescue false)
22
- def %(params)
23
- if params.is_a?(Hash)
24
- str = self.clone
25
- params.each do |k, v|
26
- str.gsub!("%{#{k}}") { v }
27
- end
28
- str
29
- else
30
- if params.is_a?(Array)
31
- sprintf(self, *params)
32
- else
33
- sprintf(self, params)
34
- end
35
- end
36
- end
37
- end
38
- end
39
-
40
- class Symbol
41
- # Compatible with 1.9 on 1.8
42
- unless method_defined?(:to_proc)
43
- def to_proc
44
- proc { |obj, *args| obj.send(self, *args) }
45
- end
46
- end
47
- end
48
-
49
- module Enumerable
50
- # Compatible with 1.9 on 1.8
51
- unless method_defined?(:each_with_object)
52
- def each_with_object(memo)
53
- return to_enum :each_with_object, memo unless block_given?
54
- each { |obj| yield obj, memo }
55
- memo
56
- end
57
- end
58
21
  end
59
22
 
60
23
  $pp_show = true
@@ -1,7 +1,11 @@
1
+ require "mruby-core-ext"
1
2
  require "mruby/build/load_gems"
2
3
  require "mruby/build/command"
3
4
 
4
5
  module MRuby
6
+ autoload :Gem, "mruby/gem"
7
+ autoload :Lockfile, "mruby/lockfile"
8
+
5
9
  class << self
6
10
  def targets
7
11
  @targets ||= {}
@@ -22,7 +26,6 @@ class << self
22
26
 
23
27
  def initialize(name, &block)
24
28
  @name, @initializer = name.to_s, block
25
- MRuby::Toolchain.toolchains ||= {}
26
29
  MRuby::Toolchain.toolchains[@name] = self
27
30
  end
28
31
 
@@ -30,13 +33,8 @@ def setup(conf,params={})
30
33
  conf.instance_exec(conf, params, &@initializer)
31
34
  end
32
35
 
33
- def self.load
34
- Dir.glob("#{MRUBY_ROOT}/tasks/toolchains/*.rake").each do |file|
35
- Kernel.load file
36
- end
37
- end
36
+ self.toolchains = {}
38
37
  end
39
- Toolchain.load
40
38
 
41
39
  class Build
42
40
  class << self
@@ -45,7 +43,7 @@ class << self
45
43
  include Rake::DSL
46
44
  include LoadGems
47
45
  attr_accessor :name, :bins, :exts, :file_separator, :build_dir, :gem_clone_dir
48
- attr_reader :libmruby_objs, :gems, :toolchains
46
+ attr_reader :libmruby_objs, :gems, :toolchains, :gem_dir_to_repo_url
49
47
  attr_writer :enable_bintest, :enable_test
50
48
 
51
49
  alias libmruby libmruby_objs
@@ -70,7 +68,7 @@ def initialize(name='host', build_dir=nil, &block)
70
68
 
71
69
  @file_separator = '/'
72
70
  @build_dir = "#{build_dir}/#{@name}"
73
- @gem_clone_dir = "#{build_dir}/mrbgems"
71
+ @gem_clone_dir = "#{build_dir}/repos/#{@name}"
74
72
  @cc = Command::Compiler.new(self, %w(.c))
75
73
  @cxx = Command::Compiler.new(self, %w(.cc .cxx .cpp))
76
74
  @objc = Command::Compiler.new(self, %w(.m))
@@ -90,7 +88,9 @@ def initialize(name='host', build_dir=nil, &block)
90
88
  @cxx_abi_enabled = false
91
89
  @enable_bintest = false
92
90
  @enable_test = false
91
+ @enable_lock = true
93
92
  @toolchains = []
93
+ @gem_dir_to_repo_url = {}
94
94
 
95
95
  MRuby.targets[@name] = self
96
96
  end
@@ -118,6 +118,14 @@ def enable_debug
118
118
  @enable_debug = true
119
119
  end
120
120
 
121
+ def disable_lock
122
+ @enable_lock = false
123
+ end
124
+
125
+ def lock_enabled?
126
+ Lockfile.enabled? && @enable_lock
127
+ end
128
+
121
129
  def disable_cxx_exception
122
130
  if @cxx_exception_enabled or @cxx_abi_enabled
123
131
  raise "cxx_exception already enabled"
@@ -155,8 +163,8 @@ def enable_cxx_abi
155
163
  compilers.each { |c|
156
164
  c.defines += %w(MRB_ENABLE_CXX_EXCEPTION MRB_ENABLE_CXX_ABI)
157
165
  c.flags << c.cxx_compile_flag
166
+ c.flags = c.flags.flatten - c.cxx_invalid_flags.flatten
158
167
  }
159
- compilers.each { |c| c.flags << c.cxx_compile_flag }
160
168
  linker.command = cxx.command if toolchains.find { |v| v == 'gcc' }
161
169
  @cxx_abi_enabled = true
162
170
  end
@@ -196,10 +204,15 @@ def bintest_enabled?
196
204
  end
197
205
 
198
206
  def toolchain(name, params={})
199
- tc = Toolchain.toolchains[name.to_s]
200
- fail "Unknown #{name} toolchain" unless tc
207
+ name = name.to_s
208
+ tc = Toolchain.toolchains[name] || begin
209
+ path = "#{MRUBY_ROOT}/tasks/toolchains/#{name}.rake"
210
+ fail "Unknown #{name} toolchain" unless File.exist?(path)
211
+ load path
212
+ Toolchain.toolchains[name]
213
+ end
201
214
  tc.setup(self, params)
202
- @toolchains.unshift name.to_s
215
+ @toolchains.unshift name
203
216
  end
204
217
 
205
218
  def primary_toolchain
@@ -226,6 +239,10 @@ def build_mrbc_exec
226
239
  gem :core => 'mruby-bin-mrbc'
227
240
  end
228
241
 
242
+ def locks
243
+ Lockfile.build(@name)
244
+ end
245
+
229
246
  def mrbcfile
230
247
  return @mrbcfile if @mrbcfile
231
248
 
@@ -255,7 +272,7 @@ def filename(name)
255
272
  if name.is_a?(Array)
256
273
  name.flatten.map { |n| filename(n) }
257
274
  else
258
- '"%s"' % name.gsub('/', file_separator)
275
+ name.gsub('/', file_separator)
259
276
  end
260
277
  end
261
278
 
@@ -263,7 +280,7 @@ def cygwin_filename(name)
263
280
  if name.is_a?(Array)
264
281
  name.flatten.map { |n| cygwin_filename(n) }
265
282
  else
266
- '"%s"' % `cygpath -w "#{filename(name)}"`.strip
283
+ `cygpath -w "#{filename(name)}"`.strip
267
284
  end
268
285
  end
269
286
 
@@ -24,6 +24,14 @@ def clone
24
24
  target
25
25
  end
26
26
 
27
+ def shellquote(s)
28
+ if ENV['OS'] == 'Windows_NT'
29
+ "\"#{s}\""
30
+ else
31
+ "#{s}"
32
+ end
33
+ end
34
+
27
35
  NotFoundCommands = {}
28
36
 
29
37
  private
@@ -41,7 +49,7 @@ def _run(options, params={})
41
49
  class Command::Compiler < Command
42
50
  attr_accessor :flags, :include_paths, :defines, :source_exts
43
51
  attr_accessor :compile_options, :option_define, :option_include_path, :out_ext
44
- attr_accessor :cxx_compile_flag, :cxx_exception_flag
52
+ attr_accessor :cxx_compile_flag, :cxx_exception_flag, :cxx_invalid_flags
45
53
 
46
54
  def initialize(build, source_exts=[])
47
55
  super(build)
@@ -53,6 +61,7 @@ def initialize(build, source_exts=[])
53
61
  @option_include_path = '-I%s'
54
62
  @option_define = '-D%s'
55
63
  @compile_options = '%{flags} -o %{outfile} -c %{infile}'
64
+ @cxx_invalid_flags = []
56
65
  end
57
66
 
58
67
  alias header_search_paths include_paths
@@ -127,13 +136,40 @@ def define_rules(build_dir, source_dir='')
127
136
  end
128
137
 
129
138
  private
139
+
140
+ #
141
+ # === Example of +.d+ file
142
+ #
143
+ # ==== Without <tt>-MP</tt> compiler flag
144
+ #
145
+ # /build/host/src/array.o: \
146
+ # /src/array.c \
147
+ # /include/mruby/common.h \
148
+ # /include/mruby/value.h \
149
+ # /src/value_array.h
150
+ #
151
+ # ==== With <tt>-MP</tt> compiler flag
152
+ #
153
+ # /build/host/src/array.o: \
154
+ # /src/array.c \
155
+ # /include/mruby/common.h \
156
+ # /include/mruby/value.h \
157
+ # /src/value_array.h
158
+ #
159
+ # /include/mruby/common.h:
160
+ #
161
+ # /include/mruby/value.h:
162
+ #
163
+ # /src/value_array.h:
164
+ #
130
165
  def get_dependencies(file)
131
166
  file = file.ext('d') unless File.extname(file) == '.d'
167
+ deps = []
132
168
  if File.exist?(file)
133
- File.read(file).gsub("\\\n ", "").scan(/^\S+:\s+(.+)$/).flatten.map {|s| s.split(' ') }.flatten
134
- else
135
- []
136
- end + [ MRUBY_CONFIG ]
169
+ File.foreach(file){|line| deps << $1 if /^ +(.*?)(?: *\\)?$/ =~ line}
170
+ deps.uniq!
171
+ end
172
+ deps << MRUBY_CONFIG
137
173
  end
138
174
  end
139
175
 
@@ -243,15 +279,16 @@ def run(outfile, infile)
243
279
 
244
280
  class Command::Git < Command
245
281
  attr_accessor :flags
246
- attr_accessor :clone_options, :pull_options, :checkout_options
282
+ attr_accessor :clone_options, :pull_options, :checkout_options, :reset_options
247
283
 
248
284
  def initialize(build)
249
285
  super
250
286
  @command = 'git'
251
287
  @flags = %w[]
252
288
  @clone_options = "clone %{flags} %{url} %{dir}"
253
- @pull_options = "pull"
254
- @checkout_options = "checkout %{checksum_hash}"
289
+ @pull_options = "--git-dir #{shellquote("%{repo_dir}/.git")} --work-tree #{shellquote("%{repo_dir}")} pull"
290
+ @checkout_options = "--git-dir #{shellquote("%{repo_dir}/.git")} --work-tree #{shellquote("%{repo_dir}")} checkout %{checksum_hash}"
291
+ @reset_options = "--git-dir #{shellquote("%{repo_dir}/.git")} --work-tree #{shellquote("%{repo_dir}")} reset %{checksum_hash}"
255
292
  end
256
293
 
257
294
  def run_clone(dir, url, _flags = [])
@@ -260,19 +297,26 @@ def run_clone(dir, url, _flags = [])
260
297
  end
261
298
 
262
299
  def run_pull(dir, url)
263
- root = Dir.pwd
264
- Dir.chdir dir
265
300
  _pp "GIT PULL", url, dir.relative_path
266
- _run pull_options
267
- Dir.chdir root
301
+ _run pull_options, { :repo_dir => dir }
268
302
  end
269
303
 
270
304
  def run_checkout(dir, checksum_hash)
271
- root = Dir.pwd
272
- Dir.chdir dir
273
305
  _pp "GIT CHECKOUT", checksum_hash
274
- _run checkout_options, { :checksum_hash => checksum_hash }
275
- Dir.chdir root
306
+ _run checkout_options, { :checksum_hash => checksum_hash, :repo_dir => dir }
307
+ end
308
+
309
+ def run_reset_hard(dir, checksum_hash)
310
+ _pp "GIT RESET", checksum_hash
311
+ _run reset_options, { :checksum_hash => checksum_hash, :repo_dir => dir }
312
+ end
313
+
314
+ def commit_hash(dir)
315
+ `#{@command} --git-dir #{shellquote(dir +'/.git')} --work-tree #{shellquote(dir)} rev-parse --verify HEAD`.strip
316
+ end
317
+
318
+ def current_branch(dir)
319
+ `#{@command} --git-dir #{shellquote(dir + '/.git')} --work-tree #{shellquote(dir)} rev-parse --abbrev-ref HEAD`.strip
276
320
  end
277
321
  end
278
322
 
@@ -291,7 +335,9 @@ def run(out, infiles, funcname)
291
335
  infiles.each do |f|
292
336
  _pp "MRBC", f.relative_path, nil, :indent => 2
293
337
  end
294
- IO.popen("#{filename @command} #{@compile_options % {:funcname => funcname}} #{filename(infiles).join(' ')}", 'r+') do |io|
338
+ cmd = "#{filename @command} #{@compile_options % {:funcname => funcname}} #{filename(infiles).join(' ')}"
339
+ print("#{cmd}\n") if $verbose
340
+ IO.popen(cmd, 'r+') do |io|
295
341
  out.puts io.read
296
342
  end
297
343
  # if mrbc execution fail, drop the file
@@ -13,13 +13,12 @@ def gembox(gemboxfile)
13
13
  end
14
14
 
15
15
  def gem(gemdir, &block)
16
- caller_dir = File.expand_path(File.dirname(/^(.*?):\d/.match(caller.first).to_a[1]))
17
-
18
16
  if gemdir.is_a?(Hash)
19
17
  gemdir = load_special_path_gem(gemdir)
20
18
  elsif GemBox.path && gemdir.is_a?(String)
21
19
  gemdir = File.expand_path(gemdir, File.dirname(GemBox.path))
22
20
  else
21
+ caller_dir = File.expand_path(File.dirname(caller(1,1)[0][/^(.*?):\d/,1]))
23
22
  gemdir = File.expand_path(gemdir, caller_dir)
24
23
  end
25
24
 
@@ -83,11 +82,18 @@ def load_special_path_gem(params)
83
82
  # by default the 'master' branch is used
84
83
  branch = params[:branch] ? params[:branch] : 'master'
85
84
 
85
+ lock = locks[url] if lock_enabled?
86
+
86
87
  if File.exist?(gemdir)
87
88
  if $pull_gems
88
89
  git.run_pull gemdir, url
89
- else
90
- gemdir
90
+ # Jump to the top of the branch
91
+ git.run_checkout(gemdir, branch)
92
+ git.run_reset_hard gemdir, "origin/#{branch}"
93
+ elsif params[:checksum_hash]
94
+ git.run_reset_hard(gemdir, params[:checksum_hash])
95
+ elsif lock
96
+ git.run_reset_hard(gemdir, lock['commit'])
91
97
  end
92
98
  else
93
99
  options = [params[:options]] || []
@@ -96,14 +102,22 @@ def load_special_path_gem(params)
96
102
  options << "--depth 1" unless params[:checksum_hash]
97
103
  FileUtils.mkdir_p "#{gem_clone_dir}"
98
104
  git.run_clone gemdir, url, options
99
- end
100
105
 
101
- if params[:checksum_hash]
102
106
  # Jump to the specified commit
103
- git.run_checkout gemdir, params[:checksum_hash]
104
- else
105
- # Jump to the top of the branch
106
- git.run_checkout gemdir, branch if $pull_gems
107
+ if params[:checksum_hash]
108
+ git.run_reset_hard gemdir, params[:checksum_hash]
109
+ elsif lock
110
+ git.run_reset_hard gemdir, lock['commit']
111
+ end
112
+ end
113
+
114
+ if lock_enabled?
115
+ @gem_dir_to_repo_url[gemdir] = url unless params[:path]
116
+ locks[url] = {
117
+ 'url' => url,
118
+ 'branch' => git.current_branch(gemdir),
119
+ 'commit' => git.commit_hash(gemdir),
120
+ }
107
121
  end
108
122
 
109
123
  gemdir << "/#{params[:path]}" if params[:path]
@@ -1,7 +1,6 @@
1
- require 'pathname'
2
1
  require 'forwardable'
3
- require 'tsort'
4
- require 'shellwords'
2
+ autoload :TSort, 'tsort'
3
+ autoload :Shellwords, 'shellwords'
5
4
 
6
5
  module MRuby
7
6
  module Gem
@@ -92,6 +91,9 @@ def setup
92
91
  build.libmruby_objs << @objs
93
92
 
94
93
  instance_eval(&@build_config_initializer) if @build_config_initializer
94
+
95
+ repo_url = build.gem_dir_to_repo_url[dir]
96
+ build.locks[repo_url]['version'] = version if repo_url
95
97
  end
96
98
 
97
99
  def setup_compilers
@@ -267,16 +269,18 @@ def <=>(other)
267
269
  # ~> compare algorithm
268
270
  #
269
271
  # Example:
272
+ # ~> 2 means >= 2.0.0 and < 3.0.0
270
273
  # ~> 2.2 means >= 2.2.0 and < 3.0.0
271
- # ~> 2.2.0 means >= 2.2.0 and < 2.3.0
274
+ # ~> 2.2.2 means >= 2.2.2 and < 2.3.0
272
275
  def twiddle_wakka_ok?(other)
273
276
  gr_or_eql = (self <=> other) >= 0
274
- still_minor = (self <=> other.skip_minor) < 0
275
- gr_or_eql and still_minor
277
+ still_major_or_minor = (self <=> other.skip_major_or_minor) < 0
278
+ gr_or_eql and still_major_or_minor
276
279
  end
277
280
 
278
- def skip_minor
281
+ def skip_major_or_minor
279
282
  a = @ary.dup
283
+ a << 0 if a.size == 1 # ~> 2 can also be represented as ~> 2.0
280
284
  a.slice!(-1)
281
285
  a[-1] = a[-1].succ
282
286
  a
@@ -0,0 +1,81 @@
1
+ autoload :YAML, 'yaml'
2
+
3
+ module MRuby
4
+ autoload :Source, 'mruby/source'
5
+
6
+ class Lockfile
7
+ class << self
8
+ def enable
9
+ @enabled = true
10
+ end
11
+
12
+ def disable
13
+ @enabled = false
14
+ end
15
+
16
+ def enabled?
17
+ @enabled
18
+ end
19
+
20
+ def build(target_name)
21
+ instance.build(target_name)
22
+ end
23
+
24
+ def write
25
+ instance.write if enabled?
26
+ end
27
+
28
+ def instance
29
+ @instance ||= new("#{MRUBY_CONFIG}.lock")
30
+ end
31
+ end
32
+
33
+ def initialize(filename)
34
+ @filename = filename
35
+ end
36
+
37
+ def build(target_name)
38
+ read[target_name] ||= {}
39
+ end
40
+
41
+ def write
42
+ locks = {"mruby_version" => mruby}
43
+ locks["builds"] = @builds if @builds
44
+ File.write(@filename, YAML.dump(locks))
45
+ end
46
+
47
+ private
48
+
49
+ def read
50
+ @builds ||= if File.exist?(@filename)
51
+ YAML.load_file(@filename)["builds"] || {}
52
+ else
53
+ {}
54
+ end
55
+ end
56
+
57
+ def shellquote(s)
58
+ if ENV['OS'] == 'Windows_NT'
59
+ "\"#{s}\""
60
+ else
61
+ "'#{s}'"
62
+ end
63
+ end
64
+
65
+ def mruby
66
+ mruby = {
67
+ 'version' => MRuby::Source::MRUBY_VERSION,
68
+ 'release_no' => MRuby::Source::MRUBY_RELEASE_NO,
69
+ }
70
+
71
+ git_dir = "#{MRUBY_ROOT}/.git"
72
+ if File.directory?(git_dir)
73
+ mruby['git_commit'] = `git --git-dir #{shellquote(git_dir)} --work-tree #{shellquote(MRUBY_ROOT)} rev-parse --verify HEAD`.strip
74
+ end
75
+
76
+ mruby
77
+ end
78
+
79
+ enable
80
+ end
81
+ end