Files
NLnetLabs-krill/Cargo.toml

316 lines
12 KiB
TOML

[package]
# Note: some of these values are also used when building Debian packages below.
name = "krill"
version = "0.15.1-dev"
edition = "2024"
rust-version = "1.85"
authors = ["NLnet Labs <rpki-team@nlnetlabs.nl>"]
description = "Resource Public Key Infrastructure (RPKI) daemon"
homepage = "https://www.nlnetlabs.nl/projects/routing/krill/"
repository = "https://github.com/NLnetLabs/krill"
keywords = ["rpki", "routing-security", "bgp"]
readme = "README.md"
license = "MPL-2.0"
exclude = [
"test-resources/*",
"tests/*",
".github/*",
"docker/*",
"pkg/*",
"Dockerfile",
]
[dependencies]
arc-swap = "1.7.1"
base64 = "0.22.1"
bytes = "1"
chrono = { version = "0.4.39", features = ["serde"] }
clap = { version = "4.5.37", features = ["cargo", "derive", "env", "wrap_help"]}
fd-lock = "4.0.4"
fern = { version = "0.7.1", features = ["syslog-7"] }
futures-util = "0.3"
hex = "0.4"
http-body-util = "0.1"
hyper = { version = "1.6.0", features = ["server"] }
hyper-util = { version = "0.1", features = [ "server" ] }
intervaltree = "0.2.7"
lazy_static = "1.5"
libflate = "2.1.0"
log = "0.4"
openssl = { version = "0.10", features = ["v110"] }
percent-encoding = "2.3.1"
pin-project-lite = "0.2.16"
rand = "0.9"
reqwest = { version = "0.12.15", features = ["json"] }
rpki = { version = "0.18.6", features = ["ca", "compat", "rrdp"] }
rustls-pemfile = "2.2.0"
serde = { version = "1.0", features = ["derive", "rc"] }
serde_json = "1.0"
tempfile = "3.19.1"
tokio = { version = "1", features = [ "macros", "rt", "rt-multi-thread", "signal", "time" ] }
tokio-rustls = { version = "0.26", default-features = false, features = [ "ring", "logging", "tls12" ] }
toml = "0.9.5"
url = { version = "2.5.4", features = ["serde"] }
uuid = { version = "1.16", features = ["serde", "v4"] }
# Dependencies used by the "hsm" feature
backoff = { version = "0.4.0", optional = true }
cryptoki = { version = "0.10", optional = true }
kmip = { version = "0.4.3", package = "kmip-protocol", features = [ "tls-with-openssl" ], optional = true }
r2d2 = { version = "0.8.10", optional = true }
secrecy = { version = "0.8", features = ["serde"], optional = true }
# Dependencies used by the "multi-user" feature
basic-cookies = { version = "0.1", optional = true }
openidconnect = { version = "4.0.0", optional = true, default-features = false }
regex = { version = "1.11.1", optional = true, default-features = false, features = [ "std" ] }
rpassword = { version = "7.4.0", optional = true }
scrypt = { version = "0.11", optional = true, default-features = false }
unicode-normalization = { version = "0.1", optional = true }
urlparse = { version = "0.7", optional = true }
# Disable compiler optimizations for the pkcs11 crate because otherwise with a release build the
# `pReserved = ptr::null_mut()` assignment done by `CK_C_INITIALIZE_ARGS::default()` appears to be optimized out. This
# causes SoftHSMv2 to fail with error CKR_ARGUMENTS_BAD and to log to syslog "SoftHSM.cpp(436): pReserved must be set to
# NULL_PTR". Disabling optimizations for the pkcs11 crate "solves" this problem.
# [profile.release.package.pkcs11]
# opt-level = 0
[target.'cfg(unix)'.dependencies]
syslog = "7.0.0"
[features]
default = ["multi-user", "hsm"]
hsm = ["backoff", "kmip", "cryptoki", "r2d2", "secrecy"]
multi-user = [
"basic-cookies",
"regex",
"openidconnect",
"rpassword",
"scrypt",
"unicode-normalization",
"urlparse",
]
# Preview features - not ready for production use
rta = []
# Internal features - not for external use
hsm-tests-kmip = ["hsm"]
hsm-tests-pkcs11 = ["hsm"]
[dev-dependencies]
tar = "0.4"
regex = "1.11.1"
stderrlog = "0.6"
tempfile = "3.19.1"
urlparse = "0.7"
# Make sure that Krill crashes on panics, rather than losing threads and
# limping on in a bad state.
[profile.release]
panic = "abort"
# ------------------------------------------------------------------------------
# START DEBIAN PACKAGING
#
# Configurations for the cargo-deb cargo plugin which builds Debian packages in
# target/debian/ when invoked with: cargo deb. Tested with cargo-deb v1.23.1.
# Use `--variant` to select which section below to use. Variant sections inherit
# and override the settings in the base [package.metadata.deb] section. The
# configs vary because of differing degrees of OpenSSL and systemd support
# across operating systems.
#
# Note that as the postinst script uses the adduser command we declare a
# dependency on the adduser package to keep the lintian tool happy.
# Note: krill.conf is deliberately NOT specified as a "conf-file" because it is
# generated.
#
# The GitHub Actions pkg.yml workflow definition file uses these configurations
# to build and test Ubuntu/Debian packages for Krill.
#
# See:
# - https://github.com/mmstick/cargo-deb
# - https://lintian.debian.org/tags/systemd-service-file-outside-lib.html
# - https://www.debian.org/doc/debian-policy/ch-files.html#behavior
# - .github/workflows/pkg.yml
[package.metadata.deb]
name = "krill"
priority = "optional"
section = "net"
extended-description-file = "pkg/debian/description.txt"
license-file = ["LICENSE", "0"]
depends = "$auto, passwd, libssl1.1"
maintainer-scripts = "pkg/debian/"
changelog = "target/debian/changelog" # this will be generated by the pkg workflow
copyright = "Copyright (c) 2019, NLnet Labs. All rights reserved."
assets = [
[
"target/release/krill",
"/usr/bin/krill",
"755",
],
[
"target/release/krillc",
"/usr/bin/krillc",
"755",
],
[
"defaults/krill.conf",
"/usr/share/doc/krill/krill.conf",
"644",
],
[
"doc/krill.1",
"/usr/share/man/man1/krill.1",
"644",
],
[
"doc/krillc.1",
"/usr/share/man/man1/krillc.1",
"644",
],
[
"pkg/common/krill.service.preset",
"/usr/lib/systemd/system-preset/50-krill.preset",
"644",
],
]
systemd-units = { unit-name = "krill", unit-scripts = "pkg/common", enable = false }
# Packaging configuration for the `krillup` binary rather than Krill itself. As
# we want the built binary to match that built for Krill we want the same
# dynamic or static OpenSSL linking too. Rather than inherit from
# [package.metadata.deb] and override fields to build a different package (which
# cargo deb variants weren't intended for), instead we use the same approach
# that we are forced to use for `cargo generate-rpm` (see below) where the the
# `pkg` GitHub Actions workflow renames the `package.metadata.deb` section out
# of the way and renames this section to `package.metadata.deb` to use it as the
# base configuration instead.
[package.metadata.deb_alt_base_krillup]
name = "krillup"
priority = "optional"
section = "net"
extended-description-file = "pkg/debian/description-krillup.txt"
license-file = ["LICENSE", "0"]
depends = "$auto, passwd, libssl1.1"
changelog = "target/debian/changelog" # this will be generated by the pkg workflow
copyright = "Copyright (c) 2019, NLnet Labs. All rights reserved."
assets = [
[
"target/release/krillup",
"/usr/bin/krillup",
"755",
],
[
"doc/krillup.1",
"/usr/share/man/man1/krillup.1",
"644",
],
]
[package.metadata.deb_alt_base_krillta]
name = "krillta"
priority = "optional"
section = "net"
extended-description-file = "pkg/debian/description-krillta.txt"
license-file = ["LICENSE", "0"]
depends = "$auto, passwd, libssl1.1"
changelog = "target/debian/changelog" # this will be generated by the pkg workflow
copyright = "Copyright (c) 2023, NLnet Labs. All rights reserved."
assets = [
[
"target/release/krillta",
"/usr/bin/krillta",
"755",
],
[
"doc/krillta.1",
"/usr/share/man/man1/krillta.1",
"644",
],
]
# Variant of the Debian packaging configuration that:
# a) statically links with OpenSSL when building a Debian package because the
# newest OpenSSL available on Ubuntu 16.04 at the time of writing is 1.0.2g
# (see: https://packages.ubuntu.com/xenial/openssl) while Krill requires
# OpenSSL >= 1.1.0.
# b) uses a simpler systemd service unit file because Ubuntu 16.04 doesn't
# support newer features supported by Ubuntu 18.04 and 20.04.
[package.metadata.deb.variants.ubuntu-jammy]
depends = "$auto, passwd, libssl3"
[package.metadata.deb.variants.debian-bookworm]
depends = "$auto, passwd, libssl3"
[package.metadata.deb.variants.debian-trixie]
depends = "$auto, passwd, libssl3, adduser"
[package.metadata.deb.variants.ubuntu-noble]
depends = "$auto, passwd, libssl3"
# Cross compilation variants:
# Note: we have to specifiy dependencies manually because we don't run cargo-deb
# on the target platform and so it cannot determine the dependencies correctly
# for us.
[package.metadata.deb.variants.debian-bullseye-armv7-unknown-linux-gnueabihf]
depends = "adduser, passwd, libc6 (>= 2.28), libssl1.1"
# END DEBIAN PACKAGING
# ------------------------------------------------------------------------------
# ------------------------------------------------------------------------------
# START RPM PACKAGING
#
# Configurations for the cargo-generate-rpm cargo plugin which builds RPM
# packages in target/generate-rpm/ when invoked with: cargo generate-rpm
#
[package.metadata.generate-rpm]
name = "krill"
# See: https://fedoraproject.org/wiki/Licensing:Main?rd=Licensing
license = "MPLv2.0"
assets = [
{ source = "target/release/krill", dest = "/usr/bin/krill", mode = "755" },
{ source = "target/release/krillc", dest = "/usr/bin/krillc", mode = "755" },
{ source = "target/rpm/krill.service", dest = "/lib/systemd/system/krill.service", mode = "644" },
{ source = "defaults/krill.conf", dest = "/usr/share/doc/krill/krill.conf", mode = "644", doc = true },
{ source = "doc/krill.1", dest = "/usr/share/man/man1/krill.1", mode = "644", doc = true },
{ source = "doc/krillc.1", dest = "/usr/share/man/man1/krillc.1", mode = "644", doc = true },
{ source = "pkg/common/krill.service.preset", dest = "/lib/systemd/system-preset/50-krill.preset", mode = "644" },
]
# These get set using cargo-generate-rpm --set-metadata at package build time.
#post_install_script = ...
#pre_uninstall_script = ...
#post_uninstall_script = ...
# Ensure that the useradd tool is present by depending on its package
[package.metadata.generate-rpm.requires]
shadow-utils = "*"
# A variant of the RPM packaging configuration that package the `krillup` binary
# instead of Krill itself. The `cargo generate-rpm` command doesn't itself know
# how to use this alternate configuration, instead the `pkg` GitHub Actions
# workflow renames the `package.metadata.generate-rpm` section out of the way
# and renames this section to `package.metadata.generate-rpm` to use it instead.
[package.metadata.generate-rpm-alt-base-krillup]
name = "krillup"
# See: https://fedoraproject.org/wiki/Licensing:Main?rd=Licensing
license = "MPLv2.0"
assets = [
{ source = "target/release/krillup", dest = "/usr/bin/krillup", mode = "755" },
{ source = "doc/krillup.1", dest = "/usr/share/man/man1/krillup.1", mode = "644", doc = true },
]
[package.metadata.generate-rpm-alt-base-krillta]
name = "krillta"
# See: https://fedoraproject.org/wiki/Licensing:Main?rd=Licensing
license = "MPLv2.0"
assets = [
{ source = "target/release/krillta", dest = "/usr/bin/krillta", mode = "755" },
{ source = "doc/krillta.1", dest = "/usr/share/man/man1/krillta.1", mode = "644", doc = true },
]
# END RPM PACKAGING
# ------------------------------------------------------------------------------