Some libraries we depend on are included in the osm2pgsql repository in the
`contrib` directory. This kind of vendoring is usually not a good idea because
it makes packaging more difficult. There was a good reason to add the libraries
anyway, usually because we needed very new features not available in the
distributions. Many of the reasons have now gone away and it is time to review
the vendoring decision. This issue is to track the state of these libraries.
### Protozero
Used by Libosmium. Widely available in versions that are okay for us.
* Debian: Buster has a version that's too old, [buster has reached EOL
already](https://wiki.debian.org/DebianReleases).
* macOS: Homebrew doesn't have Protozero as its own library but ships it with
libosmium.
* Windows: Available with [vcpkg](https://vcpkg.io/en/package/protozero).
After Trixie is released (expected in summer 2025) at the latest we can remove
support for Buster at which point we can remove our copy.
### Libosmium
Used all over for basic OSM code. Widely available in versions that are okay
for us.
* Debian: Same as with Protozero.
* macOS: Current versions are in
[homebrew](https://formulae.brew.sh/formula/libosmium).
* Windows: Available with [vcpkg](https://vcpkg.io/en/package/libosmium).
### CLI11
Used for parsing command line arguments. Included because it is missing in
Debian versions before Bookworm.
* Debian: Version 2.1.2 available in Bookworm, not available in Bullseye or
before.
* Fedora: Available since Fedora 30 from 2019, long EOL. Current Fedora
versions still in support have version 2.
* macOS: Available in [homebrew](https://formulae.brew.sh/formula/cli11).
* Windows: Available with [vcpkg](https://vcpkg.io/en/package/cli11).
We can probably remove our copy once Bullseye reached EOL.
### fmt
Used all over the code for string formatting. Although widely available in
distributions we have our own copy because fmt doesn't provide backwards
compatibility between major versions and they are releasing a new major version
about once a year.
Long-term this library should be replaced by using the equivalent functions
from the C++ library introduced in C++20. But support in C++ libraries is
lagging a bit, so it will be some time until we can switch.
### Catch2
Used for unit tests. We are currently stuck at version 2, because version 3 is
not available in Debian yet.
Note the confusing version numbering: "Catch" is version 1 from long ago,
"Catch2" is version 2 and above. Version 1 and 2 are header only, "Catch 2 v3"
is a proper library. Versions 1 and 2 are not maintained any more.
* Debian: Debian `catch2` is version 2 in Bookworm, Trixie will have version 3.
* Fedora: Package `catch2` is version 2, package `catch` seems always to be the
"current" version, currently 2. Version 3 available since Fedora 38.
* macOS: Packages of version 2 are available as `catch`, version 3 as `catch2`.
* Windows: [catch2 in vcpkg](https://vcpkg.io/en/package/catch2) is version 3.
Catch2 is only a development dependency. That means we can be less strict
regarding compatibility with Linux distributions. Compatibility with latest
distros should be sufficient as long as we find a solution for the CI. We
should start experimenting with Catch2-v3 once Debian Trixie is out and then
decide about the future. We need in particular figure out how catch2v3 handles
compatibility between minor versions or if we'd be stuck with the latest
version.
--
Reply to this email directly or view it on GitHub:
https://github.com/osm2pgsql-dev/osm2pgsql/issues/2296
You are receiving this because you are subscribed to this thread.
Message ID: <osm2pgsql-dev/osm2pgsql/issues/[email protected]>
_______________________________________________
Tile-serving mailing list
[email protected]
https://lists.openstreetmap.org/listinfo/tile-serving