nutcracker 0.2.3 → 0.2.4.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (296) hide show
  1. data/README.md +53 -5
  2. data/Rakefile +14 -19
  3. data/bin/nutcracker +6 -1
  4. data/ext/nutcracker/ChangeLog +9 -0
  5. data/ext/nutcracker/LICENSE +0 -0
  6. data/ext/nutcracker/Makefile +643 -0
  7. data/ext/nutcracker/Makefile.am +0 -0
  8. data/ext/nutcracker/Makefile.in +66 -149
  9. data/ext/nutcracker/NOTICE +0 -0
  10. data/ext/nutcracker/README.md +13 -11
  11. data/ext/nutcracker/aclocal.m4 +112 -201
  12. data/ext/nutcracker/autom4te.cache/output.0 +18664 -0
  13. data/ext/nutcracker/autom4te.cache/output.1 +18664 -0
  14. data/ext/nutcracker/autom4te.cache/output.2 +18664 -0
  15. data/ext/nutcracker/autom4te.cache/requests +494 -0
  16. data/ext/nutcracker/autom4te.cache/traces.0 +2415 -0
  17. data/ext/nutcracker/autom4te.cache/traces.1 +945 -0
  18. data/ext/nutcracker/autom4te.cache/traces.2 +2415 -0
  19. data/ext/nutcracker/conf/nutcracker.leaf.yml +0 -0
  20. data/ext/nutcracker/conf/nutcracker.root.yml +0 -0
  21. data/ext/nutcracker/conf/nutcracker.yml +0 -0
  22. data/ext/nutcracker/config.h +332 -0
  23. data/ext/nutcracker/config.h.in +15 -0
  24. data/ext/nutcracker/config.log +2684 -0
  25. data/ext/nutcracker/config.status +2317 -0
  26. data/ext/nutcracker/config/config.guess +23 -84
  27. data/ext/nutcracker/config/config.sub +23 -93
  28. data/ext/nutcracker/config/depcomp +35 -81
  29. data/ext/nutcracker/config/install-sh +109 -122
  30. data/ext/nutcracker/config/ltmain.sh +1053 -721
  31. data/ext/nutcracker/config/missing +20 -29
  32. data/ext/nutcracker/configure +2122 -2320
  33. data/ext/nutcracker/configure.ac +35 -3
  34. data/ext/nutcracker/contrib/Makefile +494 -0
  35. data/ext/nutcracker/contrib/Makefile.am +0 -0
  36. data/ext/nutcracker/contrib/Makefile.in +41 -107
  37. data/ext/nutcracker/contrib/yaml-0.1.4.tar.gz +0 -0
  38. data/ext/nutcracker/contrib/yaml-0.1.4/Makefile +736 -0
  39. data/ext/nutcracker/contrib/yaml-0.1.4/autom4te.cache/output.0 +13102 -0
  40. data/ext/nutcracker/contrib/yaml-0.1.4/autom4te.cache/output.1 +13085 -0
  41. data/ext/nutcracker/contrib/yaml-0.1.4/autom4te.cache/output.2 +13085 -0
  42. data/ext/nutcracker/contrib/yaml-0.1.4/autom4te.cache/requests +476 -0
  43. data/ext/nutcracker/contrib/yaml-0.1.4/autom4te.cache/traces.0 +2339 -0
  44. data/ext/nutcracker/contrib/yaml-0.1.4/autom4te.cache/traces.1 +545 -0
  45. data/ext/nutcracker/contrib/yaml-0.1.4/autom4te.cache/traces.2 +2339 -0
  46. data/ext/nutcracker/contrib/yaml-0.1.4/config.h +81 -0
  47. data/ext/nutcracker/contrib/yaml-0.1.4/config.h.in~ +80 -0
  48. data/ext/nutcracker/contrib/yaml-0.1.4/config.log +688 -0
  49. data/ext/nutcracker/contrib/yaml-0.1.4/config.status +2032 -0
  50. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/annotated.html +51 -0
  51. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/bc_s.png +0 -0
  52. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/classes.html +41 -0
  53. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/closed.png +0 -0
  54. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/doxygen.css +656 -0
  55. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/doxygen.png +0 -0
  56. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/files.html +40 -0
  57. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions.html +91 -0
  58. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_0x62.html +84 -0
  59. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_0x63.html +87 -0
  60. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_0x64.html +83 -0
  61. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_0x65.html +110 -0
  62. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_0x66.html +79 -0
  63. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_0x68.html +80 -0
  64. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_0x69.html +92 -0
  65. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_0x6b.html +71 -0
  66. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_0x6c.html +88 -0
  67. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_0x6d.html +96 -0
  68. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_0x6e.html +71 -0
  69. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_0x6f.html +80 -0
  70. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_0x70.html +100 -0
  71. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_0x71.html +71 -0
  72. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_0x72.html +87 -0
  73. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_0x73.html +163 -0
  74. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_0x74.html +115 -0
  75. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_0x75.html +71 -0
  76. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_0x76.html +80 -0
  77. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_0x77.html +77 -0
  78. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars.html +91 -0
  79. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars_0x62.html +84 -0
  80. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars_0x63.html +87 -0
  81. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars_0x64.html +83 -0
  82. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars_0x65.html +110 -0
  83. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars_0x66.html +79 -0
  84. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars_0x68.html +80 -0
  85. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars_0x69.html +92 -0
  86. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars_0x6b.html +71 -0
  87. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars_0x6c.html +88 -0
  88. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars_0x6d.html +96 -0
  89. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars_0x6e.html +71 -0
  90. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars_0x6f.html +80 -0
  91. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars_0x70.html +100 -0
  92. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars_0x71.html +71 -0
  93. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars_0x72.html +87 -0
  94. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars_0x73.html +163 -0
  95. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars_0x74.html +115 -0
  96. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars_0x75.html +71 -0
  97. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars_0x76.html +80 -0
  98. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/functions_vars_0x77.html +77 -0
  99. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/globals.html +667 -0
  100. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/globals_defs.html +81 -0
  101. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/globals_enum.html +78 -0
  102. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/globals_eval.html +373 -0
  103. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/globals_func.html +196 -0
  104. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/globals_type.html +126 -0
  105. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/group__basic.html +320 -0
  106. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/group__emitter.html +819 -0
  107. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/group__events.html +664 -0
  108. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/group__export.html +60 -0
  109. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/group__nodes.html +795 -0
  110. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/group__parser.html +606 -0
  111. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/group__styles.html +222 -0
  112. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/group__tokens.html +246 -0
  113. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/group__version.html +106 -0
  114. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/index.html +31 -0
  115. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/modules.html +42 -0
  116. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/nav_f.png +0 -0
  117. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/nav_h.png +0 -0
  118. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/open.png +0 -0
  119. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/structyaml__alias__data__s.html +108 -0
  120. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/structyaml__document__s.html +235 -0
  121. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/structyaml__emitter__s.html +1300 -0
  122. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/structyaml__event__s.html +496 -0
  123. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/structyaml__mark__s.html +108 -0
  124. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/structyaml__node__pair__s.html +91 -0
  125. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/structyaml__node__s.html +420 -0
  126. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/structyaml__parser__s.html +1229 -0
  127. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/structyaml__simple__key__s.html +97 -0
  128. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/structyaml__tag__directive__s.html +91 -0
  129. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/structyaml__token__s.html +413 -0
  130. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/structyaml__version__directive__s.html +91 -0
  131. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/tab_a.png +0 -0
  132. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/tab_b.png +0 -0
  133. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/tab_h.png +0 -0
  134. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/tab_s.png +0 -0
  135. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/tabs.css +59 -0
  136. data/ext/nutcracker/contrib/yaml-0.1.4/doc/html/yaml_8h.html +525 -0
  137. data/ext/nutcracker/contrib/yaml-0.1.4/include/Makefile.am +17 -0
  138. data/ext/nutcracker/contrib/yaml-0.1.4/include/Makefile.in +470 -0
  139. data/ext/nutcracker/contrib/yaml-0.1.4/libtool +8890 -0
  140. data/ext/nutcracker/contrib/yaml-0.1.4/src/Makefile +484 -0
  141. data/ext/nutcracker/contrib/yaml-0.1.4/src/api.lo +12 -0
  142. data/ext/nutcracker/contrib/yaml-0.1.4/src/api.o +0 -0
  143. data/ext/nutcracker/contrib/yaml-0.1.4/src/dumper.lo +12 -0
  144. data/ext/nutcracker/contrib/yaml-0.1.4/src/dumper.o +0 -0
  145. data/ext/nutcracker/contrib/yaml-0.1.4/src/emitter.lo +12 -0
  146. data/ext/nutcracker/contrib/yaml-0.1.4/src/emitter.o +0 -0
  147. data/ext/nutcracker/contrib/yaml-0.1.4/src/libyaml.la +41 -0
  148. data/ext/nutcracker/contrib/yaml-0.1.4/src/loader.lo +12 -0
  149. data/ext/nutcracker/contrib/yaml-0.1.4/src/loader.o +0 -0
  150. data/ext/nutcracker/contrib/yaml-0.1.4/src/parser.lo +12 -0
  151. data/ext/nutcracker/contrib/yaml-0.1.4/src/parser.o +0 -0
  152. data/ext/nutcracker/contrib/yaml-0.1.4/src/reader.lo +12 -0
  153. data/ext/nutcracker/contrib/yaml-0.1.4/src/reader.o +0 -0
  154. data/ext/nutcracker/contrib/yaml-0.1.4/src/scanner.lo +12 -0
  155. data/ext/nutcracker/contrib/yaml-0.1.4/src/scanner.o +0 -0
  156. data/ext/nutcracker/contrib/yaml-0.1.4/src/writer.lo +12 -0
  157. data/ext/nutcracker/contrib/yaml-0.1.4/src/writer.o +0 -0
  158. data/ext/nutcracker/contrib/yaml-0.1.4/stamp-h1 +1 -0
  159. data/ext/nutcracker/contrib/yaml-0.1.4/tests/Makefile +675 -0
  160. data/ext/nutcracker/contrib/yaml-0.1.4/tests/example-deconstructor +0 -0
  161. data/ext/nutcracker/contrib/yaml-0.1.4/tests/example-deconstructor-alt +0 -0
  162. data/ext/nutcracker/contrib/yaml-0.1.4/tests/example-deconstructor-alt.o +0 -0
  163. data/ext/nutcracker/contrib/yaml-0.1.4/tests/example-deconstructor.o +0 -0
  164. data/ext/nutcracker/contrib/yaml-0.1.4/tests/example-reformatter +0 -0
  165. data/ext/nutcracker/contrib/yaml-0.1.4/tests/example-reformatter-alt +0 -0
  166. data/ext/nutcracker/contrib/yaml-0.1.4/tests/example-reformatter-alt.o +0 -0
  167. data/ext/nutcracker/contrib/yaml-0.1.4/tests/example-reformatter.o +0 -0
  168. data/ext/nutcracker/contrib/yaml-0.1.4/tests/run-dumper +0 -0
  169. data/ext/nutcracker/contrib/yaml-0.1.4/tests/run-dumper.o +0 -0
  170. data/ext/nutcracker/contrib/yaml-0.1.4/tests/run-emitter +0 -0
  171. data/ext/nutcracker/contrib/yaml-0.1.4/tests/run-emitter.o +0 -0
  172. data/ext/nutcracker/contrib/yaml-0.1.4/tests/run-loader +0 -0
  173. data/ext/nutcracker/contrib/yaml-0.1.4/tests/run-loader.o +0 -0
  174. data/ext/nutcracker/contrib/yaml-0.1.4/tests/run-parser +0 -0
  175. data/ext/nutcracker/contrib/yaml-0.1.4/tests/run-parser.o +0 -0
  176. data/ext/nutcracker/contrib/yaml-0.1.4/tests/run-scanner +0 -0
  177. data/ext/nutcracker/contrib/yaml-0.1.4/tests/run-scanner.o +0 -0
  178. data/ext/nutcracker/contrib/yaml-0.1.4/yaml-0.1.pc +10 -0
  179. data/ext/nutcracker/contrib/yaml-0.1.4/yaml-0.1.pc.in +10 -0
  180. data/ext/nutcracker/extconf.rb +0 -5
  181. data/ext/nutcracker/libtool +9403 -0
  182. data/ext/nutcracker/m4/libtool.m4 +553 -492
  183. data/ext/nutcracker/m4/ltoptions.m4 +7 -6
  184. data/ext/nutcracker/m4/ltversion.m4 +5 -5
  185. data/ext/nutcracker/m4/lt~obsolete.m4 +9 -3
  186. data/ext/nutcracker/notes/c-styleguide.txt +0 -0
  187. data/ext/nutcracker/notes/debug.txt +0 -0
  188. data/ext/nutcracker/notes/memcache.txt +0 -0
  189. data/ext/nutcracker/notes/recommendation.md +21 -2
  190. data/ext/nutcracker/notes/redis.md +9 -9
  191. data/ext/nutcracker/notes/socket.txt +0 -0
  192. data/ext/nutcracker/scripts/nutcracker.init +0 -0
  193. data/ext/nutcracker/scripts/nutcracker.spec +0 -0
  194. data/ext/nutcracker/scripts/redis-check.py +0 -0
  195. data/ext/nutcracker/scripts/redis-check.sh +9 -0
  196. data/ext/nutcracker/src/Makefile +647 -0
  197. data/ext/nutcracker/src/Makefile.am +1 -1
  198. data/ext/nutcracker/src/Makefile.in +74 -153
  199. data/ext/nutcracker/src/hashkit/Makefile +476 -0
  200. data/ext/nutcracker/src/hashkit/Makefile.am +1 -0
  201. data/ext/nutcracker/src/hashkit/Makefile.in +39 -64
  202. data/ext/nutcracker/src/hashkit/libhashkit.a +0 -0
  203. data/ext/nutcracker/src/hashkit/nc_crc16.c +66 -0
  204. data/ext/nutcracker/src/hashkit/nc_crc16.o +0 -0
  205. data/ext/nutcracker/src/hashkit/nc_crc32.c +0 -0
  206. data/ext/nutcracker/src/hashkit/nc_crc32.o +0 -0
  207. data/ext/nutcracker/src/hashkit/nc_fnv.c +0 -0
  208. data/ext/nutcracker/src/hashkit/nc_fnv.o +0 -0
  209. data/ext/nutcracker/src/hashkit/nc_hashkit.h +2 -0
  210. data/ext/nutcracker/src/hashkit/nc_hsieh.c +0 -0
  211. data/ext/nutcracker/src/hashkit/nc_hsieh.o +0 -0
  212. data/ext/nutcracker/src/hashkit/nc_jenkins.c +0 -0
  213. data/ext/nutcracker/src/hashkit/nc_jenkins.o +0 -0
  214. data/ext/nutcracker/src/hashkit/nc_ketama.c +0 -0
  215. data/ext/nutcracker/src/hashkit/nc_ketama.o +0 -0
  216. data/ext/nutcracker/src/hashkit/nc_md5.c +0 -0
  217. data/ext/nutcracker/src/hashkit/nc_md5.o +0 -0
  218. data/ext/nutcracker/src/hashkit/nc_modula.c +18 -6
  219. data/ext/nutcracker/src/hashkit/nc_modula.o +0 -0
  220. data/ext/nutcracker/src/hashkit/nc_murmur.c +0 -0
  221. data/ext/nutcracker/src/hashkit/nc_murmur.o +0 -0
  222. data/ext/nutcracker/src/hashkit/nc_one_at_a_time.c +0 -0
  223. data/ext/nutcracker/src/hashkit/nc_one_at_a_time.o +0 -0
  224. data/ext/nutcracker/src/hashkit/nc_random.c +0 -0
  225. data/ext/nutcracker/src/hashkit/nc_random.o +0 -0
  226. data/ext/nutcracker/src/nc.c +0 -0
  227. data/ext/nutcracker/src/nc.o +0 -0
  228. data/ext/nutcracker/src/nc_array.c +0 -0
  229. data/ext/nutcracker/src/nc_array.h +0 -0
  230. data/ext/nutcracker/src/nc_array.o +0 -0
  231. data/ext/nutcracker/src/nc_client.c +0 -0
  232. data/ext/nutcracker/src/nc_client.h +0 -0
  233. data/ext/nutcracker/src/nc_client.o +0 -0
  234. data/ext/nutcracker/src/nc_conf.c +14 -35
  235. data/ext/nutcracker/src/nc_conf.h +1 -1
  236. data/ext/nutcracker/src/nc_conf.o +0 -0
  237. data/ext/nutcracker/src/nc_connection.c +0 -0
  238. data/ext/nutcracker/src/nc_connection.h +0 -0
  239. data/ext/nutcracker/src/nc_connection.o +0 -0
  240. data/ext/nutcracker/src/nc_core.c +29 -26
  241. data/ext/nutcracker/src/nc_core.h +13 -5
  242. data/ext/nutcracker/src/nc_core.o +0 -0
  243. data/ext/nutcracker/src/{nc_event.c → nc_epoll.c} +94 -30
  244. data/ext/nutcracker/src/nc_epoll.o +0 -0
  245. data/ext/nutcracker/src/nc_event.h +33 -13
  246. data/ext/nutcracker/src/nc_kqueue.c +296 -0
  247. data/ext/nutcracker/src/nc_kqueue.o +0 -0
  248. data/ext/nutcracker/src/nc_log.c +0 -0
  249. data/ext/nutcracker/src/nc_log.h +0 -0
  250. data/ext/nutcracker/src/nc_log.o +0 -0
  251. data/ext/nutcracker/src/nc_mbuf.c +0 -0
  252. data/ext/nutcracker/src/nc_mbuf.h +0 -0
  253. data/ext/nutcracker/src/nc_mbuf.o +0 -0
  254. data/ext/nutcracker/src/nc_message.c +0 -0
  255. data/ext/nutcracker/src/nc_message.h +2 -0
  256. data/ext/nutcracker/src/nc_message.o +0 -0
  257. data/ext/nutcracker/src/nc_proxy.c +8 -8
  258. data/ext/nutcracker/src/nc_proxy.h +0 -0
  259. data/ext/nutcracker/src/nc_proxy.o +0 -0
  260. data/ext/nutcracker/src/nc_queue.h +0 -0
  261. data/ext/nutcracker/src/nc_rbtree.c +0 -0
  262. data/ext/nutcracker/src/nc_rbtree.h +0 -0
  263. data/ext/nutcracker/src/nc_rbtree.o +0 -0
  264. data/ext/nutcracker/src/nc_request.c +3 -3
  265. data/ext/nutcracker/src/nc_request.o +0 -0
  266. data/ext/nutcracker/src/nc_response.c +4 -6
  267. data/ext/nutcracker/src/nc_response.o +0 -0
  268. data/ext/nutcracker/src/nc_server.c +14 -12
  269. data/ext/nutcracker/src/nc_server.h +0 -0
  270. data/ext/nutcracker/src/nc_server.o +0 -0
  271. data/ext/nutcracker/src/nc_signal.c +0 -0
  272. data/ext/nutcracker/src/nc_signal.h +0 -0
  273. data/ext/nutcracker/src/nc_signal.o +0 -0
  274. data/ext/nutcracker/src/nc_stats.c +16 -21
  275. data/ext/nutcracker/src/nc_stats.h +3 -4
  276. data/ext/nutcracker/src/nc_stats.o +0 -0
  277. data/ext/nutcracker/src/nc_string.c +0 -0
  278. data/ext/nutcracker/src/nc_string.h +0 -0
  279. data/ext/nutcracker/src/nc_string.o +0 -0
  280. data/ext/nutcracker/src/nc_util.c +16 -0
  281. data/ext/nutcracker/src/nc_util.h +1 -0
  282. data/ext/nutcracker/src/nc_util.o +0 -0
  283. data/ext/nutcracker/src/nutcracker +0 -0
  284. data/ext/nutcracker/src/proto/Makefile +454 -0
  285. data/ext/nutcracker/src/proto/Makefile.am +0 -0
  286. data/ext/nutcracker/src/proto/Makefile.in +32 -60
  287. data/ext/nutcracker/src/proto/libproto.a +0 -0
  288. data/ext/nutcracker/src/proto/nc_memcache.c +0 -0
  289. data/ext/nutcracker/src/proto/nc_memcache.o +0 -0
  290. data/ext/nutcracker/src/proto/nc_proto.h +0 -0
  291. data/ext/nutcracker/src/proto/nc_redis.c +17 -4
  292. data/ext/nutcracker/src/proto/nc_redis.o +0 -0
  293. data/ext/nutcracker/stamp-h1 +1 -0
  294. data/lib/nutcracker.rb +64 -2
  295. data/lib/nutcracker/version.rb +1 -1
  296. metadata +237 -9
data/README.md CHANGED
@@ -1,22 +1,70 @@
1
1
  # Nutcracker
2
+ <a href="https://rubygems.org/gems/graphite-api"><img src=https://fury-badge.herokuapp.com/rb/nutcracker.png></a>
3
+
2
4
  This "library" wraps Twitter's [Nutcracker](https://github.com/twitter/twemproxy) in a gem package and provides ( in the near future I hope ) simple ruby API to the `nutcracker` executable.
5
+ For now this repository only contains a Rakefile for building new `nutcracker` gems, look at the last section for more info.
3
6
 
4
7
  ## Motivation
5
8
  The main motivation here is to take the advantages of working with Bundler's dependencies management and to be able to embed Twitter's [Nutcracker](https://github.com/twitter/twemproxy) as a dependency to any Ruby project, this allow you to create small-configuration-only-apps tied to specific version of Nutcracker as I show in the example bellow.
6
9
 
7
- ## Installation
10
+ ### Installation
11
+ Add this line to your application's Gemfile:
12
+ ```
13
+ gem 'nutcracker'
14
+ ```
15
+
16
+ And then execute:
17
+ ```
18
+ $ bundle install
19
+ ```
20
+
21
+ after the gem was successfully installed, the `nutcracker` executable should be available
22
+ ```
23
+ [root@somewhere ~]# nutcracker --help
24
+ This is nutcracker-0.2.3
8
25
 
9
- `gem install nutcracker`
26
+ Usage: nutcracker [-?hVdDt] [-v verbosity level] [-o output file]
27
+ [-c conf file] [-s stats port] [-a stats addr]
28
+ [-i stats interval] [-p pid file] [-m mbuf size]
10
29
 
11
- Or if you are using a `Gemfile`
30
+ Options:
31
+ -h, --help : this help
32
+ -V, --version : show version and exit
33
+ -t, --test-conf : test configuration for syntax errors and exit
34
+ -d, --daemonize : run as a daemon
35
+ -D, --describe-stats : print stats description and exit
36
+ -v, --verbosity=N : set logging level (default: 5, min: 0, max: 11)
37
+ -o, --output=S : set logging file (default: stderr)
38
+ -c, --conf-file=S : set configuration file (default: conf/nutcracker.yml)
39
+ -s, --stats-port=N : set stats monitoring port (default: 22222)
40
+ -a, --stats-addr=S : set stats monitoring ip (default: 0.0.0.0)
41
+ -i, --stats-interval=N : set stats aggregation interval in msec (default: 30000 msec)
42
+ -p, --pid-file=S : set pid file (default: off)
43
+ -m, --mbuf-size=N : set size of mbuf chunk in bytes (default: 16384 bytes)
44
+
45
+ ```
46
+
47
+ ### Ruby Wrapper
48
+ a simple ruby wrapper is also included
12
49
 
13
50
  ```ruby
14
- source :rubygems
51
+ require 'nutcracker'
15
52
 
16
- gem 'nutcracker'
53
+ nutcracker = Nutcracker.start(config_file: 'cluster.yaml')
54
+ nutcracker.running? # => true
55
+
56
+ nutcracker.stats # => {"source"=>"local", "version"=>"0.2.4", "uptime"=>6...}
57
+
58
+ nutcracker.stop
59
+ nutcracker.running? # => false
60
+
61
+ nutcracker.start
62
+ nutcracker.join # wait for server to exit
17
63
  ```
18
64
 
19
65
  ## Wanna build a new version?
20
66
  * Set the version @ `lib/nutcracker/version.rb` ( [Available Versions](https://code.google.com/p/twemproxy/downloads/list) )
21
67
  * run the `rake build` command
22
68
  * look for `nutcracker-X.Y.Z` gem under the pkg folder
69
+
70
+ > for more details like licensing etc, please look @ [Nutcracker](https://github.com/twitter/twemproxy)
data/Rakefile CHANGED
@@ -2,32 +2,19 @@ $:.unshift File.expand_path '../lib', __FILE__
2
2
  require 'nutcracker'
3
3
  require 'rake'
4
4
  require 'rubygems/package_task'
5
+ require "rake/testtask"
5
6
 
6
- Nutcracker::GemSpec = Gem::Specification.new do |s|
7
- s.name = "nutcracker"
8
- s.version = Nutcracker.version.dup
9
- s.platform = Gem::Platform::RUBY
10
- s.summary = "Twitter's Nutcraker Gem Wrapper"
11
- s.description = "Gem/Bundler benefits for Twitter's Nutcraker C app"
12
- s.author = "Eran Barak Levi"
13
- s.email = "eran@kontera.com"
14
- s.homepage = 'http://www.kontera.com'
15
- s.required_ruby_version = '>= 1.8.5'
16
- s.rubyforge_project = "ruby-nutcracker"
17
- s.files = %w(README.md Rakefile) + Dir.glob("{bin,lib,ext}/**/*")
18
- s.require_path = "lib"
19
- s.extensions = ['ext/nutcracker/extconf.rb']
20
- s.executables = ['nutcracker']
21
- s.require_paths = ['lib']
22
- end
7
+ Nutcracker::GemSpec = eval File.read 'nutcracker.gemspec'
8
+
9
+ sversion = Nutcracker.version.split(".")[0..2].join(".")
23
10
 
24
11
  task :download do
25
- "nutcracker-#{Nutcracker.version}.tar.gz".tap do |tarball|
12
+ "nutcracker-#{sversion}.tar.gz".tap do |tarball|
26
13
  sh "mkdir ext" unless File.directory? "ext"
27
14
  sh "rm -rf ext/nutcracker"
28
15
  sh "wget https://twemproxy.googlecode.com/files/#{tarball}"
29
16
  sh "tar -zxvf #{tarball}"
30
- sh "mv nutcracker-#{Nutcracker.version} ext/nutcracker"
17
+ sh "mv nutcracker-#{sversion} ext/nutcracker"
31
18
  File.open("ext/nutcracker/extconf.rb",'w') do |file|
32
19
  file.puts %q{
33
20
  raise "no support for #{RUBY_PLATFORM}" if RUBY_PLATFORM =~ /darwin|mswin|mingw/
@@ -53,3 +40,11 @@ task :install => [:gem] do
53
40
  sh "gem install pkg/nutcracker"
54
41
  Rake::Task['clobber_package'].execute
55
42
  end
43
+
44
+ ## Tests stuff
45
+ task :default => :test
46
+
47
+ Rake::TestTask.new(:test) do |t|
48
+ t.libs << "tests"
49
+ t.pattern = "tests/**/*_test.rb"
50
+ end
data/bin/nutcracker CHANGED
@@ -1,2 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
- exec File.expand_path('../../ext/nutcracker/src/nutcracker', __FILE__ ), *ARGV
2
+
3
+ $:.unshift File.expand_path("../../lib", __FILE__)
4
+
5
+ require 'nutcracker'
6
+
7
+ exec Nutcracker.executable, *ARGV
@@ -1,3 +1,12 @@
1
+ 2013-23-04 Manju Rajashekhar <manj@cs.stanford.edu>
2
+ * twemproxy: version 0.2.4 release
3
+ redis keys must be less than mbuf_data_size() in length (fifsky)
4
+ Adds support for DUMP/RESTORE commands in Redis (remotezygote)
5
+ Use of the weight value in the modula distribution (mezzatto)
6
+ Add support to unix socket connections to servers (mezzatto)
7
+ only check for duplicate server name and not 'host:port:weight' when 'name' is configured
8
+ crc16 hash support added (mezzatto)
9
+
1
10
  2013-31-01 Manju Rajashekhar <manj@twitter.com>
2
11
  * twemproxy: version 0.2.3 release
3
12
  RPOPLPUSH, SDIFF, SDIFFSTORE, SINTER, SINTERSTORE, SMOVE, SUNION, SUNIONSTORE, ZINTERSTORE, and ZUNIONSTORE support (dcartoon)
File without changes
@@ -0,0 +1,643 @@
1
+ # Makefile.in generated by automake 1.10 from Makefile.am.
2
+ # Makefile. Generated from Makefile.in by configure.
3
+
4
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
5
+ # 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
6
+ # This Makefile.in is free software; the Free Software Foundation
7
+ # gives unlimited permission to copy and/or distribute it,
8
+ # with or without modifications, as long as this notice is preserved.
9
+
10
+ # This program is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY, to the extent permitted by law; without
12
+ # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
13
+ # PARTICULAR PURPOSE.
14
+
15
+
16
+
17
+ pkgdatadir = $(datadir)/nutcracker
18
+ pkglibdir = $(libdir)/nutcracker
19
+ pkgincludedir = $(includedir)/nutcracker
20
+ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
21
+ install_sh_DATA = $(install_sh) -c -m 644
22
+ install_sh_PROGRAM = $(install_sh) -c
23
+ install_sh_SCRIPT = $(install_sh) -c
24
+ INSTALL_HEADER = $(INSTALL_DATA)
25
+ transform = $(program_transform_name)
26
+ NORMAL_INSTALL = :
27
+ PRE_INSTALL = :
28
+ POST_INSTALL = :
29
+ NORMAL_UNINSTALL = :
30
+ PRE_UNINSTALL = :
31
+ POST_UNINSTALL = :
32
+ build_triplet = i386-apple-darwin11.4.2
33
+ host_triplet = i386-apple-darwin11.4.2
34
+ subdir = .
35
+ DIST_COMMON = $(am__configure_deps) $(srcdir)/Makefile.am \
36
+ $(srcdir)/Makefile.in $(srcdir)/config.h.in \
37
+ $(top_srcdir)/configure ChangeLog config/config.guess \
38
+ config/config.sub config/depcomp config/install-sh \
39
+ config/ltmain.sh config/missing
40
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
41
+ am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
42
+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
43
+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
44
+ $(top_srcdir)/configure.ac
45
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
46
+ $(ACLOCAL_M4)
47
+ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
48
+ configure.lineno config.status.lineno
49
+ mkinstalldirs = $(install_sh) -d
50
+ CONFIG_HEADER = config.h
51
+ CONFIG_CLEAN_FILES =
52
+ SOURCES =
53
+ DIST_SOURCES =
54
+ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
55
+ html-recursive info-recursive install-data-recursive \
56
+ install-dvi-recursive install-exec-recursive \
57
+ install-html-recursive install-info-recursive \
58
+ install-pdf-recursive install-ps-recursive install-recursive \
59
+ installcheck-recursive installdirs-recursive pdf-recursive \
60
+ ps-recursive uninstall-recursive
61
+ RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
62
+ distclean-recursive maintainer-clean-recursive
63
+ ETAGS = etags
64
+ CTAGS = ctags
65
+ DIST_SUBDIRS = $(SUBDIRS)
66
+ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
67
+ distdir = $(PACKAGE)-$(VERSION)
68
+ top_distdir = $(distdir)
69
+ am__remove_distdir = \
70
+ { test ! -d $(distdir) \
71
+ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
72
+ && rm -fr $(distdir); }; }
73
+ DIST_ARCHIVES = $(distdir).tar.gz
74
+ GZIP_ENV = --best
75
+ distuninstallcheck_listfiles = find . -type f -print
76
+ distcleancheck_listfiles = find . -type f -print
77
+ ACLOCAL = ${SHELL} /Users/eran/github/nutcracker/twemproxy-twemproxy_bsd/config/missing --run aclocal-1.10
78
+ AMTAR = ${SHELL} /Users/eran/github/nutcracker/twemproxy-twemproxy_bsd/config/missing --run tar
79
+ AR = ar
80
+ AUTOCONF = ${SHELL} /Users/eran/github/nutcracker/twemproxy-twemproxy_bsd/config/missing --run autoconf
81
+ AUTOHEADER = ${SHELL} /Users/eran/github/nutcracker/twemproxy-twemproxy_bsd/config/missing --run autoheader
82
+ AUTOMAKE = ${SHELL} /Users/eran/github/nutcracker/twemproxy-twemproxy_bsd/config/missing --run automake-1.10
83
+ AWK = awk
84
+ CC = gcc
85
+ CCDEPMODE = depmode=gcc3
86
+ CFLAGS = -g -O2
87
+ CPP = gcc -E
88
+ CPPFLAGS =
89
+ CXX = g++
90
+ CXXCPP = g++ -E
91
+ CXXDEPMODE = depmode=gcc3
92
+ CXXFLAGS = -g -O2
93
+ CYGPATH_W = echo
94
+ DEFS = -DHAVE_CONFIG_H
95
+ DEPDIR = .deps
96
+ DSYMUTIL = dsymutil
97
+ DUMPBIN =
98
+ ECHO_C = \c
99
+ ECHO_N =
100
+ ECHO_T =
101
+ EGREP = /usr/bin/grep -E
102
+ EXEEXT =
103
+ FGREP = /usr/bin/grep -F
104
+ GREP = /usr/bin/grep
105
+ INSTALL = /usr/bin/install -c
106
+ INSTALL_DATA = ${INSTALL} -m 644
107
+ INSTALL_PROGRAM = ${INSTALL}
108
+ INSTALL_SCRIPT = ${INSTALL}
109
+ INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
110
+ LD = /usr/llvm-gcc-4.2/libexec/gcc/i686-apple-darwin11/4.2.1/ld
111
+ LDFLAGS =
112
+ LIBOBJS =
113
+ LIBS = -lpthread -lm
114
+ LIBTOOL = $(SHELL) $(top_builddir)/libtool
115
+ LIPO = lipo
116
+ LN_S = ln -s
117
+ LTLIBOBJS =
118
+ MAKEINFO = ${SHELL} /Users/eran/github/nutcracker/twemproxy-twemproxy_bsd/config/missing --run makeinfo
119
+ MKDIR_P = config/install-sh -c -d
120
+ NM = /usr/bin/nm
121
+ NMEDIT = nmedit
122
+ OBJDUMP = false
123
+ OBJEXT = o
124
+ OTOOL = otool
125
+ OTOOL64 = :
126
+ PACKAGE = nutcracker
127
+ PACKAGE_BUGREPORT = manj@twitter.com
128
+ PACKAGE_NAME = nutcracker
129
+ PACKAGE_STRING = nutcracker 0.2.4
130
+ PACKAGE_TARNAME = nutcracker
131
+ PACKAGE_URL =
132
+ PACKAGE_VERSION = 0.2.4
133
+ PATH_SEPARATOR = :
134
+ RANLIB = ranlib
135
+ SED = /usr/bin/sed
136
+ SET_MAKE =
137
+ SHELL = /bin/sh
138
+ STRIP = strip
139
+ VERSION = 0.2.4
140
+ abs_builddir = /Users/eran/github/nutcracker/twemproxy-twemproxy_bsd
141
+ abs_srcdir = /Users/eran/github/nutcracker/twemproxy-twemproxy_bsd
142
+ abs_top_builddir = /Users/eran/github/nutcracker/twemproxy-twemproxy_bsd
143
+ abs_top_srcdir = /Users/eran/github/nutcracker/twemproxy-twemproxy_bsd
144
+ ac_ct_CC = gcc
145
+ ac_ct_CXX = g++
146
+ ac_ct_DUMPBIN =
147
+ am__include = include
148
+ am__leading_dot = .
149
+ am__quote =
150
+ am__tar = ${AMTAR} chof - "$$tardir"
151
+ am__untar = ${AMTAR} xf -
152
+ bindir = ${exec_prefix}/bin
153
+ build = i386-apple-darwin11.4.2
154
+ build_alias =
155
+ build_cpu = i386
156
+ build_os = darwin11.4.2
157
+ build_vendor = apple
158
+ builddir = .
159
+ datadir = ${datarootdir}
160
+ datarootdir = ${prefix}/share
161
+ docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
162
+ dvidir = ${docdir}
163
+ exec_prefix = ${prefix}
164
+ host = i386-apple-darwin11.4.2
165
+ host_alias =
166
+ host_cpu = i386
167
+ host_os = darwin11.4.2
168
+ host_vendor = apple
169
+ htmldir = ${docdir}
170
+ includedir = ${prefix}/include
171
+ infodir = ${datarootdir}/info
172
+ install_sh = $(SHELL) /Users/eran/github/nutcracker/twemproxy-twemproxy_bsd/config/install-sh
173
+ libdir = ${exec_prefix}/lib
174
+ libexecdir = ${exec_prefix}/libexec
175
+ localedir = ${datarootdir}/locale
176
+ localstatedir = ${prefix}/var
177
+ mandir = ${datarootdir}/man
178
+ mkdir_p = $(top_builddir)/config/install-sh -c -d
179
+ oldincludedir = /usr/include
180
+ pdfdir = ${docdir}
181
+ prefix = /usr/local
182
+ program_transform_name = s,x,x,
183
+ psdir = ${docdir}
184
+ sbindir = ${exec_prefix}/sbin
185
+ sharedstatedir = ${prefix}/com
186
+ srcdir = .
187
+ subdirs = contrib/yaml-0.1.4
188
+ sysconfdir = ${prefix}/etc
189
+ target_alias =
190
+ top_build_prefix =
191
+ top_builddir = .
192
+ top_srcdir = .
193
+ MAINTAINERCLEANFILES = Makefile.in aclocal.m4 configure config.h.in config.h.in~ stamp-h.in
194
+ ACLOCAL_AMFLAGS = -I m4
195
+ SUBDIRS = contrib src
196
+ EXTRA_DIST = README.md NOTICE LICENSE ChangeLog conf scripts notes
197
+ all: config.h
198
+ $(MAKE) $(AM_MAKEFLAGS) all-recursive
199
+
200
+ .SUFFIXES:
201
+ am--refresh:
202
+ @:
203
+ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
204
+ @for dep in $?; do \
205
+ case '$(am__configure_deps)' in \
206
+ *$$dep*) \
207
+ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \
208
+ cd $(srcdir) && $(AUTOMAKE) --foreign \
209
+ && exit 0; \
210
+ exit 1;; \
211
+ esac; \
212
+ done; \
213
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
214
+ cd $(top_srcdir) && \
215
+ $(AUTOMAKE) --foreign Makefile
216
+ .PRECIOUS: Makefile
217
+ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
218
+ @case '$?' in \
219
+ *config.status*) \
220
+ echo ' $(SHELL) ./config.status'; \
221
+ $(SHELL) ./config.status;; \
222
+ *) \
223
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
224
+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
225
+ esac;
226
+
227
+ $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
228
+ $(SHELL) ./config.status --recheck
229
+
230
+ $(top_srcdir)/configure: $(am__configure_deps)
231
+ cd $(srcdir) && $(AUTOCONF)
232
+ $(ACLOCAL_M4): $(am__aclocal_m4_deps)
233
+ cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
234
+
235
+ config.h: stamp-h1
236
+ @if test ! -f $@; then \
237
+ rm -f stamp-h1; \
238
+ $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
239
+ else :; fi
240
+
241
+ stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
242
+ @rm -f stamp-h1
243
+ cd $(top_builddir) && $(SHELL) ./config.status config.h
244
+ $(srcdir)/config.h.in: $(am__configure_deps)
245
+ cd $(top_srcdir) && $(AUTOHEADER)
246
+ rm -f stamp-h1
247
+ touch $@
248
+
249
+ distclean-hdr:
250
+ -rm -f config.h stamp-h1
251
+
252
+ mostlyclean-libtool:
253
+ -rm -f *.lo
254
+
255
+ clean-libtool:
256
+ -rm -rf .libs _libs
257
+
258
+ distclean-libtool:
259
+ -rm -f libtool
260
+
261
+ # This directory's subdirectories are mostly independent; you can cd
262
+ # into them and run `make' without going through this Makefile.
263
+ # To change the values of `make' variables: instead of editing Makefiles,
264
+ # (1) if the variable is set in `config.status', edit `config.status'
265
+ # (which will cause the Makefiles to be regenerated when you run `make');
266
+ # (2) otherwise, pass the desired values on the `make' command line.
267
+ $(RECURSIVE_TARGETS):
268
+ @failcom='exit 1'; \
269
+ for f in x $$MAKEFLAGS; do \
270
+ case $$f in \
271
+ *=* | --[!k]*);; \
272
+ *k*) failcom='fail=yes';; \
273
+ esac; \
274
+ done; \
275
+ dot_seen=no; \
276
+ target=`echo $@ | sed s/-recursive//`; \
277
+ list='$(SUBDIRS)'; for subdir in $$list; do \
278
+ echo "Making $$target in $$subdir"; \
279
+ if test "$$subdir" = "."; then \
280
+ dot_seen=yes; \
281
+ local_target="$$target-am"; \
282
+ else \
283
+ local_target="$$target"; \
284
+ fi; \
285
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
286
+ || eval $$failcom; \
287
+ done; \
288
+ if test "$$dot_seen" = "no"; then \
289
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
290
+ fi; test -z "$$fail"
291
+
292
+ $(RECURSIVE_CLEAN_TARGETS):
293
+ @failcom='exit 1'; \
294
+ for f in x $$MAKEFLAGS; do \
295
+ case $$f in \
296
+ *=* | --[!k]*);; \
297
+ *k*) failcom='fail=yes';; \
298
+ esac; \
299
+ done; \
300
+ dot_seen=no; \
301
+ case "$@" in \
302
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
303
+ *) list='$(SUBDIRS)' ;; \
304
+ esac; \
305
+ rev=''; for subdir in $$list; do \
306
+ if test "$$subdir" = "."; then :; else \
307
+ rev="$$subdir $$rev"; \
308
+ fi; \
309
+ done; \
310
+ rev="$$rev ."; \
311
+ target=`echo $@ | sed s/-recursive//`; \
312
+ for subdir in $$rev; do \
313
+ echo "Making $$target in $$subdir"; \
314
+ if test "$$subdir" = "."; then \
315
+ local_target="$$target-am"; \
316
+ else \
317
+ local_target="$$target"; \
318
+ fi; \
319
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
320
+ || eval $$failcom; \
321
+ done && test -z "$$fail"
322
+ tags-recursive:
323
+ list='$(SUBDIRS)'; for subdir in $$list; do \
324
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
325
+ done
326
+ ctags-recursive:
327
+ list='$(SUBDIRS)'; for subdir in $$list; do \
328
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
329
+ done
330
+
331
+ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
332
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
333
+ unique=`for i in $$list; do \
334
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
335
+ done | \
336
+ $(AWK) ' { files[$$0] = 1; } \
337
+ END { for (i in files) print i; }'`; \
338
+ mkid -fID $$unique
339
+ tags: TAGS
340
+
341
+ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
342
+ $(TAGS_FILES) $(LISP)
343
+ tags=; \
344
+ here=`pwd`; \
345
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
346
+ include_option=--etags-include; \
347
+ empty_fix=.; \
348
+ else \
349
+ include_option=--include; \
350
+ empty_fix=; \
351
+ fi; \
352
+ list='$(SUBDIRS)'; for subdir in $$list; do \
353
+ if test "$$subdir" = .; then :; else \
354
+ test ! -f $$subdir/TAGS || \
355
+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
356
+ fi; \
357
+ done; \
358
+ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
359
+ unique=`for i in $$list; do \
360
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
361
+ done | \
362
+ $(AWK) ' { files[$$0] = 1; } \
363
+ END { for (i in files) print i; }'`; \
364
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
365
+ test -n "$$unique" || unique=$$empty_fix; \
366
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
367
+ $$tags $$unique; \
368
+ fi
369
+ ctags: CTAGS
370
+ CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
371
+ $(TAGS_FILES) $(LISP)
372
+ tags=; \
373
+ here=`pwd`; \
374
+ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
375
+ unique=`for i in $$list; do \
376
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
377
+ done | \
378
+ $(AWK) ' { files[$$0] = 1; } \
379
+ END { for (i in files) print i; }'`; \
380
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
381
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
382
+ $$tags $$unique
383
+
384
+ GTAGS:
385
+ here=`$(am__cd) $(top_builddir) && pwd` \
386
+ && cd $(top_srcdir) \
387
+ && gtags -i $(GTAGS_ARGS) $$here
388
+
389
+ distclean-tags:
390
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
391
+
392
+ distdir: $(DISTFILES)
393
+ $(am__remove_distdir)
394
+ test -d $(distdir) || mkdir $(distdir)
395
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
396
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
397
+ list='$(DISTFILES)'; \
398
+ dist_files=`for file in $$list; do echo $$file; done | \
399
+ sed -e "s|^$$srcdirstrip/||;t" \
400
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
401
+ case $$dist_files in \
402
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
403
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
404
+ sort -u` ;; \
405
+ esac; \
406
+ for file in $$dist_files; do \
407
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
408
+ if test -d $$d/$$file; then \
409
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
410
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
411
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
412
+ fi; \
413
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
414
+ else \
415
+ test -f $(distdir)/$$file \
416
+ || cp -p $$d/$$file $(distdir)/$$file \
417
+ || exit 1; \
418
+ fi; \
419
+ done
420
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
421
+ if test "$$subdir" = .; then :; else \
422
+ test -d "$(distdir)/$$subdir" \
423
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
424
+ || exit 1; \
425
+ distdir=`$(am__cd) $(distdir) && pwd`; \
426
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
427
+ (cd $$subdir && \
428
+ $(MAKE) $(AM_MAKEFLAGS) \
429
+ top_distdir="$$top_distdir" \
430
+ distdir="$$distdir/$$subdir" \
431
+ am__remove_distdir=: \
432
+ am__skip_length_check=: \
433
+ distdir) \
434
+ || exit 1; \
435
+ fi; \
436
+ done
437
+ -find $(distdir) -type d ! -perm -755 -exec chmod u+rwx,go+rx {} \; -o \
438
+ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
439
+ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
440
+ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
441
+ || chmod -R a+r $(distdir)
442
+ dist-gzip: distdir
443
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
444
+ $(am__remove_distdir)
445
+
446
+ dist-bzip2: distdir
447
+ tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
448
+ $(am__remove_distdir)
449
+
450
+ dist-tarZ: distdir
451
+ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
452
+ $(am__remove_distdir)
453
+
454
+ dist-shar: distdir
455
+ shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
456
+ $(am__remove_distdir)
457
+
458
+ dist-zip: distdir
459
+ -rm -f $(distdir).zip
460
+ zip -rq $(distdir).zip $(distdir)
461
+ $(am__remove_distdir)
462
+
463
+ dist dist-all: distdir
464
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
465
+ $(am__remove_distdir)
466
+
467
+ # This target untars the dist file and tries a VPATH configuration. Then
468
+ # it guarantees that the distribution is self-contained by making another
469
+ # tarfile.
470
+ distcheck: dist
471
+ case '$(DIST_ARCHIVES)' in \
472
+ *.tar.gz*) \
473
+ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
474
+ *.tar.bz2*) \
475
+ bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
476
+ *.tar.Z*) \
477
+ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
478
+ *.shar.gz*) \
479
+ GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
480
+ *.zip*) \
481
+ unzip $(distdir).zip ;;\
482
+ esac
483
+ chmod -R a-w $(distdir); chmod a+w $(distdir)
484
+ mkdir $(distdir)/_build
485
+ mkdir $(distdir)/_inst
486
+ chmod a-w $(distdir)
487
+ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
488
+ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
489
+ && cd $(distdir)/_build \
490
+ && ../configure --srcdir=.. --prefix="$$dc_install_base" \
491
+ $(DISTCHECK_CONFIGURE_FLAGS) \
492
+ && $(MAKE) $(AM_MAKEFLAGS) \
493
+ && $(MAKE) $(AM_MAKEFLAGS) dvi \
494
+ && $(MAKE) $(AM_MAKEFLAGS) check \
495
+ && $(MAKE) $(AM_MAKEFLAGS) install \
496
+ && $(MAKE) $(AM_MAKEFLAGS) installcheck \
497
+ && $(MAKE) $(AM_MAKEFLAGS) uninstall \
498
+ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
499
+ distuninstallcheck \
500
+ && chmod -R a-w "$$dc_install_base" \
501
+ && ({ \
502
+ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
503
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
504
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
505
+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
506
+ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
507
+ } || { rm -rf "$$dc_destdir"; exit 1; }) \
508
+ && rm -rf "$$dc_destdir" \
509
+ && $(MAKE) $(AM_MAKEFLAGS) dist \
510
+ && rm -rf $(DIST_ARCHIVES) \
511
+ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
512
+ $(am__remove_distdir)
513
+ @(echo "$(distdir) archives ready for distribution: "; \
514
+ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
515
+ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
516
+ distuninstallcheck:
517
+ @cd $(distuninstallcheck_dir) \
518
+ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
519
+ || { echo "ERROR: files left after uninstall:" ; \
520
+ if test -n "$(DESTDIR)"; then \
521
+ echo " (check DESTDIR support)"; \
522
+ fi ; \
523
+ $(distuninstallcheck_listfiles) ; \
524
+ exit 1; } >&2
525
+ distcleancheck: distclean
526
+ @if test '$(srcdir)' = . ; then \
527
+ echo "ERROR: distcleancheck can only run from a VPATH build" ; \
528
+ exit 1 ; \
529
+ fi
530
+ @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
531
+ || { echo "ERROR: files left in build directory after distclean:" ; \
532
+ $(distcleancheck_listfiles) ; \
533
+ exit 1; } >&2
534
+ check-am: all-am
535
+ check: check-recursive
536
+ all-am: Makefile config.h
537
+ installdirs: installdirs-recursive
538
+ installdirs-am:
539
+ install: install-recursive
540
+ install-exec: install-exec-recursive
541
+ install-data: install-data-recursive
542
+ uninstall: uninstall-recursive
543
+
544
+ install-am: all-am
545
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
546
+
547
+ installcheck: installcheck-recursive
548
+ install-strip:
549
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
550
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
551
+ `test -z '$(STRIP)' || \
552
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
553
+ mostlyclean-generic:
554
+
555
+ clean-generic:
556
+
557
+ distclean-generic:
558
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
559
+
560
+ maintainer-clean-generic:
561
+ @echo "This command is intended for maintainers to use"
562
+ @echo "it deletes files that may require special tools to rebuild."
563
+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
564
+ clean: clean-recursive
565
+
566
+ clean-am: clean-generic clean-libtool mostlyclean-am
567
+
568
+ distclean: distclean-recursive
569
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
570
+ -rm -f Makefile
571
+ distclean-am: clean-am distclean-generic distclean-hdr \
572
+ distclean-libtool distclean-tags
573
+
574
+ dvi: dvi-recursive
575
+
576
+ dvi-am:
577
+
578
+ html: html-recursive
579
+
580
+ info: info-recursive
581
+
582
+ info-am:
583
+
584
+ install-data-am:
585
+
586
+ install-dvi: install-dvi-recursive
587
+
588
+ install-exec-am:
589
+
590
+ install-html: install-html-recursive
591
+
592
+ install-info: install-info-recursive
593
+
594
+ install-man:
595
+
596
+ install-pdf: install-pdf-recursive
597
+
598
+ install-ps: install-ps-recursive
599
+
600
+ installcheck-am:
601
+
602
+ maintainer-clean: maintainer-clean-recursive
603
+ -rm -f $(am__CONFIG_DISTCLEAN_FILES)
604
+ -rm -rf $(top_srcdir)/autom4te.cache
605
+ -rm -f Makefile
606
+ maintainer-clean-am: distclean-am maintainer-clean-generic
607
+
608
+ mostlyclean: mostlyclean-recursive
609
+
610
+ mostlyclean-am: mostlyclean-generic mostlyclean-libtool
611
+
612
+ pdf: pdf-recursive
613
+
614
+ pdf-am:
615
+
616
+ ps: ps-recursive
617
+
618
+ ps-am:
619
+
620
+ uninstall-am:
621
+
622
+ .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
623
+ install-strip
624
+
625
+ .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
626
+ all all-am am--refresh check check-am clean clean-generic \
627
+ clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
628
+ dist-gzip dist-shar dist-tarZ dist-zip distcheck distclean \
629
+ distclean-generic distclean-hdr distclean-libtool \
630
+ distclean-tags distcleancheck distdir distuninstallcheck dvi \
631
+ dvi-am html html-am info info-am install install-am \
632
+ install-data install-data-am install-dvi install-dvi-am \
633
+ install-exec install-exec-am install-html install-html-am \
634
+ install-info install-info-am install-man install-pdf \
635
+ install-pdf-am install-ps install-ps-am install-strip \
636
+ installcheck installcheck-am installdirs installdirs-am \
637
+ maintainer-clean maintainer-clean-generic mostlyclean \
638
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
639
+ tags tags-recursive uninstall uninstall-am
640
+
641
+ # Tell versions [3.59,3.63) of GNU make to not export all variables.
642
+ # Otherwise a system limit (for SysV at least) may be exceeded.
643
+ .NOEXPORT: