nutcracker 0.2.3 → 0.2.4.beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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: