rroonga 0.9.2-x86-mingw32
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.
- data/AUTHORS +5 -0
- data/NEWS.ja.rdoc +114 -0
- data/NEWS.rdoc +116 -0
- data/README.ja.rdoc +65 -0
- data/README.rdoc +66 -0
- data/Rakefile +206 -0
- data/benchmark/common.rb +49 -0
- data/benchmark/read-write-many-small-items.rb +144 -0
- data/benchmark/write-many-small-items.rb +135 -0
- data/example/bookmark.rb +161 -0
- data/example/index-html.rb +89 -0
- data/example/search/config.ru +230 -0
- data/example/search/public/css/groonga.css +122 -0
- data/ext/.gitignore +2 -0
- data/ext/groonga/extconf.rb +93 -0
- data/ext/groonga/rb-grn-accessor.c +52 -0
- data/ext/groonga/rb-grn-array-cursor.c +36 -0
- data/ext/groonga/rb-grn-array.c +210 -0
- data/ext/groonga/rb-grn-column.c +573 -0
- data/ext/groonga/rb-grn-context.c +662 -0
- data/ext/groonga/rb-grn-database.c +472 -0
- data/ext/groonga/rb-grn-encoding-support.c +64 -0
- data/ext/groonga/rb-grn-encoding.c +257 -0
- data/ext/groonga/rb-grn-exception.c +1110 -0
- data/ext/groonga/rb-grn-expression-builder.c +75 -0
- data/ext/groonga/rb-grn-expression.c +731 -0
- data/ext/groonga/rb-grn-fix-size-column.c +166 -0
- data/ext/groonga/rb-grn-hash-cursor.c +38 -0
- data/ext/groonga/rb-grn-hash.c +294 -0
- data/ext/groonga/rb-grn-index-column.c +488 -0
- data/ext/groonga/rb-grn-logger.c +504 -0
- data/ext/groonga/rb-grn-object.c +1369 -0
- data/ext/groonga/rb-grn-operation.c +198 -0
- data/ext/groonga/rb-grn-patricia-trie-cursor.c +39 -0
- data/ext/groonga/rb-grn-patricia-trie.c +488 -0
- data/ext/groonga/rb-grn-procedure.c +52 -0
- data/ext/groonga/rb-grn-query.c +260 -0
- data/ext/groonga/rb-grn-record.c +40 -0
- data/ext/groonga/rb-grn-snippet.c +334 -0
- data/ext/groonga/rb-grn-table-cursor-key-support.c +69 -0
- data/ext/groonga/rb-grn-table-cursor.c +247 -0
- data/ext/groonga/rb-grn-table-key-support.c +714 -0
- data/ext/groonga/rb-grn-table.c +1977 -0
- data/ext/groonga/rb-grn-type.c +181 -0
- data/ext/groonga/rb-grn-utils.c +769 -0
- data/ext/groonga/rb-grn-variable-size-column.c +36 -0
- data/ext/groonga/rb-grn-variable.c +108 -0
- data/ext/groonga/rb-grn-view-accessor.c +53 -0
- data/ext/groonga/rb-grn-view-cursor.c +35 -0
- data/ext/groonga/rb-grn-view-record.c +41 -0
- data/ext/groonga/rb-grn-view.c +421 -0
- data/ext/groonga/rb-grn.h +698 -0
- data/ext/groonga/rb-groonga.c +107 -0
- data/extconf.rb +130 -0
- data/html/bar.svg +153 -0
- data/html/developer.html +117 -0
- data/html/developer.svg +469 -0
- data/html/download.svg +253 -0
- data/html/favicon.ico +0 -0
- data/html/favicon.xcf +0 -0
- data/html/footer.html.erb +28 -0
- data/html/head.html.erb +4 -0
- data/html/header.html.erb +17 -0
- data/html/index.html +147 -0
- data/html/install.svg +636 -0
- data/html/logo.xcf +0 -0
- data/html/ranguba.css +250 -0
- data/html/tutorial.svg +559 -0
- data/lib/1.8/groonga.so +0 -0
- data/lib/1.9/groonga.so +0 -0
- data/lib/groonga.rb +90 -0
- data/lib/groonga/context.rb +184 -0
- data/lib/groonga/expression-builder.rb +324 -0
- data/lib/groonga/patricia-trie.rb +85 -0
- data/lib/groonga/record.rb +311 -0
- data/lib/groonga/schema.rb +1191 -0
- data/lib/groonga/view-record.rb +56 -0
- data/license/GPL +340 -0
- data/license/LGPL +504 -0
- data/license/RUBY +59 -0
- data/misc/grnop2ruby.rb +49 -0
- data/pkg-config.rb +333 -0
- data/rroonga-build.rb +57 -0
- data/test-unit/Rakefile +40 -0
- data/test-unit/TODO +5 -0
- data/test-unit/bin/testrb +5 -0
- data/test-unit/html/classic.html +15 -0
- data/test-unit/html/index.html +25 -0
- data/test-unit/html/index.html.ja +27 -0
- data/test-unit/lib/test/unit.rb +323 -0
- data/test-unit/lib/test/unit/assertionfailederror.rb +25 -0
- data/test-unit/lib/test/unit/assertions.rb +1230 -0
- data/test-unit/lib/test/unit/attribute.rb +125 -0
- data/test-unit/lib/test/unit/autorunner.rb +360 -0
- data/test-unit/lib/test/unit/collector.rb +36 -0
- data/test-unit/lib/test/unit/collector/descendant.rb +23 -0
- data/test-unit/lib/test/unit/collector/dir.rb +108 -0
- data/test-unit/lib/test/unit/collector/load.rb +144 -0
- data/test-unit/lib/test/unit/collector/objectspace.rb +34 -0
- data/test-unit/lib/test/unit/color-scheme.rb +102 -0
- data/test-unit/lib/test/unit/color.rb +96 -0
- data/test-unit/lib/test/unit/diff.rb +724 -0
- data/test-unit/lib/test/unit/error.rb +130 -0
- data/test-unit/lib/test/unit/exceptionhandler.rb +39 -0
- data/test-unit/lib/test/unit/failure.rb +136 -0
- data/test-unit/lib/test/unit/fixture.rb +176 -0
- data/test-unit/lib/test/unit/notification.rb +129 -0
- data/test-unit/lib/test/unit/omission.rb +191 -0
- data/test-unit/lib/test/unit/pending.rb +150 -0
- data/test-unit/lib/test/unit/priority.rb +180 -0
- data/test-unit/lib/test/unit/runner/console.rb +52 -0
- data/test-unit/lib/test/unit/runner/emacs.rb +8 -0
- data/test-unit/lib/test/unit/runner/tap.rb +8 -0
- data/test-unit/lib/test/unit/testcase.rb +476 -0
- data/test-unit/lib/test/unit/testresult.rb +89 -0
- data/test-unit/lib/test/unit/testsuite.rb +110 -0
- data/test-unit/lib/test/unit/ui/console/outputlevel.rb +14 -0
- data/test-unit/lib/test/unit/ui/console/testrunner.rb +466 -0
- data/test-unit/lib/test/unit/ui/emacs/testrunner.rb +63 -0
- data/test-unit/lib/test/unit/ui/tap/testrunner.rb +92 -0
- data/test-unit/lib/test/unit/ui/testrunner.rb +28 -0
- data/test-unit/lib/test/unit/ui/testrunnermediator.rb +77 -0
- data/test-unit/lib/test/unit/ui/testrunnerutilities.rb +41 -0
- data/test-unit/lib/test/unit/util/backtracefilter.rb +41 -0
- data/test-unit/lib/test/unit/util/method-owner-finder.rb +28 -0
- data/test-unit/lib/test/unit/util/observable.rb +90 -0
- data/test-unit/lib/test/unit/util/procwrapper.rb +48 -0
- data/test-unit/lib/test/unit/version.rb +7 -0
- data/test-unit/sample/adder.rb +13 -0
- data/test-unit/sample/subtracter.rb +12 -0
- data/test-unit/sample/test_adder.rb +20 -0
- data/test-unit/sample/test_subtracter.rb +20 -0
- data/test-unit/sample/test_user.rb +23 -0
- data/test-unit/test/collector/test-descendant.rb +133 -0
- data/test-unit/test/collector/test-load.rb +442 -0
- data/test-unit/test/collector/test_dir.rb +406 -0
- data/test-unit/test/collector/test_objectspace.rb +100 -0
- data/test-unit/test/run-test.rb +15 -0
- data/test-unit/test/test-attribute.rb +86 -0
- data/test-unit/test/test-color-scheme.rb +67 -0
- data/test-unit/test/test-color.rb +47 -0
- data/test-unit/test/test-diff.rb +518 -0
- data/test-unit/test/test-emacs-runner.rb +60 -0
- data/test-unit/test/test-fixture.rb +287 -0
- data/test-unit/test/test-notification.rb +33 -0
- data/test-unit/test/test-omission.rb +81 -0
- data/test-unit/test/test-pending.rb +70 -0
- data/test-unit/test/test-priority.rb +119 -0
- data/test-unit/test/test-testcase.rb +544 -0
- data/test-unit/test/test_assertions.rb +1151 -0
- data/test-unit/test/test_error.rb +26 -0
- data/test-unit/test/test_failure.rb +33 -0
- data/test-unit/test/test_testresult.rb +113 -0
- data/test-unit/test/test_testsuite.rb +129 -0
- data/test-unit/test/testunit-test-util.rb +14 -0
- data/test-unit/test/ui/test_testrunmediator.rb +20 -0
- data/test-unit/test/util/test-method-owner-finder.rb +38 -0
- data/test-unit/test/util/test_backtracefilter.rb +41 -0
- data/test-unit/test/util/test_observable.rb +102 -0
- data/test-unit/test/util/test_procwrapper.rb +36 -0
- data/test/.gitignore +1 -0
- data/test/groonga-test-utils.rb +134 -0
- data/test/run-test.rb +58 -0
- data/test/test-array.rb +90 -0
- data/test/test-column.rb +316 -0
- data/test/test-context-select.rb +93 -0
- data/test/test-context.rb +73 -0
- data/test/test-database.rb +113 -0
- data/test/test-encoding.rb +33 -0
- data/test/test-exception.rb +93 -0
- data/test/test-expression-builder.rb +217 -0
- data/test/test-expression.rb +134 -0
- data/test/test-fix-size-column.rb +65 -0
- data/test/test-gqtp.rb +72 -0
- data/test/test-hash.rb +305 -0
- data/test/test-index-column.rb +81 -0
- data/test/test-logger.rb +37 -0
- data/test/test-patricia-trie.rb +205 -0
- data/test/test-procedure.rb +37 -0
- data/test/test-query.rb +22 -0
- data/test/test-record.rb +243 -0
- data/test/test-remote.rb +54 -0
- data/test/test-schema-view.rb +90 -0
- data/test/test-schema.rb +459 -0
- data/test/test-snippet.rb +130 -0
- data/test/test-table-cursor.rb +153 -0
- data/test/test-table-offset-and-limit.rb +102 -0
- data/test/test-table-select-normalize.rb +53 -0
- data/test/test-table-select.rb +150 -0
- data/test/test-table.rb +594 -0
- data/test/test-type.rb +71 -0
- data/test/test-variable-size-column.rb +98 -0
- data/test/test-variable.rb +28 -0
- data/test/test-vector-column.rb +76 -0
- data/test/test-version.rb +31 -0
- data/test/test-view.rb +72 -0
- data/text/TUTORIAL.ja.rdoc +392 -0
- data/text/expression.rdoc +284 -0
- metadata +276 -0
data/license/RUBY
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
Rcairo is copyrighted free software by the persons listed in AUTHORS
|
2
|
+
distributed under the same conditions as ruby; which follow:
|
3
|
+
|
4
|
+
Ruby is copyrighted free software by Yukihiro Matsumoto <matz@netlab.jp>.
|
5
|
+
You can redistribute it and/or modify it under either the terms of the GPL
|
6
|
+
(see the file GPL), or the conditions below:
|
7
|
+
|
8
|
+
1. You may make and give away verbatim copies of the source form of the
|
9
|
+
software without restriction, provided that you duplicate all of the
|
10
|
+
original copyright notices and associated disclaimers.
|
11
|
+
|
12
|
+
2. You may modify your copy of the software in any way, provided that
|
13
|
+
you do at least ONE of the following:
|
14
|
+
|
15
|
+
a) place your modifications in the Public Domain or otherwise
|
16
|
+
make them Freely Available, such as by posting said
|
17
|
+
modifications to Usenet or an equivalent medium, or by allowing
|
18
|
+
the author to include your modifications in the software.
|
19
|
+
|
20
|
+
b) use the modified software only within your corporation or
|
21
|
+
organization.
|
22
|
+
|
23
|
+
c) give non-standard binaries non-standard names, with
|
24
|
+
instructions on where to get the original software distribution.
|
25
|
+
|
26
|
+
d) make other distribution arrangements with the author.
|
27
|
+
|
28
|
+
3. You may distribute the software in object code or binary form,
|
29
|
+
provided that you do at least ONE of the following:
|
30
|
+
|
31
|
+
a) distribute the binaries and library files of the software,
|
32
|
+
together with instructions (in the manual page or equivalent)
|
33
|
+
on where to get the original distribution.
|
34
|
+
|
35
|
+
b) accompany the distribution with the machine-readable source of
|
36
|
+
the software.
|
37
|
+
|
38
|
+
c) give non-standard binaries non-standard names, with
|
39
|
+
instructions on where to get the original software distribution.
|
40
|
+
|
41
|
+
d) make other distribution arrangements with the author.
|
42
|
+
|
43
|
+
4. You may modify and include the part of the software into any other
|
44
|
+
software (possibly commercial). But some files in the distribution
|
45
|
+
are not written by the author, so that they are not under these terms.
|
46
|
+
|
47
|
+
For the list of those files and their copying conditions, see the
|
48
|
+
file LEGAL.
|
49
|
+
|
50
|
+
5. The scripts and library files supplied as input to or produced as
|
51
|
+
output from the software do not automatically fall under the
|
52
|
+
copyright of the software, but belong to whomever generated them,
|
53
|
+
and may be sold commercially, and may be aggregated with this
|
54
|
+
software.
|
55
|
+
|
56
|
+
6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
|
57
|
+
IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
58
|
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
59
|
+
PURPOSE.
|
data/misc/grnop2ruby.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
#
|
3
|
+
# Copyright (C) 2009 Yuto Hayamizu <y.hayamizu@gmail.com>
|
4
|
+
#
|
5
|
+
# This library is free software; you can redistribute it and/or
|
6
|
+
# modify it under the terms of the GNU Lesser General Public
|
7
|
+
# License version 2.1 as published by the Free Software Foundation.
|
8
|
+
#
|
9
|
+
# This library is distributed in the hope that it will be useful,
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
12
|
+
# Lesser General Public License for more details.
|
13
|
+
#
|
14
|
+
# You should have received a copy of the GNU Lesser General Public
|
15
|
+
# License along with this library; if not, write to the Free Software
|
16
|
+
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
17
|
+
|
18
|
+
#
|
19
|
+
# This script expects "groonga.h" as a first argument, extracts the
|
20
|
+
# 'grn_operator', and write 'rb_define_const's of 'grn_operator' to
|
21
|
+
# standard outout.
|
22
|
+
#
|
23
|
+
# Usage:
|
24
|
+
# ruby grnop2ruby.rb /path/to/groonga.h
|
25
|
+
#
|
26
|
+
|
27
|
+
replace_dictionary = {
|
28
|
+
"VAR" => "VARIABLE",
|
29
|
+
"EXPR" => "EXPRESSION",
|
30
|
+
"NOP" => "NO_OPERATION",
|
31
|
+
"REF" => "REFERENCE",
|
32
|
+
"OBJ" => "OBJECT",
|
33
|
+
"INCR" => "INCREMENT",
|
34
|
+
"DECR" => "DECREMENT",
|
35
|
+
"MOD" => "MODULO",
|
36
|
+
"LCP" => "LONGEST_COMMON_PREFIX",
|
37
|
+
}
|
38
|
+
|
39
|
+
ARGF.each_line do |line|
|
40
|
+
case line
|
41
|
+
when /\A\s+(GRN_OP_\w+)/
|
42
|
+
operator = $1
|
43
|
+
rb_operator = operator.gsub(/\AGRN_OP_/, "").split("_").map{ |word|
|
44
|
+
replace_dictionary[word] || word
|
45
|
+
}.join("_")
|
46
|
+
puts " rb_define_const(rb_mGrnOperation, \"%s\",
|
47
|
+
UINT2NUM(%s));" % [rb_operator, operator]
|
48
|
+
end
|
49
|
+
end
|
data/pkg-config.rb
ADDED
@@ -0,0 +1,333 @@
|
|
1
|
+
# Copyright 2008-2009 Kouhei Sutou <kou@cozmixng.org>
|
2
|
+
# This file is made available under the same terms as Ruby.
|
3
|
+
|
4
|
+
require "rbconfig"
|
5
|
+
|
6
|
+
require 'mkmf'
|
7
|
+
require 'shellwords'
|
8
|
+
require 'English'
|
9
|
+
require 'pathname'
|
10
|
+
|
11
|
+
class PackageConfig
|
12
|
+
@@default_prepend_paths = []
|
13
|
+
@@default_append_paths = []
|
14
|
+
|
15
|
+
class << self
|
16
|
+
def prepend_default_path(path)
|
17
|
+
@@default_prepend_paths.unshift(path)
|
18
|
+
end
|
19
|
+
|
20
|
+
def append_default_path(path)
|
21
|
+
@@default_append_paths << path
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
attr_accessor :msvc_syntax
|
26
|
+
def initialize(name, path=nil, msvc_syntax=false)
|
27
|
+
@name = name
|
28
|
+
@path = path || ENV["PKG_CONFIG_PATH"]
|
29
|
+
@path = [@path, guess_default_path].compact.join(separator)
|
30
|
+
@msvc_syntax = msvc_syntax
|
31
|
+
@variables = @declarations = nil
|
32
|
+
override_variables = with_config("override-variables", "")
|
33
|
+
@override_variables = parse_override_variables(override_variables)
|
34
|
+
end
|
35
|
+
|
36
|
+
def exist?
|
37
|
+
not pc.nil?
|
38
|
+
end
|
39
|
+
|
40
|
+
def requires
|
41
|
+
parse_requires(declaration("Requires"))
|
42
|
+
end
|
43
|
+
|
44
|
+
def requires_private
|
45
|
+
parse_requires(declaration("Requires.private"))
|
46
|
+
end
|
47
|
+
|
48
|
+
def cflags
|
49
|
+
path_flags, other_flags = collect_cflags
|
50
|
+
(other_flags + path_flags).join(" ")
|
51
|
+
end
|
52
|
+
|
53
|
+
def cflags_only_I
|
54
|
+
collect_cflags[0].join(" ")
|
55
|
+
end
|
56
|
+
|
57
|
+
def libs
|
58
|
+
path_flags, other_flags = collect_libs
|
59
|
+
(other_flags + path_flags).join(" ")
|
60
|
+
end
|
61
|
+
|
62
|
+
def libs_only_l
|
63
|
+
collect_libs[1].find_all do |arg|
|
64
|
+
if @msvc_syntax
|
65
|
+
/\.lib\z/ =~ arg
|
66
|
+
else
|
67
|
+
/\A-l/ =~ arg
|
68
|
+
end
|
69
|
+
end.join(" ")
|
70
|
+
end
|
71
|
+
|
72
|
+
def version
|
73
|
+
declaration("Version")
|
74
|
+
end
|
75
|
+
|
76
|
+
def variable(name)
|
77
|
+
parse_pc if @variables.nil?
|
78
|
+
expand_value(@override_variables[name] || @variables[name])
|
79
|
+
end
|
80
|
+
|
81
|
+
def declaration(name)
|
82
|
+
parse_pc if @declarations.nil?
|
83
|
+
expand_value(@declarations[name])
|
84
|
+
end
|
85
|
+
|
86
|
+
private
|
87
|
+
def paths
|
88
|
+
paths = @@default_prepend_paths
|
89
|
+
paths += @path.split(separator)
|
90
|
+
paths += @@default_append_paths
|
91
|
+
paths
|
92
|
+
end
|
93
|
+
|
94
|
+
def pc
|
95
|
+
paths.each do |path|
|
96
|
+
pc_name = File.join(path, "#{@name}.pc")
|
97
|
+
return pc_name if File.exist?(pc_name)
|
98
|
+
end
|
99
|
+
return nil
|
100
|
+
end
|
101
|
+
|
102
|
+
def separator
|
103
|
+
File.expand_path(".").index(":") ? ";" : ":"
|
104
|
+
end
|
105
|
+
|
106
|
+
def collect_cflags
|
107
|
+
all_cflags = (requires_private + requires.reverse).collect do |package|
|
108
|
+
self.class.new(package, @path, @msvc_syntax).cflags
|
109
|
+
end
|
110
|
+
all_cflags = [declaration("Cflags")] + all_cflags
|
111
|
+
all_cflags = all_cflags.join(" ").gsub(/-I /, '-I').split.uniq
|
112
|
+
path_flags, other_flags = all_cflags.partition {|flag| /\A-I/ =~ flag}
|
113
|
+
path_flags = path_flags.reject do |flag|
|
114
|
+
flag == "-I/usr/include"
|
115
|
+
end
|
116
|
+
if @msvc_syntax
|
117
|
+
path_flags = path_flags.collect do |flag|
|
118
|
+
flag.gsub(/\A-I/, "/I")
|
119
|
+
end
|
120
|
+
end
|
121
|
+
[path_flags, other_flags]
|
122
|
+
end
|
123
|
+
|
124
|
+
def collect_libs
|
125
|
+
all_libs = requires.collect do |package|
|
126
|
+
self.class.new(package, @path, @msvc_syntax).libs
|
127
|
+
end
|
128
|
+
all_libs = [declaration("Libs")] + all_libs
|
129
|
+
all_libs = all_libs.join(" ").gsub(/-([Ll]) /, '\1').split.uniq
|
130
|
+
path_flags, other_flags = all_libs.partition {|flag| /\A-L/ =~ flag}
|
131
|
+
path_flags = path_flags.reject do |flag|
|
132
|
+
/\A-L\/usr\/lib(?:64)?\z/ =~ flag
|
133
|
+
end
|
134
|
+
if @msvc_syntax
|
135
|
+
path_flags = path_flags.collect do |flag|
|
136
|
+
flag.gsub(/\A-L/, "/libpath:")
|
137
|
+
end
|
138
|
+
other_flags = other_flags.collect do |flag|
|
139
|
+
if /\A-l/ =~ flag
|
140
|
+
"#{$POSTMATCH}.lib"
|
141
|
+
else
|
142
|
+
flag
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
146
|
+
[path_flags, other_flags]
|
147
|
+
end
|
148
|
+
|
149
|
+
IDENTIFIER_RE = /[\w.]+/
|
150
|
+
def parse_pc
|
151
|
+
raise ".pc for #{@name} doesn't exist." unless exist?
|
152
|
+
@variables = {}
|
153
|
+
@declarations = {}
|
154
|
+
File.open(pc) do |input|
|
155
|
+
input.each_line do |line|
|
156
|
+
line = line.gsub(/#.*/, '').strip
|
157
|
+
next if line.empty?
|
158
|
+
case line
|
159
|
+
when /^(#{IDENTIFIER_RE})=/
|
160
|
+
@variables[$1] = $POSTMATCH.strip
|
161
|
+
when /^(#{IDENTIFIER_RE}):/
|
162
|
+
@declarations[$1] = $POSTMATCH.strip
|
163
|
+
end
|
164
|
+
end
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
def parse_requires(requires)
|
169
|
+
return [] if requires.nil?
|
170
|
+
requires_without_version = requires.gsub(/[<>]?=\s*[\d.]+\s*/, '')
|
171
|
+
requires_without_version.split(/[,\s]+/)
|
172
|
+
end
|
173
|
+
|
174
|
+
def parse_override_variables(override_variables)
|
175
|
+
variables = {}
|
176
|
+
override_variables.split(",").each do |variable|
|
177
|
+
name, value = variable.split("=", 2)
|
178
|
+
variables[name] = value
|
179
|
+
end
|
180
|
+
variables
|
181
|
+
end
|
182
|
+
|
183
|
+
def expand_value(value)
|
184
|
+
return nil if value.nil?
|
185
|
+
value.gsub(/\$\{(#{IDENTIFIER_RE})\}/) do
|
186
|
+
variable($1)
|
187
|
+
end
|
188
|
+
end
|
189
|
+
|
190
|
+
def search_pkg_config_from_path(pkg_config)
|
191
|
+
(ENV["PATH"] || "").split(separator).each do |path|
|
192
|
+
try_pkg_config = Pathname(path) + pkg_config
|
193
|
+
return try_pkg_config if try_pkg_config.exist?
|
194
|
+
end
|
195
|
+
nil
|
196
|
+
end
|
197
|
+
|
198
|
+
def search_pkg_config_by_dln_find_exe(pkg_config)
|
199
|
+
begin
|
200
|
+
require "dl/import"
|
201
|
+
rescue LoadError
|
202
|
+
return nil
|
203
|
+
end
|
204
|
+
dln = Module.new
|
205
|
+
dln.module_eval do
|
206
|
+
if DL.const_defined?(:Importer)
|
207
|
+
extend DL::Importer
|
208
|
+
else
|
209
|
+
extend DL::Importable
|
210
|
+
end
|
211
|
+
begin
|
212
|
+
dlload RbConfig::CONFIG["LIBRUBY"]
|
213
|
+
rescue RuntimeError
|
214
|
+
return nil if $!.message == "unknown error"
|
215
|
+
return nil if /: image not found\z/ =~ $!.message
|
216
|
+
raise
|
217
|
+
rescue DL::DLError
|
218
|
+
return nil
|
219
|
+
end
|
220
|
+
extern "const char *dln_find_exe(const char *, const char *)"
|
221
|
+
end
|
222
|
+
path = dln.dln_find_exe(pkg_config.to_s, nil)
|
223
|
+
if path.size.zero?
|
224
|
+
nil
|
225
|
+
else
|
226
|
+
Pathname(path.to_s)
|
227
|
+
end
|
228
|
+
end
|
229
|
+
|
230
|
+
def guess_default_path
|
231
|
+
default_path = ["/usr/local/lib64/pkgconfig",
|
232
|
+
"/usr/local/lib/pkgconfig",
|
233
|
+
"/usr/local/libdata/pkgconfig",
|
234
|
+
"/opt/local/lib/pkgconfig",
|
235
|
+
"/usr/lib64/pkgconfig",
|
236
|
+
"/usr/lib/pkgconfig",
|
237
|
+
"/usr/X11/lib/pkgconfig/",
|
238
|
+
"/usr/share/pkgconfig"].join(separator)
|
239
|
+
libdir = ENV["PKG_CONFIG_LIBDIR"]
|
240
|
+
default_path = [libdir, default_path].join(separator) if libdir
|
241
|
+
|
242
|
+
pkg_config = with_config("pkg-config", ENV["PKG_CONFIG"] || "pkg-config")
|
243
|
+
pkg_config = Pathname.new(pkg_config)
|
244
|
+
unless pkg_config.absolute?
|
245
|
+
found_pkg_config = search_pkg_config_from_path(pkg_config)
|
246
|
+
pkg_config = found_pkg_config if found_pkg_config
|
247
|
+
end
|
248
|
+
unless pkg_config.absolute?
|
249
|
+
found_pkg_config = search_pkg_config_by_dln_find_exe(pkg_config)
|
250
|
+
pkg_config = found_pkg_config if found_pkg_config
|
251
|
+
end
|
252
|
+
|
253
|
+
return default_path unless pkg_config.absolute?
|
254
|
+
[(pkg_config.parent.parent + "lib" + "pkgconfig").to_s,
|
255
|
+
(pkg_config.parent.parent + "libdata" + "pkgconfig").to_s,
|
256
|
+
default_path].join(separator)
|
257
|
+
end
|
258
|
+
end
|
259
|
+
|
260
|
+
module PKGConfig
|
261
|
+
module_function
|
262
|
+
def msvc?
|
263
|
+
/mswin32/.match(RUBY_PLATFORM) and /^cl\b/.match(Config::CONFIG['CC'])
|
264
|
+
end
|
265
|
+
|
266
|
+
def package_config(package)
|
267
|
+
PackageConfig.new(package, nil, msvc?)
|
268
|
+
end
|
269
|
+
|
270
|
+
def exist?(pkg)
|
271
|
+
package_config(pkg).exist?
|
272
|
+
end
|
273
|
+
|
274
|
+
def libs(pkg)
|
275
|
+
package_config(pkg).libs
|
276
|
+
end
|
277
|
+
|
278
|
+
def libs_only_l(pkg)
|
279
|
+
package_config(pkg).libs_only_l
|
280
|
+
end
|
281
|
+
|
282
|
+
def cflags(pkg)
|
283
|
+
package_config(pkg).cflags
|
284
|
+
end
|
285
|
+
|
286
|
+
def cflags_only_I(pkg)
|
287
|
+
package_config(pkg).cflags_only_I
|
288
|
+
end
|
289
|
+
|
290
|
+
def modversion(pkg)
|
291
|
+
package_config(pkg).version
|
292
|
+
end
|
293
|
+
|
294
|
+
def check_version?(pkg, major = 0, minor = 0, micro = 0)
|
295
|
+
return false unless exist?(pkg)
|
296
|
+
ver = modversion(pkg).split(".").collect{|item| item.to_i}
|
297
|
+
(0..2).each {|i| ver[i] = 0 unless ver[i]}
|
298
|
+
|
299
|
+
(ver[0] > major ||
|
300
|
+
(ver[0] == major && ver[1] > minor) ||
|
301
|
+
(ver[0] == major && ver[1] == minor &&
|
302
|
+
ver[2] >= micro))
|
303
|
+
end
|
304
|
+
|
305
|
+
def have_package(pkg, major = nil, minor = 0, micro = 0)
|
306
|
+
if major.nil?
|
307
|
+
STDOUT.print("checking for #{pkg}... ")
|
308
|
+
else
|
309
|
+
STDOUT.print("checking for #{pkg} version (>= #{major}.#{minor}.#{micro})... ")
|
310
|
+
end
|
311
|
+
major ||= 0
|
312
|
+
STDOUT.flush
|
313
|
+
if check_version?(pkg, major, minor, micro)
|
314
|
+
STDOUT.print "yes\n"
|
315
|
+
libraries = libs_only_l(pkg)
|
316
|
+
dldflags = libs(pkg)
|
317
|
+
dldflags = (Shellwords.shellwords(dldflags) -
|
318
|
+
Shellwords.shellwords(libraries))
|
319
|
+
dldflags = dldflags.map {|s| /\s/ =~ s ? "\"#{s}\"" : s }.join(' ')
|
320
|
+
$libs += ' ' + libraries
|
321
|
+
if /mswin32/ =~ RUBY_PLATFORM
|
322
|
+
$DLDFLAGS += ' ' + dldflags
|
323
|
+
else
|
324
|
+
$LDFLAGS += ' ' + dldflags
|
325
|
+
end
|
326
|
+
$CFLAGS += ' ' + cflags(pkg)
|
327
|
+
true
|
328
|
+
else
|
329
|
+
STDOUT.print "no\n"
|
330
|
+
false
|
331
|
+
end
|
332
|
+
end
|
333
|
+
end
|
data/rroonga-build.rb
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Copyright (C) 2009-2010 Kouhei Sutou <kou@clear-code.com>
|
4
|
+
#
|
5
|
+
# This library is free software; you can redistribute it and/or
|
6
|
+
# modify it under the terms of the GNU Lesser General Public
|
7
|
+
# License version 2.1 as published by the Free Software Foundation.
|
8
|
+
#
|
9
|
+
# This library is distributed in the hope that it will be useful,
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
12
|
+
# Lesser General Public License for more details.
|
13
|
+
#
|
14
|
+
# You should have received a copy of the GNU Lesser General Public
|
15
|
+
# License along with this library; if not, write to the Free Software
|
16
|
+
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
17
|
+
|
18
|
+
module RroongaBuild
|
19
|
+
module RequiredGroongaVersion
|
20
|
+
MAJOR = 0
|
21
|
+
MINOR = 1
|
22
|
+
MICRO = 9
|
23
|
+
VERSION = [MAJOR, MINOR, MICRO]
|
24
|
+
end
|
25
|
+
|
26
|
+
module_function
|
27
|
+
def local_groonga_base_dir
|
28
|
+
File.join(File.dirname(__FILE__), "vendor")
|
29
|
+
end
|
30
|
+
|
31
|
+
def local_groonga_install_dir
|
32
|
+
File.expand_path(File.join(local_groonga_base_dir, "local"))
|
33
|
+
end
|
34
|
+
|
35
|
+
def have_local_groonga?(package_name, major, minor, micro)
|
36
|
+
return false unless File.exist?(File.join(local_groonga_install_dir, "lib"))
|
37
|
+
|
38
|
+
prepend_pkg_config_path_for_local_groonga
|
39
|
+
PKGConfig.have_package(package_name, major, minor, micro)
|
40
|
+
end
|
41
|
+
|
42
|
+
def prepend_pkg_config_path_for_local_groonga
|
43
|
+
pkg_config_dir = File.join(local_groonga_install_dir, "lib", "pkgconfig")
|
44
|
+
PackageConfig.prepend_default_path(pkg_config_dir)
|
45
|
+
end
|
46
|
+
|
47
|
+
def add_rpath_for_local_groonga
|
48
|
+
lib_dir = File.join(local_groonga_install_dir, "lib")
|
49
|
+
original_LDFLAGS = $LDFLAGS
|
50
|
+
checking_for(checking_message("-Wl,-rpath is available")) do
|
51
|
+
$LDFLAGS += " -Wl,-rpath,#{Shellwords.escape(lib_dir)}"
|
52
|
+
available = try_compile("int main() {return 0;}")
|
53
|
+
$LDFLAGS = original_LDFLAGS unless available
|
54
|
+
available
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|