all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [pbs-devel] [PATCH proxmox v2 01/12] cargo: set msrv to 1.80
@ 2024-08-14  7:19 Maximiliano Sandoval
  2024-08-14  7:19 ` [pbs-devel] [PATCH proxmox v2 02/12] dns-api: remove lazy-static dependency Maximiliano Sandoval
                   ` (12 more replies)
  0 siblings, 13 replies; 14+ messages in thread
From: Maximiliano Sandoval @ 2024-08-14  7:19 UTC (permalink / raw)
  To: pbs-devel

In the following commits we make use of std::sync::LazyLock;

Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
---
Differences from v1:
 - Remove changes to d/control

 Cargo.toml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Cargo.toml b/Cargo.toml
index 6495b40a..71f25b45 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -59,7 +59,7 @@ license = "AGPL-3"
 repository = "https://git.proxmox.com/?p=proxmox.git"
 homepage = "https://proxmox.com"
 exclude = [ "debian" ]
-rust-version = "1.70"
+rust-version = "1.80"
 
 [workspace.dependencies]
 # any features enabled here are enabled on all members using 'workspace = true'!
-- 
2.39.2



_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [pbs-devel] [PATCH proxmox v2 02/12] dns-api: remove lazy-static dependency
  2024-08-14  7:19 [pbs-devel] [PATCH proxmox v2 01/12] cargo: set msrv to 1.80 Maximiliano Sandoval
@ 2024-08-14  7:19 ` Maximiliano Sandoval
  2024-08-14  7:19 ` [pbs-devel] [PATCH proxmox v2 03/12] async: remove lazy_static dependency Maximiliano Sandoval
                   ` (11 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: Maximiliano Sandoval @ 2024-08-14  7:19 UTC (permalink / raw)
  To: pbs-devel

Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
---
 proxmox-dns-api/Cargo.toml         |  2 +-
 proxmox-dns-api/src/resolv_conf.rs | 17 ++++++-----------
 2 files changed, 7 insertions(+), 12 deletions(-)

diff --git a/proxmox-dns-api/Cargo.toml b/proxmox-dns-api/Cargo.toml
index 406c9466..98045b34 100644
--- a/proxmox-dns-api/Cargo.toml
+++ b/proxmox-dns-api/Cargo.toml
@@ -7,11 +7,11 @@ license.workspace = true
 repository.workspace = true
 exclude.workspace = true
 description = "DNS Management API implementation"
+rust-version.workspace = true
 
 [dependencies]
 anyhow.workspace = true
 const_format.workspace = true
-lazy_static.workspace = true
 regex.workspace = true
 serde = { workspace = true, features = ["derive"] }
 
diff --git a/proxmox-dns-api/src/resolv_conf.rs b/proxmox-dns-api/src/resolv_conf.rs
index 1b09d07f..32698913 100644
--- a/proxmox-dns-api/src/resolv_conf.rs
+++ b/proxmox-dns-api/src/resolv_conf.rs
@@ -1,9 +1,7 @@
-use std::sync::Arc;
-use std::sync::Mutex;
+use std::sync::{Arc, LazyLock, Mutex};
 
 use anyhow::Error;
 use const_format::concatcp;
-use lazy_static::lazy_static;
 use proxmox_config_digest::ConfigDigest;
 use regex::Regex;
 
@@ -34,11 +32,10 @@ pub fn read_etc_resolv_conf(
 
     let data = String::from_utf8(raw)?;
 
-    lazy_static! {
-        static ref DOMAIN_REGEX: Regex = Regex::new(r"^\s*(?:search|domain)\s+(\S+)\s*").unwrap();
-        static ref SERVER_REGEX: Regex =
-            Regex::new(concatcp!(r"^\s*nameserver\s+(", IPRE_STR, r")\s*")).unwrap();
-    }
+    static DOMAIN_REGEX: LazyLock<Regex> =
+        LazyLock::new(|| Regex::new(r"^\s*(?:search|domain)\s+(\S+)\s*").unwrap());
+    static SERVER_REGEX: LazyLock<Regex> =
+        LazyLock::new(|| Regex::new(concatcp!(r"^\s*nameserver\s+(", IPRE_STR, r")\s*")).unwrap());
 
     let mut options = String::new();
 
@@ -78,9 +75,7 @@ pub fn update_dns(
     delete: Option<Vec<DeletableResolvConfProperty>>,
     digest: Option<ConfigDigest>,
 ) -> Result<(), Error> {
-    lazy_static! {
-        static ref MUTEX: Arc<Mutex<()>> = Arc::new(Mutex::new(()));
-    }
+    static MUTEX: LazyLock<Arc<Mutex<()>>> = LazyLock::new(|| Arc::new(Mutex::new(())));
 
     let _guard = MUTEX.lock();
 
-- 
2.39.2



_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [pbs-devel] [PATCH proxmox v2 03/12] async: remove lazy_static dependency
  2024-08-14  7:19 [pbs-devel] [PATCH proxmox v2 01/12] cargo: set msrv to 1.80 Maximiliano Sandoval
  2024-08-14  7:19 ` [pbs-devel] [PATCH proxmox v2 02/12] dns-api: remove lazy-static dependency Maximiliano Sandoval
@ 2024-08-14  7:19 ` Maximiliano Sandoval
  2024-08-14  7:19 ` [pbs-devel] [PATCH proxmox v2 04/12] subscription: " Maximiliano Sandoval
                   ` (10 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: Maximiliano Sandoval @ 2024-08-14  7:19 UTC (permalink / raw)
  To: pbs-devel

Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
---
 proxmox-async/Cargo.toml     |  2 +-
 proxmox-async/src/runtime.rs | 11 ++++-------
 2 files changed, 5 insertions(+), 8 deletions(-)

diff --git a/proxmox-async/Cargo.toml b/proxmox-async/Cargo.toml
index 669ae08b..8508ef5d 100644
--- a/proxmox-async/Cargo.toml
+++ b/proxmox-async/Cargo.toml
@@ -6,13 +6,13 @@ edition.workspace = true
 license.workspace = true
 repository.workspace = true
 description = "Proxmox async/tokio helpers"
+rust-version.workspace = true
 
 exclude.workspace = true
 
 [dependencies]
 anyhow.workspace = true
 futures.workspace = true
-lazy_static.workspace = true
 pin-utils.workspace = true
 tokio = { workspace = true, features = [ "net", "rt", "rt-multi-thread", "sync"] }
 
diff --git a/proxmox-async/src/runtime.rs b/proxmox-async/src/runtime.rs
index efc1cd88..0721fd9e 100644
--- a/proxmox-async/src/runtime.rs
+++ b/proxmox-async/src/runtime.rs
@@ -33,19 +33,16 @@
 //! [openssl-bug]: https://github.com/openssl/openssl/issues/6214
 
 use std::future::Future;
-use std::sync::{Arc, Mutex, Weak};
+use std::sync::{Arc, LazyLock, Mutex, Weak};
 use std::task::{Context, Poll, Waker};
 use std::thread::{self, Thread};
 
-use lazy_static::lazy_static;
 use pin_utils::pin_mut;
 use tokio::runtime::{self, Runtime, RuntimeFlavor};
 
-lazy_static! {
-    // avoid openssl bug: https://github.com/openssl/openssl/issues/6214
-    // by dropping the runtime as early as possible
-    static ref RUNTIME: Mutex<Weak<Runtime>> = Mutex::new(Weak::new());
-}
+// avoid openssl bug: https://github.com/openssl/openssl/issues/6214
+// by dropping the runtime as early as possible
+static RUNTIME: LazyLock<Mutex<Weak<Runtime>>> = LazyLock::new(|| Mutex::new(Weak::new()));
 
 #[link(name = "crypto")]
 extern "C" {
-- 
2.39.2



_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [pbs-devel] [PATCH proxmox v2 04/12] subscription: remove lazy_static dependency
  2024-08-14  7:19 [pbs-devel] [PATCH proxmox v2 01/12] cargo: set msrv to 1.80 Maximiliano Sandoval
  2024-08-14  7:19 ` [pbs-devel] [PATCH proxmox v2 02/12] dns-api: remove lazy-static dependency Maximiliano Sandoval
  2024-08-14  7:19 ` [pbs-devel] [PATCH proxmox v2 03/12] async: remove lazy_static dependency Maximiliano Sandoval
@ 2024-08-14  7:19 ` Maximiliano Sandoval
  2024-08-14  7:19 ` [pbs-devel] [PATCH proxmox v2 05/12] rest-server: " Maximiliano Sandoval
                   ` (9 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: Maximiliano Sandoval @ 2024-08-14  7:19 UTC (permalink / raw)
  To: pbs-devel

Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
---
 proxmox-subscription/Cargo.toml   | 2 +-
 proxmox-subscription/src/check.rs | 8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/proxmox-subscription/Cargo.toml b/proxmox-subscription/Cargo.toml
index 4ec37d4c..38fc8e22 100644
--- a/proxmox-subscription/Cargo.toml
+++ b/proxmox-subscription/Cargo.toml
@@ -6,6 +6,7 @@ edition.workspace = true
 license.workspace = true
 repository.workspace = true
 description = "Proxmox subscription utilitites"
+rust-version.workspace = true
 
 exclude.workspace = true
 
@@ -13,7 +14,6 @@ exclude.workspace = true
 anyhow.workspace = true
 base64.workspace = true
 hex.workspace = true
-lazy_static.workspace = true
 openssl.workspace = true
 regex.workspace = true
 serde.workspace = true
diff --git a/proxmox-subscription/src/check.rs b/proxmox-subscription/src/check.rs
index 0ef6f046..8522bcd3 100644
--- a/proxmox-subscription/src/check.rs
+++ b/proxmox-subscription/src/check.rs
@@ -1,6 +1,7 @@
+use std::sync::LazyLock;
+
 use anyhow::{bail, format_err, Error};
 
-use lazy_static::lazy_static;
 use regex::Regex;
 use serde_json::json;
 
@@ -11,9 +12,8 @@ use crate::{
     SubscriptionInfo, SubscriptionStatus,
 };
 
-lazy_static! {
-    static ref ATTR_RE: Regex = Regex::new(r"<([^>]+)>([^<]+)</[^>]+>").unwrap();
-}
+static ATTR_RE: LazyLock<Regex> =
+    LazyLock::new(|| Regex::new(r"<([^>]+)>([^<]+)</[^>]+>").unwrap());
 
 const SHOP_URI: &str = "https://shop.proxmox.com/modules/servers/licensing/verify.php";
 
-- 
2.39.2



_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [pbs-devel] [PATCH proxmox v2 05/12] rest-server: remove lazy_static dependency
  2024-08-14  7:19 [pbs-devel] [PATCH proxmox v2 01/12] cargo: set msrv to 1.80 Maximiliano Sandoval
                   ` (2 preceding siblings ...)
  2024-08-14  7:19 ` [pbs-devel] [PATCH proxmox v2 04/12] subscription: " Maximiliano Sandoval
@ 2024-08-14  7:19 ` Maximiliano Sandoval
  2024-08-14  7:19 ` [pbs-devel] [PATCH proxmox v2 06/12] time: " Maximiliano Sandoval
                   ` (8 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: Maximiliano Sandoval @ 2024-08-14  7:19 UTC (permalink / raw)
  To: pbs-devel

Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
---
 proxmox-rest-server/Cargo.toml                      |  2 +-
 proxmox-rest-server/examples/minimal-rest-server.rs |  8 +++-----
 proxmox-rest-server/src/lib.rs                      | 11 +++++++----
 proxmox-rest-server/src/rest.rs                     |  7 ++-----
 proxmox-rest-server/src/worker_task.rs              |  9 +++------
 5 files changed, 16 insertions(+), 21 deletions(-)

diff --git a/proxmox-rest-server/Cargo.toml b/proxmox-rest-server/Cargo.toml
index 3f69e550..e35cb42f 100644
--- a/proxmox-rest-server/Cargo.toml
+++ b/proxmox-rest-server/Cargo.toml
@@ -6,6 +6,7 @@ edition.workspace = true
 license.workspace = true
 repository.workspace = true
 description = "REST server implementation"
+rust-version.workspace = true
 
 exclude.workspace = true
 
@@ -19,7 +20,6 @@ futures.workspace = true
 handlebars = { workspace = true, optional = true }
 http.workspace = true
 hyper = { workspace = true, features = [ "full" ] }
-lazy_static.workspace = true
 libc.workspace = true
 log.workspace = true
 nix.workspace = true
diff --git a/proxmox-rest-server/examples/minimal-rest-server.rs b/proxmox-rest-server/examples/minimal-rest-server.rs
index a93ef0f5..d6a5f2eb 100644
--- a/proxmox-rest-server/examples/minimal-rest-server.rs
+++ b/proxmox-rest-server/examples/minimal-rest-server.rs
@@ -1,13 +1,12 @@
 use std::collections::HashMap;
 use std::future::Future;
 use std::pin::Pin;
-use std::sync::Mutex;
+use std::sync::{LazyLock, Mutex};
 
 use anyhow::{bail, format_err, Error};
 use http::request::Parts;
 use http::HeaderMap;
 use hyper::{Body, Method, Response};
-use lazy_static::lazy_static;
 
 use proxmox_router::{
     list_subdirs_api_method, Router, RpcEnvironmentType, SubdirMap, UserInformation,
@@ -70,9 +69,8 @@ fn ping() -> Result<String, Error> {
     Ok("pong".to_string())
 }
 
-lazy_static! {
-    static ref ITEM_MAP: Mutex<HashMap<String, String>> = Mutex::new(HashMap::new());
-}
+static ITEM_MAP: LazyLock<Mutex<HashMap<String, String>>> =
+    LazyLock::new(|| Mutex::new(HashMap::new()));
 
 #[api]
 /// Lists all current items
diff --git a/proxmox-rest-server/src/lib.rs b/proxmox-rest-server/src/lib.rs
index 3c9e887b..43dafa91 100644
--- a/proxmox-rest-server/src/lib.rs
+++ b/proxmox-rest-server/src/lib.rs
@@ -17,6 +17,7 @@
 #![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))]
 
 use std::fmt;
+use std::sync::LazyLock;
 
 use anyhow::{format_err, Error};
 use nix::unistd::Pid;
@@ -46,10 +47,12 @@ pub use worker_task::*;
 mod h2service;
 pub use h2service::*;
 
-lazy_static::lazy_static! {
-    static ref PID: i32 = unsafe { libc::getpid() };
-    static ref PSTART: u64 = PidStat::read_from_pid(Pid::from_raw(*PID)).unwrap().starttime;
-}
+static PID: LazyLock<i32> = LazyLock::new(|| unsafe { libc::getpid() });
+static PSTART: LazyLock<u64> = LazyLock::new(|| {
+    PidStat::read_from_pid(Pid::from_raw(*PID))
+        .unwrap()
+        .starttime
+});
 
 /// Returns the current process ID (see [libc::getpid])
 ///
diff --git a/proxmox-rest-server/src/rest.rs b/proxmox-rest-server/src/rest.rs
index fa9e043a..8b444c80 100644
--- a/proxmox-rest-server/src/rest.rs
+++ b/proxmox-rest-server/src/rest.rs
@@ -4,7 +4,7 @@ use std::hash::BuildHasher;
 use std::io;
 use std::path::{Path, PathBuf};
 use std::pin::Pin;
-use std::sync::{Arc, Mutex};
+use std::sync::{Arc, LazyLock, Mutex};
 use std::task::{Context, Poll};
 
 use anyhow::{bail, format_err, Error};
@@ -14,7 +14,6 @@ use hyper::body::HttpBody;
 use hyper::header::{self, HeaderMap};
 use hyper::http::request::Parts;
 use hyper::{Body, Request, Response, StatusCode};
-use lazy_static::lazy_static;
 use regex::Regex;
 use serde_json::Value;
 use tokio::fs::File;
@@ -289,9 +288,7 @@ fn log_response(
 }
 
 fn get_proxied_peer(headers: &HeaderMap) -> Option<std::net::SocketAddr> {
-    lazy_static! {
-        static ref RE: Regex = Regex::new(r#"for="([^"]+)""#).unwrap();
-    }
+    static RE: LazyLock<Regex> = LazyLock::new(|| Regex::new(r#"for="([^"]+)""#).unwrap());
     let forwarded = headers.get(header::FORWARDED)?.to_str().ok()?;
     let capture = RE.captures(forwarded)?;
     let rhost = capture.get(1)?.as_str();
diff --git a/proxmox-rest-server/src/worker_task.rs b/proxmox-rest-server/src/worker_task.rs
index 62e5893f..228abb7f 100644
--- a/proxmox-rest-server/src/worker_task.rs
+++ b/proxmox-rest-server/src/worker_task.rs
@@ -4,12 +4,11 @@ use std::io::{BufRead, BufReader, Read, Write};
 use std::panic::UnwindSafe;
 use std::path::PathBuf;
 use std::sync::atomic::{AtomicBool, AtomicUsize, Ordering};
-use std::sync::{Arc, Mutex, OnceLock};
+use std::sync::{Arc, LazyLock, Mutex, OnceLock};
 use std::time::{Duration, SystemTime};
 
 use anyhow::{bail, format_err, Error};
 use futures::*;
-use lazy_static::lazy_static;
 use nix::fcntl::OFlag;
 use once_cell::sync::OnceCell;
 use serde::{Deserialize, Serialize};
@@ -497,10 +496,8 @@ pub fn upid_read_status(upid: &UPID) -> Result<TaskState, Error> {
     Ok(TaskState::Unknown { endtime }) // no last line with both, end-time and task-state, found.
 }
 
-lazy_static! {
-    static ref WORKER_TASK_LIST: Mutex<HashMap<usize, Arc<WorkerTask>>> =
-        Mutex::new(HashMap::new());
-}
+static WORKER_TASK_LIST: LazyLock<Mutex<HashMap<usize, Arc<WorkerTask>>>> =
+    LazyLock::new(|| Mutex::new(HashMap::new()));
 
 /// checks if the task UPID refers to a worker from this process
 fn is_local_worker(upid: &UPID) -> bool {
-- 
2.39.2



_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [pbs-devel] [PATCH proxmox v2 06/12] time: remove lazy_static dependency
  2024-08-14  7:19 [pbs-devel] [PATCH proxmox v2 01/12] cargo: set msrv to 1.80 Maximiliano Sandoval
                   ` (3 preceding siblings ...)
  2024-08-14  7:19 ` [pbs-devel] [PATCH proxmox v2 05/12] rest-server: " Maximiliano Sandoval
@ 2024-08-14  7:19 ` Maximiliano Sandoval
  2024-08-14  7:19 ` [pbs-devel] [PATCH proxmox v2 07/12] sys: " Maximiliano Sandoval
                   ` (7 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: Maximiliano Sandoval @ 2024-08-14  7:19 UTC (permalink / raw)
  To: pbs-devel

Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
---
 proxmox-time/Cargo.toml       |  2 +-
 proxmox-time/src/time_span.rs | 94 +++++++++++++++++------------------
 2 files changed, 47 insertions(+), 49 deletions(-)

diff --git a/proxmox-time/Cargo.toml b/proxmox-time/Cargo.toml
index 17282507..d863fa0c 100644
--- a/proxmox-time/Cargo.toml
+++ b/proxmox-time/Cargo.toml
@@ -6,13 +6,13 @@ edition.workspace = true
 license.workspace = true
 repository.workspace = true
 description = "time utilities and TmEditor"
+rust-version.workspace = true
 
 exclude.workspace = true
 
 [dependencies]
 anyhow.workspace = true
 bitflags.workspace = true
-lazy_static.workspace = true
 nom = "7"
 
 [target.'cfg(not(target_arch="wasm32"))'.dependencies]
diff --git a/proxmox-time/src/time_span.rs b/proxmox-time/src/time_span.rs
index e580c3d6..2ccdf08b 100644
--- a/proxmox-time/src/time_span.rs
+++ b/proxmox-time/src/time_span.rs
@@ -1,79 +1,77 @@
 use std::collections::HashMap;
+use std::sync::LazyLock;
 
 use anyhow::Error;
-use lazy_static::lazy_static;
 use nom::{bytes::complete::take_while1, character::complete::space0, combinator::opt};
 
 use crate::parse_helpers::{parse_complete_line, parse_error, parse_u64, IResult};
 
-lazy_static! {
-    static ref TIME_SPAN_UNITS: HashMap<&'static str, f64> = {
-        let mut map = HashMap::new();
+static TIME_SPAN_UNITS: LazyLock<HashMap<&'static str, f64>> = LazyLock::new(|| {
+    let mut map = HashMap::new();
 
-        let second = 1.0;
+    let second = 1.0;
 
-        map.insert("seconds", second);
-        map.insert("second", second);
-        map.insert("sec", second);
-        map.insert("s", second);
+    map.insert("seconds", second);
+    map.insert("second", second);
+    map.insert("sec", second);
+    map.insert("s", second);
 
-        let msec = second / 1000.0;
+    let msec = second / 1000.0;
 
-        map.insert("msec", msec);
-        map.insert("ms", msec);
+    map.insert("msec", msec);
+    map.insert("ms", msec);
 
-        let usec = msec / 1000.0;
+    let usec = msec / 1000.0;
 
-        map.insert("usec", usec);
-        map.insert("us", usec);
-        map.insert("µs", usec);
+    map.insert("usec", usec);
+    map.insert("us", usec);
+    map.insert("µs", usec);
 
-        let nsec = usec / 1000.0;
+    let nsec = usec / 1000.0;
 
-        map.insert("nsec", nsec);
-        map.insert("ns", nsec);
+    map.insert("nsec", nsec);
+    map.insert("ns", nsec);
 
-        let minute = second * 60.0;
+    let minute = second * 60.0;
 
-        map.insert("minutes", minute);
-        map.insert("minute", minute);
-        map.insert("min", minute);
-        map.insert("m", minute);
+    map.insert("minutes", minute);
+    map.insert("minute", minute);
+    map.insert("min", minute);
+    map.insert("m", minute);
 
-        let hour = minute * 60.0;
+    let hour = minute * 60.0;
 
-        map.insert("hours", hour);
-        map.insert("hour", hour);
-        map.insert("hr", hour);
-        map.insert("h", hour);
+    map.insert("hours", hour);
+    map.insert("hour", hour);
+    map.insert("hr", hour);
+    map.insert("h", hour);
 
-        let day = hour * 24.0;
+    let day = hour * 24.0;
 
-        map.insert("days", day);
-        map.insert("day", day);
-        map.insert("d", day);
+    map.insert("days", day);
+    map.insert("day", day);
+    map.insert("d", day);
 
-        let week = day * 7.0;
+    let week = day * 7.0;
 
-        map.insert("weeks", week);
-        map.insert("week", week);
-        map.insert("w", week);
+    map.insert("weeks", week);
+    map.insert("week", week);
+    map.insert("w", week);
 
-        let month = 30.44 * day;
+    let month = 30.44 * day;
 
-        map.insert("months", month);
-        map.insert("month", month);
-        map.insert("M", month);
+    map.insert("months", month);
+    map.insert("month", month);
+    map.insert("M", month);
 
-        let year = 365.25 * day;
+    let year = 365.25 * day;
 
-        map.insert("years", year);
-        map.insert("year", year);
-        map.insert("y", year);
+    map.insert("years", year);
+    map.insert("year", year);
+    map.insert("y", year);
 
-        map
-    };
-}
+    map
+});
 
 /// A time spans defines a time duration
 #[derive(Default, Clone, Debug)]
-- 
2.39.2



_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [pbs-devel] [PATCH proxmox v2 07/12] sys: remove lazy_static dependency
  2024-08-14  7:19 [pbs-devel] [PATCH proxmox v2 01/12] cargo: set msrv to 1.80 Maximiliano Sandoval
                   ` (4 preceding siblings ...)
  2024-08-14  7:19 ` [pbs-devel] [PATCH proxmox v2 06/12] time: " Maximiliano Sandoval
@ 2024-08-14  7:19 ` Maximiliano Sandoval
  2024-08-14  7:19 ` [pbs-devel] [PATCH proxmox v2 08/12] network-api: " Maximiliano Sandoval
                   ` (6 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: Maximiliano Sandoval @ 2024-08-14  7:19 UTC (permalink / raw)
  To: pbs-devel

Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
---
 proxmox-sys/Cargo.toml              |  2 +-
 proxmox-sys/src/lib.rs              | 29 ++++++++++++++---------------
 proxmox-sys/src/linux/procfs/mod.rs | 13 ++++---------
 3 files changed, 19 insertions(+), 25 deletions(-)

diff --git a/proxmox-sys/Cargo.toml b/proxmox-sys/Cargo.toml
index 4022228c..c5d2bd87 100644
--- a/proxmox-sys/Cargo.toml
+++ b/proxmox-sys/Cargo.toml
@@ -6,13 +6,13 @@ edition.workspace = true
 license.workspace = true
 repository.workspace = true
 description = "System tools (using nix)."
+rust-version.workspace = true
 
 exclude.workspace = true
 
 [dependencies]
 anyhow.workspace = true
 base64.workspace = true
-lazy_static.workspace = true
 libc.workspace = true
 log.workspace = true
 nix.workspace = true
diff --git a/proxmox-sys/src/lib.rs b/proxmox-sys/src/lib.rs
index a16b46e3..c75cd69f 100644
--- a/proxmox-sys/src/lib.rs
+++ b/proxmox-sys/src/lib.rs
@@ -2,6 +2,7 @@
 
 use std::os::fd::{FromRawFd, OwnedFd};
 use std::os::unix::ffi::OsStrExt;
+use std::sync::LazyLock;
 
 pub mod boot_mode;
 pub mod command;
@@ -20,21 +21,19 @@ pub mod systemd;
 
 /// Returns the hosts node name (UTS node name)
 pub fn nodename() -> &'static str {
-    lazy_static::lazy_static! {
-        static ref NODENAME: String = {
-            std::str::from_utf8(
-                nix::sys::utsname::uname()
-                    .expect("failed to get nodename")
-                    .nodename()
-                    .as_bytes(),
-            )
-            .expect("non utf-8 nodename not supported")
-            .split('.')
-            .next()
-            .unwrap()
-            .to_owned()
-        };
-    }
+    static NODENAME: LazyLock<String> = LazyLock::new(|| {
+        std::str::from_utf8(
+            nix::sys::utsname::uname()
+                .expect("failed to get nodename")
+                .nodename()
+                .as_bytes(),
+        )
+        .expect("non utf-8 nodename not supported")
+        .split('.')
+        .next()
+        .unwrap()
+        .to_owned()
+    });
 
     &NODENAME
 }
diff --git a/proxmox-sys/src/linux/procfs/mod.rs b/proxmox-sys/src/linux/procfs/mod.rs
index 6c436c74..0875fcf8 100644
--- a/proxmox-sys/src/linux/procfs/mod.rs
+++ b/proxmox-sys/src/linux/procfs/mod.rs
@@ -5,11 +5,10 @@ use std::fs::OpenOptions;
 use std::io::{BufRead, BufReader};
 use std::net::{Ipv4Addr, Ipv6Addr};
 use std::str::FromStr;
-use std::sync::RwLock;
+use std::sync::{LazyLock, RwLock};
 use std::time::Instant;
 
 use anyhow::{bail, format_err, Error};
-use lazy_static::lazy_static;
 use nix::unistd::Pid;
 use serde::Serialize;
 
@@ -27,9 +26,7 @@ pub fn sysconf(name: i32) -> i64 {
     unsafe { sysconf(name) }
 }
 
-lazy_static! {
-    pub static ref CLOCK_TICKS: f64 = sysconf(libc::_SC_CLK_TCK) as f64;
-}
+pub static CLOCK_TICKS: LazyLock<f64> = LazyLock::new(|| sysconf(libc::_SC_CLK_TCK) as f64);
 
 /// Selected contents of the `/proc/PID/stat` file.
 pub struct PidStat {
@@ -223,10 +220,8 @@ pub struct ProcFsStat {
     pub iowait_percent: f64,
 }
 
-lazy_static! {
-    static ref PROC_LAST_STAT: RwLock<(ProcFsStat, Instant, bool)> =
-        RwLock::new((ProcFsStat::default(), Instant::now(), true));
-}
+static PROC_LAST_STAT: LazyLock<RwLock<(ProcFsStat, Instant, bool)>> =
+    LazyLock::new(|| RwLock::new((ProcFsStat::default(), Instant::now(), true)));
 
 /// reads `/proc/stat`. For now only total host CPU usage is handled as the
 /// other metrics are not really interesting
-- 
2.39.2



_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [pbs-devel] [PATCH proxmox v2 08/12] network-api: remove lazy_static dependency
  2024-08-14  7:19 [pbs-devel] [PATCH proxmox v2 01/12] cargo: set msrv to 1.80 Maximiliano Sandoval
                   ` (5 preceding siblings ...)
  2024-08-14  7:19 ` [pbs-devel] [PATCH proxmox v2 07/12] sys: " Maximiliano Sandoval
@ 2024-08-14  7:19 ` Maximiliano Sandoval
  2024-08-14  7:19 ` [pbs-devel] [PATCH proxmox v2 09/12] auth-api: " Maximiliano Sandoval
                   ` (5 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: Maximiliano Sandoval @ 2024-08-14  7:19 UTC (permalink / raw)
  To: pbs-devel

Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
---
 proxmox-network-api/Cargo.toml           |  2 +-
 proxmox-network-api/src/api_types.rs     | 12 ++---
 proxmox-network-api/src/config/helper.rs | 35 ++++++-------
 proxmox-network-api/src/config/lexer.rs  | 67 +++++++++++-------------
 proxmox-network-api/src/config/mod.rs    | 17 +++---
 proxmox-network-api/src/config/parser.rs |  7 ++-
 6 files changed, 65 insertions(+), 75 deletions(-)

diff --git a/proxmox-network-api/Cargo.toml b/proxmox-network-api/Cargo.toml
index 8f81b3bd..11fd9cb8 100644
--- a/proxmox-network-api/Cargo.toml
+++ b/proxmox-network-api/Cargo.toml
@@ -7,11 +7,11 @@ license.workspace = true
 repository.workspace = true
 exclude.workspace = true
 description = "Network Management API implementation"
+rust-version.workspace = true
 
 [dependencies]
 anyhow.workspace = true
 const_format.workspace = true
-lazy_static.workspace = true
 regex.workspace = true
 
 serde = { workspace = true, features = ["derive"] }
diff --git a/proxmox-network-api/src/api_types.rs b/proxmox-network-api/src/api_types.rs
index ba1615e0..9f12b029 100644
--- a/proxmox-network-api/src/api_types.rs
+++ b/proxmox-network-api/src/api_types.rs
@@ -1,9 +1,9 @@
 use std::fmt;
+use std::sync::LazyLock;
 
 use anyhow::{bail, Error};
 use serde::{Deserialize, Serialize};
 
-use lazy_static::lazy_static;
 use regex::Regex;
 
 use proxmox_schema::api;
@@ -15,11 +15,11 @@ use proxmox_schema::ArraySchema;
 use proxmox_schema::Schema;
 use proxmox_schema::StringSchema;
 
-lazy_static! {
-    pub static ref PHYSICAL_NIC_REGEX: Regex = Regex::new(r"^(?:eth\d+|en[^:.]+|ib\d+)$").unwrap();
-    pub static ref VLAN_INTERFACE_REGEX: Regex =
-        Regex::new(r"^(?P<vlan_raw_device>\S+)\.(?P<vlan_id>\d+)|vlan(?P<vlan_id2>\d+)$").unwrap();
-}
+pub static PHYSICAL_NIC_REGEX: LazyLock<Regex> =
+    LazyLock::new(|| Regex::new(r"^(?:eth\d+|en[^:.]+|ib\d+)$").unwrap());
+pub static VLAN_INTERFACE_REGEX: LazyLock<Regex> = LazyLock::new(|| {
+    Regex::new(r"^(?P<vlan_raw_device>\S+)\.(?P<vlan_id>\d+)|vlan(?P<vlan_id2>\d+)$").unwrap()
+});
 
 pub const NETWORK_INTERFACE_FORMAT: ApiStringFormat = ApiStringFormat::Pattern(&SAFE_ID_REGEX);
 
diff --git a/proxmox-network-api/src/config/helper.rs b/proxmox-network-api/src/config/helper.rs
index 00464384..9cc23eef 100644
--- a/proxmox-network-api/src/config/helper.rs
+++ b/proxmox-network-api/src/config/helper.rs
@@ -2,10 +2,10 @@ use std::collections::HashMap;
 use std::os::unix::io::{AsRawFd, FromRawFd, OwnedFd};
 use std::path::Path;
 use std::process::Command;
+use std::sync::LazyLock;
 
 use anyhow::{bail, format_err, Error};
 use const_format::concatcp;
-use lazy_static::lazy_static;
 use nix::ioctl_read_bad;
 use nix::sys::socket::{socket, AddressFamily, SockFlag, SockType};
 use regex::Regex;
@@ -49,16 +49,14 @@ pub static IPV4_REVERSE_MASK: &[&str] = &[
     "255.255.255.255",
 ];
 
-lazy_static! {
-    pub static ref IPV4_MASK_HASH_LOCALNET: HashMap<&'static str, u8> = {
-        let mut map = HashMap::new();
-        #[allow(clippy::needless_range_loop)]
-        for i in 0..IPV4_REVERSE_MASK.len() {
-            map.insert(IPV4_REVERSE_MASK[i], i as u8);
-        }
-        map
-    };
-}
+pub static IPV4_MASK_HASH_LOCALNET: LazyLock<HashMap<&'static str, u8>> = LazyLock::new(|| {
+    let mut map = HashMap::new();
+    #[allow(clippy::needless_range_loop)]
+    for i in 0..IPV4_REVERSE_MASK.len() {
+        map.insert(IPV4_REVERSE_MASK[i], i as u8);
+    }
+    map
+});
 
 pub fn parse_cidr(cidr: &str) -> Result<(String, u8, bool), Error> {
     let (address, mask, is_v6) = parse_address_or_cidr(cidr)?;
@@ -93,12 +91,10 @@ pub(crate) fn check_netmask(mask: u8, is_v6: bool) -> Result<(), Error> {
 pub(crate) fn parse_address_or_cidr(cidr: &str) -> Result<(String, Option<u8>, bool), Error> {
     // NOTE: This is NOT the same regex as in proxmox-schema as this one has capture groups for
     // the addresses vs cidr portions!
-    lazy_static! {
-        pub static ref CIDR_V4_REGEX: Regex =
-            Regex::new(concatcp!(r"^(", IPV4RE_STR, r")(?:/(\d{1,2}))?$")).unwrap();
-        pub static ref CIDR_V6_REGEX: Regex =
-            Regex::new(concatcp!(r"^(", IPV6RE_STR, r")(?:/(\d{1,3}))?$")).unwrap();
-    }
+    pub static CIDR_V4_REGEX: LazyLock<Regex> =
+        LazyLock::new(|| Regex::new(concatcp!(r"^(", IPV4RE_STR, r")(?:/(\d{1,2}))?$")).unwrap());
+    pub static CIDR_V6_REGEX: LazyLock<Regex> =
+        LazyLock::new(|| Regex::new(concatcp!(r"^(", IPV6RE_STR, r")(?:/(\d{1,3}))?$")).unwrap());
 
     if let Some(caps) = CIDR_V4_REGEX.captures(cidr) {
         let address = &caps[1];
@@ -134,9 +130,8 @@ pub(crate) fn get_network_interfaces() -> Result<HashMap<String, bool>, Error> {
 
     ioctl_read_bad!(get_interface_flags, libc::SIOCGIFFLAGS, ifreq);
 
-    lazy_static! {
-        static ref IFACE_LINE_REGEX: Regex = Regex::new(r"^\s*([^:\s]+):").unwrap();
-    }
+    static IFACE_LINE_REGEX: LazyLock<Regex> =
+        LazyLock::new(|| Regex::new(r"^\s*([^:\s]+):").unwrap());
     let raw = std::fs::read_to_string(PROC_NET_DEV)
         .map_err(|err| format_err!("unable to read {} - {}", PROC_NET_DEV, err))?;
 
diff --git a/proxmox-network-api/src/config/lexer.rs b/proxmox-network-api/src/config/lexer.rs
index d0b7d8cd..6a20f009 100644
--- a/proxmox-network-api/src/config/lexer.rs
+++ b/proxmox-network-api/src/config/lexer.rs
@@ -1,8 +1,7 @@
 use std::collections::{HashMap, VecDeque};
 use std::io::BufRead;
 use std::iter::Iterator;
-
-use lazy_static::lazy_static;
+use std::sync::LazyLock;
 
 #[derive(Debug, Copy, Clone, Eq, PartialEq)]
 pub enum Token {
@@ -33,39 +32,37 @@ pub enum Token {
     EOF,
 }
 
-lazy_static! {
-    static ref KEYWORDS: HashMap<&'static str, Token> = {
-        let mut map = HashMap::new();
-        map.insert("address", Token::Address);
-        map.insert("auto", Token::Auto);
-        map.insert("dhcp", Token::DHCP);
-        map.insert("gateway", Token::Gateway);
-        map.insert("inet", Token::Inet);
-        map.insert("inet6", Token::Inet6);
-        map.insert("iface", Token::Iface);
-        map.insert("loopback", Token::Loopback);
-        map.insert("manual", Token::Manual);
-        map.insert("netmask", Token::Netmask);
-        map.insert("static", Token::Static);
-        map.insert("mtu", Token::MTU);
-        map.insert("bridge-ports", Token::BridgePorts);
-        map.insert("bridge_ports", Token::BridgePorts);
-        map.insert("bridge-vlan-aware", Token::BridgeVlanAware);
-        map.insert("bridge_vlan_aware", Token::BridgeVlanAware);
-        map.insert("vlan-id", Token::VlanId);
-        map.insert("vlan_id", Token::VlanId);
-        map.insert("vlan-raw-device", Token::VlanRawDevice);
-        map.insert("vlan_raw_device", Token::VlanRawDevice);
-        map.insert("bond-slaves", Token::BondSlaves);
-        map.insert("bond_slaves", Token::BondSlaves);
-        map.insert("bond-mode", Token::BondMode);
-        map.insert("bond-primary", Token::BondPrimary);
-        map.insert("bond_primary", Token::BondPrimary);
-        map.insert("bond_xmit_hash_policy", Token::BondXmitHashPolicy);
-        map.insert("bond-xmit-hash-policy", Token::BondXmitHashPolicy);
-        map
-    };
-}
+static KEYWORDS: LazyLock<HashMap<&'static str, Token>> = LazyLock::new(|| {
+    let mut map = HashMap::new();
+    map.insert("address", Token::Address);
+    map.insert("auto", Token::Auto);
+    map.insert("dhcp", Token::DHCP);
+    map.insert("gateway", Token::Gateway);
+    map.insert("inet", Token::Inet);
+    map.insert("inet6", Token::Inet6);
+    map.insert("iface", Token::Iface);
+    map.insert("loopback", Token::Loopback);
+    map.insert("manual", Token::Manual);
+    map.insert("netmask", Token::Netmask);
+    map.insert("static", Token::Static);
+    map.insert("mtu", Token::MTU);
+    map.insert("bridge-ports", Token::BridgePorts);
+    map.insert("bridge_ports", Token::BridgePorts);
+    map.insert("bridge-vlan-aware", Token::BridgeVlanAware);
+    map.insert("bridge_vlan_aware", Token::BridgeVlanAware);
+    map.insert("vlan-id", Token::VlanId);
+    map.insert("vlan_id", Token::VlanId);
+    map.insert("vlan-raw-device", Token::VlanRawDevice);
+    map.insert("vlan_raw_device", Token::VlanRawDevice);
+    map.insert("bond-slaves", Token::BondSlaves);
+    map.insert("bond_slaves", Token::BondSlaves);
+    map.insert("bond-mode", Token::BondMode);
+    map.insert("bond-primary", Token::BondPrimary);
+    map.insert("bond_primary", Token::BondPrimary);
+    map.insert("bond_xmit_hash_policy", Token::BondXmitHashPolicy);
+    map.insert("bond-xmit-hash-policy", Token::BondXmitHashPolicy);
+    map
+});
 
 pub struct Lexer<R> {
     input: R,
diff --git a/proxmox-network-api/src/config/mod.rs b/proxmox-network-api/src/config/mod.rs
index d9efeff9..054f53c8 100644
--- a/proxmox-network-api/src/config/mod.rs
+++ b/proxmox-network-api/src/config/mod.rs
@@ -6,9 +6,9 @@ pub use helper::{assert_ifupdown2_installed, network_reload, parse_cidr};
 
 use std::collections::{BTreeMap, HashMap, HashSet};
 use std::io::Write;
+use std::sync::LazyLock;
 
 use anyhow::{bail, format_err, Error};
-use lazy_static::lazy_static;
 use regex::Regex;
 use serde::de::{value, Deserialize, IntoDeserializer};
 
@@ -23,11 +23,11 @@ use parser::NetworkParser;
 use proxmox_config_digest::ConfigDigest;
 use proxmox_product_config::{open_api_lockfile, replace_system_config, ApiLockGuard};
 
-lazy_static! {
-    static ref PHYSICAL_NIC_REGEX: Regex = Regex::new(r"^(?:eth\d+|en[^:.]+|ib\d+)$").unwrap();
-    static ref VLAN_INTERFACE_REGEX: Regex =
-        Regex::new(r"^(?P<vlan_raw_device>\S+)\.(?P<vlan_id>\d+)|vlan(?P<vlan_id2>\d+)$").unwrap();
-}
+static PHYSICAL_NIC_REGEX: LazyLock<Regex> =
+    LazyLock::new(|| Regex::new(r"^(?:eth\d+|en[^:.]+|ib\d+)$").unwrap());
+static VLAN_INTERFACE_REGEX: LazyLock<Regex> = LazyLock::new(|| {
+    Regex::new(r"^(?P<vlan_raw_device>\S+)\.(?P<vlan_id>\d+)|vlan(?P<vlan_id2>\d+)$").unwrap()
+});
 
 pub fn is_physical_nic(iface: &str) -> bool {
     PHYSICAL_NIC_REGEX.is_match(iface)
@@ -409,9 +409,8 @@ impl NetworkConfig {
 
     /// Check if bridge ports exists
     fn check_bridge_ports(&self) -> Result<(), Error> {
-        lazy_static! {
-            static ref VLAN_INTERFACE_REGEX: Regex = Regex::new(r"^(\S+)\.(\d+)$").unwrap();
-        }
+        static VLAN_INTERFACE_REGEX: LazyLock<Regex> =
+            LazyLock::new(|| Regex::new(r"^(\S+)\.(\d+)$").unwrap());
 
         for (iface, interface) in self.interfaces.iter() {
             if let Some(ports) = &interface.bridge_ports {
diff --git a/proxmox-network-api/src/config/parser.rs b/proxmox-network-api/src/config/parser.rs
index 2d20b9e4..d05a67b0 100644
--- a/proxmox-network-api/src/config/parser.rs
+++ b/proxmox-network-api/src/config/parser.rs
@@ -3,9 +3,9 @@ use crate::VLAN_INTERFACE_REGEX;
 use std::collections::{HashMap, HashSet};
 use std::io::BufRead;
 use std::iter::{Iterator, Peekable};
+use std::sync::LazyLock;
 
 use anyhow::{bail, format_err, Error};
-use lazy_static::lazy_static;
 use regex::Regex;
 use serde::de::{value, Deserialize, IntoDeserializer};
 
@@ -551,9 +551,8 @@ impl<R: BufRead> NetworkParser<R> {
             }
         }
 
-        lazy_static! {
-            static ref INTERFACE_ALIAS_REGEX: Regex = Regex::new(r"^\S+:\d+$").unwrap();
-        }
+        static INTERFACE_ALIAS_REGEX: LazyLock<Regex> =
+            LazyLock::new(|| Regex::new(r"^\S+:\d+$").unwrap());
 
         if let Some(existing_interfaces) = existing_interfaces {
             for (iface, active) in existing_interfaces.iter() {
-- 
2.39.2



_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [pbs-devel] [PATCH proxmox v2 09/12] auth-api: remove lazy_static dependency
  2024-08-14  7:19 [pbs-devel] [PATCH proxmox v2 01/12] cargo: set msrv to 1.80 Maximiliano Sandoval
                   ` (6 preceding siblings ...)
  2024-08-14  7:19 ` [pbs-devel] [PATCH proxmox v2 08/12] network-api: " Maximiliano Sandoval
@ 2024-08-14  7:19 ` Maximiliano Sandoval
  2024-08-14  7:19 ` [pbs-devel] [PATCH proxmox v2 10/12] acme-api: " Maximiliano Sandoval
                   ` (4 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: Maximiliano Sandoval @ 2024-08-14  7:19 UTC (permalink / raw)
  To: pbs-devel

Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
---
 proxmox-auth-api/Cargo.toml   |  4 ++--
 proxmox-auth-api/src/types.rs | 11 ++++-------
 2 files changed, 6 insertions(+), 9 deletions(-)

diff --git a/proxmox-auth-api/Cargo.toml b/proxmox-auth-api/Cargo.toml
index 44db2bf8..62c173ad 100644
--- a/proxmox-auth-api/Cargo.toml
+++ b/proxmox-auth-api/Cargo.toml
@@ -7,6 +7,7 @@ license.workspace = true
 repository.workspace = true
 exclude.workspace = true
 description = "Tickets, API and Realm handling"
+rust-version.workspace = true
 
 [[example]]
 name = "passwd"
@@ -16,7 +17,6 @@ required-features = [ "pam-authenticator" ]
 anyhow.workspace = true
 const_format = { workspace = true, optional = true }
 base64 = { workspace = true, optional = true }
-lazy_static = { workspace = true, optional = true }
 libc = { workspace = true, optional = true }
 log = { workspace = true, optional = true }
 http = { workspace = true, optional = true }
@@ -40,7 +40,7 @@ proxmox-tfa = { workspace = true, optional = true, features = [ "api" ] }
 default = []
 
 ticket = [ "dep:base64", "dep:percent-encoding", "dep:openssl" ]
-api-types = [ "dep:const_format", "dep:lazy_static", "dep:regex", "dep:serde", "dep:serde_plain", "dep:proxmox-schema" ]
+api-types = [ "dep:const_format", "dep:regex", "dep:serde", "dep:serde_plain", "dep:proxmox-schema" ]
 api = [
     "api-types",
     "ticket",
diff --git a/proxmox-auth-api/src/types.rs b/proxmox-auth-api/src/types.rs
index 25e5feff..64c580a5 100644
--- a/proxmox-auth-api/src/types.rs
+++ b/proxmox-auth-api/src/types.rs
@@ -23,10 +23,10 @@
 
 use std::borrow::Borrow;
 use std::fmt;
+use std::sync::LazyLock;
 
 use anyhow::{bail, format_err, Error};
 use const_format::concatcp;
-use lazy_static::lazy_static;
 use serde::{Deserialize, Serialize};
 
 use proxmox_schema::{
@@ -454,9 +454,7 @@ impl Userid {
     }
 }
 
-lazy_static! {
-    pub static ref ROOT_USERID: Userid = Userid::new("root@pam".to_string(), 4);
-}
+pub static ROOT_USERID: LazyLock<Userid> = LazyLock::new(|| Userid::new("root@pam".to_string(), 4));
 
 impl From<Authid> for Userid {
     fn from(authid: Authid) -> Self {
@@ -587,9 +585,8 @@ impl Authid {
     }
 }
 
-lazy_static! {
-    pub static ref ROOT_AUTHID: Authid = Authid::from(Userid::new("root@pam".to_string(), 4));
-}
+pub static ROOT_AUTHID: LazyLock<Authid> =
+    LazyLock::new(|| Authid::from(Userid::new("root@pam".to_string(), 4)));
 
 impl From<Userid> for Authid {
     fn from(parts: Userid) -> Self {
-- 
2.39.2



_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [pbs-devel] [PATCH proxmox v2 10/12] acme-api: remove lazy_static dependency
  2024-08-14  7:19 [pbs-devel] [PATCH proxmox v2 01/12] cargo: set msrv to 1.80 Maximiliano Sandoval
                   ` (7 preceding siblings ...)
  2024-08-14  7:19 ` [pbs-devel] [PATCH proxmox v2 09/12] auth-api: " Maximiliano Sandoval
@ 2024-08-14  7:19 ` Maximiliano Sandoval
  2024-08-14  7:20 ` [pbs-devel] [PATCH proxmox v2 11/12] schema: " Maximiliano Sandoval
                   ` (3 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: Maximiliano Sandoval @ 2024-08-14  7:19 UTC (permalink / raw)
  To: pbs-devel

Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
---
 proxmox-acme-api/Cargo.toml               |  3 +--
 proxmox-acme-api/src/challenge_schemas.rs | 10 +++-------
 proxmox-acme-api/src/plugin_config.rs     |  7 +++----
 3 files changed, 7 insertions(+), 13 deletions(-)

diff --git a/proxmox-acme-api/Cargo.toml b/proxmox-acme-api/Cargo.toml
index 13ace495..d00d8ab7 100644
--- a/proxmox-acme-api/Cargo.toml
+++ b/proxmox-acme-api/Cargo.toml
@@ -7,6 +7,7 @@ license.workspace = true
 repository.workspace = true
 exclude.workspace = true
 description = "ACME API implementation"
+rust-version.workspace = true
 
 [dependencies]
 anyhow.workspace = true
@@ -15,7 +16,6 @@ futures = { workspace = true, optional = true }
 hex = { workspace = true, optional = true }
 http = { workspace = true, optional = true }
 hyper = { workspace = true, optional = true }
-lazy_static = { workspace = true, optional = true }
 log = { workspace = true, optional = true }
 nix = { workspace = true, optional = true }
 serde = { workspace = true, features = ["derive"] }
@@ -48,7 +48,6 @@ impl = [
     "dep:hex",
     "dep:http",
     "dep:hyper",
-    "dep:lazy_static",
     "dep:libc",
     "dep:log",
     "dep:nix",
diff --git a/proxmox-acme-api/src/challenge_schemas.rs b/proxmox-acme-api/src/challenge_schemas.rs
index 6e1217c8..40a6a6af 100644
--- a/proxmox-acme-api/src/challenge_schemas.rs
+++ b/proxmox-acme-api/src/challenge_schemas.rs
@@ -2,12 +2,10 @@
 //!
 //! Those schemas are provided by debian  package "libproxmox-acme-plugins".
 
-use std::sync::Arc;
-use std::sync::Mutex;
+use std::sync::{Arc, LazyLock, Mutex};
 use std::time::SystemTime;
 
 use anyhow::Error;
-use lazy_static::lazy_static;
 use serde::Serialize;
 use serde_json::Value;
 
@@ -51,10 +49,8 @@ fn load_dns_challenge_schema() -> Result<Vec<AcmeChallengeSchema>, Error> {
 }
 
 pub fn get_cached_challenge_schemas() -> Result<ChallengeSchemaWrapper, Error> {
-    lazy_static! {
-        static ref CACHE: Mutex<Option<(Arc<Vec<AcmeChallengeSchema>>, SystemTime)>> =
-            Mutex::new(None);
-    }
+    static CACHE: LazyLock<Mutex<Option<(Arc<Vec<AcmeChallengeSchema>>, SystemTime)>>> =
+        LazyLock::new(|| Mutex::new(None));
 
     // the actual loading code
     let mut last = CACHE.lock().unwrap();
diff --git a/proxmox-acme-api/src/plugin_config.rs b/proxmox-acme-api/src/plugin_config.rs
index d75bea59..b7ed7594 100644
--- a/proxmox-acme-api/src/plugin_config.rs
+++ b/proxmox-acme-api/src/plugin_config.rs
@@ -1,7 +1,8 @@
 //! ACME plugin configuration helpers (SectionConfig implementation)
 
+use std::sync::LazyLock;
+
 use anyhow::Error;
-use lazy_static::lazy_static;
 use serde_json::Value;
 
 use proxmox_config_digest::ConfigDigest;
@@ -11,9 +12,7 @@ use proxmox_section_config::{SectionConfig, SectionConfigData, SectionConfigPlug
 
 use crate::types::{DnsPlugin, StandalonePlugin, PLUGIN_ID_SCHEMA};
 
-lazy_static! {
-    static ref CONFIG: SectionConfig = init();
-}
+static CONFIG: LazyLock<SectionConfig> = LazyLock::new(init);
 
 impl DnsPlugin {
     pub fn decode_data(&self, output: &mut Vec<u8>) -> Result<(), Error> {
-- 
2.39.2



_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [pbs-devel] [PATCH proxmox v2 11/12] schema: remove lazy_static dependency
  2024-08-14  7:19 [pbs-devel] [PATCH proxmox v2 01/12] cargo: set msrv to 1.80 Maximiliano Sandoval
                   ` (8 preceding siblings ...)
  2024-08-14  7:19 ` [pbs-devel] [PATCH proxmox v2 10/12] acme-api: " Maximiliano Sandoval
@ 2024-08-14  7:20 ` Maximiliano Sandoval
  2024-08-14  7:20 ` [pbs-devel] [PATCH proxmox v2 12/12] cargo: remove lazy_static dependency on workspace Maximiliano Sandoval
                   ` (2 subsequent siblings)
  12 siblings, 0 replies; 14+ messages in thread
From: Maximiliano Sandoval @ 2024-08-14  7:20 UTC (permalink / raw)
  To: pbs-devel

Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
---
 proxmox-schema/Cargo.toml         | 2 +-
 proxmox-schema/src/const_regex.rs | 6 ++----
 proxmox-schema/src/lib.rs         | 8 --------
 3 files changed, 3 insertions(+), 13 deletions(-)

diff --git a/proxmox-schema/Cargo.toml b/proxmox-schema/Cargo.toml
index f3aea3e1..ac4839e9 100644
--- a/proxmox-schema/Cargo.toml
+++ b/proxmox-schema/Cargo.toml
@@ -6,13 +6,13 @@ edition.workspace = true
 license.workspace = true
 repository.workspace = true
 description = "proxmox api schema and validation"
+rust-version.workspace = true
 
 exclude.workspace = true
 
 [dependencies]
 anyhow.workspace = true
 const_format = { workspace = true, optional = true }
-lazy_static.workspace = true
 regex.workspace = true
 serde.workspace = true
 serde_json.workspace = true
diff --git a/proxmox-schema/src/const_regex.rs b/proxmox-schema/src/const_regex.rs
index 3a5c2dab..8ddc41ab 100644
--- a/proxmox-schema/src/const_regex.rs
+++ b/proxmox-schema/src/const_regex.rs
@@ -5,7 +5,7 @@ use std::fmt;
 /// The current Regex::new() function is not `const_fn`. Unless that
 /// works, we use `ConstRegexPattern` to represent static regular
 /// expressions. Please use the `const_regex` macro to generate
-/// instances of this type (uses lazy_static).
+/// instances of this type.
 pub struct ConstRegexPattern {
     /// This is only used for documentation and debugging
     pub regex_string: &'static str,
@@ -47,9 +47,7 @@ macro_rules! const_regex {
             $crate::ConstRegexPattern {
                 regex_string: $regex,
                 regex_obj: (|| ->   &'static ::regex::Regex {
-                    $crate::semver_exempt::lazy_static! {
-                        static ref SCHEMA: ::regex::Regex = ::regex::Regex::new($regex).unwrap();
-                    }
+                    static SCHEMA: std::sync::LazyLock<::regex::Regex> = std::sync::LazyLock::new(|| ::regex::Regex::new($regex).unwrap());
                     &SCHEMA
                 })
             };
diff --git a/proxmox-schema/src/lib.rs b/proxmox-schema/src/lib.rs
index c91b5fd6..161f53ce 100644
--- a/proxmox-schema/src/lib.rs
+++ b/proxmox-schema/src/lib.rs
@@ -29,13 +29,5 @@ pub use schema::*;
 
 pub mod upid;
 
-// const_regex uses lazy_static, but we otherwise don't need it, and don't want to force users to
-// have to write it out in their Cargo.toml as dependency, so we add a hidden re-export here which
-// is semver-exempt!
-#[doc(hidden)]
-pub mod semver_exempt {
-    pub use lazy_static::lazy_static;
-}
-
 #[cfg(feature = "api-types")]
 pub mod api_types;
-- 
2.39.2



_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [pbs-devel] [PATCH proxmox v2 12/12] cargo: remove lazy_static dependency on workspace
  2024-08-14  7:19 [pbs-devel] [PATCH proxmox v2 01/12] cargo: set msrv to 1.80 Maximiliano Sandoval
                   ` (9 preceding siblings ...)
  2024-08-14  7:20 ` [pbs-devel] [PATCH proxmox v2 11/12] schema: " Maximiliano Sandoval
@ 2024-08-14  7:20 ` Maximiliano Sandoval
  2024-08-14  8:51 ` [pbs-devel] [PATCH proxmox v2 01/12] cargo: set msrv to 1.80 Wolfgang Bumiller
  2024-08-14 10:04 ` [pbs-devel] applied-series: " Wolfgang Bumiller
  12 siblings, 0 replies; 14+ messages in thread
From: Maximiliano Sandoval @ 2024-08-14  7:20 UTC (permalink / raw)
  To: pbs-devel

Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
---
 Cargo.toml | 1 -
 1 file changed, 1 deletion(-)

diff --git a/Cargo.toml b/Cargo.toml
index 71f25b45..6360db1f 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -83,7 +83,6 @@ handlebars = "3.0"
 hex = "0.4"
 http = "0.2"
 hyper = "0.14.5"
-lazy_static = "1.4"
 ldap3 = { version = "0.11", default-features = false }
 lettre = "0.11.1"
 libc = "0.2.107"
-- 
2.39.2



_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [pbs-devel] [PATCH proxmox v2 01/12] cargo: set msrv to 1.80
  2024-08-14  7:19 [pbs-devel] [PATCH proxmox v2 01/12] cargo: set msrv to 1.80 Maximiliano Sandoval
                   ` (10 preceding siblings ...)
  2024-08-14  7:20 ` [pbs-devel] [PATCH proxmox v2 12/12] cargo: remove lazy_static dependency on workspace Maximiliano Sandoval
@ 2024-08-14  8:51 ` Wolfgang Bumiller
  2024-08-14 10:04 ` [pbs-devel] applied-series: " Wolfgang Bumiller
  12 siblings, 0 replies; 14+ messages in thread
From: Wolfgang Bumiller @ 2024-08-14  8:51 UTC (permalink / raw)
  To: Maximiliano Sandoval; +Cc: pbs-devel

so if all our code still builds with it I'm inclined to only do minor
bumps despite some of these technically being a public API break - but
LazyLock implements `Deref` and thus its API surface covers everything
I'd consider to be lazy_static's *intended* API surface. Relying on
technical details on how lazy_static works (an additional type for each
static...) is not an okay thing ;-)


_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [pbs-devel] applied-series: [PATCH proxmox v2 01/12] cargo: set msrv to 1.80
  2024-08-14  7:19 [pbs-devel] [PATCH proxmox v2 01/12] cargo: set msrv to 1.80 Maximiliano Sandoval
                   ` (11 preceding siblings ...)
  2024-08-14  8:51 ` [pbs-devel] [PATCH proxmox v2 01/12] cargo: set msrv to 1.80 Wolfgang Bumiller
@ 2024-08-14 10:04 ` Wolfgang Bumiller
  12 siblings, 0 replies; 14+ messages in thread
From: Wolfgang Bumiller @ 2024-08-14 10:04 UTC (permalink / raw)
  To: Maximiliano Sandoval; +Cc: pbs-devel

applied series, thanks


_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel


^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2024-08-14 10:05 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-08-14  7:19 [pbs-devel] [PATCH proxmox v2 01/12] cargo: set msrv to 1.80 Maximiliano Sandoval
2024-08-14  7:19 ` [pbs-devel] [PATCH proxmox v2 02/12] dns-api: remove lazy-static dependency Maximiliano Sandoval
2024-08-14  7:19 ` [pbs-devel] [PATCH proxmox v2 03/12] async: remove lazy_static dependency Maximiliano Sandoval
2024-08-14  7:19 ` [pbs-devel] [PATCH proxmox v2 04/12] subscription: " Maximiliano Sandoval
2024-08-14  7:19 ` [pbs-devel] [PATCH proxmox v2 05/12] rest-server: " Maximiliano Sandoval
2024-08-14  7:19 ` [pbs-devel] [PATCH proxmox v2 06/12] time: " Maximiliano Sandoval
2024-08-14  7:19 ` [pbs-devel] [PATCH proxmox v2 07/12] sys: " Maximiliano Sandoval
2024-08-14  7:19 ` [pbs-devel] [PATCH proxmox v2 08/12] network-api: " Maximiliano Sandoval
2024-08-14  7:19 ` [pbs-devel] [PATCH proxmox v2 09/12] auth-api: " Maximiliano Sandoval
2024-08-14  7:19 ` [pbs-devel] [PATCH proxmox v2 10/12] acme-api: " Maximiliano Sandoval
2024-08-14  7:20 ` [pbs-devel] [PATCH proxmox v2 11/12] schema: " Maximiliano Sandoval
2024-08-14  7:20 ` [pbs-devel] [PATCH proxmox v2 12/12] cargo: remove lazy_static dependency on workspace Maximiliano Sandoval
2024-08-14  8:51 ` [pbs-devel] [PATCH proxmox v2 01/12] cargo: set msrv to 1.80 Wolfgang Bumiller
2024-08-14 10:04 ` [pbs-devel] applied-series: " Wolfgang Bumiller

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal