thegeorg 9fcd0f53bb contrib/libs/apache/avro: Remove excessive PEERDIR to boost/format 4 weeks ago
..
.yandex_meta 9fcd0f53bb contrib/libs/apache/avro: Remove excessive PEERDIR to boost/format 4 weeks ago
impl f619272b3b Update contrib/libs/apache/avro to 1.12.0 4 weeks ago
include f619272b3b Update contrib/libs/apache/avro to 1.12.0 4 weeks ago
AUTHORS 49116032d9 Restoring authorship annotation for <thegeorg@yandex-team.ru>. Commit 2 of 2. 3 years ago
ChangeLog 49116032d9 Restoring authorship annotation for <thegeorg@yandex-team.ru>. Commit 2 of 2. 3 years ago
LICENSE f619272b3b Update contrib/libs/apache/avro to 1.12.0 4 weeks ago
MSBUILD.md 49116032d9 Restoring authorship annotation for <thegeorg@yandex-team.ru>. Commit 2 of 2. 3 years ago
NEWS 49116032d9 Restoring authorship annotation for <thegeorg@yandex-team.ru>. Commit 2 of 2. 3 years ago
NOTICE 49116032d9 Restoring authorship annotation for <thegeorg@yandex-team.ru>. Commit 2 of 2. 3 years ago
README f619272b3b Update contrib/libs/apache/avro to 1.12.0 4 weeks ago
ya.make 9fcd0f53bb contrib/libs/apache/avro: Remove excessive PEERDIR to boost/format 4 weeks ago

README

Avro C++ README.txt

The C++ port is thus far incomplete. Currently, it contains:

- Serializer/Parser- objects for writing/reading raw binary.

- xxxSchema- objects for composing schemas.

- ValidSchema- a schema object that has been converted to a parse tree
(with some sanity checks).

- ValidSchema.toJson() writes the schema as a json object.

- ValidatingSerializer/ValidatingParser- check that reads/writes
match the expected schema type (more expensive than the raw
serializer/parser but they detect errors, and allow dynamic
discovery of parsed data/attributes).

- Compiler (compileJsonSchema())- converts a Json string schema to a
ValidSchema.

- Code Generation (experimental) - given a schema it generates C++
objects of the same data types, and the code to serialize and parse
it.

What's missing: Rpc containers are not yet implemented. Documentation is sparse.

INSTRUCTIONS

Pre-requisites:

To compile requires boost headers. Optionally, it requires Snappy compression library. If Snappy is available, it builds support for Snappy compression and skips it otherwise. (Please see your OS-specific instructions on how to install Boost and Snappy for your OS).

To build one requires cmake 3.5 or later and a compiler supporting C++17 or later.

To generate a Makefile under Unix, MacOS (using GNU) or Cygwin use:

mkdir build
cd build
cmake -G "Unix Makefiles" ..

If it doesn't work, either you are missing boost package or you need to help
configure locate it.

If the Makefile is configured correctly, then you can make and run tests:

make
ctest

To install

make package

and then untar the generated .tar.gz file.

To build and test on MacOS (using Xcode)

mkdir build.mac
cd build.mac
cmake -G Xcode

xcodebuild -configuration Release
ctest -C Release

If debug version is required, replace 'Release' above with 'Debug'.

Note: The LICENSE and NOTICE files in the lang/c++ source directory are used to
build the binary distribution. The LICENSE and NOTICE information for the Avro
C++ source distribution is in the root directory.