tiny_tds 0.6.2-x86-mingw32 → 0.6.3.rc2-x86-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -13
- data/.gitignore +0 -1
- data/CHANGELOG +22 -5
- data/CODE_OF_CONDUCT.md +31 -0
- data/Gemfile +0 -1
- data/README.md +29 -31
- data/Rakefile +52 -62
- data/appveyor.yml +48 -0
- data/ext/tiny_tds/client.c +11 -11
- data/ext/tiny_tds/extconf.rb +203 -6
- data/ext/tiny_tds/result.c +3 -35
- data/lib/tiny_tds.rb +25 -6
- data/lib/tiny_tds/client.rb +15 -17
- data/lib/tiny_tds/version.rb +2 -2
- data/test/client_test.rb +23 -23
- data/test/result_test.rb +80 -84
- data/test/schema/sqlserver_2014.sql +138 -0
- data/test/schema_test.rb +58 -59
- data/test/test_helper.rb +55 -46
- data/test/thread_test.rb +4 -4
- metadata +48 -42
- data/compile/rake-compiler-dev-box.patch +0 -31
- data/ext/patch/Makefile.in.diff +0 -29
- data/ext/patch/dblib-30-char-username.diff +0 -11
- data/ext/patch/sspi_w_kerberos.diff +0 -42
- data/tasks/ports.rake +0 -79
data/test/thread_test.rb
CHANGED
@@ -63,8 +63,8 @@ class ThreadTest < TinyTds::TestCase
|
|
63
63
|
thread = Thread.new do
|
64
64
|
@pool.with do |client|
|
65
65
|
begin
|
66
|
-
|
67
|
-
result = client.execute "waitfor delay '00:00
|
66
|
+
delay = ('0' + (connection_timeout + 2).to_s)[-2,2] # Two seconds longer than default.
|
67
|
+
result = client.execute "waitfor delay '00:00:#{delay}'; select db_name()"
|
68
68
|
result.each { |r| puts r }
|
69
69
|
rescue TinyTds::Error => e
|
70
70
|
if e.message == 'Adaptive Server connection timed out'
|
@@ -75,8 +75,8 @@ class ThreadTest < TinyTds::TestCase
|
|
75
75
|
end
|
76
76
|
|
77
77
|
timer_thread = Thread.new do
|
78
|
-
# Sleep until after the timeout
|
79
|
-
sleep(
|
78
|
+
# Sleep until after the timeout should have been reached
|
79
|
+
sleep(connection_timeout+2)
|
80
80
|
if not exception
|
81
81
|
thread.kill
|
82
82
|
raise "Timeout passed without query timing out"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tiny_tds
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.3.rc2
|
5
5
|
platform: x86-mingw32
|
6
6
|
authors:
|
7
7
|
- Ken Collins
|
@@ -10,92 +10,92 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2015-07-31 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
|
-
name:
|
16
|
+
name: mini_portile
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - '='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 0.
|
22
|
-
type: :
|
21
|
+
version: 0.6.2
|
22
|
+
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
|
-
- -
|
26
|
+
- - '='
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
version: 0.
|
28
|
+
version: 0.6.2
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
|
-
name:
|
30
|
+
name: rake
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
32
32
|
requirements:
|
33
|
-
- - ~>
|
33
|
+
- - "~>"
|
34
34
|
- !ruby/object:Gem::Version
|
35
|
-
version:
|
35
|
+
version: '10.4'
|
36
36
|
type: :development
|
37
37
|
prerelease: false
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
|
-
- - ~>
|
40
|
+
- - "~>"
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version:
|
42
|
+
version: '10.4'
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
44
|
name: rake-compiler
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
|
-
- -
|
47
|
+
- - '='
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version: 0.9.
|
49
|
+
version: 0.9.5
|
50
50
|
type: :development
|
51
51
|
prerelease: false
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
53
53
|
requirements:
|
54
|
-
- -
|
54
|
+
- - '='
|
55
55
|
- !ruby/object:Gem::Version
|
56
|
-
version: 0.9.
|
56
|
+
version: 0.9.5
|
57
57
|
- !ruby/object:Gem::Dependency
|
58
|
-
name:
|
58
|
+
name: rake-compiler-dock
|
59
59
|
requirement: !ruby/object:Gem::Requirement
|
60
60
|
requirements:
|
61
|
-
- - ~>
|
61
|
+
- - "~>"
|
62
62
|
- !ruby/object:Gem::Version
|
63
|
-
version:
|
63
|
+
version: 0.4.3
|
64
64
|
type: :development
|
65
65
|
prerelease: false
|
66
66
|
version_requirements: !ruby/object:Gem::Requirement
|
67
67
|
requirements:
|
68
|
-
- - ~>
|
68
|
+
- - "~>"
|
69
69
|
- !ruby/object:Gem::Version
|
70
|
-
version:
|
70
|
+
version: 0.4.3
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
72
|
name: minitest
|
73
73
|
requirement: !ruby/object:Gem::Requirement
|
74
74
|
requirements:
|
75
|
-
- -
|
75
|
+
- - "~>"
|
76
76
|
- !ruby/object:Gem::Version
|
77
|
-
version: '
|
77
|
+
version: '5.6'
|
78
78
|
type: :development
|
79
79
|
prerelease: false
|
80
80
|
version_requirements: !ruby/object:Gem::Requirement
|
81
81
|
requirements:
|
82
|
-
- -
|
82
|
+
- - "~>"
|
83
83
|
- !ruby/object:Gem::Version
|
84
|
-
version: '
|
84
|
+
version: '5.6'
|
85
85
|
- !ruby/object:Gem::Dependency
|
86
86
|
name: connection_pool
|
87
87
|
requirement: !ruby/object:Gem::Requirement
|
88
88
|
requirements:
|
89
|
-
- - ~>
|
89
|
+
- - "~>"
|
90
90
|
- !ruby/object:Gem::Version
|
91
|
-
version:
|
91
|
+
version: '2.2'
|
92
92
|
type: :development
|
93
93
|
prerelease: false
|
94
94
|
version_requirements: !ruby/object:Gem::Requirement
|
95
95
|
requirements:
|
96
|
-
- - ~>
|
96
|
+
- - "~>"
|
97
97
|
- !ruby/object:Gem::Version
|
98
|
-
version:
|
98
|
+
version: '2.2'
|
99
99
|
description: TinyTDS - A modern, simple and fast FreeTDS library for Ruby using DB-Library.
|
100
100
|
Developed for the ActiveRecord SQL Server adapter.
|
101
101
|
email:
|
@@ -105,16 +105,14 @@ executables: []
|
|
105
105
|
extensions: []
|
106
106
|
extra_rdoc_files: []
|
107
107
|
files:
|
108
|
-
- .gitignore
|
108
|
+
- ".gitignore"
|
109
109
|
- CHANGELOG
|
110
|
+
- CODE_OF_CONDUCT.md
|
110
111
|
- Gemfile
|
111
112
|
- MIT-LICENSE
|
112
113
|
- README.md
|
113
114
|
- Rakefile
|
114
|
-
-
|
115
|
-
- ext/patch/Makefile.in.diff
|
116
|
-
- ext/patch/dblib-30-char-username.diff
|
117
|
-
- ext/patch/sspi_w_kerberos.diff
|
115
|
+
- appveyor.yml
|
118
116
|
- ext/tiny_tds/client.c
|
119
117
|
- ext/tiny_tds/client.h
|
120
118
|
- ext/tiny_tds/extconf.rb
|
@@ -126,11 +124,17 @@ files:
|
|
126
124
|
- lib/tiny_tds/1.9/tiny_tds.so
|
127
125
|
- lib/tiny_tds/2.0/tiny_tds.so
|
128
126
|
- lib/tiny_tds/2.1/tiny_tds.so
|
127
|
+
- lib/tiny_tds/2.2/tiny_tds.so
|
129
128
|
- lib/tiny_tds/client.rb
|
130
129
|
- lib/tiny_tds/error.rb
|
131
130
|
- lib/tiny_tds/result.rb
|
132
131
|
- lib/tiny_tds/version.rb
|
133
|
-
-
|
132
|
+
- ports/i686-w64-mingw32/bin/libeay32-1.0.2d-i686-w64-mingw32.dll
|
133
|
+
- ports/i686-w64-mingw32/bin/libiconv-2.dll
|
134
|
+
- ports/i686-w64-mingw32/bin/libsybdb-5.dll
|
135
|
+
- ports/i686-w64-mingw32/bin/ssleay32-1.0.2d-i686-w64-mingw32.dll
|
136
|
+
- ports/patches/freetds/0.91/Makefile.in.diff
|
137
|
+
- ports/patches/freetds/0.91/dblib-30-char-username.diff
|
134
138
|
- test/benchmark/query.rb
|
135
139
|
- test/benchmark/query_odbc.rb
|
136
140
|
- test/benchmark/query_tinytds.rb
|
@@ -140,32 +144,34 @@ files:
|
|
140
144
|
- test/schema/sqlserver_2000.sql
|
141
145
|
- test/schema/sqlserver_2005.sql
|
142
146
|
- test/schema/sqlserver_2008.sql
|
147
|
+
- test/schema/sqlserver_2014.sql
|
143
148
|
- test/schema/sqlserver_azure.sql
|
144
149
|
- test/schema/sybase_ase.sql
|
145
150
|
- test/schema_test.rb
|
146
151
|
- test/test_helper.rb
|
147
152
|
- test/thread_test.rb
|
148
153
|
homepage: http://github.com/rails-sqlserver/tiny_tds
|
149
|
-
licenses:
|
154
|
+
licenses:
|
155
|
+
- MIT
|
150
156
|
metadata: {}
|
151
157
|
post_install_message:
|
152
158
|
rdoc_options:
|
153
|
-
- --charset=UTF-8
|
159
|
+
- "--charset=UTF-8"
|
154
160
|
require_paths:
|
155
161
|
- lib
|
156
162
|
required_ruby_version: !ruby/object:Gem::Requirement
|
157
163
|
requirements:
|
158
|
-
- -
|
164
|
+
- - ">="
|
159
165
|
- !ruby/object:Gem::Version
|
160
166
|
version: '0'
|
161
167
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
162
168
|
requirements:
|
163
|
-
- -
|
169
|
+
- - ">"
|
164
170
|
- !ruby/object:Gem::Version
|
165
|
-
version:
|
171
|
+
version: 1.3.1
|
166
172
|
requirements: []
|
167
173
|
rubyforge_project:
|
168
|
-
rubygems_version: 2.
|
174
|
+
rubygems_version: 2.4.8
|
169
175
|
signing_key:
|
170
176
|
specification_version: 4
|
171
177
|
summary: TinyTDS - A modern, simple and fast FreeTDS library for Ruby using DB-Library.
|
@@ -1,31 +0,0 @@
|
|
1
|
-
diff --git a/bin/package_win32_fat_binary b/bin/package_win32_fat_binary
|
2
|
-
index b336eb7..8ef4f98 100755
|
3
|
-
--- a/bin/package_win32_fat_binary
|
4
|
-
+++ b/bin/package_win32_fat_binary
|
5
|
-
@@ -12,9 +12,8 @@ cd '/vagrant'
|
6
|
-
# passed in path of gem to be cross-compiled
|
7
|
-
cd $1
|
8
|
-
|
9
|
-
-# need to use 1.8.7 for fat-binaries (1.9.3 can't cross-build 1.8.7)
|
10
|
-
-rvm use 1.8.7
|
11
|
-
+rvm use 1.9.3
|
12
|
-
bundle install
|
13
|
-
|
14
|
-
bundle exec rake clean
|
15
|
-
-bundle exec rake cross native gem RUBY_CC_VERSION=1.8.7:1.9.3:2.0.0
|
16
|
-
+bundle exec rake cross native gem RUBY_CC_VERSION=1.9.3:2.0.0:2.1.1
|
17
|
-
diff --git a/bin/prepare_xrubies b/bin/prepare_xrubies
|
18
|
-
index 0e2043c..bd1d3c8 100755
|
19
|
-
--- a/bin/prepare_xrubies
|
20
|
-
+++ b/bin/prepare_xrubies
|
21
|
-
@@ -18,10 +18,6 @@ rvm all do gem install rake-compiler -v "~> 0.9.2"
|
22
|
-
# Use just one CPU for building 1.8.7 and 1.9.3
|
23
|
-
export MAKE="make"
|
24
|
-
|
25
|
-
-# Build 1.8.7 with mingw32 compiler (GCC 4.2)
|
26
|
-
-rvm use 1.8.7
|
27
|
-
-rake-compiler cross-ruby VERSION=1.8.7-p374 HOST=i586-mingw32msvc
|
28
|
-
-
|
29
|
-
# Build 1.9.3 using 1.9.3 as base
|
30
|
-
rvm use 1.9.3
|
31
|
-
rake-compiler cross-ruby VERSION=1.9.3-p545 HOST=i586-mingw32msvc
|
data/ext/patch/Makefile.in.diff
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
--- a/Makefile.in 2011-08-17 18:57:36.000000000 -0700
|
2
|
-
+++ b/Makefile.in 2014-05-02 10:27:01.275813000 -0700
|
3
|
-
@@ -772,13 +772,6 @@
|
4
|
-
|
5
|
-
|
6
|
-
install-data-local:
|
7
|
-
- $(mkinstalldirs) $(ETC)
|
8
|
-
- if test ! -f $(ETC)/freetds.conf; then \
|
9
|
-
- $(INSTALL_DATA) $(srcdir)/freetds.conf $(ETC)/freetds.conf; \
|
10
|
-
- fi
|
11
|
-
- if test ! -f $(ETC)/locales.conf; then \
|
12
|
-
- $(INSTALL_DATA) $(srcdir)/locales.conf $(ETC)/locales.conf; \
|
13
|
-
- fi
|
14
|
-
|
15
|
-
clean-local:
|
16
|
-
find . \( -name \*.test_output -o -name \*.bb -o -name \*.bbg -o -name \*.da -o -name \*.gc\* \) -exec rm -f {} \;
|
17
|
-
--- a/src/pool/Makefile.in 2011-08-17 18:57:36.000000000 -0700
|
18
|
-
+++ b/src/pool/Makefile.in 2014-05-02 10:32:39.628347600 -0700
|
19
|
-
@@ -574,10 +574,6 @@
|
20
|
-
|
21
|
-
|
22
|
-
install-data-local:
|
23
|
-
- $(mkinstalldirs) $(ETC)
|
24
|
-
- if test ! -f $(ETC)/pool.conf; then \
|
25
|
-
- $(INSTALL_DATA) $(srcdir)/pool.conf $(ETC)/pool.conf; \
|
26
|
-
- fi
|
27
|
-
|
28
|
-
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
29
|
-
# Otherwise a system limit (for SysV at least) may be exceeded.
|
@@ -1,11 +0,0 @@
|
|
1
|
-
--- a/src/dblib/dblib.c
|
2
|
-
+++ b/src/dblib/dblib.c
|
3
|
-
@@ -765,7 +765,7 @@ dbsetlname(LOGINREC * login, const char *value, int which)
|
4
|
-
return FAIL;
|
5
|
-
}
|
6
|
-
|
7
|
-
- if (TDS_MAX_LOGIN_STR_SZ < strlen(value)) {
|
8
|
-
+ if (login->tds_login->tds_version < 0x700 && TDS_MAX_LOGIN_STR_SZ < strlen(value)) {
|
9
|
-
dbperror(NULL, SYBENTLL, 0);
|
10
|
-
return FAIL;
|
11
|
-
}
|
@@ -1,42 +0,0 @@
|
|
1
|
-
--- a/src/tds/sspi.c
|
2
|
-
+++ b/src/tds/sspi.c
|
3
|
-
@@ -172,8 +172,19 @@ tds_sspi_handle_next(TDSSOCKET * tds, struct tds_authentication * tds_auth, size
|
4
|
-
|
5
|
-
free(auth_buf);
|
6
|
-
|
7
|
-
- if (status != SEC_E_OK)
|
8
|
-
+ switch (status) {
|
9
|
-
+ case SEC_I_COMPLETE_AND_CONTINUE:
|
10
|
-
+ sec_fn->CompleteAuthToken(&auth->cred_ctx, &out_desc);
|
11
|
-
+ break;
|
12
|
-
+
|
13
|
-
+ case SEC_I_CONTINUE_NEEDED:
|
14
|
-
+ case SEC_E_OK:
|
15
|
-
+ break;
|
16
|
-
+
|
17
|
-
+ default:
|
18
|
-
return TDS_FAIL;
|
19
|
-
+ }
|
20
|
-
+
|
21
|
-
if (out_buf.cbBuffer == 0)
|
22
|
-
return TDS_SUCCEED;
|
23
|
-
|
24
|
-
@@ -275,9 +286,16 @@ tds_sspi_get_auth(TDSSOCKET * tds)
|
25
|
-
&auth->cred_ctx, &desc,
|
26
|
-
&attrs, &ts);
|
27
|
-
|
28
|
-
- if (status == SEC_I_COMPLETE_AND_CONTINUE || status == SEC_I_CONTINUE_NEEDED) {
|
29
|
-
+ switch (status) {
|
30
|
-
+ case SEC_I_COMPLETE_AND_CONTINUE:
|
31
|
-
sec_fn->CompleteAuthToken(&auth->cred_ctx, &desc);
|
32
|
-
- } else if(status != SEC_E_OK) {
|
33
|
-
+ break;
|
34
|
-
+
|
35
|
-
+ case SEC_I_CONTINUE_NEEDED:
|
36
|
-
+ case SEC_E_OK:
|
37
|
-
+ break;
|
38
|
-
+
|
39
|
-
+ default:
|
40
|
-
free(auth->sname);
|
41
|
-
free(auth->tds_auth.packet);
|
42
|
-
sec_fn->FreeCredentialsHandle(&auth->cred);
|
data/tasks/ports.rake
DELETED
@@ -1,79 +0,0 @@
|
|
1
|
-
require 'mini_portile'
|
2
|
-
|
3
|
-
# If your using 0.82, you may have to make a conf file to get it to work. For example:
|
4
|
-
# $ export FREETDSCONF='/opt/local/etc/freetds/freetds.conf'
|
5
|
-
ICONV_VERSION = "1.14"
|
6
|
-
FREETDS_VERSION = ENV['TINYTDS_FREETDS_VERSION'] || "0.91"
|
7
|
-
FREETDS_VERSION_INFO = Hash.new { |h,k|
|
8
|
-
h[k] = {:files => "ftp://ftp.astron.com/pub/freetds/stable/freetds-#{k}.tar.gz"}
|
9
|
-
}.merge({
|
10
|
-
"0.82" => {:files => "ftp://ftp.astron.com/pub/freetds/old/0.82/freetds-0.82.tar.gz"},
|
11
|
-
"0.91" => {:files => "ftp://ftp.astron.com/pub/freetds/stable/freetds-0.91.tar.gz"},
|
12
|
-
"current" => {:files => "ftp://ftp.astron.com/pub/freetds/current/freetds-current.tgz"}
|
13
|
-
})
|
14
|
-
|
15
|
-
# all ports depends on this directory to exist
|
16
|
-
directory "ports"
|
17
|
-
|
18
|
-
def define_libiconv_recipe(platform, host)
|
19
|
-
recipe = MiniPortile.new "libiconv", ICONV_VERSION
|
20
|
-
recipe.files << "http://ftp.gnu.org/pub/gnu/libiconv/libiconv-#{ICONV_VERSION}.tar.gz"
|
21
|
-
recipe.host = host
|
22
|
-
|
23
|
-
desc "Compile libiconv for '#{platform}' (#{host})"
|
24
|
-
task "ports:libiconv:#{platform}" => ["ports"] do
|
25
|
-
checkpoint = "ports/.#{recipe.name}-#{recipe.version}-#{recipe.host}.installed"
|
26
|
-
|
27
|
-
unless File.exist?(checkpoint)
|
28
|
-
# always produce position independent code
|
29
|
-
recipe.configure_options << "CFLAGS='-fPIC'"
|
30
|
-
recipe.cook
|
31
|
-
touch checkpoint
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
recipe
|
36
|
-
end
|
37
|
-
|
38
|
-
def define_freetds_recipe(platform, host, libiconv)
|
39
|
-
recipe = MiniPortile.new "freetds", FREETDS_VERSION
|
40
|
-
recipe.files << FREETDS_VERSION_INFO[FREETDS_VERSION][:files]
|
41
|
-
recipe.host = host
|
42
|
-
|
43
|
-
if recipe.respond_to?(:patch_files) && FREETDS_VERSION == "0.91"
|
44
|
-
recipe.patch_files << File.expand_path(File.join('..', '..', 'ext', 'patch', 'sspi_w_kerberos.diff'), __FILE__)
|
45
|
-
recipe.patch_files << File.expand_path(File.join('..', '..', 'ext', 'patch', 'dblib-30-char-username.diff'), __FILE__)
|
46
|
-
unless RUBY_PLATFORM =~ /mswin|mingw/
|
47
|
-
recipe.patch_files << File.expand_path(File.join('..', '..', 'ext', 'patch', 'Makefile.in.diff'), __FILE__)
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
desc "Compile freetds for '#{platform}' (#{host})"
|
52
|
-
task "ports:freetds:#{platform}" => ["ports", "ports:libiconv:#{platform}"] do
|
53
|
-
checkpoint = "ports/.#{recipe.name}-#{recipe.version}-#{recipe.host}.installed"
|
54
|
-
|
55
|
-
unless File.exist?(checkpoint)
|
56
|
-
with_tdsver = ENV['TINYTDS_FREETDS_VERSION'] =~ /0\.8/ ? "--with-tdsver=8.0" : "--with-tdsver=7.1"
|
57
|
-
for_windows = recipe.host =~ /mswin|mingw/i
|
58
|
-
recipe.configure_options << '--with-pic'
|
59
|
-
recipe.configure_options << "--with-libiconv-prefix=#{libiconv.path}"
|
60
|
-
recipe.configure_options << '--sysconfdir="C:/Sites"' if for_windows
|
61
|
-
recipe.configure_options << '--enable-sspi' if for_windows
|
62
|
-
recipe.configure_options << "--disable-odbc"
|
63
|
-
recipe.configure_options << with_tdsver
|
64
|
-
recipe.cook
|
65
|
-
touch checkpoint
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
recipe
|
70
|
-
end
|
71
|
-
|
72
|
-
# native compilation of ports
|
73
|
-
host = RbConfig::CONFIG["host"]
|
74
|
-
libiconv = define_libiconv_recipe(RUBY_PLATFORM, host)
|
75
|
-
freetds = define_freetds_recipe(RUBY_PLATFORM, host, libiconv)
|
76
|
-
|
77
|
-
# compile native FreeTDS
|
78
|
-
desc "Compile native freetds"
|
79
|
-
task "ports:freetds" => ["ports:freetds:#{RUBY_PLATFORM}"]
|