|
Flox Package Database 1
CRUD Operations on Nix Package Metadata
|
Docs are generated by Doxygen.
The files .ccls and compile_commands.json are available as Makefile targets. These may be used to support various C++ language server protocols, and tools such as clang-tidy.
Linting is a slow process, so we recommend running it in a separate terminal while you are hacking around or go get a coffee.
Linting is performed by clang-tidy, and can be configured in the file .clang-tidy.
This project follows semantic version guidelines with then scheme <MAJOR>.<MINOR>.<PATCH>.
This means that when a release is created, the version number should be incremented using the following rules:
pkgdb without making ANY changes to their existing usage.pkgdb without making changes to their existing usage, but they may be able to take advantage of new features if they choose to.pkgdb in their software.Follow the rules above strictly, and while we ideally want to avoid bumping major versions when possible - do not concern yourself with "having a high version number".
Semantic version numbers are not used in marketing materials, and are intended to indicate certain categories of software changes to developers and automated tools ( particularly CI/CD integration test suites ). These readers could care less if pkgdb is at version 3.2.1 or 30000.2.1!
Changes to the pkgdb SQL schema should be indicated by version numbers in the file /include/flox/pkgdb/read.hh using the variable sqlVersions which is used to populate newly created DBs and to detect old schemas in existing DBs.
Any changes to the schema version number should also trigger an equivalent increment to the pkgdb version number.
When changes are made to table schemas you must bump the tables version, while additions or changes to any VIEW can be reflected using the views version. Increments to the views version do not require existing databases on a user's system to become invalidated, they are simply upgraded with new VIEW definitions and their DbVersions row for pkgdb_views_schema is updated.
Increments to the tables version require all databases on a user's system to be recreated from scratch. A future extension might migrate existing data; but because the scraping operation is rather quick, we simply recreate them.
Updates to pkgdb version numbers are controlled by the text file /version ( in the repository root ). This file is used to populate the CPP variable FLOX_PKGDB_VERSION, the nix derivation's version number, and the pkg-config manifest file's version.
Publishing releases on GitHub using their WebUI is recommended AFTER you've followed the process for creating/updating release tags described below.
Tagging release commits as v<MAJOR>.<MINOR>.<PATCH> is required, including aliases for latest, v<MAJOR>, and v<MAJOR>.<MINOR>. These tags are used by consuming repositories to detect breaking changes in public interfaces and minimum usable v<MAJOR>.<MINOR> version ( to have access to certain features ). This allows automated update/upgrade utilities to be used at scale.
For example lets say that we are releasing a new minor version which moves us from v4.1.3 to v4.2.0, we would perform the following:
Congratulations - you basically cut a release! Next you might cruise over to github.com to the repository page and make a new release ( under the "Releases" section in the right hand panel ). When making a release just be sure to select the v<MAJOR>.<MINOR>.<PATCH> tag as the "release tag", and you're ready to roll!
For docstrings @brief continuations have to be indented, and for whatever reason if your block is multiple lines /** has to be on its own: