Firebird client library in vcpkg?

36 views
Skip to first unread message

F. D.Castel

unread,
May 22, 2025, 6:11:35 AM5/22/25
to firebird-devel

Are there any plans to add the Firebird Client Library (libfbclient) to vcpkg?

I'm currently working on a DuckDB extension (https://duckdb.org/docs/stable/core_extensions/overview) that enables direct connections to Firebird databases. However, without libfbclient available through vcpkg, adoption becomes significantly more difficult.

For reference, both PostgreSQL and MySQL client libraries are already included in vcpkg:

This support has enabled corresponding DuckDB extensions:

These can be installed easily with a single command (INSTALL mysql or INSTALL postgres) on any platform.


It would be great to offer the same seamless experience for Firebird users.

Adriano dos Santos Fernandes

unread,
May 22, 2025, 7:49:04 AM5/22/25
to firebir...@googlegroups.com

Are there any plans to add the Firebird Client Library (libfbclient) to vcpkg?



There are also some things from me in discussion, trying to add only the headers.

Vcpkg people/policies are complicated.

And fbclient uses always ICU DLLs and in vcpkg, user decides if he wants static or dynamic builds.


Adriano

Mark Rotteveel

unread,
May 22, 2025, 8:48:24 AM5/22/25
to firebir...@googlegroups.com
On 22/05/2025 13:48, Adriano dos Santos Fernandes wrote:
>
> Are there any plans to add the Firebird Client Library (libfbclient)
> to vcpkg?
>
>
> I tried it: https://github.com/microsoft/vcpkg/pull/36176 <https://
> github.com/microsoft/vcpkg/pull/36176>
>
> There are also some things from me in discussion, trying to add only the
> headers.
>
> Vcpkg people/policies are complicated.
>
> And fbclient uses always ICU DLLs and in vcpkg, user decides if he wants
> static or dynamic builds.

I thought the ICU dependency was optional for fbclient. Did that change?

Mark
--
Mark Rotteveel

F. D.Castel

unread,
May 22, 2025, 5:52:04 PM5/22/25
to firebird-devel
Fantastic work, Adriano!

I went through the discussion on PR 36178. From what I understand, you addressed all the requested changes (libtom* dependencies, etc). But the ICU linkage ended up being the deal-breaker, correct?

Is that why they didn’t accept your PR?


And, as Mark mentioned, the ICU dependency isn’t fully optional?? (which also is why it’s linked dynamically)

Adriano dos Santos Fernandes

unread,
May 22, 2025, 9:43:26 PM5/22/25
to firebir...@googlegroups.com
On 22/05/2025 18:52, F. D.Castel wrote:
> Fantastic work, Adriano!
>
> I went through the discussion on PR 36178. From what I understand, you
> addressed all the requested changes (libtom* dependencies, etc). *But
> the ICU linkage ended up being the deal-breaker, correct?*
>
> *Is that why they didn’t accept your PR?*
>
>
> And, as Mark mentioned, the ICU dependency isn’t fully optional?? (which
> also is why it’s linked dynamically)
>

ICU is more or less optional, but I prefer this decision to be with who
is deploying. But yes, it's something we may remove.

There are others problems:
- https://github.com/microsoft/vcpkg/issues/35736
- libChaCha is used in the client and should be built. Should we just
pray for no vcpkg person or bot look that we are deploying a DLL in a
static build? Or just relax and remove another Firebird feature? This is
ugly way to do things IMO.


Adriano

F. D.Castel

unread,
May 22, 2025, 11:02:25 PM5/22/25
to firebird-devel
Good points.

Well... what if we take the bait and actually use the ICU and LibChaCha libraries, either statically or dynamically, depending on compiler directives?


In other words: why does Firebird use only dynamic linking for these libraries? Is there another blocker, or is it simply due to a lack of need?


I'm not opposed to distributing the DLL files via vcpkg, but (after reading the discussion in your PR) I'm wondering whether the vcpkg moderators might block it as soon as they see it.

Hamish Moffatt

unread,
May 23, 2025, 2:24:38 AM5/23/25
to firebir...@googlegroups.com
On 23/5/25 13:02, F. D.Castel wrote:
> Good points.
>
> Well... what if we take the bait and actually use the ICU and
> LibChaCha libraries, either statically or dynamically, depending on
> compiler directives?
>
Also, vcpkg does have ports that only support static or dynamic
libraries, and there's a portfile function to check it:
https://learn.microsoft.com/en-gb/vcpkg/maintainers/functions/vcpkg_check_linkage

In the release I have there are 61 ports that only support dynamic
linking and 411 that only support static.



Hamish

Adriano dos Santos Fernandes

unread,
May 23, 2025, 6:32:33 AM5/23/25
to firebir...@googlegroups.com
On 23/05/2025 03:24, 'Hamish Moffatt' via firebird-devel wrote:

> Also, vcpkg does have ports that only support static or dynamic
> libraries, and there's a portfile function to check it: https://
> learn.microsoft.com/en-gb/vcpkg/maintainers/functions/vcpkg_check_linkage
>
> In the release I have there are 61 ports that only support dynamic
> linking and 411 that only support static.
>

Wll, in that case, we will need to also distribute tommath/tomcrypt as
DLL, different than standard Firebird.


Adriano

Reply all
Reply to author
Forward
0 new messages