[flatcitybuf] Add new port - #53406
Conversation
The 0.7.4 port shipped prebuilt binaries of the Rust core behind a CXX bridge. Upstream now has a native C++17 implementation in src/cpp with its own install(EXPORT) rules, so build it from source instead: no platform-specific archives, no hand-written config file, and the exported flatcitybuf::flatcitybuf target comes from upstream. Adds the flatbuffers and nlohmann-json dependencies the library links publicly, and a "curl" feature for the HTTP range-request reader.
Public encoded-geometry API (Feature::raw) and a bracket-free LICENSE. C++ releases are now tagged cpp-v<version>: bare v<version> is the tag release.yml cuts for the independently-versioned Rust crates.
|
@microsoft-github-policy-service agree |
The 0.8.0 and 0.7.4 entries referenced git-trees that exist only in this fork's history; after a squash-merge upstream they would dangle. A new port lands with exactly one version.
Minor, not patch: cityjson/flatcitybuf#58 turned nine FileInfo strings into std::optional<std::string> and deleted has_poc_email, so header metadata is gated on presence rather than emptiness. It also fixed Byte/UByte/Binary feature-attribute decoding. The cpp-v0.8.1 tag was cut on a release branch before microsoft#58 landed, so the 0.8.1 port predates every one of those fixes. relax-flatbuffers-version-check.patch still applies unchanged; the release build installs a ConfigVersion of 0.9.0, matching this port.
Billy O'Neal (BillyONeal)
left a comment
There was a problem hiding this comment.
Thanks for the new port!
| -static_assert(FLATBUFFERS_VERSION_MAJOR == 25 && | ||
| - FLATBUFFERS_VERSION_MINOR == 9 && | ||
| - FLATBUFFERS_VERSION_REVISION == 23, | ||
| +// vcpkg: the exact-version assert flatc emits here was relaxed to a major |
There was a problem hiding this comment.
It seems likely that these need to be regenerated rather than just removing the safety check. Has upstream signed off on this change?
| @@ -0,0 +1,15 @@ | |||
| flatcitybuf provides CMake targets: | |||
There was a problem hiding this comment.
We don't put "how to use this in code" in usage blocks; the expectation for vcpkg customers is that they know what the library they're trying to install is but might not remember the exact spelling of build system bindings or similar. Without those parts, the remaining usage is substantially identical to the default generated usage, so we should remove this usage file.
| }, | ||
| { | ||
| "git-tree": "922f5c9984fe68f60b03630bc2f701a9ace104ed", | ||
| "version": "0.8.1", | ||
| "port-version": 0 |
There was a problem hiding this comment.
| }, | |
| { | |
| "git-tree": "922f5c9984fe68f60b03630bc2f701a9ace104ed", | |
| "version": "0.8.1", | |
| "port-version": 0 |
There was a problem hiding this comment.
This will fix the "check for common mistakes" failure
| ], | ||
| "homepage": "https://github.com/cityjson/flatcitybuf", | ||
| "documentation": "https://github.com/cityjson/flatcitybuf/tree/main/src/cpp", | ||
| "license": "MIT", |
There was a problem hiding this comment.
GPT 5.6 Sol reports:
ports/flatcitybuf/vcpkg.jsondeclaresMIT, but the installed upstreamLICENSEcontains MIT and BSD-2-Clause terms, and theREADME.mdattributes foundational spatial-indexing code to BSD-2-Clause-licensed FlatGeobuf.
Has a release at least 6 months old or 6 months of demonstrated public development
The project has more than 1 year history and being used by users.
Is an official component of something else meeting that criteria
Some other reason (please explain)
The project is in Repology: https://repology.org/project//versions
The project is amongst the first web search results for "" or " C++". Include a screenshot of the search engine results in the PR.

Here is a screenshot of the search engine. The project also has research papers about it.
The port name follows the 'GitHubOrg-GitHubRepo' form or equivalent
Owner-Projectform.vcpkg.json, or explicitly disabled through patches or build system arguments such as CMAKE_DISABLE_FIND_PACKAGE_Xxx or VCPKG_LOCK_FIND_PACKAGEvcpkg.jsonmatches what upstream says.vcpkg.jsonmatches what upstream says../vcpkg x-add-version --alland committing the result.