2020-01-03 11:39:52 +03:00
Local cargo config
==================
2020-01-02 16:07:12 +03:00
2020-01-03 11:39:52 +03:00
This repository ships with a `` .cargo/config `` that replaces the crates.io
registry with packaged crates located in `` /usr/share/cargo/registry `` .
2020-01-02 16:07:12 +03:00
2020-01-03 11:39:52 +03:00
A similar config is also applied building with dh_cargo. Cargo.lock needs to be
deleted when switching between packaged crates and crates.io, since the
2020-01-02 16:07:12 +03:00
checksums are not compatible.
2020-01-03 11:39:52 +03:00
To reference new dependencies (or updated versions) that are not yet packaged,
the dependency needs to point directly to a path or git source.
2020-01-15 16:26:06 +03:00
Steps for Releases
==================
2022-12-12 12:39:11 +03:00
- Run ./bump.sh <CRATE> [patch|minor|major|<VERSION>]
-- Fill out changelog
-- Confirm bump commit
2020-01-15 16:26:06 +03:00
- Build packages with `make deb` .
2022-12-12 12:39:11 +03:00
-- Don't forget to commit updated d/control!
2021-10-05 11:23:58 +03:00
Adding Crates
=============
1) At the top level:
- Generate the crate: `` cargo new --lib the-name ``
- Sort the crate into `` Cargo.toml `` 's `` workspace.members ``
2) In the new crate's `` Cargo.toml `` :
2022-12-09 15:16:02 +03:00
- In `` [package] `` set:
authors.workspace = true
license.workspace = true
edition.workspace = true
2022-12-09 15:31:41 +03:00
exclude.workspace = true
2021-10-05 11:23:58 +03:00
- Add a meaningful `` description ``
- Copy `` debian/copyright `` and `` debian/debcargo.toml `` from another subcrate.
2022-12-12 12:39:11 +03:00
Adding a new Dependency
=======================
1) At the top level:
- Add it to `` [workspace.dependencies] `` specifying the version and any
features that should be enabled throughout the workspace
2) In each member's `` Cargo.toml `` :
- Add it to the desired dependencies section with `` workspace = true `` and no
version specified.
- If this member requires additional features, add only the extra features to
the member dependency.
Updating a Dependency's Version
===============================
1) At the top level:
- Bump the version in `` [workspace.dependencies] `` as desired.
- Check for deprecations or breakage throughout the workspace.
Notes on Workspace Inheritance
==============================
Common metadata (like authors, license, ..) are inherited throughout the
workspace. If new fields are added that are identical for all crates, they
should be defined in the top-level `` Cargo.toml `` file's
`` [workspace.package] `` section, and inherited in all members explicitly by
setting `` FIELD.workspace = true `` in the member's `` [package] `` section.
Dependency information is also inherited throughout the workspace, allowing a
single dependency specification in the top-level Cargo.toml file to be used by
all members.
Some restrictions apply:
- features can only be added in members, never removed (this includes
`` default_features = false `` !)
- the base feature set at the workspace level should be the minimum (possibly
empty!) set required by all members
- workspace dependency specifications cannot include `` optional ``
- if needed, the `` optional `` flag needs to be set at the member level when
using a workspace dependency