mysql2 0.3.19 → 0.3.20
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/mysql2/client.c +19 -11
- data/ext/mysql2/extconf.rb +17 -11
- data/lib/mysql2/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6261e72195a2e1281c59ad35c44fe9edefc69241
|
4
|
+
data.tar.gz: 5dd5b66d3bc11fcd978d4a2d491ac47e3a005510
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9a1dc5ee4f77d51c5042b5eb8153a18c2d199506c5514a5064c818fe5f800fcbd32dae5a73c29eec268b8f96e1f31c358f87e9306e50fbee7836f7a3a88c5393
|
7
|
+
data.tar.gz: fa5d2a4b7815f4b834598e647e0aecb328e8997638ea7c73ad313cfa6b9eba5099a329c402071fb08a8a09b99e5a99784191bf7ff5722f0707a69a9c5d041d62
|
data/ext/mysql2/client.c
CHANGED
@@ -182,23 +182,31 @@ static void *nogvl_connect(void *ptr) {
|
|
182
182
|
*/
|
183
183
|
static VALUE invalidate_fd(int clientfd)
|
184
184
|
{
|
185
|
-
#ifdef
|
185
|
+
#ifdef O_CLOEXEC
|
186
186
|
/* Atomically set CLOEXEC on the new FD in case another thread forks */
|
187
187
|
int sockfd = open("/dev/null", O_RDWR | O_CLOEXEC);
|
188
|
-
if (sockfd < 0) {
|
189
|
-
/* Maybe SOCK_CLOEXEC is defined but not available on this kernel */
|
190
|
-
int sockfd = open("/dev/null", O_RDWR);
|
191
|
-
fcntl(sockfd, F_SETFD, FD_CLOEXEC);
|
192
|
-
}
|
193
188
|
#else
|
194
|
-
/* Well we don't have
|
195
|
-
int sockfd =
|
196
|
-
fcntl(sockfd, F_SETFD, FD_CLOEXEC);
|
189
|
+
/* Well we don't have O_CLOEXEC, trigger the fallback code below */
|
190
|
+
int sockfd = -1;
|
197
191
|
#endif
|
198
192
|
|
199
193
|
if (sockfd < 0) {
|
200
|
-
/*
|
201
|
-
*
|
194
|
+
/* Either O_CLOEXEC wasn't defined at compile time, or it was defined at
|
195
|
+
* compile time, but isn't available at run-time. So we'll just be quick
|
196
|
+
* about setting FD_CLOEXEC now.
|
197
|
+
*/
|
198
|
+
int flags;
|
199
|
+
sockfd = open("/dev/null", O_RDWR);
|
200
|
+
flags = fcntl(sockfd, F_GETFD);
|
201
|
+
/* Do the flags dance in case there are more defined flags in the future */
|
202
|
+
if (flags != -1) {
|
203
|
+
flags |= FD_CLOEXEC;
|
204
|
+
fcntl(sockfd, F_SETFD, flags);
|
205
|
+
}
|
206
|
+
}
|
207
|
+
|
208
|
+
if (sockfd < 0) {
|
209
|
+
/* Cannot raise here, because one or both of the following may be true:
|
202
210
|
* a) we have no GVL (in C Ruby)
|
203
211
|
* b) are running as a GC finalizer
|
204
212
|
*/
|
data/ext/mysql2/extconf.rb
CHANGED
@@ -3,12 +3,11 @@ require 'mkmf'
|
|
3
3
|
|
4
4
|
def asplode lib
|
5
5
|
if RUBY_PLATFORM =~ /mingw|mswin/
|
6
|
-
abort "-----\n#{lib} is missing.
|
6
|
+
abort "-----\n#{lib} is missing. Check your installation of MySQL or Connector/C, and try again.\n-----"
|
7
7
|
elsif RUBY_PLATFORM =~ /darwin/
|
8
|
-
abort "-----\n#{lib} is missing.
|
8
|
+
abort "-----\n#{lib} is missing. You may need to 'brew install mysql' or 'port install mysql', and try again.\n-----"
|
9
9
|
else
|
10
|
-
abort "-----\n#{lib} is missing.
|
11
|
-
'yum install mysql-devel', check your installation of mysql and try again.\n-----"
|
10
|
+
abort "-----\n#{lib} is missing. You may need to 'apt-get install libmysqlclient-dev' or 'yum install mysql-devel', and try again.\n-----"
|
12
11
|
end
|
13
12
|
end
|
14
13
|
|
@@ -73,15 +72,22 @@ elsif mc = (with_config('mysql-config') || Dir[GLOB].first)
|
|
73
72
|
rpath_dir = libs
|
74
73
|
else
|
75
74
|
inc, lib = dir_config('mysql', '/usr/local')
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
75
|
+
unless find_library('mysqlclient', 'mysql_query', lib, "#{lib}/mysql")
|
76
|
+
found = false
|
77
|
+
# For some systems and some versions of libmysqlclient, there were extra
|
78
|
+
# libraries needed to link. Try each typical extra library, add it to the
|
79
|
+
# global compile flags, and see if that allows us to link libmysqlclient.
|
80
|
+
warn "-----\nlibmysqlclient is missing. Trying again with extra runtime libraries...\n-----"
|
81
|
+
|
82
|
+
%w{ m z socket nsl mygcc }.each do |extra_lib|
|
83
|
+
if have_library(extra_lib) && find_library('mysqlclient', 'mysql_query', lib, "#{lib}/mysql")
|
84
|
+
found = true
|
85
|
+
break
|
86
|
+
end
|
87
|
+
end
|
88
|
+
asplode('libmysqlclient') unless found
|
81
89
|
end
|
82
90
|
|
83
|
-
asplode("mysql client") unless found
|
84
|
-
|
85
91
|
rpath_dir = lib
|
86
92
|
end
|
87
93
|
|
data/lib/mysql2/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mysql2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.20
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Lopez
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-08-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake-compiler
|