Developer Guide¶
Info
This chapter is only interesting if you intend to make changes to the code of djinni generator
Building from source¶
Build dependencies¶
- Java JDK 8 or 11
- sbt
Building¶
To build once:
sbt compile
To automatically re-build on every change, open the sbt shell & prefix compile
with ~
$ sbt
sbt:djinni> ~compile
Running¶
sbt "run
--idl input.djinni
--cpp-out out/cpp
--java-out out/java/src
--jni-out out/java/jni
--objc-out out/objc
--py-out out/python
--pycffi-out out/cffi
--c-wrapper-out out/cwrapper
--cppcli-out out/cppcli"
sbt "run --help" # show all options
It is important to put run
and all arguments in "
, to be able to pass arguments to the executed jar!
Running Tests¶
sbt it:test
Packaging¶
Create a binary like the one that is published on github releases:
sbt assembly
This will generate a standalone, self-executing jar in target/bin
.
You can run the jar like this:
./djinni --help
On Windows the file must be renamed to djinni.bat
to make it executable.
Attention
The resulting binary still requires Java to be able to run! Details on how the self-executing jar works.
Project Structure¶
.
├── CODE_OF_CONDUCT.md (1)
├── LICENSE (2)
├── README.md (3)
├── build.sbt (4)
├── docs (5)
│ └── ...
├── mkdocs.yml (6)
├── project (7)
│ └── ...
└── src (8)
├── it (9)
│ ├── resources (10)
│ │ ├── expected (11)
│ │ │ └── ...
│ │ └── result (12)
│ │ └── ...
│ └── scala
│ └── djinni (13)
│ └── ...
└── main
└── scala
└── djinni (14)
└── ...
- Project Code of Conduct.
- Project License (Apache License).
- Readme file.
- Sbt build configuration.
- Documentation folder containing markdown documentation that will be rendered with MkDocs.
- MkDocs configuration. Will be included by the cross-language-cpp.github.io repository and published to djinni.xlcpp.dev.
- Sbt configuration.
- Sources folder.
- Integration testing directory.
- Resources for integration tests.
- Folder containing expected outcomes of the djinni generator. These files are matched against the real result of the generator in the integration tests.
- Folder that will be used for generator outputs in the integration tests. Files in here should not be checked in to source control.
- Folder containing the integration testing code.
- djinni-generator source code.
Preview Documentation¶
The documentation in docs
will be rendered as a part of djinni.xlcpp.dev.
You can preview how the docs will look like:
# install required dependencies
pip install -r mkdocs-requirements.txt
# render a live preview of the docs under http://127.0.0.1:8000
mkdocs serve
Release process¶
To release a new version of the generator, the following steps must be followed:
- Create a new release on Github. Set a tag version following semantic versioning rules (
v<MAJOR>.<MINOR>.<PATCH>
) and describe what has changed in the new version. - Wait. The Github "release" Action will automatically build the project and upload the resulting binaries to the release.
- Create a PR to the conan-center-index to publish the new version to Conan Center.