mysql2 0.3.19-x64-mingw32 → 0.3.20-x64-mingw32

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5d5ccc0fcbdd2904edc1ce50120e678ef1dbebab
4
- data.tar.gz: c41b33db3b33862b3d8c88bc03a3447d6e8867d7
3
+ metadata.gz: 79dfd872044ded0278886f2a4a0d1d922fa52787
4
+ data.tar.gz: 5bb78db2adf680cd08632f7a20d3beb605d516c2
5
5
  SHA512:
6
- metadata.gz: e82689659526713623158dd4fd58ae4150eed964783bb582260cca2a351a62b47094cbb704411bc67db18d725f2581208ebaea3208ae1474e84fae87772e611e
7
- data.tar.gz: d2970df3bb46eaa68918b1398cc0e8b818b2a305a0837db30c07bfcd07d49191e562ca6587f9bc56626e28cc15c6dbb3228439eee046a6998398c7021a87d6c8
6
+ metadata.gz: d590f3432423f29626957c30d590a8914acecdf39c50d159e40f8b01b2cbb5f5ec21c7b70f01f1d6c347e7d0a37a8ca1e3fa96544ff8395a81acb3c7c5e6c29f
7
+ data.tar.gz: 909e075673796ca39ebf64b97bf985fe1c8e2b558d24cf6c6503cdff4c350e88c6e8fee8b51c5058e739617c419cd6553a0e9c0be0f378ea9deb58bbe7bf8354
@@ -182,23 +182,31 @@ static void *nogvl_connect(void *ptr) {
182
182
  */
183
183
  static VALUE invalidate_fd(int clientfd)
184
184
  {
185
- #ifdef SOCK_CLOEXEC
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 SOCK_CLOEXEC, so just set FD_CLOEXEC quickly */
195
- int sockfd = open("/dev/null", O_RDWR);
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
- * Cannot raise here, because one or both of the following may be true:
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
  */
@@ -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. please check your installation of mysql and try again.\n-----"
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. Try 'brew install mysql', check your installation of mysql and try again.\n-----"
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. Try 'apt-get install libmysqlclient-dev' or
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
- libs = ['m', 'z', 'socket', 'nsl', 'mygcc']
77
- found = false
78
- while not find_library('mysqlclient', 'mysql_query', lib, "#{lib}/mysql") do
79
- exit 1 if libs.empty?
80
- found ||= have_library(libs.shift)
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
 
Binary file
Binary file
Binary file
@@ -1,3 +1,3 @@
1
1
  module Mysql2
2
- VERSION = "0.3.19"
2
+ VERSION = "0.3.20"
3
3
  end
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.19
4
+ version: 0.3.20
5
5
  platform: x64-mingw32
6
6
  authors:
7
7
  - Brian Lopez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-30 00:00:00.000000000 Z
11
+ date: 2015-08-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake-compiler