geoip2_c 0.3.2 → 0.3.3
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 +5 -5
- data/.travis.yml +3 -4
- data/README.md +21 -3
- data/docker-compose.yml +15 -1
- data/dockerfiles/{Dockerfile-ruby2.1 → Dockerfile-ruby2.5} +1 -1
- data/dockerfiles/{Dockerfile-ruby2.2 → Dockerfile-ruby2.6} +1 -1
- data/ext/geoip2/geoip2.c +5 -3
- data/ext/geoip2/libmaxminddb/.gitignore +3 -0
- data/ext/geoip2/libmaxminddb/.travis.yml +24 -2
- data/ext/geoip2/libmaxminddb/Changes.md +39 -0
- data/ext/geoip2/libmaxminddb/README.dev.md +41 -30
- data/ext/geoip2/libmaxminddb/README.md +3 -3
- data/ext/geoip2/libmaxminddb/bin/Makefile.am +5 -0
- data/ext/geoip2/libmaxminddb/bin/mmdblookup.c +333 -15
- data/ext/geoip2/libmaxminddb/configure.ac +5 -5
- data/ext/geoip2/libmaxminddb/dev-bin/ppa-release.sh +8 -5
- data/ext/geoip2/libmaxminddb/dev-bin/release.sh +7 -0
- data/ext/geoip2/libmaxminddb/dev-bin/valgrind-all.pl +10 -3
- data/ext/geoip2/libmaxminddb/include/maxminddb.h +11 -2
- data/ext/geoip2/libmaxminddb/projects/VS12/libmaxminddb.vcxproj +3 -1
- data/ext/geoip2/libmaxminddb/projects/VS12/libmaxminddb.vcxproj.filters +7 -1
- data/ext/geoip2/libmaxminddb/src/Makefile.am +18 -2
- data/ext/geoip2/libmaxminddb/src/data-pool.c +180 -0
- data/ext/geoip2/libmaxminddb/src/data-pool.h +52 -0
- data/ext/geoip2/libmaxminddb/src/maxminddb.c +58 -48
- data/ext/geoip2/libmaxminddb/t/Makefile.am +6 -2
- data/ext/geoip2/libmaxminddb/t/bad_databases_t.c +1 -0
- data/ext/geoip2/libmaxminddb/t/basic_lookup_t.c +35 -0
- data/ext/geoip2/libmaxminddb/t/data-pool-t.c +374 -0
- data/ext/geoip2/libmaxminddb/t/external_symbols_t.pl +106 -0
- data/lib/geoip2/version.rb +1 -1
- metadata +9 -7
- data/dockerfiles/Dockerfile-ruby2.3 +0 -8
@@ -0,0 +1,106 @@
|
|
1
|
+
#!/usr/bin/env perl
|
2
|
+
|
3
|
+
use strict;
|
4
|
+
use warnings;
|
5
|
+
|
6
|
+
use FindBin qw( $Bin );
|
7
|
+
|
8
|
+
_skip_tests_if_required_modules_are_not_present();
|
9
|
+
_skip_tests_if_nm_is_not_present();
|
10
|
+
_test_libs_external_symbols();
|
11
|
+
|
12
|
+
done_testing();
|
13
|
+
|
14
|
+
sub _skip_tests_if_required_modules_are_not_present {
|
15
|
+
eval <<'EOF';
|
16
|
+
use Test::More 0.88;
|
17
|
+
use IPC::Run3 qw( run3 );
|
18
|
+
EOF
|
19
|
+
|
20
|
+
if ($@) {
|
21
|
+
print
|
22
|
+
"1..0 # skip all tests skipped - these tests need the Test::More 0.88, IPC::Run3 modules:\n";
|
23
|
+
print "$@";
|
24
|
+
exit 0;
|
25
|
+
}
|
26
|
+
}
|
27
|
+
|
28
|
+
sub _skip_tests_if_nm_is_not_present {
|
29
|
+
run3(
|
30
|
+
[ 'nm', '-V' ],
|
31
|
+
\undef,
|
32
|
+
\undef,
|
33
|
+
\undef,
|
34
|
+
);
|
35
|
+
|
36
|
+
my $exit_status = $? >> 8;
|
37
|
+
if ($exit_status) {
|
38
|
+
print
|
39
|
+
"1..0 # skipp all tests skipped - this test requires the command line utility `nm`.\n";
|
40
|
+
exit 0;
|
41
|
+
}
|
42
|
+
}
|
43
|
+
|
44
|
+
sub _test_libs_external_symbols {
|
45
|
+
my @libs = _libs_to_test();
|
46
|
+
|
47
|
+
if (@libs) {
|
48
|
+
for my $lib (@libs) {
|
49
|
+
_test_lib_external_symbols($lib);
|
50
|
+
}
|
51
|
+
}
|
52
|
+
else {
|
53
|
+
fail('No libs were found to test');
|
54
|
+
}
|
55
|
+
}
|
56
|
+
|
57
|
+
sub _libs_to_test {
|
58
|
+
my $lib_dir = "$Bin/../src/.libs";
|
59
|
+
opendir my $dh, $lib_dir
|
60
|
+
or die "Failed to open the lib dir at $lib_dir for reading: $!\n";
|
61
|
+
my @libs = map { $lib_dir . q{/} . $_ }
|
62
|
+
grep { $_ =~ m/\.so$/ } readdir $dh;
|
63
|
+
closedir $dh;
|
64
|
+
|
65
|
+
return @libs;
|
66
|
+
}
|
67
|
+
|
68
|
+
sub _test_lib_external_symbols {
|
69
|
+
my $lib = shift;
|
70
|
+
|
71
|
+
my $stdout;
|
72
|
+
my $stderr;
|
73
|
+
run3(
|
74
|
+
[ 'nm', '-g', '--defined-only', $lib ],
|
75
|
+
\undef,
|
76
|
+
\$stdout,
|
77
|
+
\$stderr,
|
78
|
+
);
|
79
|
+
|
80
|
+
my $exit_status = $? >> 8;
|
81
|
+
ok( !$exit_status, 'nm returned a non-error status' )
|
82
|
+
or diag($stderr);
|
83
|
+
|
84
|
+
my @external_symbols = _extract_external_symbols($stdout);
|
85
|
+
is_deeply(
|
86
|
+
[ grep { $_ !~ m/^MMDB_/ } @external_symbols ],
|
87
|
+
[],
|
88
|
+
"$lib exports only MMDB_ symbols"
|
89
|
+
);
|
90
|
+
}
|
91
|
+
|
92
|
+
sub _extract_external_symbols {
|
93
|
+
my $nm_output = shift;
|
94
|
+
|
95
|
+
my @lines = split /\r\n|\r|\n/, $nm_output;
|
96
|
+
|
97
|
+
my @external_symbols;
|
98
|
+
for my $line (@lines) {
|
99
|
+
my @fields = split /\s+/, $line;
|
100
|
+
die "Unexpected nm output for line $line\n"
|
101
|
+
if @fields != 3;
|
102
|
+
push @external_symbols, $fields[2];
|
103
|
+
}
|
104
|
+
|
105
|
+
return @external_symbols;
|
106
|
+
}
|
data/lib/geoip2/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: geoip2_c
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- okkez
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-04-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: appraisal
|
@@ -98,10 +98,9 @@ files:
|
|
98
98
|
- README.md
|
99
99
|
- Rakefile
|
100
100
|
- docker-compose.yml
|
101
|
-
- dockerfiles/Dockerfile-ruby2.1
|
102
|
-
- dockerfiles/Dockerfile-ruby2.2
|
103
|
-
- dockerfiles/Dockerfile-ruby2.3
|
104
101
|
- dockerfiles/Dockerfile-ruby2.4
|
102
|
+
- dockerfiles/Dockerfile-ruby2.5
|
103
|
+
- dockerfiles/Dockerfile-ruby2.6
|
105
104
|
- ext/geoip2/extconf.rb
|
106
105
|
- ext/geoip2/geoip2.c
|
107
106
|
- ext/geoip2/libmaxminddb/.gitignore
|
@@ -161,6 +160,8 @@ files:
|
|
161
160
|
- ext/geoip2/libmaxminddb/projects/VS12/maxminddb_config.h
|
162
161
|
- ext/geoip2/libmaxminddb/projects/test.vcxproj.template
|
163
162
|
- ext/geoip2/libmaxminddb/src/Makefile.am
|
163
|
+
- ext/geoip2/libmaxminddb/src/data-pool.c
|
164
|
+
- ext/geoip2/libmaxminddb/src/data-pool.h
|
164
165
|
- ext/geoip2/libmaxminddb/src/libmaxminddb.pc.in
|
165
166
|
- ext/geoip2/libmaxminddb/src/maxminddb-compat-util.h
|
166
167
|
- ext/geoip2/libmaxminddb/src/maxminddb.c
|
@@ -169,9 +170,11 @@ files:
|
|
169
170
|
- ext/geoip2/libmaxminddb/t/bad_pointers_t.c
|
170
171
|
- ext/geoip2/libmaxminddb/t/basic_lookup_t.c
|
171
172
|
- ext/geoip2/libmaxminddb/t/compile_c++_t.pl
|
173
|
+
- ext/geoip2/libmaxminddb/t/data-pool-t.c
|
172
174
|
- ext/geoip2/libmaxminddb/t/data_entry_list_t.c
|
173
175
|
- ext/geoip2/libmaxminddb/t/data_types_t.c
|
174
176
|
- ext/geoip2/libmaxminddb/t/dump_t.c
|
177
|
+
- ext/geoip2/libmaxminddb/t/external_symbols_t.pl
|
175
178
|
- ext/geoip2/libmaxminddb/t/get_value_pointer_bug_t.c
|
176
179
|
- ext/geoip2/libmaxminddb/t/get_value_t.c
|
177
180
|
- ext/geoip2/libmaxminddb/t/ipv4_start_cache_t.c
|
@@ -212,8 +215,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
212
215
|
- !ruby/object:Gem::Version
|
213
216
|
version: '0'
|
214
217
|
requirements: []
|
215
|
-
|
216
|
-
rubygems_version: 2.6.14
|
218
|
+
rubygems_version: 3.0.3
|
217
219
|
signing_key:
|
218
220
|
specification_version: 4
|
219
221
|
summary: Write a short summary, because Rubygems requires one.
|