vinted-memcached 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/BENCHMARKS +142 -0
- data/CHANGELOG +176 -0
- data/Gemfile +11 -0
- data/Gemfile.lock +45 -0
- data/LICENSE +184 -0
- data/Manifest +209 -0
- data/README.rdoc +124 -0
- data/Rakefile +134 -0
- data/TODO +1 -0
- data/ext/extconf-make.rb +25 -0
- data/ext/extconf.rb +78 -0
- data/ext/libmemcached-0.32/AUTHORS +7 -0
- data/ext/libmemcached-0.32/COPYING +32 -0
- data/ext/libmemcached-0.32/ChangeLog +303 -0
- data/ext/libmemcached-0.32/INSTALL +302 -0
- data/ext/libmemcached-0.32/Makefile.am +36 -0
- data/ext/libmemcached-0.32/Makefile.in +911 -0
- data/ext/libmemcached-0.32/NEWS +1 -0
- data/ext/libmemcached-0.32/README +33 -0
- data/ext/libmemcached-0.32/THANKS +14 -0
- data/ext/libmemcached-0.32/TODO +11 -0
- data/ext/libmemcached-0.32/aclocal.m4 +2108 -0
- data/ext/libmemcached-0.32/clients/Makefile.am +80 -0
- data/ext/libmemcached-0.32/clients/Makefile.in +773 -0
- data/ext/libmemcached-0.32/clients/client_options.h +32 -0
- data/ext/libmemcached-0.32/clients/execute.c +64 -0
- data/ext/libmemcached-0.32/clients/execute.h +5 -0
- data/ext/libmemcached-0.32/clients/generator.c +74 -0
- data/ext/libmemcached-0.32/clients/generator.h +20 -0
- data/ext/libmemcached-0.32/clients/memcat.c +178 -0
- data/ext/libmemcached-0.32/clients/memcp.c +251 -0
- data/ext/libmemcached-0.32/clients/memdump.c +170 -0
- data/ext/libmemcached-0.32/clients/memerror.c +80 -0
- data/ext/libmemcached-0.32/clients/memflush.c +143 -0
- data/ext/libmemcached-0.32/clients/memrm.c +160 -0
- data/ext/libmemcached-0.32/clients/memslap.c +441 -0
- data/ext/libmemcached-0.32/clients/memstat.c +326 -0
- data/ext/libmemcached-0.32/clients/utilities.c +207 -0
- data/ext/libmemcached-0.32/clients/utilities.h +41 -0
- data/ext/libmemcached-0.32/config/compile +143 -0
- data/ext/libmemcached-0.32/config/config.guess +1561 -0
- data/ext/libmemcached-0.32/config/config.rpath +666 -0
- data/ext/libmemcached-0.32/config/config.sub +1686 -0
- data/ext/libmemcached-0.32/config/depcomp +630 -0
- data/ext/libmemcached-0.32/config/install-sh +520 -0
- data/ext/libmemcached-0.32/config/ltmain.sh +9636 -0
- data/ext/libmemcached-0.32/config/missing +376 -0
- data/ext/libmemcached-0.32/config.h.in +254 -0
- data/ext/libmemcached-0.32/configure +23843 -0
- data/ext/libmemcached-0.32/configure.ac +120 -0
- data/ext/libmemcached-0.32/libmemcached/Makefile.am +111 -0
- data/ext/libmemcached-0.32/libmemcached/Makefile.in +1069 -0
- data/ext/libmemcached-0.32/libmemcached/byteorder.c +31 -0
- data/ext/libmemcached-0.32/libmemcached/common.h +189 -0
- data/ext/libmemcached-0.32/libmemcached/crc.c +86 -0
- data/ext/libmemcached-0.32/libmemcached/hsieh_hash.c +68 -0
- data/ext/libmemcached-0.32/libmemcached/jenkins_hash.c +213 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached.ver +1 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_probes.d +30 -0
- data/ext/libmemcached-0.32/libmemcached/libmemcached_probes.h +82 -0
- data/ext/libmemcached-0.32/libmemcached/md5.c +354 -0
- data/ext/libmemcached-0.32/libmemcached/memcached/README.txt +7 -0
- data/ext/libmemcached-0.32/libmemcached/memcached/protocol_binary.h +385 -0
- data/ext/libmemcached-0.32/libmemcached/memcached.c +153 -0
- data/ext/libmemcached-0.32/libmemcached/memcached.h +305 -0
- data/ext/libmemcached-0.32/libmemcached/memcached.hpp +799 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_allocators.c +72 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_analyze.c +100 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_auto.c +207 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_behavior.c +290 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_callback.c +175 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_configure.h.in +23 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_connect.c +371 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_constants.h +146 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_delete.c +0 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_do.c +72 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_dump.c +79 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_exist.c +114 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_exist.h +20 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_fetch.c +102 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_flush.c +89 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_flush_buffers.c +23 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_get.c +494 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_get.h +87 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_hash.c +252 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_hosts.c +510 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_internal.h +31 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_io.c +594 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_io.h +72 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_key.c +28 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_parse.c +74 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_pool.h +38 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_purge.c +76 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_quit.c +75 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_response.c +529 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_result.c +57 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_result.h +59 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_sasl.c +225 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_sasl.h +44 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_server.c +159 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_server.h +93 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_stats.c +437 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_storage.c +514 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_storage.h +107 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_strerror.c +92 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_string.c +138 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_string.h +53 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_touch.c +60 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_touch.h +31 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_types.h +44 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_util.h +15 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_verbosity.c +36 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_version.c +112 -0
- data/ext/libmemcached-0.32/libmemcached/memcached_watchpoint.h +38 -0
- data/ext/libmemcached-0.32/libmemcached/murmur_hash.c +76 -0
- data/ext/libmemcached-0.32/libmemcached/visibility.h +51 -0
- data/ext/libmemcached-0.32/libmemcachedutil/Makefile.am +11 -0
- data/ext/libmemcached-0.32/libmemcachedutil/Makefile.in +604 -0
- data/ext/libmemcached-0.32/libmemcachedutil/libmemcachedutil.ver +1 -0
- data/ext/libmemcached-0.32/libmemcachedutil/memcached_pool.c +170 -0
- data/ext/libmemcached-0.32/m4/ac_cxx_compile_stdcxx_0x.m4 +103 -0
- data/ext/libmemcached-0.32/m4/ac_cxx_header_stdcxx_98.m4 +67 -0
- data/ext/libmemcached-0.32/m4/acx_pthread.m4 +276 -0
- data/ext/libmemcached-0.32/m4/byteorder.m4 +40 -0
- data/ext/libmemcached-0.32/m4/deprecated.m4 +17 -0
- data/ext/libmemcached-0.32/m4/enable_utillib.m4 +16 -0
- data/ext/libmemcached-0.32/m4/extensions.m4 +94 -0
- data/ext/libmemcached-0.32/m4/hsieh.m4 +18 -0
- data/ext/libmemcached-0.32/m4/lib-prefix.m4 +221 -0
- data/ext/libmemcached-0.32/m4/libtool.m4 +7831 -0
- data/ext/libmemcached-0.32/m4/ltoptions.m4 +369 -0
- data/ext/libmemcached-0.32/m4/ltsugar.m4 +123 -0
- data/ext/libmemcached-0.32/m4/ltversion.m4 +23 -0
- data/ext/libmemcached-0.32/m4/lt~obsolete.m4 +98 -0
- data/ext/libmemcached-0.32/m4/memcached.m4 +30 -0
- data/ext/libmemcached-0.32/m4/pandora_64bit.m4 +55 -0
- data/ext/libmemcached-0.32/m4/pandora_canonical.m4 +151 -0
- data/ext/libmemcached-0.32/m4/pandora_check_compiler_version.m4 +37 -0
- data/ext/libmemcached-0.32/m4/pandora_check_cxx_standard.m4 +16 -0
- data/ext/libmemcached-0.32/m4/pandora_enable_dtrace.m4 +41 -0
- data/ext/libmemcached-0.32/m4/pandora_ensure_gcc_version.m4 +36 -0
- data/ext/libmemcached-0.32/m4/pandora_have_better_malloc.m4 +54 -0
- data/ext/libmemcached-0.32/m4/pandora_have_sasl.m4 +133 -0
- data/ext/libmemcached-0.32/m4/pandora_header_assert.m4 +23 -0
- data/ext/libmemcached-0.32/m4/pandora_libtool.m4 +15 -0
- data/ext/libmemcached-0.32/m4/pandora_optimize.m4 +79 -0
- data/ext/libmemcached-0.32/m4/pandora_shared_ptr.m4 +56 -0
- data/ext/libmemcached-0.32/m4/pandora_vc_build.m4 +32 -0
- data/ext/libmemcached-0.32/m4/pandora_warnings.m4 +262 -0
- data/ext/libmemcached-0.32/m4/pod2man.m4 +7 -0
- data/ext/libmemcached-0.32/m4/protocol_binary.m4 +23 -0
- data/ext/libmemcached-0.32/m4/setsockopt.m4 +57 -0
- data/ext/libmemcached-0.32/m4/visibility.m4 +52 -0
- data/ext/libmemcached-0.32/support/Makefile.am +4 -0
- data/ext/libmemcached-0.32/support/Makefile.in +487 -0
- data/ext/libmemcached-0.32/support/libmemcached-fc.spec.in +105 -0
- data/ext/libmemcached-0.32/support/libmemcached.pc.in +10 -0
- data/ext/libmemcached-0.32/support/libmemcached.spec +105 -0
- data/ext/libmemcached-0.32/support/libmemcached.spec.in +105 -0
- data/ext/libmemcached-0.32/support/set_benchmark.sh +5 -0
- data/ext/libmemcached-0.32/tests/Makefile.am +113 -0
- data/ext/libmemcached-0.32/tests/Makefile.in +762 -0
- data/ext/libmemcached-0.32/tests/atomsmasher.c +245 -0
- data/ext/libmemcached-0.32/tests/function.c +4904 -0
- data/ext/libmemcached-0.32/tests/ketama_test_cases.h +108 -0
- data/ext/libmemcached-0.32/tests/output.cmp +7 -0
- data/ext/libmemcached-0.32/tests/output.res +7 -0
- data/ext/libmemcached-0.32/tests/output2.res +46 -0
- data/ext/libmemcached-0.32/tests/plus.cpp +293 -0
- data/ext/libmemcached-0.32/tests/r/memcat.res +19 -0
- data/ext/libmemcached-0.32/tests/r/memcp.res +27 -0
- data/ext/libmemcached-0.32/tests/r/memrm.res +19 -0
- data/ext/libmemcached-0.32/tests/r/memslap.res +33 -0
- data/ext/libmemcached-0.32/tests/r/memstat.res +33 -0
- data/ext/libmemcached-0.32/tests/server.c +118 -0
- data/ext/libmemcached-0.32/tests/server.h +25 -0
- data/ext/libmemcached-0.32/tests/start.c +16 -0
- data/ext/libmemcached-0.32/tests/t/memcat.test +4 -0
- data/ext/libmemcached-0.32/tests/t/memcp.test +3 -0
- data/ext/libmemcached-0.32/tests/t/memrm.test +3 -0
- data/ext/libmemcached-0.32/tests/t/memslap.test +5 -0
- data/ext/libmemcached-0.32/tests/t/memstat.test +3 -0
- data/ext/libmemcached-0.32/tests/test.c +137 -0
- data/ext/libmemcached-0.32/tests/test.h +46 -0
- data/ext/libmemcached-0.32/tests/udp.c +76 -0
- data/ext/rlibmemcached.i +258 -0
- data/ext/rlibmemcached_wrap.c +13917 -0
- data/lib/memcached/auth.rb +16 -0
- data/lib/memcached/behaviors.rb +78 -0
- data/lib/memcached/exceptions.rb +84 -0
- data/lib/memcached/experimental.rb +48 -0
- data/lib/memcached/marshal_codec.rb +10 -0
- data/lib/memcached/memcached.rb +732 -0
- data/lib/memcached/rails.rb +250 -0
- data/lib/memcached.rb +33 -0
- data/memcached.gemspec +0 -0
- data/test/profile/benchmark.rb +280 -0
- data/test/profile/c_profiler.rb +14 -0
- data/test/profile/exercise.rb +185 -0
- data/test/profile/rb_profiler.rb +21 -0
- data/test/profile/valgrind.rb +10 -0
- data/test/setup.rb +30 -0
- data/test/teardown.rb +0 -0
- data/test/test_helper.rb +18 -0
- data/test/unit/binding_test.rb +8 -0
- data/test/unit/memcached_experimental_test.rb +272 -0
- data/test/unit/memcached_test.rb +1487 -0
- data/test/unit/rails_test.rb +330 -0
- metadata +336 -0
data/Manifest
ADDED
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
BENCHMARKS
|
|
2
|
+
CHANGELOG
|
|
3
|
+
Gemfile
|
|
4
|
+
Gemfile.lock
|
|
5
|
+
LICENSE
|
|
6
|
+
Manifest
|
|
7
|
+
README.rdoc
|
|
8
|
+
Rakefile
|
|
9
|
+
TODO
|
|
10
|
+
ext/extconf-make.rb
|
|
11
|
+
ext/extconf.rb
|
|
12
|
+
ext/libmemcached-0.32/AUTHORS
|
|
13
|
+
ext/libmemcached-0.32/COPYING
|
|
14
|
+
ext/libmemcached-0.32/ChangeLog
|
|
15
|
+
ext/libmemcached-0.32/INSTALL
|
|
16
|
+
ext/libmemcached-0.32/Makefile.am
|
|
17
|
+
ext/libmemcached-0.32/Makefile.in
|
|
18
|
+
ext/libmemcached-0.32/NEWS
|
|
19
|
+
ext/libmemcached-0.32/README
|
|
20
|
+
ext/libmemcached-0.32/THANKS
|
|
21
|
+
ext/libmemcached-0.32/TODO
|
|
22
|
+
ext/libmemcached-0.32/aclocal.m4
|
|
23
|
+
ext/libmemcached-0.32/clients/Makefile.am
|
|
24
|
+
ext/libmemcached-0.32/clients/Makefile.in
|
|
25
|
+
ext/libmemcached-0.32/clients/client_options.h
|
|
26
|
+
ext/libmemcached-0.32/clients/execute.c
|
|
27
|
+
ext/libmemcached-0.32/clients/execute.h
|
|
28
|
+
ext/libmemcached-0.32/clients/generator.c
|
|
29
|
+
ext/libmemcached-0.32/clients/generator.h
|
|
30
|
+
ext/libmemcached-0.32/clients/memcat.c
|
|
31
|
+
ext/libmemcached-0.32/clients/memcp.c
|
|
32
|
+
ext/libmemcached-0.32/clients/memdump.c
|
|
33
|
+
ext/libmemcached-0.32/clients/memerror.c
|
|
34
|
+
ext/libmemcached-0.32/clients/memflush.c
|
|
35
|
+
ext/libmemcached-0.32/clients/memrm.c
|
|
36
|
+
ext/libmemcached-0.32/clients/memslap.c
|
|
37
|
+
ext/libmemcached-0.32/clients/memstat.c
|
|
38
|
+
ext/libmemcached-0.32/clients/utilities.c
|
|
39
|
+
ext/libmemcached-0.32/clients/utilities.h
|
|
40
|
+
ext/libmemcached-0.32/config.h.in
|
|
41
|
+
ext/libmemcached-0.32/config/compile
|
|
42
|
+
ext/libmemcached-0.32/config/config.guess
|
|
43
|
+
ext/libmemcached-0.32/config/config.rpath
|
|
44
|
+
ext/libmemcached-0.32/config/config.sub
|
|
45
|
+
ext/libmemcached-0.32/config/depcomp
|
|
46
|
+
ext/libmemcached-0.32/config/install-sh
|
|
47
|
+
ext/libmemcached-0.32/config/ltmain.sh
|
|
48
|
+
ext/libmemcached-0.32/config/missing
|
|
49
|
+
ext/libmemcached-0.32/configure
|
|
50
|
+
ext/libmemcached-0.32/configure.ac
|
|
51
|
+
ext/libmemcached-0.32/libmemcached/Makefile.am
|
|
52
|
+
ext/libmemcached-0.32/libmemcached/Makefile.in
|
|
53
|
+
ext/libmemcached-0.32/libmemcached/byteorder.c
|
|
54
|
+
ext/libmemcached-0.32/libmemcached/common.h
|
|
55
|
+
ext/libmemcached-0.32/libmemcached/crc.c
|
|
56
|
+
ext/libmemcached-0.32/libmemcached/hsieh_hash.c
|
|
57
|
+
ext/libmemcached-0.32/libmemcached/jenkins_hash.c
|
|
58
|
+
ext/libmemcached-0.32/libmemcached/libmemcached.ver
|
|
59
|
+
ext/libmemcached-0.32/libmemcached/libmemcached_probes.d
|
|
60
|
+
ext/libmemcached-0.32/libmemcached/libmemcached_probes.h
|
|
61
|
+
ext/libmemcached-0.32/libmemcached/md5.c
|
|
62
|
+
ext/libmemcached-0.32/libmemcached/memcached.c
|
|
63
|
+
ext/libmemcached-0.32/libmemcached/memcached.h
|
|
64
|
+
ext/libmemcached-0.32/libmemcached/memcached.hpp
|
|
65
|
+
ext/libmemcached-0.32/libmemcached/memcached/README.txt
|
|
66
|
+
ext/libmemcached-0.32/libmemcached/memcached/protocol_binary.h
|
|
67
|
+
ext/libmemcached-0.32/libmemcached/memcached_allocators.c
|
|
68
|
+
ext/libmemcached-0.32/libmemcached/memcached_analyze.c
|
|
69
|
+
ext/libmemcached-0.32/libmemcached/memcached_auto.c
|
|
70
|
+
ext/libmemcached-0.32/libmemcached/memcached_behavior.c
|
|
71
|
+
ext/libmemcached-0.32/libmemcached/memcached_callback.c
|
|
72
|
+
ext/libmemcached-0.32/libmemcached/memcached_configure.h.in
|
|
73
|
+
ext/libmemcached-0.32/libmemcached/memcached_connect.c
|
|
74
|
+
ext/libmemcached-0.32/libmemcached/memcached_constants.h
|
|
75
|
+
ext/libmemcached-0.32/libmemcached/memcached_delete.c
|
|
76
|
+
ext/libmemcached-0.32/libmemcached/memcached_do.c
|
|
77
|
+
ext/libmemcached-0.32/libmemcached/memcached_dump.c
|
|
78
|
+
ext/libmemcached-0.32/libmemcached/memcached_exist.c
|
|
79
|
+
ext/libmemcached-0.32/libmemcached/memcached_exist.h
|
|
80
|
+
ext/libmemcached-0.32/libmemcached/memcached_fetch.c
|
|
81
|
+
ext/libmemcached-0.32/libmemcached/memcached_flush.c
|
|
82
|
+
ext/libmemcached-0.32/libmemcached/memcached_flush_buffers.c
|
|
83
|
+
ext/libmemcached-0.32/libmemcached/memcached_get.c
|
|
84
|
+
ext/libmemcached-0.32/libmemcached/memcached_get.h
|
|
85
|
+
ext/libmemcached-0.32/libmemcached/memcached_hash.c
|
|
86
|
+
ext/libmemcached-0.32/libmemcached/memcached_hosts.c
|
|
87
|
+
ext/libmemcached-0.32/libmemcached/memcached_internal.h
|
|
88
|
+
ext/libmemcached-0.32/libmemcached/memcached_io.c
|
|
89
|
+
ext/libmemcached-0.32/libmemcached/memcached_io.h
|
|
90
|
+
ext/libmemcached-0.32/libmemcached/memcached_key.c
|
|
91
|
+
ext/libmemcached-0.32/libmemcached/memcached_parse.c
|
|
92
|
+
ext/libmemcached-0.32/libmemcached/memcached_pool.h
|
|
93
|
+
ext/libmemcached-0.32/libmemcached/memcached_purge.c
|
|
94
|
+
ext/libmemcached-0.32/libmemcached/memcached_quit.c
|
|
95
|
+
ext/libmemcached-0.32/libmemcached/memcached_response.c
|
|
96
|
+
ext/libmemcached-0.32/libmemcached/memcached_result.c
|
|
97
|
+
ext/libmemcached-0.32/libmemcached/memcached_result.h
|
|
98
|
+
ext/libmemcached-0.32/libmemcached/memcached_sasl.c
|
|
99
|
+
ext/libmemcached-0.32/libmemcached/memcached_sasl.h
|
|
100
|
+
ext/libmemcached-0.32/libmemcached/memcached_server.c
|
|
101
|
+
ext/libmemcached-0.32/libmemcached/memcached_server.h
|
|
102
|
+
ext/libmemcached-0.32/libmemcached/memcached_stats.c
|
|
103
|
+
ext/libmemcached-0.32/libmemcached/memcached_storage.c
|
|
104
|
+
ext/libmemcached-0.32/libmemcached/memcached_storage.h
|
|
105
|
+
ext/libmemcached-0.32/libmemcached/memcached_strerror.c
|
|
106
|
+
ext/libmemcached-0.32/libmemcached/memcached_string.c
|
|
107
|
+
ext/libmemcached-0.32/libmemcached/memcached_string.h
|
|
108
|
+
ext/libmemcached-0.32/libmemcached/memcached_touch.c
|
|
109
|
+
ext/libmemcached-0.32/libmemcached/memcached_touch.h
|
|
110
|
+
ext/libmemcached-0.32/libmemcached/memcached_types.h
|
|
111
|
+
ext/libmemcached-0.32/libmemcached/memcached_util.h
|
|
112
|
+
ext/libmemcached-0.32/libmemcached/memcached_verbosity.c
|
|
113
|
+
ext/libmemcached-0.32/libmemcached/memcached_version.c
|
|
114
|
+
ext/libmemcached-0.32/libmemcached/memcached_watchpoint.h
|
|
115
|
+
ext/libmemcached-0.32/libmemcached/murmur_hash.c
|
|
116
|
+
ext/libmemcached-0.32/libmemcached/visibility.h
|
|
117
|
+
ext/libmemcached-0.32/libmemcachedutil/Makefile.am
|
|
118
|
+
ext/libmemcached-0.32/libmemcachedutil/Makefile.in
|
|
119
|
+
ext/libmemcached-0.32/libmemcachedutil/libmemcachedutil.ver
|
|
120
|
+
ext/libmemcached-0.32/libmemcachedutil/memcached_pool.c
|
|
121
|
+
ext/libmemcached-0.32/m4/ac_cxx_compile_stdcxx_0x.m4
|
|
122
|
+
ext/libmemcached-0.32/m4/ac_cxx_header_stdcxx_98.m4
|
|
123
|
+
ext/libmemcached-0.32/m4/acx_pthread.m4
|
|
124
|
+
ext/libmemcached-0.32/m4/byteorder.m4
|
|
125
|
+
ext/libmemcached-0.32/m4/deprecated.m4
|
|
126
|
+
ext/libmemcached-0.32/m4/enable_utillib.m4
|
|
127
|
+
ext/libmemcached-0.32/m4/extensions.m4
|
|
128
|
+
ext/libmemcached-0.32/m4/hsieh.m4
|
|
129
|
+
ext/libmemcached-0.32/m4/lib-prefix.m4
|
|
130
|
+
ext/libmemcached-0.32/m4/libtool.m4
|
|
131
|
+
ext/libmemcached-0.32/m4/ltoptions.m4
|
|
132
|
+
ext/libmemcached-0.32/m4/ltsugar.m4
|
|
133
|
+
ext/libmemcached-0.32/m4/ltversion.m4
|
|
134
|
+
ext/libmemcached-0.32/m4/lt~obsolete.m4
|
|
135
|
+
ext/libmemcached-0.32/m4/memcached.m4
|
|
136
|
+
ext/libmemcached-0.32/m4/pandora_64bit.m4
|
|
137
|
+
ext/libmemcached-0.32/m4/pandora_canonical.m4
|
|
138
|
+
ext/libmemcached-0.32/m4/pandora_check_compiler_version.m4
|
|
139
|
+
ext/libmemcached-0.32/m4/pandora_check_cxx_standard.m4
|
|
140
|
+
ext/libmemcached-0.32/m4/pandora_enable_dtrace.m4
|
|
141
|
+
ext/libmemcached-0.32/m4/pandora_ensure_gcc_version.m4
|
|
142
|
+
ext/libmemcached-0.32/m4/pandora_have_better_malloc.m4
|
|
143
|
+
ext/libmemcached-0.32/m4/pandora_have_sasl.m4
|
|
144
|
+
ext/libmemcached-0.32/m4/pandora_header_assert.m4
|
|
145
|
+
ext/libmemcached-0.32/m4/pandora_libtool.m4
|
|
146
|
+
ext/libmemcached-0.32/m4/pandora_optimize.m4
|
|
147
|
+
ext/libmemcached-0.32/m4/pandora_shared_ptr.m4
|
|
148
|
+
ext/libmemcached-0.32/m4/pandora_vc_build.m4
|
|
149
|
+
ext/libmemcached-0.32/m4/pandora_warnings.m4
|
|
150
|
+
ext/libmemcached-0.32/m4/pod2man.m4
|
|
151
|
+
ext/libmemcached-0.32/m4/protocol_binary.m4
|
|
152
|
+
ext/libmemcached-0.32/m4/setsockopt.m4
|
|
153
|
+
ext/libmemcached-0.32/m4/visibility.m4
|
|
154
|
+
ext/libmemcached-0.32/support/Makefile.am
|
|
155
|
+
ext/libmemcached-0.32/support/Makefile.in
|
|
156
|
+
ext/libmemcached-0.32/support/libmemcached-fc.spec.in
|
|
157
|
+
ext/libmemcached-0.32/support/libmemcached.pc.in
|
|
158
|
+
ext/libmemcached-0.32/support/libmemcached.spec
|
|
159
|
+
ext/libmemcached-0.32/support/libmemcached.spec.in
|
|
160
|
+
ext/libmemcached-0.32/support/set_benchmark.sh
|
|
161
|
+
ext/libmemcached-0.32/tests/Makefile.am
|
|
162
|
+
ext/libmemcached-0.32/tests/Makefile.in
|
|
163
|
+
ext/libmemcached-0.32/tests/atomsmasher.c
|
|
164
|
+
ext/libmemcached-0.32/tests/function.c
|
|
165
|
+
ext/libmemcached-0.32/tests/ketama_test_cases.h
|
|
166
|
+
ext/libmemcached-0.32/tests/output.cmp
|
|
167
|
+
ext/libmemcached-0.32/tests/output.res
|
|
168
|
+
ext/libmemcached-0.32/tests/output2.res
|
|
169
|
+
ext/libmemcached-0.32/tests/plus.cpp
|
|
170
|
+
ext/libmemcached-0.32/tests/r/memcat.res
|
|
171
|
+
ext/libmemcached-0.32/tests/r/memcp.res
|
|
172
|
+
ext/libmemcached-0.32/tests/r/memrm.res
|
|
173
|
+
ext/libmemcached-0.32/tests/r/memslap.res
|
|
174
|
+
ext/libmemcached-0.32/tests/r/memstat.res
|
|
175
|
+
ext/libmemcached-0.32/tests/server.c
|
|
176
|
+
ext/libmemcached-0.32/tests/server.h
|
|
177
|
+
ext/libmemcached-0.32/tests/start.c
|
|
178
|
+
ext/libmemcached-0.32/tests/t/memcat.test
|
|
179
|
+
ext/libmemcached-0.32/tests/t/memcp.test
|
|
180
|
+
ext/libmemcached-0.32/tests/t/memrm.test
|
|
181
|
+
ext/libmemcached-0.32/tests/t/memslap.test
|
|
182
|
+
ext/libmemcached-0.32/tests/t/memstat.test
|
|
183
|
+
ext/libmemcached-0.32/tests/test.c
|
|
184
|
+
ext/libmemcached-0.32/tests/test.h
|
|
185
|
+
ext/libmemcached-0.32/tests/udp.c
|
|
186
|
+
ext/rlibmemcached.i
|
|
187
|
+
ext/rlibmemcached_wrap.c
|
|
188
|
+
lib/memcached.rb
|
|
189
|
+
lib/memcached/auth.rb
|
|
190
|
+
lib/memcached/behaviors.rb
|
|
191
|
+
lib/memcached/exceptions.rb
|
|
192
|
+
lib/memcached/experimental.rb
|
|
193
|
+
lib/memcached/marshal_codec.rb
|
|
194
|
+
lib/memcached/memcached.rb
|
|
195
|
+
lib/memcached/rails.rb
|
|
196
|
+
memcached.gemspec
|
|
197
|
+
memcached.pem
|
|
198
|
+
test/profile/benchmark.rb
|
|
199
|
+
test/profile/c_profiler.rb
|
|
200
|
+
test/profile/exercise.rb
|
|
201
|
+
test/profile/rb_profiler.rb
|
|
202
|
+
test/profile/valgrind.rb
|
|
203
|
+
test/setup.rb
|
|
204
|
+
test/teardown.rb
|
|
205
|
+
test/test_helper.rb
|
|
206
|
+
test/unit/binding_test.rb
|
|
207
|
+
test/unit/memcached_experimental_test.rb
|
|
208
|
+
test/unit/memcached_test.rb
|
|
209
|
+
test/unit/rails_test.rb
|
data/README.rdoc
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
= memcached
|
|
2
|
+
|
|
3
|
+
An interface to the libmemcached C client.
|
|
4
|
+
|
|
5
|
+
{<img src="https://travis-ci.org/evan/memcached.svg?branch=master" alt="Build Status" />}[https://travis-ci.org/evan/memcached]
|
|
6
|
+
|
|
7
|
+
== License
|
|
8
|
+
|
|
9
|
+
Copyright 2009-2013 Cloudburst, LLC. Licensed under the AFL 3. See the included LICENSE file. Portions copyright 2007-2009 TangentOrg, Brian Aker, licensed under the BSD license, and used with permission.
|
|
10
|
+
|
|
11
|
+
== Features
|
|
12
|
+
|
|
13
|
+
* clean API
|
|
14
|
+
* robust access to all memcached features
|
|
15
|
+
* SASL support for the binary protocol
|
|
16
|
+
* multiple hashing modes, including consistent hashing
|
|
17
|
+
* ludicrous speed, including optional pipelined IO with no_reply
|
|
18
|
+
|
|
19
|
+
The <b>memcached</b> library wraps the pure-C libmemcached client via SWIG.
|
|
20
|
+
|
|
21
|
+
== Installation
|
|
22
|
+
|
|
23
|
+
You need Ruby 1.8.7 or Ruby 1.9.2. Other versions may work, but are not guaranteed. You also need the `libsasl2-dev` and `gettext` libraries, which should be provided through your system's package manager.
|
|
24
|
+
|
|
25
|
+
Install the gem:
|
|
26
|
+
sudo gem install memcached --no-rdoc --no-ri
|
|
27
|
+
|
|
28
|
+
== Usage
|
|
29
|
+
|
|
30
|
+
Start a local networked memcached server:
|
|
31
|
+
$ memcached -p 11211 &
|
|
32
|
+
|
|
33
|
+
Now, in Ruby, require the library and instantiate a Memcached object at a global level:
|
|
34
|
+
|
|
35
|
+
require 'memcached'
|
|
36
|
+
$cache = Memcached.new("localhost:11211")
|
|
37
|
+
|
|
38
|
+
Now you can set things and get things:
|
|
39
|
+
|
|
40
|
+
value = 'hello'
|
|
41
|
+
$cache.set 'test', value
|
|
42
|
+
$cache.get 'test' #=> "hello"
|
|
43
|
+
|
|
44
|
+
You can set with an expiration timeout:
|
|
45
|
+
|
|
46
|
+
value = 'hello'
|
|
47
|
+
$cache.set 'test', value, 1
|
|
48
|
+
sleep(2)
|
|
49
|
+
$cache.get 'test' #=> raises Memcached::NotFound
|
|
50
|
+
|
|
51
|
+
You can get multiple values at once:
|
|
52
|
+
|
|
53
|
+
value = 'hello'
|
|
54
|
+
$cache.set 'test', value
|
|
55
|
+
$cache.set 'test2', value
|
|
56
|
+
$cache.get ['test', 'test2', 'missing']
|
|
57
|
+
#=> {"test" => "hello", "test2" => "hello"}
|
|
58
|
+
|
|
59
|
+
You can set a counter and increment it. Note that you must initialize it with an integer, encoded as an unmarshalled ASCII string:
|
|
60
|
+
|
|
61
|
+
start = 1
|
|
62
|
+
$cache.set 'counter', start.to_s, 0, false
|
|
63
|
+
$cache.increment 'counter' #=> 2
|
|
64
|
+
$cache.increment 'counter' #=> 3
|
|
65
|
+
$cache.get('counter', false).to_i #=> 3
|
|
66
|
+
|
|
67
|
+
You can get some server stats:
|
|
68
|
+
|
|
69
|
+
$cache.stats #=> {..., :bytes_written=>[62], :version=>["1.2.4"] ...}
|
|
70
|
+
|
|
71
|
+
Note that the API is not the same as that of <b>Ruby-MemCache</b> or <b>memcache-client</b>. In particular, <tt>nil</tt> is a valid record value. Memcached#get does not return <tt>nil</tt> on failure, rather it raises <b>Memcached::NotFound</b>. This is consistent with the behavior of memcached itself. For example:
|
|
72
|
+
|
|
73
|
+
$cache.set 'test', nil
|
|
74
|
+
$cache.get 'test' #=> nil
|
|
75
|
+
$cache.delete 'test'
|
|
76
|
+
$cache.get 'test' #=> raises Memcached::NotFound
|
|
77
|
+
|
|
78
|
+
== Rails 3 and 4
|
|
79
|
+
|
|
80
|
+
Use {memcached_store gem}[https://github.com/Shopify/memcached_store] to integrate ActiveSupport cache store and memcached gem
|
|
81
|
+
|
|
82
|
+
== Pipelining
|
|
83
|
+
|
|
84
|
+
Pipelining updates is extremely effective in <b>memcached</b>, leading to more than 25x write throughput than the default settings. Use the following options to enable it:
|
|
85
|
+
|
|
86
|
+
:no_block => true,
|
|
87
|
+
:buffer_requests => true,
|
|
88
|
+
:noreply => true,
|
|
89
|
+
:binary_protocol => false
|
|
90
|
+
|
|
91
|
+
Currently #append, #prepend, #set, and #delete are pipelined. Note that when you perform a read, all pending writes are flushed to the servers.
|
|
92
|
+
|
|
93
|
+
== Threading
|
|
94
|
+
|
|
95
|
+
<b>memcached</b> is threadsafe, but each thread requires its own Memcached instance. Create a global Memcached, and then call Memcached#clone each time you spawn a thread.
|
|
96
|
+
|
|
97
|
+
thread = Thread.new do
|
|
98
|
+
cache = $cache.clone
|
|
99
|
+
# Perform operations on cache, not $cache
|
|
100
|
+
cache.set 'example', 1
|
|
101
|
+
cache.get 'example'
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
# Join the thread so that exceptions don't get lost
|
|
105
|
+
thread.join
|
|
106
|
+
|
|
107
|
+
== Legacy applications
|
|
108
|
+
|
|
109
|
+
There is a compatibility wrapper for legacy applications called Memcached::Rails.
|
|
110
|
+
|
|
111
|
+
== Benchmarks
|
|
112
|
+
|
|
113
|
+
<b>memcached</b>, correctly configured, is at least twice as fast as <b>memcache-client</b> and <b>dalli</b>. See link:BENCHMARKS for details.
|
|
114
|
+
|
|
115
|
+
== Reporting problems
|
|
116
|
+
|
|
117
|
+
The support forum is here[http://github.com/evan/memcached/issues].
|
|
118
|
+
|
|
119
|
+
Patches and contributions are very welcome. Please note that contributors are required to assign copyright for their additions to Cloudburst, LLC.
|
|
120
|
+
|
|
121
|
+
== Further resources
|
|
122
|
+
|
|
123
|
+
* {Memcached wiki}[https://code.google.com/p/memcached/wiki/NewStart]
|
|
124
|
+
* {Libmemcached homepage}[libmemcached.org]
|
data/Rakefile
ADDED
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
require 'echoe'
|
|
2
|
+
|
|
3
|
+
# ENV["GEM_CERTIFICATE_CHAIN"]="memcached.pem"
|
|
4
|
+
|
|
5
|
+
Echoe.new("memcached") do |p|
|
|
6
|
+
p.author = "Evan Weaver"
|
|
7
|
+
p.project = "evan"
|
|
8
|
+
p.summary = "An interface to the libmemcached C client."
|
|
9
|
+
p.licenses = "Academic Free License 3.0 (AFL-3.0)"
|
|
10
|
+
p.rdoc_pattern = /README|TODO|LICENSE|CHANGELOG|BENCH|COMPAT|exceptions|experimental.rb|behaviors|rails.rb|memcached.rb/
|
|
11
|
+
p.rdoc_options = %w[--line-numbers --inline-source --title Memcached --main README.rdoc --exclude=ext/bin --exclude=ext/libmemcached-.*/(clients|tests)]
|
|
12
|
+
p.retain_gemspec = true
|
|
13
|
+
p.development_dependencies = ["rake", "mocha", "echoe", "activesupport"]
|
|
14
|
+
p.clean_pattern += ["ext/Makefile",
|
|
15
|
+
"ext/bin",
|
|
16
|
+
"ext/include",
|
|
17
|
+
"ext/lib",
|
|
18
|
+
"ext/share",
|
|
19
|
+
"ext/**/Makefile",
|
|
20
|
+
"ext/Makefile.in",
|
|
21
|
+
"ext/libmemcached-*/autom4te.cache",
|
|
22
|
+
"ext/libmemcached-*/clients/memcat",
|
|
23
|
+
"ext/libmemcached-*/clients/memcp",
|
|
24
|
+
"ext/libmemcached-*/clients/memdump",
|
|
25
|
+
"ext/libmemcached-*/clients/memerror",
|
|
26
|
+
"ext/libmemcached-*/clients/memflush",
|
|
27
|
+
"ext/libmemcached-*/clients/memrm",
|
|
28
|
+
"ext/libmemcached-*/clients/memslap",
|
|
29
|
+
"ext/libmemcached-*/clients/memstat",
|
|
30
|
+
"ext/libmemcached-*/tests/atomsmasher",
|
|
31
|
+
"ext/libmemcached-*/tests/startservers",
|
|
32
|
+
"ext/libmemcached-*/tests/testapp",
|
|
33
|
+
"ext/libmemcached-*/tests/testplus",
|
|
34
|
+
"ext/libmemcached-*/tests/udptest",
|
|
35
|
+
"ext/libmemcached-*/config.h",
|
|
36
|
+
"ext/libmemcached-*/config.log",
|
|
37
|
+
"ext/libmemcached-*/config.status",
|
|
38
|
+
"ext/libmemcached-*/docs/*.[1,3]",
|
|
39
|
+
"ext/libmemcached-*/libmemcached/memcached_configure.h",
|
|
40
|
+
"ext/libmemcached-*/libtool",
|
|
41
|
+
"ext/libmemcached-*/stamp*",
|
|
42
|
+
"ext/libmemcached-*/support/libmemcached.pc",
|
|
43
|
+
"ext/libmemcached-*/support/libmemcached-fc.spec",
|
|
44
|
+
"ext/libmemcached-*/**/*.s[oa]",
|
|
45
|
+
"ext/libmemcached-*/**/*.l[oa]",
|
|
46
|
+
"ext/conftest.dSYM",
|
|
47
|
+
"lib/rlibmemcached*",
|
|
48
|
+
"**/*.rbc"]
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
task :swig do
|
|
52
|
+
run("swig -DLIBMEMCACHED_WITH_SASL_SUPPORT -Iext/libmemcached-0.32 -ruby -autorename -o ext/rlibmemcached_wrap.c.in ext/rlibmemcached.i", "Running SWIG")
|
|
53
|
+
swig_patches = {
|
|
54
|
+
"#ifndef RUBY_INIT_STACK" => "#ifdef __NEVER__" # Patching SWIG output for JRuby.
|
|
55
|
+
}.map{|pair| "s/#{pair.join('/')}/"}.join(';')
|
|
56
|
+
# sed has different syntax for inplace switch in BSD and GNU version, so using intermediate file
|
|
57
|
+
run("sed '#{swig_patches}' ext/rlibmemcached_wrap.c.in > ext/rlibmemcached_wrap.c", "Apply patches to SWIG output")
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
task :exceptions do
|
|
61
|
+
$LOAD_PATH << "lib"
|
|
62
|
+
require 'memcached'
|
|
63
|
+
Memcached.constants.sort.each do |const_name|
|
|
64
|
+
const = Memcached.send(:const_get, const_name)
|
|
65
|
+
next if const == Memcached::Success or const == Memcached::Stored
|
|
66
|
+
if const.is_a? Class and const < Memcached::Error
|
|
67
|
+
puts "* Memcached::#{const_name}"
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
task :benchmark do
|
|
73
|
+
exec("ruby #{File.dirname(__FILE__)}/test/profile/benchmark.rb")
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
task :rb_profile do
|
|
77
|
+
exec("ruby #{File.dirname(__FILE__)}/test/profile/rb_profiler.rb")
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
task :c_profile do
|
|
81
|
+
exec("ruby #{File.dirname(__FILE__)}/test/profile/c_profiler.rb")
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
task :valgrind do
|
|
85
|
+
exec("ruby #{File.dirname(__FILE__)}/test/profile/valgrind.rb")
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def with_vm(vm, cmd)
|
|
89
|
+
bindir = vm.split("/")[0..-2].join("/")
|
|
90
|
+
puts "#{vm} #{cmd} started"
|
|
91
|
+
if !File.exist?("#{bindir}/rake")
|
|
92
|
+
puts "#{vm} not found"
|
|
93
|
+
exit(1)
|
|
94
|
+
elsif system("bash --norc --noprofile -c 'export PATH=#{bindir}:/bin:/usr/bin && which rake && #{bindir}/rake clean && #{bindir}/rake compile'")
|
|
95
|
+
puts "#{vm} compiled"
|
|
96
|
+
if system("bash --norc --noprofile -c 'export PATH=#{bindir}:/bin:/usr/bin && #{bindir}/rake #{cmd}'")
|
|
97
|
+
puts "#{vm} #{cmd} success (1st try)"
|
|
98
|
+
elsif system("bash --norc --noprofile -c 'export PATH=#{bindir}:/bin:/usr/bin && #{bindir}/rake #{cmd}'")
|
|
99
|
+
puts "#{vm} #{cmd} success (2nd try)"
|
|
100
|
+
else
|
|
101
|
+
puts "#{vm} #{cmd} failed"
|
|
102
|
+
exit(1)
|
|
103
|
+
end
|
|
104
|
+
else
|
|
105
|
+
puts "#{vm} compilation failed"
|
|
106
|
+
exit(1)
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
task :test_20 do
|
|
111
|
+
with_vm("/usr/bin/ruby", "test")
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
task :test_19 do
|
|
115
|
+
with_vm("/opt/local/bin/ruby1.9", "test")
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
task :test_rbx do
|
|
119
|
+
with_vm("/usr/local/rubinius/1.2.4/bin/rbx", "test")
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
task :test_all => [:test_20, :test_19, :test_rbx]
|
|
123
|
+
|
|
124
|
+
task :prerelease => [:manifest, :test_all, :install]
|
|
125
|
+
|
|
126
|
+
task :benchmark_all do
|
|
127
|
+
with_vms("benchmark CLIENT=libm")
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
def run(cmd, reason)
|
|
131
|
+
puts reason
|
|
132
|
+
puts cmd
|
|
133
|
+
raise "'#{cmd}' failed" unless system(cmd)
|
|
134
|
+
end
|
data/TODO
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
* Remove SWIG and modify libmemcached to accept and return Ruby objects directly
|
data/ext/extconf-make.rb
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require 'rbconfig'
|
|
2
|
+
|
|
3
|
+
$CXXFLAGS = ENV['CXXFLAGS']
|
|
4
|
+
$PATH = ENV['SOURCE_DIR']
|
|
5
|
+
$GMAKE_CMD = ENV['GMAKE_CMD']
|
|
6
|
+
|
|
7
|
+
HERE = ENV['HERE']
|
|
8
|
+
|
|
9
|
+
BSD = RbConfig::CONFIG['build_os'] =~ /^freebsd|^openbsd/
|
|
10
|
+
|
|
11
|
+
Dir.chdir(HERE)
|
|
12
|
+
|
|
13
|
+
old_dir = Dir.pwd
|
|
14
|
+
|
|
15
|
+
Dir.chdir($PATH)
|
|
16
|
+
|
|
17
|
+
system("cd .") if BSD #Fix for a "quirk" that BSD has..
|
|
18
|
+
|
|
19
|
+
puts(cmd = "#{$GMAKE_CMD} CXXFLAGS='#{$CXXFLAGS}' || true 2>&1")
|
|
20
|
+
raise "'#{cmd}' failed" unless system(cmd)
|
|
21
|
+
|
|
22
|
+
puts(cmd = "#{$GMAKE_CMD} install || true 2>&1")
|
|
23
|
+
raise "'#{cmd}' failed" unless system(cmd)
|
|
24
|
+
|
|
25
|
+
Dir.chdir(old_dir)
|
data/ext/extconf.rb
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
require 'mkmf'
|
|
2
|
+
require 'rbconfig'
|
|
3
|
+
|
|
4
|
+
unless find_header('sasl/sasl.h')
|
|
5
|
+
abort 'Please install SASL to continue. The package is called libsasl2-dev on Ubuntu and cyrus-sasl on Gentoo.'
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
HERE = File.expand_path(File.dirname(__FILE__))
|
|
9
|
+
BUNDLE_PATH = Dir.glob("libmemcached-*").first
|
|
10
|
+
|
|
11
|
+
SOLARIS_32 = RbConfig::CONFIG['target'] == "i386-pc-solaris2.10"
|
|
12
|
+
BSD = RbConfig::CONFIG['host_os'].downcase =~ /bsd/
|
|
13
|
+
|
|
14
|
+
$CFLAGS = "#{RbConfig::CONFIG['CFLAGS']} #{$CFLAGS}".gsub("$(cflags)", "").gsub("-fno-common", "").gsub("-Werror=declaration-after-statement", "")
|
|
15
|
+
$CFLAGS << " -std=gnu99" if SOLARIS_32
|
|
16
|
+
$CFLAGS << " -I/usr/local/include" if BSD
|
|
17
|
+
$EXTRA_CONF = " --disable-64bit" if SOLARIS_32
|
|
18
|
+
$LDFLAGS = "#{RbConfig::CONFIG['LDFLAGS']} #{$LDFLAGS} -L#{RbConfig::CONFIG['libdir']}".gsub("$(ldflags)", "").gsub("-fno-common", "")
|
|
19
|
+
$CXXFLAGS = "#{RbConfig::CONFIG['CXXFLAGS']} -std=gnu++98"
|
|
20
|
+
$CC = "CC=#{RbConfig::MAKEFILE_CONFIG["CC"].inspect}"
|
|
21
|
+
|
|
22
|
+
# JRuby's default configure options can't build libmemcached properly
|
|
23
|
+
LIBM_CFLAGS = defined?(JRUBY_VERSION) ? "-fPIC -g -O2" : $CFLAGS
|
|
24
|
+
LIBM_LDFLAGS = defined?(JRUBY_VERSION) ? "-fPIC -lsasl2 -lm" : $LDFLAGS
|
|
25
|
+
|
|
26
|
+
GMAKE_CMD = RbConfig::CONFIG['host_os'].downcase =~ /bsd|solaris/ ? "gmake" : "make"
|
|
27
|
+
TAR_CMD = SOLARIS_32 ? 'gtar' : 'tar'
|
|
28
|
+
PATCH_CMD = SOLARIS_32 ? 'gpatch' : 'patch'
|
|
29
|
+
|
|
30
|
+
if ENV['DEBUG']
|
|
31
|
+
puts "Setting debug flags."
|
|
32
|
+
$CFLAGS << " -O0 -ggdb -DHAVE_DEBUG"
|
|
33
|
+
$EXTRA_CONF = ""
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def check_libmemcached
|
|
37
|
+
return if ENV["EXTERNAL_LIB"]
|
|
38
|
+
|
|
39
|
+
$includes = " -I#{HERE}/include"
|
|
40
|
+
$libraries = " -L#{HERE}/lib"
|
|
41
|
+
$CFLAGS = "#{$includes} #{$libraries} #{$CFLAGS}"
|
|
42
|
+
$LDFLAGS = "-lsasl2 -lm #{$libraries} #{$LDFLAGS}"
|
|
43
|
+
$LIBPATH = ["#{HERE}/lib"]
|
|
44
|
+
$DEFLIBPATH = [] unless SOLARIS_32
|
|
45
|
+
|
|
46
|
+
Dir.chdir(HERE) do
|
|
47
|
+
Dir.chdir(BUNDLE_PATH) do
|
|
48
|
+
ts_now=Time.now.strftime("%Y%m%d%H%M.%S")
|
|
49
|
+
run("find . | xargs touch -t #{ts_now}", "Touching all files so autoconf doesn't run.")
|
|
50
|
+
run("env CFLAGS='-fPIC #{LIBM_CFLAGS}' LDFLAGS='-fPIC #{LIBM_LDFLAGS}' ./configure --prefix=#{HERE} --libdir=#{HERE}/lib --without-memcached --disable-shared --disable-utils --disable-dependency-tracking #{$CC} #{$EXTRA_CONF} 2>&1", "Configuring libmemcached.")
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
Dir.chdir(BUNDLE_PATH) do
|
|
54
|
+
#Running the make command in another script invoked by another shell command solves the "cd ." issue on FreeBSD 6+
|
|
55
|
+
run("GMAKE_CMD='#{GMAKE_CMD}' CXXFLAGS='#{$CXXFLAGS} #{LIBM_CFLAGS}' SOURCE_DIR='#{BUNDLE_PATH}' HERE='#{HERE}' ruby ../extconf-make.rb", "Making libmemcached.")
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# Absolutely prevent the linker from picking up any other libmemcached
|
|
60
|
+
Dir.chdir("#{HERE}/lib") do
|
|
61
|
+
system("cp -f libmemcached.a libmemcached_gem.a")
|
|
62
|
+
system("cp -f libmemcached.la libmemcached_gem.la")
|
|
63
|
+
end
|
|
64
|
+
$LIBS << " -lmemcached_gem -lsasl2"
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def run(cmd, reason)
|
|
68
|
+
puts reason
|
|
69
|
+
puts cmd
|
|
70
|
+
raise "'#{cmd}' failed" unless system(cmd)
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
check_libmemcached
|
|
74
|
+
|
|
75
|
+
$CFLAGS << " -Os"
|
|
76
|
+
create_makefile 'rlibmemcached'
|
|
77
|
+
run("mv Makefile Makefile.in", "Copy Makefile")
|
|
78
|
+
run("sed 's/-I.opt.local.include//' Makefile.in > Makefile", "Remove MacPorts from the include path")
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
Brian Aker, brian@tangent.org -- Client Library, Tools
|
|
2
|
+
Mark Atwood, -- Tools, Docs
|
|
3
|
+
Patrick Galbraith, -- C++ Interface
|
|
4
|
+
Tim Bunce, -- Docs
|
|
5
|
+
Trond Norbye, trond.norbye@sun.com -- Binary protocol, Misc
|
|
6
|
+
Yin Chen, -- Ketama Work
|
|
7
|
+
Toru Maesaka, dev@torum.net -- Stats analysis
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
Software License Agreement (BSD License)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2007, TangentOrg (Brian Aker)
|
|
4
|
+
All rights reserved.
|
|
5
|
+
|
|
6
|
+
Redistribution and use in source and binary forms, with or without
|
|
7
|
+
modification, are permitted provided that the following conditions are
|
|
8
|
+
met:
|
|
9
|
+
|
|
10
|
+
* Redistributions of source code must retain the above copyright
|
|
11
|
+
notice, this list of conditions and the following disclaimer.
|
|
12
|
+
|
|
13
|
+
* Redistributions in binary form must reproduce the above
|
|
14
|
+
copyright notice, this list of conditions and the following disclaimer
|
|
15
|
+
in the documentation and/or other materials provided with the
|
|
16
|
+
distribution.
|
|
17
|
+
|
|
18
|
+
* Neither the name of TangentOrg nor the names of its
|
|
19
|
+
contributors may be used to endorse or promote products derived from
|
|
20
|
+
this software without specific prior written permission.
|
|
21
|
+
|
|
22
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
23
|
+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
24
|
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
25
|
+
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
26
|
+
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
27
|
+
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
28
|
+
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
29
|
+
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
30
|
+
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
31
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
32
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|