nutcracker 0.3.0.12 → 0.4.0.13
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -13
- data/README.md +3 -3
- data/Rakefile +12 -10
- data/ext/nutcracker/Makefile.in +215 -162
- data/ext/nutcracker/README.md +16 -4
- data/ext/nutcracker/aclocal.m4 +432 -254
- data/ext/nutcracker/{contrib/yaml-0.1.4/configure → autom4te.cache/output.0} +11367 -4545
- data/ext/nutcracker/autom4te.cache/output.1 +19907 -0
- data/ext/nutcracker/autom4te.cache/output.2 +19907 -0
- data/ext/nutcracker/autom4te.cache/requests +518 -0
- data/ext/nutcracker/autom4te.cache/traces.0 +2715 -0
- data/ext/nutcracker/autom4te.cache/traces.1 +967 -0
- data/ext/nutcracker/autom4te.cache/traces.2 +2715 -0
- data/ext/nutcracker/config/compile +347 -0
- data/ext/nutcracker/config/config.guess +116 -78
- data/ext/nutcracker/config/config.sub +65 -45
- data/ext/nutcracker/config/depcomp +295 -192
- data/ext/nutcracker/config/install-sh +7 -7
- data/ext/nutcracker/config/ltmain.sh +15 -20
- data/ext/nutcracker/config/missing +149 -265
- data/ext/nutcracker/configure +493 -367
- data/ext/nutcracker/contrib/Makefile.in +158 -116
- data/ext/nutcracker/extconf.rb +0 -1
- data/ext/nutcracker/m4/libtool.m4 +4 -23
- data/ext/nutcracker/m4/ltoptions.m4 +0 -0
- data/ext/nutcracker/m4/ltsugar.m4 +0 -0
- data/ext/nutcracker/m4/ltversion.m4 +0 -0
- data/ext/nutcracker/m4/lt~obsolete.m4 +0 -0
- data/ext/nutcracker/notes/recommendation.md +1 -1
- data/ext/nutcracker/notes/redis.md +35 -3
- data/ext/nutcracker/scripts/benchmark-mget.py +43 -0
- data/ext/nutcracker/scripts/nutcracker.spec +61 -3
- data/ext/nutcracker/scripts/redis-check.sh +43 -0
- data/ext/nutcracker/src/Makefile.in +205 -142
- data/ext/nutcracker/src/event/Makefile.in +164 -66
- data/ext/nutcracker/src/hashkit/Makefile.in +164 -66
- data/ext/nutcracker/src/nc_conf.c +2 -0
- data/ext/nutcracker/src/nc_connection.c +31 -0
- data/ext/nutcracker/src/nc_connection.h +3 -0
- data/ext/nutcracker/src/nc_core.c +38 -2
- data/ext/nutcracker/src/nc_core.h +11 -0
- data/ext/nutcracker/src/nc_log.c +90 -12
- data/ext/nutcracker/src/nc_log.h +11 -0
- data/ext/nutcracker/src/nc_mbuf.h +1 -1
- data/ext/nutcracker/src/nc_message.c +162 -116
- data/ext/nutcracker/src/nc_message.h +161 -129
- data/ext/nutcracker/src/nc_proxy.c +34 -4
- data/ext/nutcracker/src/nc_request.c +158 -32
- data/ext/nutcracker/src/nc_server.c +59 -5
- data/ext/nutcracker/src/nc_server.h +1 -0
- data/ext/nutcracker/src/nc_signal.c +2 -2
- data/ext/nutcracker/src/nc_stats.c +21 -0
- data/ext/nutcracker/src/nc_stats.h +28 -26
- data/ext/nutcracker/src/nc_string.c +176 -1
- data/ext/nutcracker/src/nc_string.h +26 -0
- data/ext/nutcracker/src/nc_util.c +12 -0
- data/ext/nutcracker/src/nc_util.h +1 -0
- data/ext/nutcracker/src/proto/Makefile.in +164 -66
- data/ext/nutcracker/src/proto/nc_memcache.c +279 -88
- data/ext/nutcracker/src/proto/nc_proto.h +3 -4
- data/ext/nutcracker/src/proto/nc_redis.c +561 -134
- data/lib/nutcracker/version.rb +1 -1
- metadata +31 -67
- data/ext/nutcracker/contrib/yaml-0.1.4/LICENSE +0 -19
- data/ext/nutcracker/contrib/yaml-0.1.4/Makefile.am +0 -20
- data/ext/nutcracker/contrib/yaml-0.1.4/Makefile.in +0 -736
- data/ext/nutcracker/contrib/yaml-0.1.4/README +0 -27
- data/ext/nutcracker/contrib/yaml-0.1.4/aclocal.m4 +0 -956
- data/ext/nutcracker/contrib/yaml-0.1.4/config.h.in +0 -80
- data/ext/nutcracker/contrib/yaml-0.1.4/config/config.guess +0 -1561
- data/ext/nutcracker/contrib/yaml-0.1.4/config/config.sub +0 -1686
- data/ext/nutcracker/contrib/yaml-0.1.4/config/depcomp +0 -630
- data/ext/nutcracker/contrib/yaml-0.1.4/config/install-sh +0 -520
- data/ext/nutcracker/contrib/yaml-0.1.4/config/ltmain.sh +0 -8406
- data/ext/nutcracker/contrib/yaml-0.1.4/config/missing +0 -376
- data/ext/nutcracker/contrib/yaml-0.1.4/configure.ac +0 -75
- data/ext/nutcracker/contrib/yaml-0.1.4/doc/doxygen.cfg +0 -222
- data/ext/nutcracker/contrib/yaml-0.1.4/include/yaml.h +0 -1971
- data/ext/nutcracker/contrib/yaml-0.1.4/m4/libtool.m4 +0 -7357
- data/ext/nutcracker/contrib/yaml-0.1.4/m4/ltoptions.m4 +0 -368
- data/ext/nutcracker/contrib/yaml-0.1.4/m4/ltsugar.m4 +0 -123
- data/ext/nutcracker/contrib/yaml-0.1.4/m4/ltversion.m4 +0 -23
- data/ext/nutcracker/contrib/yaml-0.1.4/m4/lt~obsolete.m4 +0 -92
- data/ext/nutcracker/contrib/yaml-0.1.4/src/Makefile.am +0 -4
- data/ext/nutcracker/contrib/yaml-0.1.4/src/Makefile.in +0 -484
- data/ext/nutcracker/contrib/yaml-0.1.4/src/api.c +0 -1392
- data/ext/nutcracker/contrib/yaml-0.1.4/src/dumper.c +0 -394
- data/ext/nutcracker/contrib/yaml-0.1.4/src/emitter.c +0 -2329
- data/ext/nutcracker/contrib/yaml-0.1.4/src/loader.c +0 -432
- data/ext/nutcracker/contrib/yaml-0.1.4/src/parser.c +0 -1374
- data/ext/nutcracker/contrib/yaml-0.1.4/src/reader.c +0 -465
- data/ext/nutcracker/contrib/yaml-0.1.4/src/scanner.c +0 -3570
- data/ext/nutcracker/contrib/yaml-0.1.4/src/writer.c +0 -141
- data/ext/nutcracker/contrib/yaml-0.1.4/src/yaml_private.h +0 -640
- data/ext/nutcracker/contrib/yaml-0.1.4/tests/Makefile.am +0 -8
- data/ext/nutcracker/contrib/yaml-0.1.4/tests/Makefile.in +0 -675
- data/ext/nutcracker/contrib/yaml-0.1.4/tests/example-deconstructor-alt.c +0 -800
- data/ext/nutcracker/contrib/yaml-0.1.4/tests/example-deconstructor.c +0 -1130
- data/ext/nutcracker/contrib/yaml-0.1.4/tests/example-reformatter-alt.c +0 -217
- data/ext/nutcracker/contrib/yaml-0.1.4/tests/example-reformatter.c +0 -202
- data/ext/nutcracker/contrib/yaml-0.1.4/tests/run-dumper.c +0 -311
- data/ext/nutcracker/contrib/yaml-0.1.4/tests/run-emitter.c +0 -327
- data/ext/nutcracker/contrib/yaml-0.1.4/tests/run-loader.c +0 -63
- data/ext/nutcracker/contrib/yaml-0.1.4/tests/run-parser.c +0 -63
- data/ext/nutcracker/contrib/yaml-0.1.4/tests/run-scanner.c +0 -63
- data/ext/nutcracker/contrib/yaml-0.1.4/tests/test-reader.c +0 -354
- data/ext/nutcracker/contrib/yaml-0.1.4/tests/test-version.c +0 -29
File without changes
|
@@ -69,7 +69,7 @@ Seeing a `SERVER_ERROR` or `-ERR` response should be considered as a transient f
|
|
69
69
|
|
70
70
|
## read, writev and mbuf
|
71
71
|
|
72
|
-
All memory for incoming requests and outgoing responses is allocated in mbuf. Mbuf enables zero copy for requests and responses flowing through the proxy. By default an mbuf is 16K bytes in size and this value can be tuned between 512 and
|
72
|
+
All memory for incoming requests and outgoing responses is allocated in mbuf. Mbuf enables zero copy for requests and responses flowing through the proxy. By default an mbuf is 16K bytes in size and this value can be tuned between 512 and 16M bytes using -m or --mbuf-size=N argument. Every connection has at least one mbuf allocated to it. This means that the number of concurrent connections nutcracker can support is dependent on the mbuf size. A small mbuf allows us to handle more connections, while a large mbuf allows us to read and write more data to and from kernel socket buffers.
|
73
73
|
|
74
74
|
If nutcracker is meant to handle a large number of concurrent client connections, you should set the mbuf size to 512 or 1K bytes.
|
75
75
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
## Redis
|
1
|
+
## Redis Command Support
|
2
2
|
|
3
3
|
### Keys Command
|
4
4
|
|
@@ -39,12 +39,16 @@
|
|
39
39
|
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
|
40
40
|
| RESTORE | Yes | RESTORE key ttl serialized-value |
|
41
41
|
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
|
42
|
-
| SORT |
|
42
|
+
| SORT | Yes* | SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC|DESC] [ALPHA] [STORE destination] |
|
43
43
|
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
|
44
44
|
| TTL | Yes | TTL key |
|
45
45
|
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
|
46
46
|
| TYPE | Yes | TYPE key |
|
47
47
|
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
|
48
|
+
| SCAN | No | SCAN cursor [MATCH pattern] [COUNT count] |
|
49
|
+
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
|
50
|
+
|
51
|
+
* SORT support requires that the supplied keys hash to the same server. You can ensure this by using the same [hashtag](notes/recommendation.md#hash-tags) for all keys in the command.
|
48
52
|
|
49
53
|
### Strings Command
|
50
54
|
|
@@ -77,7 +81,7 @@
|
|
77
81
|
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
|
78
82
|
| MGET | Yes | MGET key [key ...] |
|
79
83
|
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
|
80
|
-
| MSET |
|
84
|
+
| MSET | Yes* | MSET key value [key value ...] |
|
81
85
|
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
|
82
86
|
| MSETNX | No | MSETNX key value [key value ...] |
|
83
87
|
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
|
@@ -96,6 +100,8 @@
|
|
96
100
|
| STRLEN | Yes | STRLEN key |
|
97
101
|
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
|
98
102
|
|
103
|
+
* MSET support is not Atomic
|
104
|
+
|
99
105
|
### Hashes
|
100
106
|
|
101
107
|
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
|
@@ -127,6 +133,8 @@
|
|
127
133
|
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
|
128
134
|
| HVALS | Yes | HVALS key |
|
129
135
|
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
|
136
|
+
| HSCAN | Yes | HSCAN key cursor [MATCH pattern] [COUNT count] |
|
137
|
+
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
|
130
138
|
|
131
139
|
### Lists
|
132
140
|
|
@@ -203,6 +211,8 @@
|
|
203
211
|
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
|
204
212
|
| SUNIONSTORE | Yes* | SUNIONSTORE destination key [key ...] |
|
205
213
|
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
|
214
|
+
| SSCAN | Yes | SSCAN key cursor [MATCH pattern] [COUNT count] |
|
215
|
+
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
|
206
216
|
|
207
217
|
* SIDFF, SDIFFSTORE, SINTER, SINTERSTORE, SMOVE, SUNION and SUNIONSTORE support requires that the supplied keys hash to the same server. You can ensure this by using the same [hashtag](notes/recommendation.md#hash-tags) for all keys in the command. Twemproxy does no checking on its end to verify that all the keys hash to the same server, and the given command is forwarded to the server that the first key hashes to.
|
208
218
|
|
@@ -221,8 +231,12 @@
|
|
221
231
|
| ZINCRBY | Yes | ZINCRBY key increment member |
|
222
232
|
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
|
223
233
|
| ZINTERSTORE | Yes* | ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX] |
|
234
|
+
+------------------------------------------------------------------------------------------------------------------------------------------------------+
|
235
|
+
| ZLEXCOUNT | Yes | ZLEXCOUNT key min max |
|
224
236
|
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
|
225
237
|
| ZRANGE | Yes | ZRANGE key start stop [WITHSCORES] |
|
238
|
+
+------------------------------------------------------------------------------------------------------------------------------------------------------+
|
239
|
+
| ZRANGEBYLEX | Yes | ZRANGEBYLEX key min max [LIMIT offset count] |
|
226
240
|
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
|
227
241
|
| ZRANGEBYSCORE | Yes | ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] |
|
228
242
|
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
|
@@ -230,6 +244,8 @@
|
|
230
244
|
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
|
231
245
|
| ZREM | Yes | ZREM key member [member ...] |
|
232
246
|
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
|
247
|
+
| ZREMRANGEBYLEX | Yes | ZREMRANGEBYLEX key min max |
|
248
|
+
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
|
233
249
|
| ZREMRANGEBYRANK | Yes | ZREMRANGEBYRANK key start stop |
|
234
250
|
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
|
235
251
|
| ZREMRANGEBYSCORE | Yes | ZREMRANGEBYSCORE key min max |
|
@@ -244,9 +260,25 @@
|
|
244
260
|
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
|
245
261
|
| ZUNIONSTORE | Yes* | ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX] |
|
246
262
|
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
|
263
|
+
| ZSCAN | Yes | ZSCAN key cursor [MATCH pattern] [COUNT count] |
|
264
|
+
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
|
247
265
|
|
248
266
|
* ZINTERSTORE and ZUNIONSTORE support requires that the supplied keys hash to the same server. You can ensure this by using the same [hashtag](notes/recommendation.md#hash-tags) for all keys in the command. Twemproxy does no checking on its end to verify that all the keys hash to the same server, and the given command is forwarded to the server that the first key hashes to.
|
249
267
|
|
268
|
+
### HyperLogLog
|
269
|
+
|
270
|
+
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
|
271
|
+
| Command | Supported? | Format |
|
272
|
+
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
|
273
|
+
| PFADD | Yes | PFADD key element [element ...] |
|
274
|
+
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
|
275
|
+
| PFCOUNT | Yes | PFCOUNT key [key ...] |
|
276
|
+
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
|
277
|
+
| PFMERGE | Yes* | PFMERGE destkey sourcekey [sourcekey ...] |
|
278
|
+
+-------------------+------------+---------------------------------------------------------------------------------------------------------------------+
|
279
|
+
|
280
|
+
* PFMERGE support requires that the supplied keys hash to the same server. You can ensure this by using the same [hashtag](notes/recommendation.md#hash-tags) for all keys in the command. Twemproxy does no checking on its end to verify that all the keys hash to the same server, and the given command is forwarded to the server that the first key hashes to.
|
281
|
+
|
250
282
|
|
251
283
|
### Pub/Sub
|
252
284
|
|
@@ -0,0 +1,43 @@
|
|
1
|
+
#!/usr/bin/env python
|
2
|
+
#coding: utf-8
|
3
|
+
#file : test_mget.py
|
4
|
+
#author : ning
|
5
|
+
#date : 2014-04-01 13:15:48
|
6
|
+
|
7
|
+
import os
|
8
|
+
import re
|
9
|
+
import commands
|
10
|
+
|
11
|
+
ports = [
|
12
|
+
4001, # before improve
|
13
|
+
4000, # after improve
|
14
|
+
2000 # redis
|
15
|
+
]
|
16
|
+
|
17
|
+
def system(cmd):
|
18
|
+
return commands.getoutput(cmd)
|
19
|
+
|
20
|
+
def extra(regex, text):
|
21
|
+
match = re.search(regex, text, re.DOTALL)
|
22
|
+
if match:
|
23
|
+
return match.group(1)
|
24
|
+
|
25
|
+
def testit():
|
26
|
+
for mget_size in [10, 100, 1000, 10000]:
|
27
|
+
for port in ports:
|
28
|
+
cnt = 100*1000 / mget_size
|
29
|
+
clients = 50
|
30
|
+
if mget_size == 10000:
|
31
|
+
clients = 2
|
32
|
+
cmd = 'cd /home/ning/xredis/deploy-srcs/redis-2.8.3/src && ./redis-benchmark.%d -n %d -p %d -t mget -r 1000000000 -c %d' % (mget_size, cnt, port, clients)
|
33
|
+
#print cmd
|
34
|
+
rst = system(cmd)
|
35
|
+
|
36
|
+
#100.00% <= 2 milliseconds
|
37
|
+
#28089.89 requests per second
|
38
|
+
rtime = extra('100.00% <= (\d+) milliseconds', rst)
|
39
|
+
qps = extra('([\.\d]+) requests per second', rst)
|
40
|
+
|
41
|
+
print 'mget_size=%d on %d: pqs: %s, rtime: %s' % (mget_size, port, qps, rtime)
|
42
|
+
|
43
|
+
testit()
|
@@ -1,20 +1,28 @@
|
|
1
1
|
Summary: Twitter's nutcracker redis and memcached proxy
|
2
2
|
Name: nutcracker
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.3.0
|
4
4
|
Release: 1
|
5
|
-
|
5
|
+
|
6
|
+
URL: https://github.com/twitter/twemproxy/
|
6
7
|
Source0: %{name}-%{version}.tar.gz
|
7
8
|
License: Apache License 2.0
|
8
9
|
Group: System Environment/Libraries
|
9
|
-
Packager:
|
10
|
+
Packager: Tom Parrott <tomp@tomp.co.uk>
|
10
11
|
BuildRoot: %{_tmppath}/%{name}-root
|
11
12
|
|
13
|
+
BuildRequires: autoconf
|
14
|
+
BuildRequires: automake
|
15
|
+
BuildRequires: libtool
|
16
|
+
|
12
17
|
%description
|
13
18
|
twemproxy (pronounced "two-em-proxy"), aka nutcracker is a fast and lightweight proxy for memcached and redis protocol.
|
14
19
|
It was primarily built to reduce the connection count on the backend caching servers.
|
15
20
|
|
16
21
|
%prep
|
17
22
|
%setup -q
|
23
|
+
%if 0%{?rhel} == 6
|
24
|
+
sed -i 's/2.64/2.63/g' configure.ac
|
25
|
+
%endif
|
18
26
|
autoreconf -fvi
|
19
27
|
|
20
28
|
%build
|
@@ -47,6 +55,56 @@ fi
|
|
47
55
|
|
48
56
|
%files
|
49
57
|
%defattr(-,root,root,-)
|
58
|
+
%if 0%{?rhel} == 6
|
59
|
+
/usr/sbin/nutcracker
|
60
|
+
%else
|
50
61
|
/usr/bin/nutcracker
|
62
|
+
%endif
|
51
63
|
%{_initrddir}/%{name}
|
64
|
+
%{_mandir}/man8/nutcracker.8.gz
|
52
65
|
%config(noreplace)%{_sysconfdir}/%{name}/%{name}.yml
|
66
|
+
|
67
|
+
%changelog
|
68
|
+
* Fri Dec 20 2013 Manju Rajashekhar <manj@cs.stanford.edu>
|
69
|
+
- twemproxy: version 0.3.0 release
|
70
|
+
- SRANDMEMBER support for the optional count argument (mkhq)
|
71
|
+
- Handle case where server responds while the request is still being sent (jdi-tagged)
|
72
|
+
- event ports (solaris/smartos) support
|
73
|
+
- add timestamp when the server was ejected
|
74
|
+
- support for set ex/px/nx/xx for redis 2.6.12 and up (ypocat)
|
75
|
+
- kqueue (bsd) support (ferenyx)
|
76
|
+
- fix parsing redis response to accept integer reply (charsyam)
|
77
|
+
|
78
|
+
* Tue Jul 30 2013 Tait Clarridge <tait@clarridge.ca>
|
79
|
+
- Rebuild SPEC to work with CentOS
|
80
|
+
- Added buildrequires if building with mock/koji
|
81
|
+
|
82
|
+
* Tue Apr 23 2013 Manju Rajashekhar <manj@cs.stanford.edu>
|
83
|
+
- twemproxy: version 0.2.4 release
|
84
|
+
- redis keys must be less than mbuf_data_size() in length (fifsky)
|
85
|
+
- Adds support for DUMP/RESTORE commands in Redis (remotezygote)
|
86
|
+
- Use of the weight value in the modula distribution (mezzatto)
|
87
|
+
- Add support to unix socket connections to servers (mezzatto)
|
88
|
+
- only check for duplicate server name and not 'host:port:weight' when 'name' is configured
|
89
|
+
- crc16 hash support added (mezzatto)
|
90
|
+
|
91
|
+
* Thu Jan 31 2013 Manju Rajashekhar <manj@twitter.com>
|
92
|
+
- twemproxy: version 0.2.3 release
|
93
|
+
- RPOPLPUSH, SDIFF, SDIFFSTORE, SINTER, SINTERSTORE, SMOVE, SUNION, SUNIONSTORE, ZINTERSTORE, and ZUNIONSTORE support (dcartoon)
|
94
|
+
- EVAL and EVALSHA support (ferenyx)
|
95
|
+
- exit 1 if configuration file is invalid (cofyc)
|
96
|
+
- return non-zero exit status when nutcracker cannot start for some reason
|
97
|
+
- use server names in stats (charsyam)
|
98
|
+
- Fix failure to resolve long FQDN name resolve (conmame)
|
99
|
+
- add support for hash tags
|
100
|
+
|
101
|
+
* Thu Oct 18 2012 Manju Rajashekhar <manj@twitter.com>
|
102
|
+
- twemproxy: version 0.2.2 release
|
103
|
+
- fix the off-by-one error when calculating redis key length
|
104
|
+
|
105
|
+
* Fri Oct 12 2012 Manju Rajashekhar <manj@twitter.com>
|
106
|
+
- twemproxy: version 0.2.1 release
|
107
|
+
- don't use buf in conf_add_server
|
108
|
+
- allow an optional instance name for consistent hashing (charsyam)
|
109
|
+
- add --stats-addr=S option
|
110
|
+
- add stats-bind-any -a option (charsyam)
|
@@ -563,6 +563,49 @@ printf '*6\r\n$4\r\nzadd\r\n$7\r\n{zfoo}2\r\n$3\r\n100\r\n$3\r\nbar\r\n$3\r\n101
|
|
563
563
|
printf '*5\r\n$11\r\nzunionstore\r\n$7\r\n{zfoo}3\r\n$1\r\n2\r\n$6\r\n{zfoo}\r\n$7\r\n{zfoo}2\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
|
564
564
|
printf '*5\r\n$6\r\nzrange\r\n$7\r\n{zfoo}3\r\n$1\r\n0\r\n$1\r\n3\r\n$10\r\nWITHSCORES\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
|
565
565
|
|
566
|
+
printf '\nzlexcount\n'
|
567
|
+
printf '*2\r\n$3\r\ndel\r\n$4\r\nzfoo\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
|
568
|
+
printf '*4\r\n$9\r\nzlexcount\r\n$4\r\nzfoo\r\n$2\r\n(a\r\n$2\r\n(z\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
|
569
|
+
printf '*8\r\n$4\r\nzadd\r\n$4\r\nzfoo\r\n$3\r\n100\r\n$3\r\nbar\r\n$3\r\n101\r\n$3\r\nbat\r\n$3\r\n102\r\n$3\r\nbau\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
|
570
|
+
printf '*4\r\n$9\r\nzlexcount\r\n$4\r\nzfoo\r\n$2\r\n(a\r\n$4\r\n[bat\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
|
571
|
+
printf '*4\r\n$9\r\nzlexcount\r\n$4\r\nzfoo\r\n$1\r\n-\r\n$1\r\n+\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
|
572
|
+
|
573
|
+
printf '\nzrangebylex\n'
|
574
|
+
printf '*2\r\n$3\r\ndel\r\n$4\r\nzfoo\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
|
575
|
+
printf '*4\r\n$11\r\nzrangebylex\r\n$4\r\nzfoo\r\n$2\r\n(a\r\n$2\r\n(z\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
|
576
|
+
printf '*8\r\n$4\r\nzadd\r\n$4\r\nzfoo\r\n$3\r\n100\r\n$3\r\nbar\r\n$3\r\n101\r\n$3\r\nbat\r\n$3\r\n102\r\n$3\r\nbau\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
|
577
|
+
printf '*4\r\n$11\r\nzrangebylex\r\n$4\r\nzfoo\r\n$2\r\n(a\r\n$4\r\n[bat\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
|
578
|
+
printf '*4\r\n$11\r\nzrangebylex\r\n$4\r\nzfoo\r\n$1\r\n-\r\n$1\r\n+\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
|
579
|
+
|
580
|
+
printf '\nzremrangebylex\n'
|
581
|
+
printf '*2\r\n$3\r\ndel\r\n$4\r\nzfoo\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
|
582
|
+
printf '*4\r\n$14\r\nzremrangebylex\r\n$4\r\nzfoo\r\n$2\r\n(a\r\n$2\r\n(z\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
|
583
|
+
printf '*8\r\n$4\r\nzadd\r\n$4\r\nzfoo\r\n$3\r\n100\r\n$3\r\nbar\r\n$3\r\n101\r\n$3\r\nbat\r\n$3\r\n102\r\n$3\r\nbau\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
|
584
|
+
printf '*4\r\n$14\r\nzremrangebylex\r\n$4\r\nzfoo\r\n$2\r\n(a\r\n$2\r\n(z\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
|
585
|
+
printf '*4\r\n$14\r\nzremrangebylex\r\n$4\r\nzfoo\r\n$1\r\n-\r\n$1\r\n+\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
|
586
|
+
|
587
|
+
# hyperloglog
|
588
|
+
|
589
|
+
printf '\npfadd\n'
|
590
|
+
printf '*2\r\n$3\r\ndel\r\n$4\r\npfoo\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
|
591
|
+
printf '*4\r\n$5\r\npfadd\r\n$4\r\npfoo\r\n$3\r\nbar\r\n$3\r\nbas\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
|
592
|
+
printf '*2\r\n$7\r\npfcount\r\n$4\r\npfoo\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
|
593
|
+
|
594
|
+
printf '\npfcount\n'
|
595
|
+
printf '*2\r\n$3\r\ndel\r\n$4\r\npfoo\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
|
596
|
+
printf '*2\r\n$7\r\npfcount\r\n$4\r\npfoo\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
|
597
|
+
printf '*4\r\n$5\r\npfadd\r\n$4\r\npfoo\r\n$3\r\nbar\r\n$3\r\nbas\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
|
598
|
+
printf '*2\r\n$7\r\npfcount\r\n$4\r\npfoo\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
|
599
|
+
|
600
|
+
printf '\npfmerge\n'
|
601
|
+
printf '*2\r\n$3\r\ndel\r\n$6\r\n{pfoo}\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
|
602
|
+
printf '*2\r\n$3\r\ndel\r\n$7\r\n{pfoo}2\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
|
603
|
+
printf '*2\r\n$3\r\ndel\r\n$7\r\n{pfoo}3\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
|
604
|
+
printf '*4\r\n$5\r\npfadd\r\n$6\r\n{pfoo}\r\n$4\r\nsfoo\r\n$3\r\nbar\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
|
605
|
+
printf '*3\r\n$5\r\npfadd\r\n$7\r\n{pfoo}2\r\n$3\r\nbas\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
|
606
|
+
printf '*5\r\n$7\r\npfmerge\r\n$7\r\n{pfoo}3\r\n$1\r\n2\r\n$6\r\n{pfoo}\r\n$7\r\n{pfoo}2\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
|
607
|
+
printf '*2\r\n$7\r\npfcount\r\n$7\r\n{pfoo}3\r\n' | socat ${debug} ${timeout} - TCP:localhost:${port},shut-close
|
608
|
+
|
566
609
|
# scripting
|
567
610
|
|
568
611
|
printf '\neval\n'
|
@@ -1,9 +1,8 @@
|
|
1
|
-
# Makefile.in generated by automake 1.
|
1
|
+
# Makefile.in generated by automake 1.14.1 from Makefile.am.
|
2
2
|
# @configure_input@
|
3
3
|
|
4
|
-
# Copyright (C) 1994
|
5
|
-
|
6
|
-
# Foundation, Inc.
|
4
|
+
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
|
5
|
+
|
7
6
|
# This Makefile.in is free software; the Free Software Foundation
|
8
7
|
# gives unlimited permission to copy and/or distribute it,
|
9
8
|
# with or without modifications, as long as this notice is preserved.
|
@@ -16,6 +15,51 @@
|
|
16
15
|
@SET_MAKE@
|
17
16
|
|
18
17
|
VPATH = @srcdir@
|
18
|
+
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
|
19
|
+
am__make_running_with_option = \
|
20
|
+
case $${target_option-} in \
|
21
|
+
?) ;; \
|
22
|
+
*) echo "am__make_running_with_option: internal error: invalid" \
|
23
|
+
"target option '$${target_option-}' specified" >&2; \
|
24
|
+
exit 1;; \
|
25
|
+
esac; \
|
26
|
+
has_opt=no; \
|
27
|
+
sane_makeflags=$$MAKEFLAGS; \
|
28
|
+
if $(am__is_gnu_make); then \
|
29
|
+
sane_makeflags=$$MFLAGS; \
|
30
|
+
else \
|
31
|
+
case $$MAKEFLAGS in \
|
32
|
+
*\\[\ \ ]*) \
|
33
|
+
bs=\\; \
|
34
|
+
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
35
|
+
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
36
|
+
esac; \
|
37
|
+
fi; \
|
38
|
+
skip_next=no; \
|
39
|
+
strip_trailopt () \
|
40
|
+
{ \
|
41
|
+
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
42
|
+
}; \
|
43
|
+
for flg in $$sane_makeflags; do \
|
44
|
+
test $$skip_next = yes && { skip_next=no; continue; }; \
|
45
|
+
case $$flg in \
|
46
|
+
*=*|--*) continue;; \
|
47
|
+
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
48
|
+
-*I?*) strip_trailopt 'I';; \
|
49
|
+
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
50
|
+
-*O?*) strip_trailopt 'O';; \
|
51
|
+
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
52
|
+
-*l?*) strip_trailopt 'l';; \
|
53
|
+
-[dEDm]) skip_next=yes;; \
|
54
|
+
-[JT]) skip_next=yes;; \
|
55
|
+
esac; \
|
56
|
+
case $$flg in \
|
57
|
+
*$$target_option*) has_opt=yes; break;; \
|
58
|
+
esac; \
|
59
|
+
done; \
|
60
|
+
test $$has_opt = yes
|
61
|
+
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
62
|
+
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
19
63
|
pkgdatadir = $(datadir)/@PACKAGE@
|
20
64
|
pkgincludedir = $(includedir)/@PACKAGE@
|
21
65
|
pkglibdir = $(libdir)/@PACKAGE@
|
@@ -38,7 +82,8 @@ host_triplet = @host@
|
|
38
82
|
@OS_SOLARIS_TRUE@am__append_2 = -lnsl -lsocket
|
39
83
|
sbin_PROGRAMS = nutcracker$(EXEEXT)
|
40
84
|
subdir = src
|
41
|
-
DIST_COMMON = $(srcdir)/Makefile.
|
85
|
+
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
|
86
|
+
$(top_srcdir)/config/depcomp
|
42
87
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
43
88
|
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
44
89
|
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
@@ -64,33 +109,84 @@ nutcracker_DEPENDENCIES = $(top_builddir)/src/hashkit/libhashkit.a \
|
|
64
109
|
$(top_builddir)/src/proto/libproto.a \
|
65
110
|
$(top_builddir)/src/event/libevent.a \
|
66
111
|
$(top_builddir)/contrib/yaml-0.1.4/src/.libs/libyaml.a
|
112
|
+
AM_V_lt = $(am__v_lt_@AM_V@)
|
113
|
+
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
|
114
|
+
am__v_lt_0 = --silent
|
115
|
+
am__v_lt_1 =
|
116
|
+
AM_V_P = $(am__v_P_@AM_V@)
|
117
|
+
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
118
|
+
am__v_P_0 = false
|
119
|
+
am__v_P_1 = :
|
120
|
+
AM_V_GEN = $(am__v_GEN_@AM_V@)
|
121
|
+
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
122
|
+
am__v_GEN_0 = @echo " GEN " $@;
|
123
|
+
am__v_GEN_1 =
|
124
|
+
AM_V_at = $(am__v_at_@AM_V@)
|
125
|
+
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
126
|
+
am__v_at_0 = @
|
127
|
+
am__v_at_1 =
|
67
128
|
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
|
68
129
|
depcomp = $(SHELL) $(top_srcdir)/config/depcomp
|
69
130
|
am__depfiles_maybe = depfiles
|
70
131
|
am__mv = mv -f
|
71
132
|
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
72
133
|
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
73
|
-
LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS)
|
74
|
-
--mode=compile $(CC) $(DEFS)
|
75
|
-
$(
|
134
|
+
LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
135
|
+
$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
|
136
|
+
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
137
|
+
$(AM_CFLAGS) $(CFLAGS)
|
138
|
+
AM_V_CC = $(am__v_CC_@AM_V@)
|
139
|
+
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
|
140
|
+
am__v_CC_0 = @echo " CC " $@;
|
141
|
+
am__v_CC_1 =
|
76
142
|
CCLD = $(CC)
|
77
|
-
LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS)
|
78
|
-
--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS)
|
79
|
-
$(LDFLAGS) -o $@
|
143
|
+
LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
144
|
+
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
145
|
+
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
146
|
+
AM_V_CCLD = $(am__v_CCLD_@AM_V@)
|
147
|
+
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
|
148
|
+
am__v_CCLD_0 = @echo " CCLD " $@;
|
149
|
+
am__v_CCLD_1 =
|
80
150
|
SOURCES = $(nutcracker_SOURCES)
|
81
151
|
DIST_SOURCES = $(nutcracker_SOURCES)
|
82
|
-
RECURSIVE_TARGETS = all-recursive check-recursive
|
83
|
-
|
84
|
-
install-
|
85
|
-
install-
|
86
|
-
install-
|
87
|
-
|
88
|
-
|
152
|
+
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
|
153
|
+
ctags-recursive dvi-recursive html-recursive info-recursive \
|
154
|
+
install-data-recursive install-dvi-recursive \
|
155
|
+
install-exec-recursive install-html-recursive \
|
156
|
+
install-info-recursive install-pdf-recursive \
|
157
|
+
install-ps-recursive install-recursive installcheck-recursive \
|
158
|
+
installdirs-recursive pdf-recursive ps-recursive \
|
159
|
+
tags-recursive uninstall-recursive
|
160
|
+
am__can_run_installinfo = \
|
161
|
+
case $$AM_UPDATE_INFO_DIR in \
|
162
|
+
n|no|NO) false;; \
|
163
|
+
*) (install-info --version) >/dev/null 2>&1;; \
|
164
|
+
esac
|
89
165
|
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
90
166
|
distclean-recursive maintainer-clean-recursive
|
91
|
-
|
92
|
-
|
167
|
+
am__recursive_targets = \
|
168
|
+
$(RECURSIVE_TARGETS) \
|
169
|
+
$(RECURSIVE_CLEAN_TARGETS) \
|
170
|
+
$(am__extra_recursive_targets)
|
171
|
+
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
|
93
172
|
distdir
|
173
|
+
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
174
|
+
# Read a list of newline-separated strings from the standard input,
|
175
|
+
# and print each of them once, without duplicates. Input order is
|
176
|
+
# *not* preserved.
|
177
|
+
am__uniquify_input = $(AWK) '\
|
178
|
+
BEGIN { nonempty = 0; } \
|
179
|
+
{ items[$$0] = 1; nonempty = 1; } \
|
180
|
+
END { if (nonempty) { for (i in items) print i; }; } \
|
181
|
+
'
|
182
|
+
# Make sure the list of sources is unique. This is necessary because,
|
183
|
+
# e.g., the same source file might be shared among _SOURCES variables
|
184
|
+
# for different programs/libraries.
|
185
|
+
am__define_uniq_tagged_files = \
|
186
|
+
list='$(am__tagged_files)'; \
|
187
|
+
unique=`for i in $$list; do \
|
188
|
+
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
189
|
+
done | $(am__uniquify_input)`
|
94
190
|
ETAGS = etags
|
95
191
|
CTAGS = ctags
|
96
192
|
DIST_SUBDIRS = $(SUBDIRS)
|
@@ -122,6 +218,7 @@ am__relativize = \
|
|
122
218
|
reldir="$$dir2"
|
123
219
|
ACLOCAL = @ACLOCAL@
|
124
220
|
AMTAR = @AMTAR@
|
221
|
+
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
125
222
|
AR = @AR@
|
126
223
|
AUTOCONF = @AUTOCONF@
|
127
224
|
AUTOHEADER = @AUTOHEADER@
|
@@ -311,14 +408,19 @@ $(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
|
311
408
|
$(am__aclocal_m4_deps):
|
312
409
|
install-sbinPROGRAMS: $(sbin_PROGRAMS)
|
313
410
|
@$(NORMAL_INSTALL)
|
314
|
-
test -z "$(sbindir)" || $(MKDIR_P) "$(DESTDIR)$(sbindir)"
|
315
411
|
@list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \
|
412
|
+
if test -n "$$list"; then \
|
413
|
+
echo " $(MKDIR_P) '$(DESTDIR)$(sbindir)'"; \
|
414
|
+
$(MKDIR_P) "$(DESTDIR)$(sbindir)" || exit 1; \
|
415
|
+
fi; \
|
316
416
|
for p in $$list; do echo "$$p $$p"; done | \
|
317
417
|
sed 's/$(EXEEXT)$$//' | \
|
318
|
-
while read p p1; do if test -f $$p
|
319
|
-
|
418
|
+
while read p p1; do if test -f $$p \
|
419
|
+
|| test -f $$p1 \
|
420
|
+
; then echo "$$p"; echo "$$p"; else :; fi; \
|
320
421
|
done | \
|
321
|
-
sed -e 'p;s,.*/,,;n;h'
|
422
|
+
sed -e 'p;s,.*/,,;n;h' \
|
423
|
+
-e 's|.*|.|' \
|
322
424
|
-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
|
323
425
|
sed 'N;N;N;s,\n, ,g' | \
|
324
426
|
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
|
@@ -339,7 +441,8 @@ uninstall-sbinPROGRAMS:
|
|
339
441
|
@list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \
|
340
442
|
files=`for p in $$list; do echo "$$p"; done | \
|
341
443
|
sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
|
342
|
-
-e 's/$$/$(EXEEXT)/'
|
444
|
+
-e 's/$$/$(EXEEXT)/' \
|
445
|
+
`; \
|
343
446
|
test -n "$$list" || exit 0; \
|
344
447
|
echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \
|
345
448
|
cd "$(DESTDIR)$(sbindir)" && rm -f $$files
|
@@ -352,9 +455,10 @@ clean-sbinPROGRAMS:
|
|
352
455
|
list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
|
353
456
|
echo " rm -f" $$list; \
|
354
457
|
rm -f $$list
|
458
|
+
|
355
459
|
nutcracker$(EXEEXT): $(nutcracker_OBJECTS) $(nutcracker_DEPENDENCIES) $(EXTRA_nutcracker_DEPENDENCIES)
|
356
460
|
@rm -f nutcracker$(EXEEXT)
|
357
|
-
$(LINK) $(nutcracker_OBJECTS) $(nutcracker_LDADD) $(LIBS)
|
461
|
+
$(AM_V_CCLD)$(LINK) $(nutcracker_OBJECTS) $(nutcracker_LDADD) $(LIBS)
|
358
462
|
|
359
463
|
mostlyclean-compile:
|
360
464
|
-rm -f *.$(OBJEXT)
|
@@ -382,25 +486,25 @@ distclean-compile:
|
|
382
486
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nc_util.Po@am__quote@
|
383
487
|
|
384
488
|
.c.o:
|
385
|
-
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
386
|
-
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
387
|
-
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
489
|
+
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
490
|
+
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
491
|
+
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
388
492
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
389
|
-
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
|
493
|
+
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
|
390
494
|
|
391
495
|
.c.obj:
|
392
|
-
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
393
|
-
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
394
|
-
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
496
|
+
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
497
|
+
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
498
|
+
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
395
499
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
396
|
-
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
|
500
|
+
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
397
501
|
|
398
502
|
.c.lo:
|
399
|
-
@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
400
|
-
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
|
401
|
-
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
503
|
+
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
504
|
+
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
|
505
|
+
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
402
506
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
403
|
-
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
|
507
|
+
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
|
404
508
|
|
405
509
|
mostlyclean-libtool:
|
406
510
|
-rm -f *.lo
|
@@ -409,22 +513,25 @@ clean-libtool:
|
|
409
513
|
-rm -rf .libs _libs
|
410
514
|
|
411
515
|
# This directory's subdirectories are mostly independent; you can cd
|
412
|
-
# into them and run
|
413
|
-
# To change the values of
|
414
|
-
# (1) if the variable is set in
|
415
|
-
# (which will cause the Makefiles to be regenerated when you run
|
416
|
-
# (2) otherwise, pass the desired values on the
|
417
|
-
$(
|
418
|
-
@fail
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
done; \
|
516
|
+
# into them and run 'make' without going through this Makefile.
|
517
|
+
# To change the values of 'make' variables: instead of editing Makefiles,
|
518
|
+
# (1) if the variable is set in 'config.status', edit 'config.status'
|
519
|
+
# (which will cause the Makefiles to be regenerated when you run 'make');
|
520
|
+
# (2) otherwise, pass the desired values on the 'make' command line.
|
521
|
+
$(am__recursive_targets):
|
522
|
+
@fail=; \
|
523
|
+
if $(am__make_keepgoing); then \
|
524
|
+
failcom='fail=yes'; \
|
525
|
+
else \
|
526
|
+
failcom='exit 1'; \
|
527
|
+
fi; \
|
425
528
|
dot_seen=no; \
|
426
529
|
target=`echo $@ | sed s/-recursive//`; \
|
427
|
-
|
530
|
+
case "$@" in \
|
531
|
+
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
532
|
+
*) list='$(SUBDIRS)' ;; \
|
533
|
+
esac; \
|
534
|
+
for subdir in $$list; do \
|
428
535
|
echo "Making $$target in $$subdir"; \
|
429
536
|
if test "$$subdir" = "."; then \
|
430
537
|
dot_seen=yes; \
|
@@ -439,57 +546,12 @@ $(RECURSIVE_TARGETS):
|
|
439
546
|
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
440
547
|
fi; test -z "$$fail"
|
441
548
|
|
442
|
-
$(
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
*=* | --[!k]*);; \
|
447
|
-
*k*) failcom='fail=yes';; \
|
448
|
-
esac; \
|
449
|
-
done; \
|
450
|
-
dot_seen=no; \
|
451
|
-
case "$@" in \
|
452
|
-
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
453
|
-
*) list='$(SUBDIRS)' ;; \
|
454
|
-
esac; \
|
455
|
-
rev=''; for subdir in $$list; do \
|
456
|
-
if test "$$subdir" = "."; then :; else \
|
457
|
-
rev="$$subdir $$rev"; \
|
458
|
-
fi; \
|
459
|
-
done; \
|
460
|
-
rev="$$rev ."; \
|
461
|
-
target=`echo $@ | sed s/-recursive//`; \
|
462
|
-
for subdir in $$rev; do \
|
463
|
-
echo "Making $$target in $$subdir"; \
|
464
|
-
if test "$$subdir" = "."; then \
|
465
|
-
local_target="$$target-am"; \
|
466
|
-
else \
|
467
|
-
local_target="$$target"; \
|
468
|
-
fi; \
|
469
|
-
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
470
|
-
|| eval $$failcom; \
|
471
|
-
done && test -z "$$fail"
|
472
|
-
tags-recursive:
|
473
|
-
list='$(SUBDIRS)'; for subdir in $$list; do \
|
474
|
-
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
475
|
-
done
|
476
|
-
ctags-recursive:
|
477
|
-
list='$(SUBDIRS)'; for subdir in $$list; do \
|
478
|
-
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
479
|
-
done
|
549
|
+
ID: $(am__tagged_files)
|
550
|
+
$(am__define_uniq_tagged_files); mkid -fID $$unique
|
551
|
+
tags: tags-recursive
|
552
|
+
TAGS: tags
|
480
553
|
|
481
|
-
|
482
|
-
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
483
|
-
unique=`for i in $$list; do \
|
484
|
-
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
485
|
-
done | \
|
486
|
-
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
487
|
-
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
488
|
-
mkid -fID $$unique
|
489
|
-
tags: TAGS
|
490
|
-
|
491
|
-
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
492
|
-
$(TAGS_FILES) $(LISP)
|
554
|
+
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
493
555
|
set x; \
|
494
556
|
here=`pwd`; \
|
495
557
|
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
@@ -505,12 +567,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
|
505
567
|
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
|
506
568
|
fi; \
|
507
569
|
done; \
|
508
|
-
|
509
|
-
unique=`for i in $$list; do \
|
510
|
-
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
511
|
-
done | \
|
512
|
-
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
513
|
-
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
570
|
+
$(am__define_uniq_tagged_files); \
|
514
571
|
shift; \
|
515
572
|
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
516
573
|
test -n "$$unique" || unique=$$empty_fix; \
|
@@ -522,15 +579,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
|
522
579
|
$$unique; \
|
523
580
|
fi; \
|
524
581
|
fi
|
525
|
-
ctags:
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
531
|
-
done | \
|
532
|
-
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
533
|
-
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
582
|
+
ctags: ctags-recursive
|
583
|
+
|
584
|
+
CTAGS: ctags
|
585
|
+
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
586
|
+
$(am__define_uniq_tagged_files); \
|
534
587
|
test -z "$(CTAGS_ARGS)$$unique" \
|
535
588
|
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
536
589
|
$$unique
|
@@ -539,6 +592,21 @@ GTAGS:
|
|
539
592
|
here=`$(am__cd) $(top_builddir) && pwd` \
|
540
593
|
&& $(am__cd) $(top_srcdir) \
|
541
594
|
&& gtags -i $(GTAGS_ARGS) "$$here"
|
595
|
+
cscopelist: cscopelist-recursive
|
596
|
+
|
597
|
+
cscopelist-am: $(am__tagged_files)
|
598
|
+
list='$(am__tagged_files)'; \
|
599
|
+
case "$(srcdir)" in \
|
600
|
+
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
601
|
+
*) sdir=$(subdir)/$(srcdir) ;; \
|
602
|
+
esac; \
|
603
|
+
for i in $$list; do \
|
604
|
+
if test -f "$$i"; then \
|
605
|
+
echo "$(subdir)/$$i"; \
|
606
|
+
else \
|
607
|
+
echo "$$sdir/$$i"; \
|
608
|
+
fi; \
|
609
|
+
done >> $(top_builddir)/cscope.files
|
542
610
|
|
543
611
|
distclean-tags:
|
544
612
|
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
@@ -575,13 +643,10 @@ distdir: $(DISTFILES)
|
|
575
643
|
done
|
576
644
|
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
577
645
|
if test "$$subdir" = .; then :; else \
|
578
|
-
|
579
|
-
|
580
|
-
|
581
|
-
|
582
|
-
done
|
583
|
-
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
584
|
-
if test "$$subdir" = .; then :; else \
|
646
|
+
$(am__make_dryrun) \
|
647
|
+
|| test -d "$(distdir)/$$subdir" \
|
648
|
+
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
649
|
+
|| exit 1; \
|
585
650
|
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
|
586
651
|
$(am__relativize); \
|
587
652
|
new_distdir=$$reldir; \
|
@@ -711,24 +776,22 @@ ps-am:
|
|
711
776
|
|
712
777
|
uninstall-am: uninstall-sbinPROGRAMS
|
713
778
|
|
714
|
-
.MAKE: $(
|
715
|
-
|
716
|
-
|
717
|
-
|
718
|
-
|
719
|
-
|
720
|
-
|
721
|
-
|
722
|
-
install install-am install-
|
723
|
-
install-
|
724
|
-
install-
|
725
|
-
install-
|
726
|
-
|
727
|
-
|
728
|
-
|
729
|
-
|
730
|
-
tags tags-recursive uninstall uninstall-am \
|
731
|
-
uninstall-sbinPROGRAMS
|
779
|
+
.MAKE: $(am__recursive_targets) install-am install-strip
|
780
|
+
|
781
|
+
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
|
782
|
+
check-am clean clean-generic clean-libtool clean-sbinPROGRAMS \
|
783
|
+
cscopelist-am ctags ctags-am distclean distclean-compile \
|
784
|
+
distclean-generic distclean-libtool distclean-tags distdir dvi \
|
785
|
+
dvi-am html html-am info info-am install install-am \
|
786
|
+
install-data install-data-am install-dvi install-dvi-am \
|
787
|
+
install-exec install-exec-am install-html install-html-am \
|
788
|
+
install-info install-info-am install-man install-pdf \
|
789
|
+
install-pdf-am install-ps install-ps-am install-sbinPROGRAMS \
|
790
|
+
install-strip installcheck installcheck-am installdirs \
|
791
|
+
installdirs-am maintainer-clean maintainer-clean-generic \
|
792
|
+
mostlyclean mostlyclean-compile mostlyclean-generic \
|
793
|
+
mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
|
794
|
+
uninstall-am uninstall-sbinPROGRAMS
|
732
795
|
|
733
796
|
|
734
797
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|