Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Provide precompiled gem for Linux #575

Open
wants to merge 12 commits into
base: master
Choose a base branch
from

Conversation

andyundso
Copy link
Member

@andyundso andyundso commented Jan 8, 2025

Closes #569.

Background

If I read that correctly from the project's history, tiny_tds used to ship with an extensive mini_portile configuration prior to v2 to build FreeTDS. This has been removed with v2, see #345. Now you need to bring your own FreeTDS, which tiny_tds will find and compile against.

Compiling FreeTDS yourself is not too complicated, especially since you can follow along with the README. However, I noted the general sentiment of the Ruby community of shipping gems precompiled to you, not only for Windows, but also Linux and Mac OS. nokogiri and sqlite3-ruby have been doing this for a while, and I saw that the pg gem prepared for a Linux build. So I feel it would be good to follow along and also provide a precompiled gem for Linux.

Approach

There are two approaches on how you can ship precompiled gems: static or dynamic. On that note, we also have to know that for each supported Ruby version of the precompiled gem, a separate compiled file has to be shipped. Right now, our Windows gem ships with 6 different compiled tiny_tds files for each supported Ruby version.

If you would ship with a statically compiled tiny_tds file, all our dependencies (FreeTDS, iconv, OpenSSL) are squeezed into the resulting tiny_tds files. I tried that out, and it resulted in a massive gem file (60 MB compressed), since we had all the dependencies times 6, for each supported Ruby version. So this was not feasable.

Dynamic means: You compile a library with all its dependencies visible and tell it "you will find it at runtime" again, don't worry. It is a good way to safe space. This is also how the current tiny_tds build works. After the results of building the static version, I felt like this is the best way to go, considering our dependency size.

Changes

First commit: Partially static build

I heavily looked into what has been done in the pg, and decided to replicate the changes in order to have it easier to implement the Linux support. So the first commit is mostly aligning the build system.

The gist of the changes is:

  • Ports are now build as part of rake compile when cross-compiling instead of having a separate task.
  • OpenSSL and iconv are built as a static library and are linked into FreeTDS, which remains a dynamic library. This means we only have to ship a single library and not the entire ports directory.
  • The OpenSSL build should be much faster since only the required libraries are now built.

Next 4 commits: Support for Linux

The first commit contains the most changes.

Generally, I decided to ship four different Linux gems:

  • One for x86_64 and glibc (the usual case)
  • One for x86_64 and musl (when running an Alpine OS)
  • One for ARM64 and glibc (could be for AWS Graviton or folks with M1-4 CPUs using Docker)
  • One for ARM64 and musl (mostly for folks with M1-4 CPUs using Docker)

Then most of it was declaring Windows and Linux specific compiler flags.

There is one interesting thing, which is this line in extconf.rb:

 $LDFLAGS << " '-Wl,-rpath=$$ORIGIN/../../../ports/#{gem_platform}/lib'"

When the linker links our precompiled tiny_tds gem against FreeTDS, it passes it "runtime paths", basically information where it find different required libraries, like FreeTDS. Of course, our gem could be installed anywhere, so we cannot use absolute paths here. This little flag tells the linker to tell the resulting file that it should look in our ports directory from its current location for the FreeTDS library.

I also extended the test suite in this commit to test the resulting files and make sure they pass the tests. I do not run tests for anything else than the regular x86_64 GNU build, but I test the installation on the other platforms in Docker according to a template by flavorjones.

Last commit: Fix binstubs

tiny_tds ships with binstubs to call defncopy and tsql from FreeTDS. tsql is for connection diagnostics, defncopy is used by the SQL server adapter to dump schemas. I noted that these have been broken prior to my changes, so I thought it might be good to fix them.

  • The precompiled binaries were not included in the final gem since I touched the build system.
  • There is some logic to find tsql. On Windows, the tsql.exe by the msys2 system did not pass the binary? check. I removed it altogether since I did not see an advantage of having it.
  • On Linux, I had to tell the resulting tsql and defncopy where to find its sybdb library file with a runtime path, similar as with the tiny_tds files.
  • Execution of the wrappers is now tested across all platforms.

Consideration

While this PR will simply the installation for tiny_tds on Linux, and reduces the size for Windows users, it makes our build process more complicated and also larger because of many additional tests.

As I have written in the initial paragraph, I would like to follow the example of other gems and simplify the installation process. Preparing this PR cost me a lot of time since I was not familiar with the C build system at all (and FreeTDS makes things extra difficult for a beginner with cmake and libtool). It has been 8 years since the old build process was touched, and I expect a similar life span for these changes. I do not really expect more maintenance effort from our side, but it will require some more frequent updates to keep the dependencies inside the gem up-to-date.

@andyundso
Copy link
Member Author

the PR is almost ready.

  • I need to change the sysconfdir parameter for FreeTDS based on the platform.
  • Tests are also sometimes flaky, requiring two or three runs. Maybe I can debug this somehow.

You can use this parameter to specify a `freetds.conf` there. per default, it will use the build path, which will be some obscure thing on GitHub Actions. Although most people will customize this location at runtime using environment variables, it still makes sense to provide sensible defaults.
Copy link
Contributor

@aharpervc aharpervc left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wow, amazing 😮

It has been 8 years since the old build process was touched,

Yeah ugh, incredible that you had the time to pick this apart...

I tried that out, and it resulted in a massive gem file (60 MB compressed), since we had all the dependencies times 6, for each supported Ruby version. So this was not feasable.

I'm not understanding this, if we're shipping binaries now why is it different static vs dynamic, wouldn't the binary be different per-build-target? Or are you saying that approach builds/ships all targets in 1 gem? Also what do you mean by times 6?

Ports are now build as part of rake compile when cross-compiling instead of having a separate task.

Can you share more of your rationale here? It seems like having a separate task is useful to debug compiling tiny tds C vs dependency C. Also if you're choosing to build dynamic libraries doesn't that mean we'd have separate compile tasks regardless? So I don't understand merging the rake tasks like this

Windows & Linux

Lastly for the moment, (maybe you said this), why not also macOS? It seems virtuous to treat all OS's equally for compilation/distribution if possible


To say it... incredible...!

Rakefile Outdated Show resolved Hide resolved
Rakefile Outdated Show resolved Hide resolved
lib/tiny_tds.rb Outdated Show resolved Hide resolved
lib/tiny_tds.rb Outdated Show resolved Hide resolved
@@ -115,6 +115,7 @@ def configure_defaults

recipe.configure_options << "--with-openssl=#{openssl_recipe.path}"
recipe.configure_options << "--with-libiconv-prefix=#{libiconv_recipe.path}"
recipe.configure_options << "--sysconfdir=#{MiniPortile.windows? ? "C:/Sites" : "/usr/local/etc"}"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can/should this come from env var?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A user can overwrite it at runtime:
https://www.freetds.org/userguide/freetdsconf.htm

@andyundso
Copy link
Member Author

I tried that out, and it resulted in a massive gem file (60 MB compressed), since we had all the dependencies times 6, for each supported Ruby version. So this was not feasable.

I'm not understanding this, if we're shipping binaries now why is it different static vs dynamic, wouldn't the binary be different per-build-target? Or are you saying that approach builds/ships all targets in 1 gem? Also what do you mean by times 6?

It's maybe easier to show. This is the structure of a precompiled tiny_tds gem:

$ tree /tmp/tiny_tds/lib/
/tmp/tiny_tds/lib/
├── tiny_tds
│   ├── 2.7
│   │   └── tiny_tds.so
│   ├── 3.0
│   │   └── tiny_tds.so
│   ├── 3.1
│   │   └── tiny_tds.so
│   ├── 3.2
│   │   └── tiny_tds.so
│   ├── 3.3
│   │   └── tiny_tds.so
│   ├── 3.4
│   │   └── tiny_tds.so

Now if we look into the file size of one of these files when everything is statically compiled, it comes out as follows:

$ ls -l  /tmp/tiny_tds/lib/tiny_tds/2.7/tiny_tds.so 
-rwxr-xr-x 1 andy andy 9264808 Jan  7 23:00 /tmp/tiny_tds/lib/tiny_tds/2.7/tiny_tds.so

So it's 9.2 MB. For each supported Ruby version, each of these shared library is 9.2 MB since all dependencies are statically compiled into it. This is what I meant by times 6.

Ports are now build as part of rake compile when cross-compiling instead of having a separate task.

Can you share more of your rationale here? It seems like having a separate task is useful to debug compiling tiny tds C vs dependency C. Also if you're choosing to build dynamic libraries doesn't that mean we'd have separate compile tasks regardless? So I don't understand merging the rake tasks like this

It was originally just to align with pg. During the development of this PR, I also did not have the need to compile ports and the gem itself separately. Another nice advantage is that we no longer need to pass host around in the ports. host was to originally invoke the correct gcc and linker when cross compiling (e.g. x86_64-w64-mingw32 when compiling for x64-mingw-ucrt). but when we compile the ports through rake-compiler, it somehow sets everything correct from the start.

I just tried to separate the builds and I am not super happy about it.

When we compile FreeTDS statically with OpenSSL and iconv, when compiling tiny_tds, it needs to see these references again (-lssl -lcrypto and so). You can do this by saying have_library(ssl) in the extconf file. But then OpenSSL needs different OS libraries on Windows and Linux, so we also have to declare that (e.g. -lcrypt32 on Windows). So we partially copy our compile arguments, which I do not like.

When both ports and tiny_tds are compiled inside extconf, we do not have that problem because all the references have been set during the build. So I would suggest to keep everything inside extconf.

Windows & Linux

Lastly for the moment, (maybe you said this), why not also macOS? It seems virtuous to treat all OS's equally for compilation/distribution if possible

to be honest, installation of FreeTDS on Mac OS is really easy and I personally do not have a need for a precompiled version on Mac. If there is a need by the community, I am happy to ship it at a later point.

@andyundso
Copy link
Member Author

andyundso commented Jan 10, 2025

so:

  • sysconfdir is now only set on Windows because most common paths on Linux require root to write there.
  • I need to investigate the flaky tests on Windows in a different PR. I first need a Windows box up and running.

otherwise I think this PR is ready to merge.

@aharpervc
Copy link
Contributor

aharpervc commented Jan 10, 2025

For each supported Ruby version, each of these shared library is 9.2 MB since all dependencies are statically compiled into it. This is what I meant by times 6.

I'm still working through the implications here & running the branch locally. However I'm trying to remember what about this makes them different for different Ruby versions. I understand why tiny_tds itself needs to be compiled n times (per target platform/architecture?), since we're building against ruby.h. I'm putting it together here... you're saying now, static linking is better, therefore the dependencies are compiled together with tiny_tds, therefore we have n distinct copies. Did I work it out right?

And then if I'm getting it, does the equation change here if we switched to dynamic linking (still providing the compiled dependencies blob in the gem)? freetds/libiconv/openssl won't have the Ruby dependency and could be compiled once (per target platform/architecture), and then we have that dependency blob + 6 tiny_tds.so's. And that tiny_tds.so would be really small (...tiny... 😆) so 6x doesn't seem so bad.

I re-read your comments above but I'm still unclear on why you're preferring to avoid dynamic linking, can you expand on that more? If we did it that way, Windows & Linux would be more similar to macOS, right? Because in all cases the dependencies are dynamically linked on macOS (we are declining to provide a statically compiled fat gem for that OS)

@aharpervc
Copy link
Contributor

aharpervc commented Jan 10, 2025

Okay, I built the gem from this branch okay

but it failed to install. Does this seem like a "me problem" or something changed here?

$ ruby -v
ruby 3.1.6p260 (2024-05-29 revision a777087be6) [x64-mingw-ucrt]

$ gem install .\pkg\tiny_tds-3.2.0-x64-mingw-ucrt.gem
<internal:C:/ruby/316-1-x64/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require': 126: The specified module could not be found.   - C:/ruby/316-1-x64/lib/ruby/gems/3.1.0/gems/date-3.3.4/lib/date_core.so (LoadError)

(never mind, "me problem")

@andyundso
Copy link
Member Author

well this is somewhat complicated to explain over text 😅.

I understand why tiny_tds itself needs to be compiled n times (per target platform/architecture?), since we're building against ruby.h.

Correct.

I'm putting it together here... you're saying now, static linking is better, therefore the dependencies are compiled together with tiny_tds, therefore we have n distinct copies. Did I work it out right?

I think we have a misunderstanding here: I do not think linking everything statically in our case is better, because of the size of the dependencies.

And then if I'm getting it, does the equation change here if we switched to dynamic linking (still providing the compiled dependencies blob in the gem)? freetds/libiconv/openssl won't have the Ruby dependency and could be compiled once (per target platform/architecture), and then we have that dependency blob + 6 tiny_tds.so's. And that tiny_tds.so would be really small (...tiny... 😆) so 6x doesn't seem so bad.

This is now exactly how it works now with this PR. One large dependency blob, 6 tiny tiny_tds.

$ tree --du -h ports/x86_64-linux-gnu/lib lib/tiny_tds
[9.1M]  ports/x86_64-linux-gnu/lib
└── [9.1M]  libsybdb.so.5
[293K]  lib/tiny_tds
├── [ 47K]  2.7
│   └── [ 43K]  tiny_tds.so
├── [ 47K]  3.0
│   └── [ 43K]  tiny_tds.so
├── [ 47K]  3.1
│   └── [ 43K]  tiny_tds.so
├── [ 47K]  3.2
│   └── [ 43K]  tiny_tds.so
├── [ 47K]  3.3
│   └── [ 43K]  tiny_tds.so
├── [ 47K]  3.4
│   └── [ 43K]  tiny_tds.so

Just for completeness / comparison: This is how the ports look for the current version of tiny_tds (v3.1.0):

$ tree ports/
ports/
└── x64-mingw-ucrt
    ├── freetds
    │   └── 1.4.23
    │       ├── bin
    │       │   ├── bsqldb.exe
    │       │   ├── datacopy.exe
    │       │   ├── defncopy.exe
    │       │   ├── freebcp.exe
    │       │   ├── libct-4.dll
    │       │   ├── libsybdb-5.dll
    │       │   ├── osql
    │       │   ├── tdspool.exe
    │       │   └── tsql.exe
    │       └── lib
    │           ├── libct.dll.a
    │           ├── libct.la
    │           ├── libsybdb.dll.a
    │           └── libsybdb.la
    ├── libiconv
    │   └── 1.17
    │       ├── bin
    │       │   ├── iconv.exe
    │       │   ├── libcharset-1.dll
    │       │   └── libiconv-2.dll
    │       └── lib
    │           ├── libcharset.dll.a
    │           ├── libcharset.la
    │           ├── libiconv.dll.a
    │           └── libiconv.la
    └── openssl
        └── 3.4.0
            └── bin
                ├── c_rehash
                ├── libcrypto-3-x64.dll
                ├── libssl-3-x64.dll
                └── openssl.exe

basically, everything is a shared library and dynamically linked. When starting tiny_tds on Windows, we mess with the PATH to ensure our shared libraries are loaded first (happening here). I could have built a similar solution for Linux, instead of messing with PATH you would have to modify LD_LIBRARY_PATH or add a dependency on fiddle. But I like that we have only one dependency blob now, makes things much cleaner.

@aharpervc
Copy link
Contributor

Can you remind me how to build the gem just for a single os/architecture? I ran rake gem:native:x64-mingw-ucrt and it made a corresponding arch-specific gem file in pkg as expected, but the contents of that gem file is empty except for the binaries (and extconf.rb). Then rake gem makes me the a gem (w/o the os/arch filename) but it's missing the binaries so then installing it runs the compiler (which I shouldn't have to do with a fat binary?). And then rake gem:native is doing the full cross compile which is annoying for local dev.

Basically... it's been too long, I forgot how this works 😆

@andyundso
Copy link
Member Author

actually bundle exec rake gem:native:x64-mingw-ucrt is the correct command to build a gem for a single platform and architecture. maybe there was an error during packaging, because it should not be empty?

@andyundso
Copy link
Member Author

@aharpervc do you see any blockers for merging this?

@aharpervc
Copy link
Contributor

@aharpervc do you see any blockers for merging this?

The concept of the PR seems like an improvement. However, I'd like to understand why I'm not able to build the gem locally... is it a problem on my end or something we should fix before merging?

My process is clobber/clean, ridk enable, then build per above. I don't see anything obviously wrong in the logs, but my pkg dir only has those 3 folders.

Can you help me narrow down the logic that moves gem code into that folder?

@andyundso
Copy link
Member Author

@aharpervc below I added a log when I execute the compilation on my own machine. Maybe you can spot something that is missing when you run the command?

$ bundle exec rake gem:native:x64-mingw-ucrt
rake-compiler-dock bash -c "\t\t\tbundle install &&\n\t\t\trake native:x64-mingw-ucrt pkg/tiny_tds-3.2.0-x64-mingw-ucrt.gem MAKEOPTS=-j`nproc` RUBY_CC_VERSION=3.4.1:3.3.5:3.2.0:3.1.0:3.0.0:2.7.0 MAKEFLAGS=\"V=1\"\n"
Unable to find image 'ghcr.io/rake-compiler/rake-compiler-dock-image:1.7.1-mri-x64-mingw-ucrt' locally
1.7.1-mri-x64-mingw-ucrt: Pulling from rake-compiler/rake-compiler-dock-image
86e5016c2693: Already exists 
be74198b6fad: Pull complete 
26ed64c37b17: Pull complete 
4c91b85b5fbc: Pull complete 
f335d652442c: Pull complete 
90f0b506d5f4: Pull complete 
9695f8bcb460: Pull complete 
cf55060d9c68: Pull complete 
c53189d9c7f1: Pull complete 
fa34907f9425: Pull complete 
b6cd90116741: Pull complete 
c036613834d9: Pull complete 
15a4431bcd82: Pull complete 
0f3988d854b6: Pull complete 
3bb4909e40ee: Pull complete 
cfd2c5ce8d73: Pull complete 
63e7a02d8134: Pull complete 
ca2e6d37b4ac: Pull complete 
31729a9d966f: Pull complete 
61c61cf0d30e: Pull complete 
baa9cd37c4b0: Pull complete 
4f764deaa4a9: Pull complete 
ecd861948fa6: Pull complete 
1f6120fd8c38: Pull complete 
Digest: sha256:bd9e2d33b2da793c3f7d8506361f2c23845ce20005c981c96e2ef0f59601ccda
Status: Downloaded newer image for ghcr.io/rake-compiler/rake-compiler-dock-image:1.7.1-mri-x64-mingw-ucrt
Bundler 2.3.26 is running, but your lockfile was generated with 2.4.22. Installing Bundler 2.4.22 and restarting using that version.
Fetching gem metadata from https://rubygems.org/.
Fetching bundler 2.4.22
Installing bundler 2.4.22
Fetching gem metadata from https://rubygems.org/....
Fetching builder 3.3.0
Fetching mini_portile2 2.8.8
Fetching rake-compiler-dock 1.7.1
Fetching ansi 1.5.0
Fetching bigdecimal 3.1.9
Fetching minitest 5.25.4
Fetching ruby-progressbar 1.13.0
Fetching connection_pool 2.2.5
Installing connection_pool 2.2.5
Installing ruby-progressbar 1.13.0
Installing builder 3.3.0
Installing mini_portile2 2.8.8
Installing rake-compiler-dock 1.7.1
Installing ansi 1.5.0
Installing bigdecimal 3.1.9 with native extensions
Installing minitest 5.25.4
Fetching toxiproxy 2.0.2
Fetching minitest-reporters 1.6.1
Installing toxiproxy 2.0.2
Installing minitest-reporters 1.6.1
Bundle complete! 9 Gemfile dependencies, 14 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
no configuration section for specified version of Ruby (rbconfig-x64-mingw-ucrt-3.0.0)
no configuration section for specified version of Ruby (rbconfig-x64-mingw-ucrt-2.7.0)
no configuration section for specified version of Ruby (rbconfig-x64-mingw32-3.4.1)
no configuration section for specified version of Ruby (rbconfig-x64-mingw32-3.3.5)
no configuration section for specified version of Ruby (rbconfig-x64-mingw32-3.2.0)
no configuration section for specified version of Ruby (rbconfig-x64-mingw32-3.1.0)
no configuration section for specified version of Ruby (rbconfig-x64-mingw32-3.0.0)
no configuration section for specified version of Ruby (rbconfig-x64-mingw32-2.7.0)
no configuration section for specified version of Ruby (rbconfig-x86_64-linux-gnu-3.4.1)
no configuration section for specified version of Ruby (rbconfig-x86_64-linux-gnu-3.3.5)
no configuration section for specified version of Ruby (rbconfig-x86_64-linux-gnu-3.2.0)
no configuration section for specified version of Ruby (rbconfig-x86_64-linux-gnu-3.1.0)
no configuration section for specified version of Ruby (rbconfig-x86_64-linux-gnu-3.0.0)
no configuration section for specified version of Ruby (rbconfig-x86_64-linux-gnu-2.7.0)
no configuration section for specified version of Ruby (rbconfig-x86_64-linux-musl-3.4.1)
no configuration section for specified version of Ruby (rbconfig-x86_64-linux-musl-3.3.5)
no configuration section for specified version of Ruby (rbconfig-x86_64-linux-musl-3.2.0)
no configuration section for specified version of Ruby (rbconfig-x86_64-linux-musl-3.1.0)
no configuration section for specified version of Ruby (rbconfig-x86_64-linux-musl-3.0.0)
no configuration section for specified version of Ruby (rbconfig-x86_64-linux-musl-2.7.0)
no configuration section for specified version of Ruby (rbconfig-aarch64-linux-gnu-3.4.1)
no configuration section for specified version of Ruby (rbconfig-aarch64-linux-gnu-3.3.5)
no configuration section for specified version of Ruby (rbconfig-aarch64-linux-gnu-3.2.0)
no configuration section for specified version of Ruby (rbconfig-aarch64-linux-gnu-3.1.0)
no configuration section for specified version of Ruby (rbconfig-aarch64-linux-gnu-3.0.0)
no configuration section for specified version of Ruby (rbconfig-aarch64-linux-gnu-2.7.0)
no configuration section for specified version of Ruby (rbconfig-aarch64-linux-musl-3.4.1)
no configuration section for specified version of Ruby (rbconfig-aarch64-linux-musl-3.3.5)
no configuration section for specified version of Ruby (rbconfig-aarch64-linux-musl-3.2.0)
no configuration section for specified version of Ruby (rbconfig-aarch64-linux-musl-3.1.0)
no configuration section for specified version of Ruby (rbconfig-aarch64-linux-musl-3.0.0)
no configuration section for specified version of Ruby (rbconfig-aarch64-linux-musl-2.7.0)
mkdir -p tmp/x64-mingw-ucrt/tiny_tds/3.4.1
cd tmp/x64-mingw-ucrt/tiny_tds/3.4.1
/usr/local/rbenv/versions/3.1.3/bin/ruby -I. ../../../../ext/tiny_tds/extconf.rb --with-cross-build=x64-mingw-ucrt --with-openssl-platform=mingw64
Downloading openssl-3.4.0.tar.gz (100%) 
Extracting openssl-3.4.0.tar.gz into tmp/x86_64-w64-mingw32/ports/openssl/3.4.0... OK
Running 'configure' for openssl 3.4.0... OK
Running 'compile' for openssl 3.4.0... OK
Running 'install' for openssl 3.4.0... OK
Activating openssl 3.4.0 (from /home/andy/dev/andyundso/tiny_tds/ports/x64-mingw-ucrt)...
Downloading libiconv-1.17.tar.gz (100%) 
Extracting libiconv-1.17.tar.gz into tmp/x86_64-w64-mingw32/ports/libiconv/1.17... OK
Running 'configure' for libiconv 1.17... OK
Running 'compile' for libiconv 1.17... OK
Running 'install' for libiconv 1.17... OK
Activating libiconv 1.17 (from /home/andy/dev/andyundso/tiny_tds/ports/x64-mingw-ucrt)...
Downloading freetds-1.4.23.tar.bz2 (100%) 
Extracting freetds-1.4.23.tar.bz2 into tmp/x86_64-w64-mingw32/ports/freetds/1.4.23... OK
Running 'configure' for freetds 1.4.23... OK
Running 'compile' for freetds 1.4.23... OK
Running 'install' for freetds 1.4.23... OK
Activating freetds 1.4.23 (from /home/andy/dev/andyundso/tiny_tds/ports/x64-mingw-ucrt)...
checking for sybfront.h... yes
checking for sybdb.h... yes
checking for dbanydatecrack() in -lsybdb... yes
creating Makefile
cd -
cd tmp/x64-mingw-ucrt/tiny_tds/3.4.1
/usr/bin/make
(echo EXPORTS && echo Init_tiny_tds) > tiny_tds-x64-mingw-ucrt.def
x86_64-w64-mingw32-gcc -I. -I/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/x64-mingw-ucrt -I/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/backward -I/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0 -I../../../../ext/tiny_tds -I/home/andy/dev/andyundso/tiny_tds/ports/x64-mingw-ucrt/include -D__USE_MINGW_ANSI_STDIO=1 -D_WIN32_WINNT=0x0600 -D__MINGW_USE_VC2005_COMPAT -D_FILE_OFFSET_BITS=64   -O1 -fno-omit-frame-pointer -fno-fast-math -fstack-protector-strong -s  -o client.o -c ../../../../ext/tiny_tds/client.c
../../../../ext/tiny_tds/client.c: In function 'rb_tinytds_tds_version':
../../../../ext/tiny_tds/client.c:259:3: warning: 'rb_data_object_get_warning' is deprecated: by TypedData [-Wdeprecated-declarations]
  259 |   GET_CLIENT_WRAPPER(self);
      |   ^~~~~~~~~~~~~~~~~~
In file included from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core.h:27,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/ruby.h:29,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby.h:38,
                 from ../../../../ext/tiny_tds/tiny_tds_ext.h:7,
                 from ../../../../ext/tiny_tds/client.c:1:
/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core/rdata.h:325:1: note: declared here
  325 | rb_data_object_get_warning(VALUE obj)
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../ext/tiny_tds/client.c: In function 'rb_tinytds_close':
../../../../ext/tiny_tds/client.c:264:3: warning: 'rb_data_object_get_warning' is deprecated: by TypedData [-Wdeprecated-declarations]
  264 |   GET_CLIENT_WRAPPER(self);
      |   ^~~~~~~~~~~~~~~~~~
In file included from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core.h:27,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/ruby.h:29,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby.h:38,
                 from ../../../../ext/tiny_tds/tiny_tds_ext.h:7,
                 from ../../../../ext/tiny_tds/client.c:1:
/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core/rdata.h:325:1: note: declared here
  325 | rb_data_object_get_warning(VALUE obj)
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../ext/tiny_tds/client.c: In function 'rb_tinytds_dead':
../../../../ext/tiny_tds/client.c:275:3: warning: 'rb_data_object_get_warning' is deprecated: by TypedData [-Wdeprecated-declarations]
  275 |   GET_CLIENT_WRAPPER(self);
      |   ^~~~~~~~~~~~~~~~~~
In file included from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core.h:27,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/ruby.h:29,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby.h:38,
                 from ../../../../ext/tiny_tds/tiny_tds_ext.h:7,
                 from ../../../../ext/tiny_tds/client.c:1:
/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core/rdata.h:325:1: note: declared here
  325 | rb_data_object_get_warning(VALUE obj)
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../ext/tiny_tds/client.c: In function 'rb_tinytds_closed':
../../../../ext/tiny_tds/client.c:280:3: warning: 'rb_data_object_get_warning' is deprecated: by TypedData [-Wdeprecated-declarations]
  280 |   GET_CLIENT_WRAPPER(self);
      |   ^~~~~~~~~~~~~~~~~~
In file included from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core.h:27,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/ruby.h:29,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby.h:38,
                 from ../../../../ext/tiny_tds/tiny_tds_ext.h:7,
                 from ../../../../ext/tiny_tds/client.c:1:
/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core/rdata.h:325:1: note: declared here
  325 | rb_data_object_get_warning(VALUE obj)
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../ext/tiny_tds/client.c: In function 'rb_tinytds_canceled':
../../../../ext/tiny_tds/client.c:285:3: warning: 'rb_data_object_get_warning' is deprecated: by TypedData [-Wdeprecated-declarations]
  285 |   GET_CLIENT_WRAPPER(self);
      |   ^~~~~~~~~~~~~~~~~~
In file included from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core.h:27,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/ruby.h:29,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby.h:38,
                 from ../../../../ext/tiny_tds/tiny_tds_ext.h:7,
                 from ../../../../ext/tiny_tds/client.c:1:
/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core/rdata.h:325:1: note: declared here
  325 | rb_data_object_get_warning(VALUE obj)
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../ext/tiny_tds/client.c: In function 'rb_tinytds_sqlsent':
../../../../ext/tiny_tds/client.c:290:3: warning: 'rb_data_object_get_warning' is deprecated: by TypedData [-Wdeprecated-declarations]
  290 |   GET_CLIENT_WRAPPER(self);
      |   ^~~~~~~~~~~~~~~~~~
In file included from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core.h:27,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/ruby.h:29,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby.h:38,
                 from ../../../../ext/tiny_tds/tiny_tds_ext.h:7,
                 from ../../../../ext/tiny_tds/client.c:1:
/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core/rdata.h:325:1: note: declared here
  325 | rb_data_object_get_warning(VALUE obj)
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../ext/tiny_tds/client.c: In function 'rb_tinytds_execute':
../../../../ext/tiny_tds/client.c:297:3: warning: 'rb_data_object_get_warning' is deprecated: by TypedData [-Wdeprecated-declarations]
  297 |   GET_CLIENT_WRAPPER(self);
      |   ^~~~~~~~~~~~~~~~~~
In file included from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core.h:27,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/ruby.h:29,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby.h:38,
                 from ../../../../ext/tiny_tds/tiny_tds_ext.h:7,
                 from ../../../../ext/tiny_tds/client.c:1:
/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core/rdata.h:325:1: note: declared here
  325 | rb_data_object_get_warning(VALUE obj)
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../ext/tiny_tds/client.c:308:5: warning: 'rb_data_object_get_warning' is deprecated: by TypedData [-Wdeprecated-declarations]
  308 |     GET_RESULT_WRAPPER(result);
      |     ^~~~~~~~~~~~~~~~~~
In file included from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core.h:27,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/ruby.h:29,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby.h:38,
                 from ../../../../ext/tiny_tds/tiny_tds_ext.h:7,
                 from ../../../../ext/tiny_tds/client.c:1:
/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core/rdata.h:325:1: note: declared here
  325 | rb_data_object_get_warning(VALUE obj)
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../ext/tiny_tds/client.c: In function 'rb_tinytds_charset':
../../../../ext/tiny_tds/client.c:316:3: warning: 'rb_data_object_get_warning' is deprecated: by TypedData [-Wdeprecated-declarations]
  316 |   GET_CLIENT_WRAPPER(self);
      |   ^~~~~~~~~~~~~~~~~~
In file included from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core.h:27,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/ruby.h:29,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby.h:38,
                 from ../../../../ext/tiny_tds/tiny_tds_ext.h:7,
                 from ../../../../ext/tiny_tds/client.c:1:
/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core/rdata.h:325:1: note: declared here
  325 | rb_data_object_get_warning(VALUE obj)
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../ext/tiny_tds/client.c: In function 'rb_tinytds_encoding':
../../../../ext/tiny_tds/client.c:321:3: warning: 'rb_data_object_get_warning' is deprecated: by TypedData [-Wdeprecated-declarations]
  321 |   GET_CLIENT_WRAPPER(self);
      |   ^~~~~~~~~~~~~~~~~~
In file included from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core.h:27,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/ruby.h:29,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby.h:38,
                 from ../../../../ext/tiny_tds/tiny_tds_ext.h:7,
                 from ../../../../ext/tiny_tds/client.c:1:
/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core/rdata.h:325:1: note: declared here
  325 | rb_data_object_get_warning(VALUE obj)
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../ext/tiny_tds/client.c: In function 'rb_tinytds_escape':
../../../../ext/tiny_tds/client.c:327:3: warning: 'rb_data_object_get_warning' is deprecated: by TypedData [-Wdeprecated-declarations]
  327 |   GET_CLIENT_WRAPPER(self);
      |   ^~~~~~~~~~~~~~~~~~
In file included from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core.h:27,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/ruby.h:29,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby.h:38,
                 from ../../../../ext/tiny_tds/tiny_tds_ext.h:7,
                 from ../../../../ext/tiny_tds/client.c:1:
/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core/rdata.h:325:1: note: declared here
  325 | rb_data_object_get_warning(VALUE obj)
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../ext/tiny_tds/client.c: In function 'rb_tinytds_return_code':
../../../../ext/tiny_tds/client.c:337:3: warning: 'rb_data_object_get_warning' is deprecated: by TypedData [-Wdeprecated-declarations]
  337 |   GET_CLIENT_WRAPPER(self);
      |   ^~~~~~~~~~~~~~~~~~
In file included from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core.h:27,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/ruby.h:29,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby.h:38,
                 from ../../../../ext/tiny_tds/tiny_tds_ext.h:7,
                 from ../../../../ext/tiny_tds/client.c:1:
/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core/rdata.h:325:1: note: declared here
  325 | rb_data_object_get_warning(VALUE obj)
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../ext/tiny_tds/client.c: In function 'rb_tinytds_identity_sql':
../../../../ext/tiny_tds/client.c:346:3: warning: 'rb_data_object_get_warning' is deprecated: by TypedData [-Wdeprecated-declarations]
  346 |   GET_CLIENT_WRAPPER(self);
      |   ^~~~~~~~~~~~~~~~~~
In file included from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core.h:27,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/ruby.h:29,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby.h:38,
                 from ../../../../ext/tiny_tds/tiny_tds_ext.h:7,
                 from ../../../../ext/tiny_tds/client.c:1:
/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core/rdata.h:325:1: note: declared here
  325 | rb_data_object_get_warning(VALUE obj)
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../ext/tiny_tds/client.c: In function 'rb_tinytds_connect':
../../../../ext/tiny_tds/client.c:357:3: warning: 'rb_data_object_get_warning' is deprecated: by TypedData [-Wdeprecated-declarations]
  357 |   GET_CLIENT_WRAPPER(self);
      |   ^~~~~~~~~~~~~~~~~~
In file included from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core.h:27,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/ruby.h:29,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby.h:38,
                 from ../../../../ext/tiny_tds/tiny_tds_ext.h:7,
                 from ../../../../ext/tiny_tds/client.c:1:
/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core/rdata.h:325:1: note: declared here
  325 | rb_data_object_get_warning(VALUE obj)
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~
x86_64-w64-mingw32-gcc -I. -I/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/x64-mingw-ucrt -I/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/backward -I/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0 -I../../../../ext/tiny_tds -I/home/andy/dev/andyundso/tiny_tds/ports/x64-mingw-ucrt/include -D__USE_MINGW_ANSI_STDIO=1 -D_WIN32_WINNT=0x0600 -D__MINGW_USE_VC2005_COMPAT -D_FILE_OFFSET_BITS=64   -O1 -fno-omit-frame-pointer -fno-fast-math -fstack-protector-strong -s  -o result.o -c ../../../../ext/tiny_tds/result.c
../../../../ext/tiny_tds/result.c: In function 'rb_tinytds_result_dbresults_retcode':
../../../../ext/tiny_tds/result.c:164:3: warning: 'rb_data_object_get_warning' is deprecated: by TypedData [-Wdeprecated-declarations]
  164 |   GET_RESULT_WRAPPER(self);
      |   ^~~~~~~~~~~~~~~~~~
In file included from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core.h:27,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/ruby.h:29,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby.h:38,
                 from ../../../../ext/tiny_tds/tiny_tds_ext.h:7,
                 from ../../../../ext/tiny_tds/result.c:2:
/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core/rdata.h:325:1: note: declared here
  325 | rb_data_object_get_warning(VALUE obj)
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../ext/tiny_tds/result.c: In function 'rb_tinytds_result_fetch_row':
../../../../ext/tiny_tds/result.c:212:3: warning: 'rb_data_object_get_warning' is deprecated: by TypedData [-Wdeprecated-declarations]
  212 |   GET_RESULT_WRAPPER(self);
      |   ^~~~~~~~~~~~~~~~~~
In file included from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core.h:27,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/ruby.h:29,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby.h:38,
                 from ../../../../ext/tiny_tds/tiny_tds_ext.h:7,
                 from ../../../../ext/tiny_tds/result.c:2:
/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core/rdata.h:325:1: note: declared here
  325 | rb_data_object_get_warning(VALUE obj)
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../ext/tiny_tds/result.c: In function 'rb_tinytds_result_fields':
../../../../ext/tiny_tds/result.c:370:3: warning: 'rb_data_object_get_warning' is deprecated: by TypedData [-Wdeprecated-declarations]
  370 |   GET_RESULT_WRAPPER(self);
      |   ^~~~~~~~~~~~~~~~~~
In file included from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core.h:27,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/ruby.h:29,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby.h:38,
                 from ../../../../ext/tiny_tds/tiny_tds_ext.h:7,
                 from ../../../../ext/tiny_tds/result.c:2:
/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core/rdata.h:325:1: note: declared here
  325 | rb_data_object_get_warning(VALUE obj)
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../ext/tiny_tds/result.c: In function 'rb_tinytds_result_each':
../../../../ext/tiny_tds/result.c:414:3: warning: 'rb_data_object_get_warning' is deprecated: by TypedData [-Wdeprecated-declarations]
  414 |   GET_RESULT_WRAPPER(self);
      |   ^~~~~~~~~~~~~~~~~~
In file included from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core.h:27,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/ruby.h:29,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby.h:38,
                 from ../../../../ext/tiny_tds/tiny_tds_ext.h:7,
                 from ../../../../ext/tiny_tds/result.c:2:
/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core/rdata.h:325:1: note: declared here
  325 | rb_data_object_get_warning(VALUE obj)
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../ext/tiny_tds/result.c: In function 'rb_tinytds_result_cancel':
../../../../ext/tiny_tds/result.c:506:3: warning: 'rb_data_object_get_warning' is deprecated: by TypedData [-Wdeprecated-declarations]
  506 |   GET_RESULT_WRAPPER(self);
      |   ^~~~~~~~~~~~~~~~~~
In file included from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core.h:27,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/ruby.h:29,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby.h:38,
                 from ../../../../ext/tiny_tds/tiny_tds_ext.h:7,
                 from ../../../../ext/tiny_tds/result.c:2:
/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core/rdata.h:325:1: note: declared here
  325 | rb_data_object_get_warning(VALUE obj)
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../ext/tiny_tds/result.c: In function 'rb_tinytds_result_do':
../../../../ext/tiny_tds/result.c:518:3: warning: 'rb_data_object_get_warning' is deprecated: by TypedData [-Wdeprecated-declarations]
  518 |   GET_RESULT_WRAPPER(self);
      |   ^~~~~~~~~~~~~~~~~~
In file included from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core.h:27,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/ruby.h:29,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby.h:38,
                 from ../../../../ext/tiny_tds/tiny_tds_ext.h:7,
                 from ../../../../ext/tiny_tds/result.c:2:
/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core/rdata.h:325:1: note: declared here
  325 | rb_data_object_get_warning(VALUE obj)
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../ext/tiny_tds/result.c: In function 'rb_tinytds_result_affected_rows':
../../../../ext/tiny_tds/result.c:528:3: warning: 'rb_data_object_get_warning' is deprecated: by TypedData [-Wdeprecated-declarations]
  528 |   GET_RESULT_WRAPPER(self);
      |   ^~~~~~~~~~~~~~~~~~
In file included from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core.h:27,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/ruby.h:29,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby.h:38,
                 from ../../../../ext/tiny_tds/tiny_tds_ext.h:7,
                 from ../../../../ext/tiny_tds/result.c:2:
/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core/rdata.h:325:1: note: declared here
  325 | rb_data_object_get_warning(VALUE obj)
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../ext/tiny_tds/result.c: In function 'rb_tinytds_result_return_code':
../../../../ext/tiny_tds/result.c:538:3: warning: 'rb_data_object_get_warning' is deprecated: by TypedData [-Wdeprecated-declarations]
  538 |   GET_RESULT_WRAPPER(self);
      |   ^~~~~~~~~~~~~~~~~~
In file included from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core.h:27,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/ruby.h:29,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby.h:38,
                 from ../../../../ext/tiny_tds/tiny_tds_ext.h:7,
                 from ../../../../ext/tiny_tds/result.c:2:
/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core/rdata.h:325:1: note: declared here
  325 | rb_data_object_get_warning(VALUE obj)
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../ext/tiny_tds/result.c: In function 'rb_tinytds_result_insert':
../../../../ext/tiny_tds/result.c:547:3: warning: 'rb_data_object_get_warning' is deprecated: by TypedData [-Wdeprecated-declarations]
  547 |   GET_RESULT_WRAPPER(self);
      |   ^~~~~~~~~~~~~~~~~~
In file included from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core.h:27,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/ruby.h:29,
                 from /usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby.h:38,
                 from ../../../../ext/tiny_tds/tiny_tds_ext.h:7,
                 from ../../../../ext/tiny_tds/result.c:2:
/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/internal/core/rdata.h:325:1: note: declared here
  325 | rb_data_object_get_warning(VALUE obj)
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~
x86_64-w64-mingw32-gcc -I. -I/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/x64-mingw-ucrt -I/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0/ruby/backward -I/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/include/ruby-3.4.0 -I../../../../ext/tiny_tds -I/home/andy/dev/andyundso/tiny_tds/ports/x64-mingw-ucrt/include -D__USE_MINGW_ANSI_STDIO=1 -D_WIN32_WINNT=0x0600 -D__MINGW_USE_VC2005_COMPAT -D_FILE_OFFSET_BITS=64   -O1 -fno-omit-frame-pointer -fno-fast-math -fstack-protector-strong -s  -o tiny_tds_ext.o -c ../../../../ext/tiny_tds/tiny_tds_ext.c
rm -f tiny_tds.so
x86_64-w64-mingw32-gcc -shared -o tiny_tds.so client.o result.o tiny_tds_ext.o -L. -L/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.4.1/lib -L/home/andy/dev/andyundso/tiny_tds/ports/x64-mingw-ucrt/lib -static-libgcc -L. -pipe -s -fstack-protector-strong -Wl,--no-as-needed '-Wl,-rpath=$ORIGIN/../../../ports/x64-mingw-ucrt/lib' -pipe -s -Wl,--enable-auto-image-base,--enable-auto-import tiny_tds-x64-mingw-ucrt.def   -lx64-ucrt-ruby340 -lsybdb  -lshell32 -lws2_32 -liphlpapi -limagehlp -lshlwapi -lbcrypt -l:libssp.a 
:
cd -
mkdir -p tmp/x64-mingw-ucrt/stage/lib/tiny_tds/3.4
cp .codeclimate.yml tmp/x64-mingw-ucrt/stage/.codeclimate.yml
cp .gitattributes tmp/x64-mingw-ucrt/stage/.gitattributes
mkdir -p tmp/x64-mingw-ucrt/stage/.github/workflows
cp .github/workflows/ci.yml tmp/x64-mingw-ucrt/stage/.github/workflows/ci.yml
cp .gitignore tmp/x64-mingw-ucrt/stage/.gitignore
cp .rubocop.yml tmp/x64-mingw-ucrt/stage/.rubocop.yml
cp CHANGELOG.md tmp/x64-mingw-ucrt/stage/CHANGELOG.md
cp CODE_OF_CONDUCT.md tmp/x64-mingw-ucrt/stage/CODE_OF_CONDUCT.md
cp Gemfile tmp/x64-mingw-ucrt/stage/Gemfile
cp ISSUE_TEMPLATE.md tmp/x64-mingw-ucrt/stage/ISSUE_TEMPLATE.md
cp MIT-LICENSE tmp/x64-mingw-ucrt/stage/MIT-LICENSE
cp README.md tmp/x64-mingw-ucrt/stage/README.md
cp Rakefile tmp/x64-mingw-ucrt/stage/Rakefile
cp VERSION tmp/x64-mingw-ucrt/stage/VERSION
mkdir -p tmp/x64-mingw-ucrt/stage/bin
cp bin/defncopy-ttds tmp/x64-mingw-ucrt/stage/bin/defncopy-ttds
cp bin/tsql-ttds tmp/x64-mingw-ucrt/stage/bin/tsql-ttds
cp docker-compose.yml tmp/x64-mingw-ucrt/stage/docker-compose.yml
mkdir -p tmp/x64-mingw-ucrt/stage/exe
cp exe/.keep tmp/x64-mingw-ucrt/stage/exe/.keep
mkdir -p tmp/x64-mingw-ucrt/stage/ext/tiny_tds
cp ext/tiny_tds/client.c tmp/x64-mingw-ucrt/stage/ext/tiny_tds/client.c
cp ext/tiny_tds/client.h tmp/x64-mingw-ucrt/stage/ext/tiny_tds/client.h
cp ext/tiny_tds/extconf.rb tmp/x64-mingw-ucrt/stage/ext/tiny_tds/extconf.rb
cp ext/tiny_tds/extconsts.rb tmp/x64-mingw-ucrt/stage/ext/tiny_tds/extconsts.rb
cp ext/tiny_tds/result.c tmp/x64-mingw-ucrt/stage/ext/tiny_tds/result.c
cp ext/tiny_tds/result.h tmp/x64-mingw-ucrt/stage/ext/tiny_tds/result.h
cp ext/tiny_tds/tiny_tds_ext.c tmp/x64-mingw-ucrt/stage/ext/tiny_tds/tiny_tds_ext.c
cp ext/tiny_tds/tiny_tds_ext.h tmp/x64-mingw-ucrt/stage/ext/tiny_tds/tiny_tds_ext.h
cp lib/tiny_tds.rb tmp/x64-mingw-ucrt/stage/lib/tiny_tds.rb
cp lib/tiny_tds/bin.rb tmp/x64-mingw-ucrt/stage/lib/tiny_tds/bin.rb
cp lib/tiny_tds/client.rb tmp/x64-mingw-ucrt/stage/lib/tiny_tds/client.rb
cp lib/tiny_tds/error.rb tmp/x64-mingw-ucrt/stage/lib/tiny_tds/error.rb
cp lib/tiny_tds/gem.rb tmp/x64-mingw-ucrt/stage/lib/tiny_tds/gem.rb
cp lib/tiny_tds/result.rb tmp/x64-mingw-ucrt/stage/lib/tiny_tds/result.rb
cp lib/tiny_tds/version.rb tmp/x64-mingw-ucrt/stage/lib/tiny_tds/version.rb
mkdir -p tmp/x64-mingw-ucrt/stage/patches/freetds/1.00.27
cp patches/freetds/1.00.27/0001-mingw_missing_inet_pton.diff tmp/x64-mingw-ucrt/stage/patches/freetds/1.00.27/0001-mingw_missing_inet_pton.diff
cp patches/freetds/1.00.27/0002-Don-t-use-MSYS2-file-libws2_32.diff tmp/x64-mingw-ucrt/stage/patches/freetds/1.00.27/0002-Don-t-use-MSYS2-file-libws2_32.diff
mkdir -p tmp/x64-mingw-ucrt/stage/patches/libiconv/1.14
cp patches/libiconv/1.14/1-avoid-gets-error.patch tmp/x64-mingw-ucrt/stage/patches/libiconv/1.14/1-avoid-gets-error.patch
cp setup_cimgruby_dev.sh tmp/x64-mingw-ucrt/stage/setup_cimgruby_dev.sh
cp start_dev.sh tmp/x64-mingw-ucrt/stage/start_dev.sh
mkdir -p tmp/x64-mingw-ucrt/stage/tasks
cp tasks/native_gem.rake tmp/x64-mingw-ucrt/stage/tasks/native_gem.rake
cp tasks/package.rake tmp/x64-mingw-ucrt/stage/tasks/package.rake
cp tasks/ports.rake tmp/x64-mingw-ucrt/stage/tasks/ports.rake
cp tasks/test.rake tmp/x64-mingw-ucrt/stage/tasks/test.rake
mkdir -p tmp/x64-mingw-ucrt/stage/test/benchmark
cp test/benchmark/query.rb tmp/x64-mingw-ucrt/stage/test/benchmark/query.rb
cp test/benchmark/query_odbc.rb tmp/x64-mingw-ucrt/stage/test/benchmark/query_odbc.rb
cp test/benchmark/query_tinytds.rb tmp/x64-mingw-ucrt/stage/test/benchmark/query_tinytds.rb
mkdir -p tmp/x64-mingw-ucrt/stage/test/bin
cp test/bin/install-freetds.sh tmp/x64-mingw-ucrt/stage/test/bin/install-freetds.sh
cp test/bin/install-mssql.ps1 tmp/x64-mingw-ucrt/stage/test/bin/install-mssql.ps1
cp test/bin/install-mssqltools.sh tmp/x64-mingw-ucrt/stage/test/bin/install-mssqltools.sh
cp test/bin/install-openssl.sh tmp/x64-mingw-ucrt/stage/test/bin/install-openssl.sh
cp test/bin/restore-from-native-gem.ps1 tmp/x64-mingw-ucrt/stage/test/bin/restore-from-native-gem.ps1
cp test/bin/setup_tinytds_db.sh tmp/x64-mingw-ucrt/stage/test/bin/setup_tinytds_db.sh
cp test/bin/setup_volume_permissions.sh tmp/x64-mingw-ucrt/stage/test/bin/setup_volume_permissions.sh
cp test/client_test.rb tmp/x64-mingw-ucrt/stage/test/client_test.rb
cp test/gem_test.rb tmp/x64-mingw-ucrt/stage/test/gem_test.rb
cp test/result_test.rb tmp/x64-mingw-ucrt/stage/test/result_test.rb
mkdir -p tmp/x64-mingw-ucrt/stage/test/schema
cp test/schema/1px.gif tmp/x64-mingw-ucrt/stage/test/schema/1px.gif
cp test/schema/sqlserver_2017.sql tmp/x64-mingw-ucrt/stage/test/schema/sqlserver_2017.sql
cp test/schema/sqlserver_azure.sql tmp/x64-mingw-ucrt/stage/test/schema/sqlserver_azure.sql
cp test/schema_test.rb tmp/x64-mingw-ucrt/stage/test/schema_test.rb
mkdir -p tmp/x64-mingw-ucrt/stage/test/sql
cp test/sql/db-create.sql tmp/x64-mingw-ucrt/stage/test/sql/db-create.sql
cp test/sql/db-login.sql tmp/x64-mingw-ucrt/stage/test/sql/db-login.sql
cp test/test_helper.rb tmp/x64-mingw-ucrt/stage/test/test_helper.rb
cp test/thread_test.rb tmp/x64-mingw-ucrt/stage/test/thread_test.rb
cp tiny_tds.gemspec tmp/x64-mingw-ucrt/stage/tiny_tds.gemspec
cp tmp/x64-mingw-ucrt/tiny_tds/3.4.1/tiny_tds.so tmp/x64-mingw-ucrt/stage/lib/tiny_tds/3.4/tiny_tds.so
mkdir -p tmp/x64-mingw-ucrt/tiny_tds/3.3.5
cd tmp/x64-mingw-ucrt/tiny_tds/3.3.5
/usr/local/rbenv/versions/3.1.3/bin/ruby -I. ../../../../ext/tiny_tds/extconf.rb --with-cross-build=x64-mingw-ucrt --with-openssl-platform=mingw64
Activating openssl 3.4.0 (from /home/andy/dev/andyundso/tiny_tds/ports/x64-mingw-ucrt)...
Activating libiconv 1.17 (from /home/andy/dev/andyundso/tiny_tds/ports/x64-mingw-ucrt)...
Activating freetds 1.4.23 (from /home/andy/dev/andyundso/tiny_tds/ports/x64-mingw-ucrt)...
checking for sybfront.h... yes
checking for sybdb.h... yes
checking for dbanydatecrack() in -lsybdb... yes
creating Makefile
cd -
cd tmp/x64-mingw-ucrt/tiny_tds/3.3.5
/usr/bin/make
(echo EXPORTS && echo Init_tiny_tds) > tiny_tds-x64-mingw-ucrt.def
x86_64-w64-mingw32-gcc -I. -I/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.3.5/include/ruby-3.3.0/x64-mingw-ucrt -I/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.3.5/include/ruby-3.3.0/ruby/backward -I/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.3.5/include/ruby-3.3.0 -I../../../../ext/tiny_tds -I/home/andy/dev/andyundso/tiny_tds/ports/x64-mingw-ucrt/include -D__USE_MINGW_ANSI_STDIO=1 -D_WIN32_WINNT=0x0600 -D__MINGW_USE_VC2005_COMPAT -D_FILE_OFFSET_BITS=64   -O1 -fno-omit-frame-pointer -fno-fast-math -fstack-protector-strong -s  -o client.o -c ../../../../ext/tiny_tds/client.c
x86_64-w64-mingw32-gcc -I. -I/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.3.5/include/ruby-3.3.0/x64-mingw-ucrt -I/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.3.5/include/ruby-3.3.0/ruby/backward -I/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.3.5/include/ruby-3.3.0 -I../../../../ext/tiny_tds -I/home/andy/dev/andyundso/tiny_tds/ports/x64-mingw-ucrt/include -D__USE_MINGW_ANSI_STDIO=1 -D_WIN32_WINNT=0x0600 -D__MINGW_USE_VC2005_COMPAT -D_FILE_OFFSET_BITS=64   -O1 -fno-omit-frame-pointer -fno-fast-math -fstack-protector-strong -s  -o result.o -c ../../../../ext/tiny_tds/result.c
x86_64-w64-mingw32-gcc -I. -I/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.3.5/include/ruby-3.3.0/x64-mingw-ucrt -I/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.3.5/include/ruby-3.3.0/ruby/backward -I/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.3.5/include/ruby-3.3.0 -I../../../../ext/tiny_tds -I/home/andy/dev/andyundso/tiny_tds/ports/x64-mingw-ucrt/include -D__USE_MINGW_ANSI_STDIO=1 -D_WIN32_WINNT=0x0600 -D__MINGW_USE_VC2005_COMPAT -D_FILE_OFFSET_BITS=64   -O1 -fno-omit-frame-pointer -fno-fast-math -fstack-protector-strong -s  -o tiny_tds_ext.o -c ../../../../ext/tiny_tds/tiny_tds_ext.c
rm -f tiny_tds.so
x86_64-w64-mingw32-gcc -shared -o tiny_tds.so client.o result.o tiny_tds_ext.o -L. -L/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.3.5/lib -L/home/andy/dev/andyundso/tiny_tds/ports/x64-mingw-ucrt/lib -static-libgcc -L. -pipe -s -fstack-protector-strong -Wl,--no-as-needed '-Wl,-rpath=$ORIGIN/../../../ports/x64-mingw-ucrt/lib' -pipe -s -Wl,--enable-auto-image-base,--enable-auto-import tiny_tds-x64-mingw-ucrt.def   -lx64-ucrt-ruby330 -lsybdb  -lshell32 -lws2_32 -liphlpapi -limagehlp -lshlwapi -lbcrypt -l:libssp.a 
cd -
mkdir -p tmp/x64-mingw-ucrt/stage/lib/tiny_tds/3.3
cp tmp/x64-mingw-ucrt/tiny_tds/3.3.5/tiny_tds.so tmp/x64-mingw-ucrt/stage/lib/tiny_tds/3.3/tiny_tds.so
mkdir -p tmp/x64-mingw-ucrt/tiny_tds/3.2.0
cd tmp/x64-mingw-ucrt/tiny_tds/3.2.0
/usr/local/rbenv/versions/3.1.3/bin/ruby -I. ../../../../ext/tiny_tds/extconf.rb --with-cross-build=x64-mingw-ucrt --with-openssl-platform=mingw64
Activating openssl 3.4.0 (from /home/andy/dev/andyundso/tiny_tds/ports/x64-mingw-ucrt)...
Activating libiconv 1.17 (from /home/andy/dev/andyundso/tiny_tds/ports/x64-mingw-ucrt)...
Activating freetds 1.4.23 (from /home/andy/dev/andyundso/tiny_tds/ports/x64-mingw-ucrt)...
checking for sybfront.h... yes
checking for sybdb.h... yes
checking for dbanydatecrack() in -lsybdb... yes
creating Makefile
cd -
cd tmp/x64-mingw-ucrt/tiny_tds/3.2.0
/usr/bin/make
(echo EXPORTS && echo Init_tiny_tds) > tiny_tds-x64-mingw-ucrt.def
x86_64-w64-mingw32-gcc -I. -I/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.2.0/include/ruby-3.2.0/x64-mingw-ucrt -I/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.2.0/include/ruby-3.2.0/ruby/backward -I/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.2.0/include/ruby-3.2.0 -I../../../../ext/tiny_tds -I/home/andy/dev/andyundso/tiny_tds/ports/x64-mingw-ucrt/include -D__USE_MINGW_ANSI_STDIO=1 -D_WIN32_WINNT=0x0600 -D__MINGW_USE_VC2005_COMPAT -D_FILE_OFFSET_BITS=64   -O1 -fno-omit-frame-pointer -fno-fast-math -fstack-protector-strong -s  -o client.o -c ../../../../ext/tiny_tds/client.c
x86_64-w64-mingw32-gcc -I. -I/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.2.0/include/ruby-3.2.0/x64-mingw-ucrt -I/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.2.0/include/ruby-3.2.0/ruby/backward -I/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.2.0/include/ruby-3.2.0 -I../../../../ext/tiny_tds -I/home/andy/dev/andyundso/tiny_tds/ports/x64-mingw-ucrt/include -D__USE_MINGW_ANSI_STDIO=1 -D_WIN32_WINNT=0x0600 -D__MINGW_USE_VC2005_COMPAT -D_FILE_OFFSET_BITS=64   -O1 -fno-omit-frame-pointer -fno-fast-math -fstack-protector-strong -s  -o result.o -c ../../../../ext/tiny_tds/result.c
x86_64-w64-mingw32-gcc -I. -I/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.2.0/include/ruby-3.2.0/x64-mingw-ucrt -I/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.2.0/include/ruby-3.2.0/ruby/backward -I/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.2.0/include/ruby-3.2.0 -I../../../../ext/tiny_tds -I/home/andy/dev/andyundso/tiny_tds/ports/x64-mingw-ucrt/include -D__USE_MINGW_ANSI_STDIO=1 -D_WIN32_WINNT=0x0600 -D__MINGW_USE_VC2005_COMPAT -D_FILE_OFFSET_BITS=64   -O1 -fno-omit-frame-pointer -fno-fast-math -fstack-protector-strong -s  -o tiny_tds_ext.o -c ../../../../ext/tiny_tds/tiny_tds_ext.c
rm -f tiny_tds.so
x86_64-w64-mingw32-gcc -shared -o tiny_tds.so client.o result.o tiny_tds_ext.o -L. -L/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.2.0/lib -L/home/andy/dev/andyundso/tiny_tds/ports/x64-mingw-ucrt/lib -static-libgcc -L. -pipe -s -fstack-protector-strong -Wl,--no-as-needed '-Wl,-rpath=$ORIGIN/../../../ports/x64-mingw-ucrt/lib' -pipe -s -Wl,--enable-auto-image-base,--enable-auto-import tiny_tds-x64-mingw-ucrt.def   -lx64-ucrt-ruby320 -lsybdb  -lshell32 -lws2_32 -liphlpapi -limagehlp -lshlwapi -lbcrypt -l:libssp.a 
cd -
mkdir -p tmp/x64-mingw-ucrt/stage/lib/tiny_tds/3.2
cp tmp/x64-mingw-ucrt/tiny_tds/3.2.0/tiny_tds.so tmp/x64-mingw-ucrt/stage/lib/tiny_tds/3.2/tiny_tds.so
mkdir -p tmp/x64-mingw-ucrt/tiny_tds/3.1.0
cd tmp/x64-mingw-ucrt/tiny_tds/3.1.0
/usr/local/rbenv/versions/3.1.3/bin/ruby -I. ../../../../ext/tiny_tds/extconf.rb --with-cross-build=x64-mingw-ucrt --with-openssl-platform=mingw64
Activating openssl 3.4.0 (from /home/andy/dev/andyundso/tiny_tds/ports/x64-mingw-ucrt)...
Activating libiconv 1.17 (from /home/andy/dev/andyundso/tiny_tds/ports/x64-mingw-ucrt)...
Activating freetds 1.4.23 (from /home/andy/dev/andyundso/tiny_tds/ports/x64-mingw-ucrt)...
checking for sybfront.h... yes
checking for sybdb.h... yes
checking for dbanydatecrack() in -lsybdb... yes
creating Makefile
cd -
cd tmp/x64-mingw-ucrt/tiny_tds/3.1.0
/usr/bin/make
(echo EXPORTS && echo Init_tiny_tds) > tiny_tds-x64-mingw-ucrt.def
x86_64-w64-mingw32-gcc -I. -I/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.1.0/include/ruby-3.1.0/x64-mingw-ucrt -I/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.1.0/include/ruby-3.1.0/ruby/backward -I/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.1.0/include/ruby-3.1.0 -I../../../../ext/tiny_tds -I/home/andy/dev/andyundso/tiny_tds/ports/x64-mingw-ucrt/include -D__USE_MINGW_ANSI_STDIO=1 -D_WIN32_WINNT=0x0600 -D__MINGW_USE_VC2005_COMPAT -D_FILE_OFFSET_BITS=64   -O1 -fno-omit-frame-pointer -fno-fast-math -fstack-protector-strong -s  -o client.o -c ../../../../ext/tiny_tds/client.c
x86_64-w64-mingw32-gcc -I. -I/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.1.0/include/ruby-3.1.0/x64-mingw-ucrt -I/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.1.0/include/ruby-3.1.0/ruby/backward -I/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.1.0/include/ruby-3.1.0 -I../../../../ext/tiny_tds -I/home/andy/dev/andyundso/tiny_tds/ports/x64-mingw-ucrt/include -D__USE_MINGW_ANSI_STDIO=1 -D_WIN32_WINNT=0x0600 -D__MINGW_USE_VC2005_COMPAT -D_FILE_OFFSET_BITS=64   -O1 -fno-omit-frame-pointer -fno-fast-math -fstack-protector-strong -s  -o result.o -c ../../../../ext/tiny_tds/result.c
x86_64-w64-mingw32-gcc -I. -I/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.1.0/include/ruby-3.1.0/x64-mingw-ucrt -I/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.1.0/include/ruby-3.1.0/ruby/backward -I/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.1.0/include/ruby-3.1.0 -I../../../../ext/tiny_tds -I/home/andy/dev/andyundso/tiny_tds/ports/x64-mingw-ucrt/include -D__USE_MINGW_ANSI_STDIO=1 -D_WIN32_WINNT=0x0600 -D__MINGW_USE_VC2005_COMPAT -D_FILE_OFFSET_BITS=64   -O1 -fno-omit-frame-pointer -fno-fast-math -fstack-protector-strong -s  -o tiny_tds_ext.o -c ../../../../ext/tiny_tds/tiny_tds_ext.c
rm -f tiny_tds.so
x86_64-w64-mingw32-gcc -shared -o tiny_tds.so client.o result.o tiny_tds_ext.o -L. -L/usr/local/rake-compiler/ruby/x86_64-w64-mingw32/ruby-3.1.0/lib -L/home/andy/dev/andyundso/tiny_tds/ports/x64-mingw-ucrt/lib -static-libgcc -L. -pipe -s -Wl,--no-as-needed '-Wl,-rpath=$ORIGIN/../../../ports/x64-mingw-ucrt/lib' -pipe -s -Wl,--enable-auto-image-base,--enable-auto-import tiny_tds-x64-mingw-ucrt.def   -lx64-ucrt-ruby310 -lsybdb  -lshell32 -lws2_32 -liphlpapi -limagehlp -lshlwapi -lbcrypt -l:libssp.a 
cd -
mkdir -p tmp/x64-mingw-ucrt/stage/lib/tiny_tds/3.1
cp tmp/x64-mingw-ucrt/tiny_tds/3.1.0/tiny_tds.so tmp/x64-mingw-ucrt/stage/lib/tiny_tds/3.1/tiny_tds.so
mkdir -p pkg
mkdir -p tmp/x64-mingw-ucrt/stage/ports/x64-mingw-ucrt/bin
cp ports/x64-mingw-ucrt/bin/defncopy.exe tmp/x64-mingw-ucrt/stage/ports/x64-mingw-ucrt/bin/defncopy.exe
cp ports/x64-mingw-ucrt/bin/libsybdb-5.dll tmp/x64-mingw-ucrt/stage/ports/x64-mingw-ucrt/bin/libsybdb-5.dll
cp ports/x64-mingw-ucrt/bin/tsql.exe tmp/x64-mingw-ucrt/stage/ports/x64-mingw-ucrt/bin/tsql.exe
mkdir -p pkg/tiny_tds-3.2.0-x64-mingw-ucrt
mkdir -p pkg
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/.codeclimate.yml
ln tmp/x64-mingw-ucrt/stage/.codeclimate.yml pkg/tiny_tds-3.2.0-x64-mingw-ucrt/.codeclimate.yml
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/.gitattributes
ln tmp/x64-mingw-ucrt/stage/.gitattributes pkg/tiny_tds-3.2.0-x64-mingw-ucrt/.gitattributes
mkdir -p pkg/tiny_tds-3.2.0-x64-mingw-ucrt/.github/workflows
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/.github/workflows/ci.yml
ln tmp/x64-mingw-ucrt/stage/.github/workflows/ci.yml pkg/tiny_tds-3.2.0-x64-mingw-ucrt/.github/workflows/ci.yml
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/.gitignore
ln tmp/x64-mingw-ucrt/stage/.gitignore pkg/tiny_tds-3.2.0-x64-mingw-ucrt/.gitignore
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/.rubocop.yml
ln tmp/x64-mingw-ucrt/stage/.rubocop.yml pkg/tiny_tds-3.2.0-x64-mingw-ucrt/.rubocop.yml
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/CHANGELOG.md
ln tmp/x64-mingw-ucrt/stage/CHANGELOG.md pkg/tiny_tds-3.2.0-x64-mingw-ucrt/CHANGELOG.md
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/CODE_OF_CONDUCT.md
ln tmp/x64-mingw-ucrt/stage/CODE_OF_CONDUCT.md pkg/tiny_tds-3.2.0-x64-mingw-ucrt/CODE_OF_CONDUCT.md
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/Gemfile
ln tmp/x64-mingw-ucrt/stage/Gemfile pkg/tiny_tds-3.2.0-x64-mingw-ucrt/Gemfile
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/ISSUE_TEMPLATE.md
ln tmp/x64-mingw-ucrt/stage/ISSUE_TEMPLATE.md pkg/tiny_tds-3.2.0-x64-mingw-ucrt/ISSUE_TEMPLATE.md
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/MIT-LICENSE
ln tmp/x64-mingw-ucrt/stage/MIT-LICENSE pkg/tiny_tds-3.2.0-x64-mingw-ucrt/MIT-LICENSE
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/README.md
ln tmp/x64-mingw-ucrt/stage/README.md pkg/tiny_tds-3.2.0-x64-mingw-ucrt/README.md
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/Rakefile
ln tmp/x64-mingw-ucrt/stage/Rakefile pkg/tiny_tds-3.2.0-x64-mingw-ucrt/Rakefile
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/VERSION
ln tmp/x64-mingw-ucrt/stage/VERSION pkg/tiny_tds-3.2.0-x64-mingw-ucrt/VERSION
mkdir -p pkg/tiny_tds-3.2.0-x64-mingw-ucrt/bin
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/bin/defncopy-ttds
ln tmp/x64-mingw-ucrt/stage/bin/defncopy-ttds pkg/tiny_tds-3.2.0-x64-mingw-ucrt/bin/defncopy-ttds
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/bin/tsql-ttds
ln tmp/x64-mingw-ucrt/stage/bin/tsql-ttds pkg/tiny_tds-3.2.0-x64-mingw-ucrt/bin/tsql-ttds
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/docker-compose.yml
ln tmp/x64-mingw-ucrt/stage/docker-compose.yml pkg/tiny_tds-3.2.0-x64-mingw-ucrt/docker-compose.yml
mkdir -p pkg/tiny_tds-3.2.0-x64-mingw-ucrt/exe
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/exe/.keep
ln tmp/x64-mingw-ucrt/stage/exe/.keep pkg/tiny_tds-3.2.0-x64-mingw-ucrt/exe/.keep
mkdir -p pkg/tiny_tds-3.2.0-x64-mingw-ucrt/ext/tiny_tds
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/ext/tiny_tds/client.c
ln tmp/x64-mingw-ucrt/stage/ext/tiny_tds/client.c pkg/tiny_tds-3.2.0-x64-mingw-ucrt/ext/tiny_tds/client.c
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/ext/tiny_tds/client.h
ln tmp/x64-mingw-ucrt/stage/ext/tiny_tds/client.h pkg/tiny_tds-3.2.0-x64-mingw-ucrt/ext/tiny_tds/client.h
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/ext/tiny_tds/extconf.rb
ln tmp/x64-mingw-ucrt/stage/ext/tiny_tds/extconf.rb pkg/tiny_tds-3.2.0-x64-mingw-ucrt/ext/tiny_tds/extconf.rb
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/ext/tiny_tds/extconsts.rb
ln tmp/x64-mingw-ucrt/stage/ext/tiny_tds/extconsts.rb pkg/tiny_tds-3.2.0-x64-mingw-ucrt/ext/tiny_tds/extconsts.rb
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/ext/tiny_tds/result.c
ln tmp/x64-mingw-ucrt/stage/ext/tiny_tds/result.c pkg/tiny_tds-3.2.0-x64-mingw-ucrt/ext/tiny_tds/result.c
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/ext/tiny_tds/result.h
ln tmp/x64-mingw-ucrt/stage/ext/tiny_tds/result.h pkg/tiny_tds-3.2.0-x64-mingw-ucrt/ext/tiny_tds/result.h
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/ext/tiny_tds/tiny_tds_ext.c
ln tmp/x64-mingw-ucrt/stage/ext/tiny_tds/tiny_tds_ext.c pkg/tiny_tds-3.2.0-x64-mingw-ucrt/ext/tiny_tds/tiny_tds_ext.c
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/ext/tiny_tds/tiny_tds_ext.h
ln tmp/x64-mingw-ucrt/stage/ext/tiny_tds/tiny_tds_ext.h pkg/tiny_tds-3.2.0-x64-mingw-ucrt/ext/tiny_tds/tiny_tds_ext.h
mkdir -p pkg/tiny_tds-3.2.0-x64-mingw-ucrt/lib
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/lib/tiny_tds.rb
ln tmp/x64-mingw-ucrt/stage/lib/tiny_tds.rb pkg/tiny_tds-3.2.0-x64-mingw-ucrt/lib/tiny_tds.rb
mkdir -p pkg/tiny_tds-3.2.0-x64-mingw-ucrt/lib/tiny_tds/3.1
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/lib/tiny_tds/3.1/tiny_tds.so
ln tmp/x64-mingw-ucrt/stage/lib/tiny_tds/3.1/tiny_tds.so pkg/tiny_tds-3.2.0-x64-mingw-ucrt/lib/tiny_tds/3.1/tiny_tds.so
mkdir -p pkg/tiny_tds-3.2.0-x64-mingw-ucrt/lib/tiny_tds/3.2
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/lib/tiny_tds/3.2/tiny_tds.so
ln tmp/x64-mingw-ucrt/stage/lib/tiny_tds/3.2/tiny_tds.so pkg/tiny_tds-3.2.0-x64-mingw-ucrt/lib/tiny_tds/3.2/tiny_tds.so
mkdir -p pkg/tiny_tds-3.2.0-x64-mingw-ucrt/lib/tiny_tds/3.3
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/lib/tiny_tds/3.3/tiny_tds.so
ln tmp/x64-mingw-ucrt/stage/lib/tiny_tds/3.3/tiny_tds.so pkg/tiny_tds-3.2.0-x64-mingw-ucrt/lib/tiny_tds/3.3/tiny_tds.so
mkdir -p pkg/tiny_tds-3.2.0-x64-mingw-ucrt/lib/tiny_tds/3.4
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/lib/tiny_tds/3.4/tiny_tds.so
ln tmp/x64-mingw-ucrt/stage/lib/tiny_tds/3.4/tiny_tds.so pkg/tiny_tds-3.2.0-x64-mingw-ucrt/lib/tiny_tds/3.4/tiny_tds.so
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/lib/tiny_tds/bin.rb
ln tmp/x64-mingw-ucrt/stage/lib/tiny_tds/bin.rb pkg/tiny_tds-3.2.0-x64-mingw-ucrt/lib/tiny_tds/bin.rb
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/lib/tiny_tds/client.rb
ln tmp/x64-mingw-ucrt/stage/lib/tiny_tds/client.rb pkg/tiny_tds-3.2.0-x64-mingw-ucrt/lib/tiny_tds/client.rb
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/lib/tiny_tds/error.rb
ln tmp/x64-mingw-ucrt/stage/lib/tiny_tds/error.rb pkg/tiny_tds-3.2.0-x64-mingw-ucrt/lib/tiny_tds/error.rb
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/lib/tiny_tds/gem.rb
ln tmp/x64-mingw-ucrt/stage/lib/tiny_tds/gem.rb pkg/tiny_tds-3.2.0-x64-mingw-ucrt/lib/tiny_tds/gem.rb
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/lib/tiny_tds/result.rb
ln tmp/x64-mingw-ucrt/stage/lib/tiny_tds/result.rb pkg/tiny_tds-3.2.0-x64-mingw-ucrt/lib/tiny_tds/result.rb
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/lib/tiny_tds/version.rb
ln tmp/x64-mingw-ucrt/stage/lib/tiny_tds/version.rb pkg/tiny_tds-3.2.0-x64-mingw-ucrt/lib/tiny_tds/version.rb
mkdir -p pkg/tiny_tds-3.2.0-x64-mingw-ucrt/patches/freetds/1.00.27
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/patches/freetds/1.00.27/0001-mingw_missing_inet_pton.diff
ln tmp/x64-mingw-ucrt/stage/patches/freetds/1.00.27/0001-mingw_missing_inet_pton.diff pkg/tiny_tds-3.2.0-x64-mingw-ucrt/patches/freetds/1.00.27/0001-mingw_missing_inet_pton.diff
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/patches/freetds/1.00.27/0002-Don-t-use-MSYS2-file-libws2_32.diff
ln tmp/x64-mingw-ucrt/stage/patches/freetds/1.00.27/0002-Don-t-use-MSYS2-file-libws2_32.diff pkg/tiny_tds-3.2.0-x64-mingw-ucrt/patches/freetds/1.00.27/0002-Don-t-use-MSYS2-file-libws2_32.diff
mkdir -p pkg/tiny_tds-3.2.0-x64-mingw-ucrt/patches/libiconv/1.14
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/patches/libiconv/1.14/1-avoid-gets-error.patch
ln tmp/x64-mingw-ucrt/stage/patches/libiconv/1.14/1-avoid-gets-error.patch pkg/tiny_tds-3.2.0-x64-mingw-ucrt/patches/libiconv/1.14/1-avoid-gets-error.patch
mkdir -p pkg/tiny_tds-3.2.0-x64-mingw-ucrt/ports/x64-mingw-ucrt/bin
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/ports/x64-mingw-ucrt/bin/defncopy.exe
ln tmp/x64-mingw-ucrt/stage/ports/x64-mingw-ucrt/bin/defncopy.exe pkg/tiny_tds-3.2.0-x64-mingw-ucrt/ports/x64-mingw-ucrt/bin/defncopy.exe
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/ports/x64-mingw-ucrt/bin/libsybdb-5.dll
ln tmp/x64-mingw-ucrt/stage/ports/x64-mingw-ucrt/bin/libsybdb-5.dll pkg/tiny_tds-3.2.0-x64-mingw-ucrt/ports/x64-mingw-ucrt/bin/libsybdb-5.dll
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/ports/x64-mingw-ucrt/bin/tsql.exe
ln tmp/x64-mingw-ucrt/stage/ports/x64-mingw-ucrt/bin/tsql.exe pkg/tiny_tds-3.2.0-x64-mingw-ucrt/ports/x64-mingw-ucrt/bin/tsql.exe
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/setup_cimgruby_dev.sh
ln tmp/x64-mingw-ucrt/stage/setup_cimgruby_dev.sh pkg/tiny_tds-3.2.0-x64-mingw-ucrt/setup_cimgruby_dev.sh
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/start_dev.sh
ln tmp/x64-mingw-ucrt/stage/start_dev.sh pkg/tiny_tds-3.2.0-x64-mingw-ucrt/start_dev.sh
mkdir -p pkg/tiny_tds-3.2.0-x64-mingw-ucrt/tasks
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/tasks/native_gem.rake
ln tmp/x64-mingw-ucrt/stage/tasks/native_gem.rake pkg/tiny_tds-3.2.0-x64-mingw-ucrt/tasks/native_gem.rake
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/tasks/package.rake
ln tmp/x64-mingw-ucrt/stage/tasks/package.rake pkg/tiny_tds-3.2.0-x64-mingw-ucrt/tasks/package.rake
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/tasks/ports.rake
ln tmp/x64-mingw-ucrt/stage/tasks/ports.rake pkg/tiny_tds-3.2.0-x64-mingw-ucrt/tasks/ports.rake
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/tasks/test.rake
ln tmp/x64-mingw-ucrt/stage/tasks/test.rake pkg/tiny_tds-3.2.0-x64-mingw-ucrt/tasks/test.rake
mkdir -p pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/benchmark
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/benchmark/query.rb
ln tmp/x64-mingw-ucrt/stage/test/benchmark/query.rb pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/benchmark/query.rb
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/benchmark/query_odbc.rb
ln tmp/x64-mingw-ucrt/stage/test/benchmark/query_odbc.rb pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/benchmark/query_odbc.rb
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/benchmark/query_tinytds.rb
ln tmp/x64-mingw-ucrt/stage/test/benchmark/query_tinytds.rb pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/benchmark/query_tinytds.rb
mkdir -p pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/bin
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/bin/install-freetds.sh
ln tmp/x64-mingw-ucrt/stage/test/bin/install-freetds.sh pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/bin/install-freetds.sh
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/bin/install-mssql.ps1
ln tmp/x64-mingw-ucrt/stage/test/bin/install-mssql.ps1 pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/bin/install-mssql.ps1
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/bin/install-mssqltools.sh
ln tmp/x64-mingw-ucrt/stage/test/bin/install-mssqltools.sh pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/bin/install-mssqltools.sh
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/bin/install-openssl.sh
ln tmp/x64-mingw-ucrt/stage/test/bin/install-openssl.sh pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/bin/install-openssl.sh
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/bin/restore-from-native-gem.ps1
ln tmp/x64-mingw-ucrt/stage/test/bin/restore-from-native-gem.ps1 pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/bin/restore-from-native-gem.ps1
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/bin/setup_tinytds_db.sh
ln tmp/x64-mingw-ucrt/stage/test/bin/setup_tinytds_db.sh pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/bin/setup_tinytds_db.sh
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/bin/setup_volume_permissions.sh
ln tmp/x64-mingw-ucrt/stage/test/bin/setup_volume_permissions.sh pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/bin/setup_volume_permissions.sh
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/client_test.rb
ln tmp/x64-mingw-ucrt/stage/test/client_test.rb pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/client_test.rb
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/gem_test.rb
ln tmp/x64-mingw-ucrt/stage/test/gem_test.rb pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/gem_test.rb
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/result_test.rb
ln tmp/x64-mingw-ucrt/stage/test/result_test.rb pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/result_test.rb
mkdir -p pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/schema
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/schema/1px.gif
ln tmp/x64-mingw-ucrt/stage/test/schema/1px.gif pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/schema/1px.gif
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/schema/sqlserver_2017.sql
ln tmp/x64-mingw-ucrt/stage/test/schema/sqlserver_2017.sql pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/schema/sqlserver_2017.sql
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/schema/sqlserver_azure.sql
ln tmp/x64-mingw-ucrt/stage/test/schema/sqlserver_azure.sql pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/schema/sqlserver_azure.sql
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/schema_test.rb
ln tmp/x64-mingw-ucrt/stage/test/schema_test.rb pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/schema_test.rb
mkdir -p pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/sql
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/sql/db-create.sql
ln tmp/x64-mingw-ucrt/stage/test/sql/db-create.sql pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/sql/db-create.sql
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/sql/db-login.sql
ln tmp/x64-mingw-ucrt/stage/test/sql/db-login.sql pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/sql/db-login.sql
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/test_helper.rb
ln tmp/x64-mingw-ucrt/stage/test/test_helper.rb pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/test_helper.rb
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/thread_test.rb
ln tmp/x64-mingw-ucrt/stage/test/thread_test.rb pkg/tiny_tds-3.2.0-x64-mingw-ucrt/test/thread_test.rb
rm -f pkg/tiny_tds-3.2.0-x64-mingw-ucrt/tiny_tds.gemspec
ln tmp/x64-mingw-ucrt/stage/tiny_tds.gemspec pkg/tiny_tds-3.2.0-x64-mingw-ucrt/tiny_tds.gemspec
cd pkg/tiny_tds-3.2.0-x64-mingw-ucrt
  Successfully built RubyGem
  Name: tiny_tds
  Version: 3.2.0
  File: tiny_tds-3.2.0-x64-mingw-ucrt.gem
cd -

@aharpervc
Copy link
Contributor

That's very helpful, thank you. In retrospect I realize I probably could have grabbed that from the CI workflow.

And indeed, my log is similar on the setup/compilation but is missing a bunch of lines copying files around (red = present for you, missing for me)

image

These copy operations are coming from the generated makefile, right? I was going to inspect mkmf for how that gets generated, but the referenced website on the gem page doesn't work. Of course.

Thoughts?

@andyundso
Copy link
Member Author

@aharpervc I think the entire copy process is done by rake-compiler. Do you run the build on native Windows or WSL? I can also try it on my side.

@aharpervc
Copy link
Contributor

I'm running directly on Windows. I suppose I can try to cross compile from WSL too, though

@andyundso
Copy link
Member Author

@aharpervc also just tried it (native Windows) and have the same effect as you. could be that invoking rake-compiler-dock from Windows does not work properly? But WSL works fine.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Provide a precompiled gem for Mac OS X and Linux
2 participants