From 328fcf8d2058f48ca35c592e28e2351f7432559f Mon Sep 17 00:00:00 2001 From: Xiretza Date: Sun, 13 Nov 2022 00:59:27 +0100 Subject: [PATCH] deps: use time instead of chrono chrono still depends on a version of time with a segfault: https://github.com/chronotope/chrono/issues/602 --- Cargo.lock | 165 ++++------------------------------------------------- Cargo.toml | 2 +- src/bot.rs | 13 ++--- 3 files changed, 17 insertions(+), 163 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cadfa67..21c78b4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -58,15 +58,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "android_system_properties" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" -dependencies = [ - "libc", -] - [[package]] name = "anyhow" version = "1.0.66" @@ -326,21 +317,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "chrono" -version = "0.4.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b0a3d9ed01224b22057780a37bb8c5dbfe1be8ba48678e7bf57ec4b385411f" -dependencies = [ - "iana-time-zone", - "js-sys", - "num-integer", - "num-traits", - "time", - "wasm-bindgen", - "winapi", -] - [[package]] name = "cipher" version = "0.3.0" @@ -397,16 +373,6 @@ dependencies = [ "os_str_bytes", ] -[[package]] -name = "codespan-reporting" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" -dependencies = [ - "termcolor", - "unicode-width", -] - [[package]] name = "color-eyre" version = "0.6.2" @@ -535,50 +501,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "cxx" -version = "1.0.81" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97abf9f0eca9e52b7f81b945524e76710e6cb2366aead23b7d4fbf72e281f888" -dependencies = [ - "cc", - "cxxbridge-flags", - "cxxbridge-macro", - "link-cplusplus", -] - -[[package]] -name = "cxx-build" -version = "1.0.81" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cc32cc5fea1d894b77d269ddb9f192110069a8a9c1f1d441195fba90553dea3" -dependencies = [ - "cc", - "codespan-reporting", - "once_cell", - "proc-macro2", - "quote", - "scratch", - "syn", -] - -[[package]] -name = "cxxbridge-flags" -version = "1.0.81" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ca220e4794c934dc6b1207c3b42856ad4c302f2df1712e9f8d2eec5afaacf1f" - -[[package]] -name = "cxxbridge-macro" -version = "1.0.81" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b846f081361125bfc8dc9d3940c84e1fd83ba54bbca7b17cd29483c828be0704" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "darling" version = "0.14.2" @@ -1135,30 +1057,6 @@ dependencies = [ "tokio-native-tls", ] -[[package]] -name = "iana-time-zone" -version = "0.1.53" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64c122667b287044802d6ce17ee2ddf13207ed924c712de9a66a5814d5b64765" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "wasm-bindgen", - "winapi", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" -dependencies = [ - "cxx", - "cxx-build", -] - [[package]] name = "ident_case" version = "1.0.1" @@ -1253,7 +1151,6 @@ checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc" name = "its-matrix-bot" version = "0.1.0" dependencies = [ - "chrono", "clap", "color-eyre", "matrix-sdk", @@ -1262,6 +1159,7 @@ dependencies = [ "serde", "spaceapi", "thiserror", + "time", "tokio", "toml", "tracing", @@ -1310,15 +1208,6 @@ version = "0.2.137" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89" -[[package]] -name = "link-cplusplus" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9272ab7b96c9046fbc5bc56c06c117cb639fe2d509df0c421cad82d2915cf369" -dependencies = [ - "cc", -] - [[package]] name = "lock_api" version = "0.4.9" @@ -1617,25 +1506,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "num-integer" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" -dependencies = [ - "autocfg", - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" -dependencies = [ - "autocfg", -] - [[package]] name = "num_cpus" version = "1.14.0" @@ -2244,12 +2114,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" -[[package]] -name = "scratch" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8132065adcfd6e02db789d9285a0deb2f3fcb04002865ab67d5fb103533898" - [[package]] name = "security-framework" version = "2.7.0" @@ -2523,15 +2387,20 @@ dependencies = [ [[package]] name = "time" -version = "0.1.44" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" +checksum = "a561bf4617eebd33bca6434b988f39ed798e527f51a1e797d0ee4f61c0a38376" dependencies = [ - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi", + "serde", + "time-core", ] +[[package]] +name = "time-core" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" + [[package]] name = "tinyvec" version = "1.6.0" @@ -2722,12 +2591,6 @@ dependencies = [ "tinyvec", ] -[[package]] -name = "unicode-width" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" - [[package]] name = "unicode-xid" version = "0.2.4" @@ -2840,12 +2703,6 @@ version = "0.9.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" -[[package]] -name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" - [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" diff --git a/Cargo.toml b/Cargo.toml index 5893e95..0be7161 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,7 +11,6 @@ license = "AGPL-3.0-or-later" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -chrono = "0.4.23" clap = { version = "4.0.22", features = ["color", "derive"] } matrix-sdk = { version = "0.6.2", features = ["e2e-encryption"] } never-say-never = "6.6.666" @@ -19,6 +18,7 @@ reqwest = { version = "0.11.12", features = ["json"] } serde = { version = "1.0.147", features = ["derive"] } spaceapi = "0.8.1" thiserror = "1.0.37" +time = "0.3.17" tokio = { version = "1.21.2", features = ["full"] } toml = "0.5.9" url = { version = "2.3.1", features = ["serde"] } diff --git a/src/bot.rs b/src/bot.rs index eee0bc0..6465de7 100644 --- a/src/bot.rs +++ b/src/bot.rs @@ -5,7 +5,6 @@ use std::{ time::Duration, }; -use chrono::{DateTime, TimeZone, Utc}; use color_eyre::{ eyre::{eyre, Context}, Help, Result, @@ -26,6 +25,7 @@ use matrix_sdk::{ use never_say_never::Never; use reqwest::Url; use serde::Deserialize; +use time::OffsetDateTime; use tokio::time::sleep; use tracing::{event, instrument, span, Level}; @@ -53,7 +53,7 @@ pub struct Config { #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub enum OpenState { - Open { since: DateTime }, + Open { since: OffsetDateTime }, Closed, } @@ -71,12 +71,9 @@ async fn get_open_state(api: &ItsApi) -> Result { .ok_or(eyre!("missing `lastchange` field"))? .try_into() .wrap_err("lastchange timestamp out of i64 range")?; - OpenState::Open { - since: Utc - .timestamp_opt(last_change, 0) - .single() - .expect("nanos count of 0 produced invalid timestamp"), - } + let last_change = OffsetDateTime::from_unix_timestamp(last_change) + .wrap_err("lastchange timestamp out of range")?; + OpenState::Open { since: last_change } } else { OpenState::Closed };