Update Rust, Diesel CLI and dev. environment.

This commit is contained in:
Orne Brocaar 2024-06-18 13:56:31 +01:00
parent 38d544a5f7
commit 3b95a413a6
4 changed files with 212 additions and 192 deletions

View File

@ -8,7 +8,7 @@ dist:
# Install dev dependencies # Install dev dependencies
dev-dependencies: dev-dependencies:
cargo install cross --version 0.2.5 cargo install cross --version 0.2.5
cargo install diesel_cli --version 2.1.1 --no-default-features --features postgres cargo install diesel_cli --version 2.2.1 --no-default-features --features postgres
cargo install cargo-deb --version 1.43.1 cargo install cargo-deb --version 1.43.1
cargo install cargo-generate-rpm --version 0.12.1 cargo install cargo-generate-rpm --version 0.12.1

View File

@ -1,222 +1,242 @@
[package] [package]
name = "chirpstack" name = "chirpstack"
description = "ChirpStack is an open-source LoRaWAN(TM) Network Server" description = "ChirpStack is an open-source LoRaWAN(TM) Network Server"
repository = "https://github.com/chirpstack/chirpstack" repository = "https://github.com/chirpstack/chirpstack"
homepage = "https://www.chirpstack.io/" homepage = "https://www.chirpstack.io/"
version = "4.8.1" version = "4.8.1"
authors = ["Orne Brocaar <info@brocaar.com>"] authors = ["Orne Brocaar <info@brocaar.com>"]
edition = "2021" edition = "2021"
publish = false publish = false
license = "MIT" license = "MIT"
[dependencies] [dependencies]
# CLI interface # CLI interface
clap = { version = "4.5", features = ["derive"] } clap = { version = "4.5", features = ["derive"] }
# Configuration # Configuration
serde = { version = "1.0", features = ["derive", "rc"] } serde = { version = "1.0", features = ["derive", "rc"] }
serde_yaml = "0.9" serde_yaml = "0.9"
serde_json = "1.0" serde_json = "1.0"
serde_urlencoded = "0.7" serde_urlencoded = "0.7"
humantime-serde = "1.1" humantime-serde = "1.1"
toml = "0.8" toml = "0.8"
handlebars = "5.1" handlebars = "5.1"
# Database # Database
email_address = "0.2" email_address = "0.2"
diesel = { version = "2.1", features = [ diesel = { version = "2.1", features = [
"chrono", "chrono",
"uuid", "uuid",
"serde_json", "serde_json",
"numeric", "numeric",
"64-column-tables", "64-column-tables",
"postgres_backend", "postgres_backend",
] } ] }
diesel_migrations = { version = "2.1" } diesel_migrations = { version = "2.1" }
diesel-async = { version = "0.4", features = ["deadpool", "postgres", "async-connection-wrapper"] } diesel-async = { version = "0.4", features = [
tokio-postgres = "0.7" "deadpool",
tokio-postgres-rustls = "0.11" "postgres",
bigdecimal = "0.4" "async-connection-wrapper",
redis = { version = "0.25.2", features = [ "tls-rustls", "tokio-rustls-comp"] } ] }
deadpool-redis = { version = "0.15", features = ["cluster"] } tokio-postgres = "0.7"
tokio-postgres-rustls = "0.11"
bigdecimal = "0.4"
redis = { version = "0.25.2", features = ["tls-rustls", "tokio-rustls-comp"] }
deadpool-redis = { version = "0.15", features = ["cluster"] }
# Logging # Logging
tracing = "0.1" tracing = "0.1"
tracing-subscriber = { version = "0.3", features = [ tracing-subscriber = { version = "0.3", features = [
"fmt", "fmt",
"ansi", "ansi",
"json", "json",
], default-features = true } ], default-features = true }
# ChirpStack API definitions # ChirpStack API definitions
chirpstack_api = { path = "../api/rust", features = ["default", "internal", "diesel"] } chirpstack_api = { path = "../api/rust", features = [
lrwn = { path = "../lrwn", features = ["serde", "diesel", "regions", "crypto"] } "default",
backend = { path = "../backend" } "internal",
"diesel",
] }
lrwn = { path = "../lrwn", features = [
"serde",
"diesel",
"regions",
"crypto",
] }
backend = { path = "../backend" }
# HTTP # HTTP
reqwest = { version = "0.12", features = [ reqwest = { version = "0.12", features = [
"json", "json",
"rustls-tls-native-roots", "rustls-tls-native-roots",
], default-features = false } ], default-features = false }
# Integrations # Integrations
aws-sign-v4 = "0.3" aws-sign-v4 = "0.3"
hmac = "0.12" hmac = "0.12"
sha2 = "0.10" sha2 = "0.10"
urlencoding = "2.1" urlencoding = "2.1"
geohash = "0.13" geohash = "0.13"
gcp_auth = "0.11" gcp_auth = "0.11"
lapin = "2.3" lapin = "2.3"
tokio-executor-trait = "2.1" tokio-executor-trait = "2.1"
tokio-reactor-trait = "1.1" tokio-reactor-trait = "1.1"
rdkafka = { version = "0.36", default-features = false, features = ["tokio", "cmake-build"] } rdkafka = { version = "0.36", default-features = false, features = [
"tokio",
"cmake-build",
] }
# gRPC and Protobuf # gRPC and Protobuf
tonic = "0.11" tonic = "0.11"
tonic-web = "0.11" tonic-web = "0.11"
tonic-reflection = "0.11" tonic-reflection = "0.11"
tokio = { version = "1.36", features = ["macros", "rt-multi-thread"] } tokio = { version = "1.36", features = ["macros", "rt-multi-thread"] }
tokio-stream = "0.1" tokio-stream = "0.1"
prost-types = "0.12" prost-types = "0.12"
prost = "0.12" prost = "0.12"
pbjson-types = "0.6" pbjson-types = "0.6"
# gRPC and HTTP multiplexing # gRPC and HTTP multiplexing
warp = { version = "0.3", features = ["tls"], default-features = false } warp = { version = "0.3", features = ["tls"], default-features = false }
hyper = "0.14" hyper = "0.14"
tower = "0.4" tower = "0.4"
futures = "0.3" futures = "0.3"
futures-util = "0.3" futures-util = "0.3"
http = "0.2" http = "0.2"
http-body = "0.4" http-body = "0.4"
rust-embed = "8.3" rust-embed = "8.3"
mime_guess = "2.0" mime_guess = "2.0"
tower-http = { version = "0.4", features = ["trace", "auth"] } tower-http = { version = "0.4", features = ["trace", "auth"] }
# Error handling # Error handling
thiserror = "1.0" thiserror = "1.0"
anyhow = "1.0" anyhow = "1.0"
# Authentication # Authentication
pbkdf2 = { version = "0.12", features = ["simple"] } pbkdf2 = { version = "0.12", features = ["simple"] }
rand_core = { version = "0.6", features = ["std"] } rand_core = { version = "0.6", features = ["std"] }
jsonwebtoken = "9.2" jsonwebtoken = "9.2"
rustls = "0.22" rustls = "0.22"
rustls-native-certs = "0.7" rustls-native-certs = "0.7"
rustls-pemfile = "2.1" rustls-pemfile = "2.1"
pem = "3.0" pem = "3.0"
x509-parser = "0.16" x509-parser = "0.16"
rsa = "0.9" rsa = "0.9"
elliptic-curve = { version = "0.13", features = ["pem"] } elliptic-curve = { version = "0.13", features = ["pem"] }
p256 = "0.13" p256 = "0.13"
rcgen = { version = "0.13.1", features = [ "x509-parser" ] } rcgen = { version = "0.13.1", features = ["x509-parser"] }
openidconnect = { version = "3.5", features = ["accept-rfc3339-timestamps"] } openidconnect = { version = "3.5", features = ["accept-rfc3339-timestamps"] }
oauth2 = "4.4" oauth2 = "4.4"
# MQTT # MQTT
rumqttc = { version = "0.24", features = ["url"] } rumqttc = { version = "0.24", features = ["url"] }
hex = "0.4" hex = "0.4"
# Codecs # Codecs
rquickjs = { version = "0.6", features = [ rquickjs = { version = "0.6", features = [
"bindgen", "bindgen",
"loader", "loader",
"array-buffer", "array-buffer",
"chrono", "chrono",
] } ] }
# Misc # Misc
lazy_static = "1.4" lazy_static = "1.4"
uuid = { version = "1.8", features = ["v4", "serde"] } uuid = { version = "1.8", features = ["v4", "serde"] }
chrono = "0.4" chrono = "0.4"
async-trait = "0.1" async-trait = "0.1"
aes = "0.8" aes = "0.8"
rand = "0.8" rand = "0.8"
base64 = "0.22" base64 = "0.22"
async-recursion = "1.0" async-recursion = "1.0"
regex = "1.10" regex = "1.10"
petgraph = "0.6" petgraph = "0.6"
prometheus-client = "0.22" prometheus-client = "0.22"
pin-project = "1.1" pin-project = "1.1"
# Development and testing # Development and testing
[dev-dependencies] [dev-dependencies]
httpmock = "0.7.0" httpmock = "0.7.0"
bytes = "1.5" bytes = "1.5"
dotenv = "0.15" dotenv = "0.15"
[features] [features]
test-all-integrations = ["test-integration-amqp", "test-integration-kafka", "test-integration-mqtt"] test-all-integrations = [
test-integration-amqp = [] "test-integration-amqp",
test-integration-kafka = [] "test-integration-kafka",
test-integration-mqtt = [] "test-integration-mqtt",
]
test-integration-amqp = []
test-integration-kafka = []
test-integration-mqtt = []
# Debian packaging. # Debian packaging.
[package.metadata.deb] [package.metadata.deb]
assets = [ assets = [
[ [
"target/release/chirpstack", "target/release/chirpstack",
"usr/bin/", "usr/bin/",
"755", "755",
], ],
[ [
"configuration/*.toml", "configuration/*.toml",
"etc/chirpstack/", "etc/chirpstack/",
"640", "640",
], ],
] ]
conf-files = [ conf-files = [
"/etc/chirpstack/chirpstack.toml", "/etc/chirpstack/chirpstack.toml",
"/etc/chirpstack/region_as923.toml", "/etc/chirpstack/region_as923.toml",
"/etc/chirpstack/region_as923_2.toml", "/etc/chirpstack/region_as923_2.toml",
"/etc/chirpstack/region_as923_3.toml", "/etc/chirpstack/region_as923_3.toml",
"/etc/chirpstack/region_as923_4.toml", "/etc/chirpstack/region_as923_4.toml",
"/etc/chirpstack/region_au915_0.toml", "/etc/chirpstack/region_au915_0.toml",
"/etc/chirpstack/region_au915_1.toml", "/etc/chirpstack/region_au915_1.toml",
"/etc/chirpstack/region_au915_2.toml", "/etc/chirpstack/region_au915_2.toml",
"/etc/chirpstack/region_au915_3.toml", "/etc/chirpstack/region_au915_3.toml",
"/etc/chirpstack/region_au915_4.toml", "/etc/chirpstack/region_au915_4.toml",
"/etc/chirpstack/region_au915_5.toml", "/etc/chirpstack/region_au915_5.toml",
"/etc/chirpstack/region_au915_6.toml", "/etc/chirpstack/region_au915_6.toml",
"/etc/chirpstack/region_au915_7.toml", "/etc/chirpstack/region_au915_7.toml",
"/etc/chirpstack/region_cn779.toml", "/etc/chirpstack/region_cn779.toml",
"/etc/chirpstack/region_eu433.toml", "/etc/chirpstack/region_eu433.toml",
"/etc/chirpstack/region_eu868.toml", "/etc/chirpstack/region_eu868.toml",
"/etc/chirpstack/region_in865.toml", "/etc/chirpstack/region_in865.toml",
"/etc/chirpstack/region_ism2400.toml", "/etc/chirpstack/region_ism2400.toml",
"/etc/chirpstack/region_kr920.toml", "/etc/chirpstack/region_kr920.toml",
"/etc/chirpstack/region_ru864.toml", "/etc/chirpstack/region_ru864.toml",
"/etc/chirpstack/region_us915_0.toml", "/etc/chirpstack/region_us915_0.toml",
"/etc/chirpstack/region_us915_1.toml", "/etc/chirpstack/region_us915_1.toml",
"/etc/chirpstack/region_us915_2.toml", "/etc/chirpstack/region_us915_2.toml",
"/etc/chirpstack/region_us915_3.toml", "/etc/chirpstack/region_us915_3.toml",
"/etc/chirpstack/region_us915_4.toml", "/etc/chirpstack/region_us915_4.toml",
"/etc/chirpstack/region_us915_5.toml", "/etc/chirpstack/region_us915_5.toml",
"/etc/chirpstack/region_us915_6.toml", "/etc/chirpstack/region_us915_6.toml",
"/etc/chirpstack/region_us915_7.toml", "/etc/chirpstack/region_us915_7.toml",
] ]
suggests = "postgresql, mosquitto, redis" suggests = "postgresql, mosquitto, redis"
maintainer-scripts = "debian/" maintainer-scripts = "debian/"
systemd-units = { enable = true } systemd-units = { enable = true }
[package.metadata.generate-rpm] [package.metadata.generate-rpm]
auto-req = "no" auto-req = "no"
pre_install_script = ''' pre_install_script = '''
id chirpstack &>/dev/null id chirpstack &>/dev/null
if [[ $? -ne 0 ]]; then if [[ $? -ne 0 ]]; then
useradd --system -U -M chirpstack -s /bin/false -d /etc/chirpstack useradd --system -U -M chirpstack -s /bin/false -d /etc/chirpstack
fi fi
''' '''
post_install_script = ''' post_install_script = '''
chown -R chirpstack:chirpstack /etc/chirpstack chown -R chirpstack:chirpstack /etc/chirpstack
chmod 750 /etc/chirpstack chmod 750 /etc/chirpstack
chmod 640 /etc/chirpstack/*.toml chmod 640 /etc/chirpstack/*.toml
''' '''
assets = [ assets = [
{ source = "target/release/chirpstack", dest = "/usr/bin/chirpstack", mode = "755" }, { source = "target/release/chirpstack", dest = "/usr/bin/chirpstack", mode = "755" },
{ source = "configuration/*", dest = "/etc/chirpstack"}, { source = "configuration/*", dest = "/etc/chirpstack" },
{ source = "rpm/chirpstack.service", dest = "/lib/systemd/system/chirpstack.service"}, { source = "rpm/chirpstack.service", dest = "/lib/systemd/system/chirpstack.service" },
] ]

View File

@ -1,4 +1,4 @@
[toolchain] [toolchain]
channel = "1.78.0" channel = "1.79.0"
components = ["rustfmt", "clippy"] components = ["rustfmt", "clippy"]
profile = "default" profile = "default"

View File

@ -1,4 +1,4 @@
{ pkgs ? import (fetchTarball "https://github.com/NixOS/nixpkgs/archive/nixos-23.11.tar.gz") {} }: { pkgs ? import (fetchTarball "https://github.com/NixOS/nixpkgs/archive/nixos-24.05.tar.gz") {} }:
pkgs.mkShell { pkgs.mkShell {
nativeBuildInputs = [ nativeBuildInputs = [