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

Reply via email to