script_core 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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