support compatible compile with rust 1.60
(cherry picked from commit c712b53f7e1e6f4f189a459deff675e096440f1f)
This commit is contained in:
parent
995ae7bcc5
commit
22cb3fb0e7
420
backport-fix-compatible-with-rustc-1.60.patch
Normal file
420
backport-fix-compatible-with-rustc-1.60.patch
Normal file
@ -0,0 +1,420 @@
|
||||
From cd97d90314143141cecd694ca5f4a0edad35c257 Mon Sep 17 00:00:00 2001
|
||||
From: chenjiayi <chenjiayi22@huawei.com>
|
||||
Date: Thu, 18 May 2023 11:45:17 +0800
|
||||
Subject: [PATCH] fix: compatible with rustc 1.60
|
||||
|
||||
---
|
||||
coms/service/src/rentry.rs | 45 +++++++++++++++-----
|
||||
coms/socket/src/rentry.rs | 9 +++-
|
||||
core/bin/main.rs | 3 +-
|
||||
core/bin/unit/entry/config.rs | 9 +++-
|
||||
core/bin/unit/rentry.rs | 9 +++-
|
||||
core/lib/unit/kill.rs | 9 +++-
|
||||
exts/sctl/src/main.rs | 71 +++++++-------------------------
|
||||
libs/device/src/device_action.rs | 9 +++-
|
||||
8 files changed, 88 insertions(+), 76 deletions(-)
|
||||
|
||||
diff --git a/coms/service/src/rentry.rs b/coms/service/src/rentry.rs
|
||||
index 175828e..a68a3df 100644
|
||||
--- a/coms/service/src/rentry.rs
|
||||
+++ b/coms/service/src/rentry.rs
|
||||
@@ -39,10 +39,9 @@ struct ServiceReDb<K, V>(ReDb<K, V>);
|
||||
const RELI_DB_HSERVICE_CONF: &str = "svcconf";
|
||||
const RELI_DB_HSERVICE_MNG: &str = "svcmng";
|
||||
|
||||
-#[derive(PartialEq, Eq, Serialize, Deserialize, Debug, Clone, Copy, Default)]
|
||||
+#[derive(PartialEq, Eq, Serialize, Deserialize, Debug, Clone, Copy)]
|
||||
pub(super) enum ServiceType {
|
||||
#[serde(alias = "simple")]
|
||||
- #[default]
|
||||
Simple,
|
||||
#[serde(alias = "forking")]
|
||||
Forking,
|
||||
@@ -56,6 +55,12 @@ pub(super) enum ServiceType {
|
||||
TypeInvalid = -1,
|
||||
}
|
||||
|
||||
+impl Default for ServiceType {
|
||||
+ fn default() -> Self {
|
||||
+ Self::Simple
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
impl DeserializeWith for ServiceType {
|
||||
type Item = Self;
|
||||
fn deserialize_with<'de, D>(de: D) -> Result<Self, D::Error>
|
||||
@@ -82,10 +87,9 @@ pub(super) enum NotifyAccess {
|
||||
Main,
|
||||
}
|
||||
|
||||
-#[derive(PartialEq, Eq, Serialize, Deserialize, Debug, Clone, Copy, Default)]
|
||||
+#[derive(PartialEq, Eq, Serialize, Deserialize, Debug, Clone, Copy)]
|
||||
pub(super) enum ServiceRestart {
|
||||
#[serde(alias = "no")]
|
||||
- #[default]
|
||||
No,
|
||||
#[serde(alias = "on-success")]
|
||||
OnSuccess,
|
||||
@@ -101,6 +105,12 @@ pub(super) enum ServiceRestart {
|
||||
Always,
|
||||
}
|
||||
|
||||
+impl Default for ServiceRestart {
|
||||
+ fn default() -> Self {
|
||||
+ Self::No
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
|
||||
pub struct ExitStatusSet {
|
||||
status: Vec<u8>,
|
||||
@@ -163,14 +173,19 @@ impl DeserializeWith for ExitStatusSet {
|
||||
}
|
||||
}
|
||||
|
||||
-#[derive(Clone, Copy, Debug, Serialize, Deserialize, PartialEq, Eq, Default)]
|
||||
+#[derive(Clone, Copy, Debug, Serialize, Deserialize, PartialEq, Eq)]
|
||||
pub enum PreserveMode {
|
||||
- #[default]
|
||||
No,
|
||||
Yes,
|
||||
Restart,
|
||||
}
|
||||
|
||||
+impl Default for PreserveMode {
|
||||
+ fn default() -> Self {
|
||||
+ Self::No
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
impl DeserializeWith for PreserveMode {
|
||||
type Item = Self;
|
||||
|
||||
@@ -330,9 +345,8 @@ impl ServiceReConf {
|
||||
}
|
||||
}
|
||||
|
||||
-#[derive(PartialEq, Eq, Debug, Copy, Clone, Serialize, Deserialize, EnumDisplay, Default)]
|
||||
+#[derive(PartialEq, Eq, Debug, Copy, Clone, Serialize, Deserialize, EnumDisplay)]
|
||||
pub(super) enum ServiceState {
|
||||
- #[default]
|
||||
Dead,
|
||||
Condition,
|
||||
StartPre,
|
||||
@@ -354,7 +368,13 @@ pub(super) enum ServiceState {
|
||||
Cleaning,
|
||||
}
|
||||
|
||||
-#[derive(PartialEq, Eq, Debug, Copy, Clone, Serialize, Deserialize, Default)]
|
||||
+impl Default for ServiceState {
|
||||
+ fn default() -> Self {
|
||||
+ Self::Dead
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+#[derive(PartialEq, Eq, Debug, Copy, Clone, Serialize, Deserialize)]
|
||||
pub(super) enum ServiceResult {
|
||||
Success,
|
||||
FailureProtocol,
|
||||
@@ -366,10 +386,15 @@ pub(super) enum ServiceResult {
|
||||
FailureCoreDump,
|
||||
FailureTimeout,
|
||||
SkipCondition,
|
||||
- #[default]
|
||||
ResultInvalid,
|
||||
}
|
||||
|
||||
+impl Default for ServiceResult {
|
||||
+ fn default() -> Self {
|
||||
+ Self::ResultInvalid
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
#[derive(PartialEq, Eq, PartialOrd, Ord, Hash, Debug, Copy, Clone, Serialize, Deserialize)]
|
||||
pub(super) enum ServiceCommand {
|
||||
Condition,
|
||||
diff --git a/coms/socket/src/rentry.rs b/coms/socket/src/rentry.rs
|
||||
index 2409c84..44f5be3 100644
|
||||
--- a/coms/socket/src/rentry.rs
|
||||
+++ b/coms/socket/src/rentry.rs
|
||||
@@ -146,15 +146,20 @@ pub(super) enum SocketCommand {
|
||||
StopPost,
|
||||
}
|
||||
|
||||
-#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize, Deserialize, Default)]
|
||||
+#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize, Deserialize)]
|
||||
pub(super) enum PortType {
|
||||
- #[default]
|
||||
Socket,
|
||||
Fifo,
|
||||
Special,
|
||||
Invalid,
|
||||
}
|
||||
|
||||
+impl Default for PortType {
|
||||
+ fn default() -> Self {
|
||||
+ Self::Socket
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
#[derive(Clone, Debug, Serialize, Deserialize)]
|
||||
struct SocketReMng {
|
||||
state: SocketState,
|
||||
diff --git a/core/bin/main.rs b/core/bin/main.rs
|
||||
index 1949cae..26638d6 100644
|
||||
--- a/core/bin/main.rs
|
||||
+++ b/core/bin/main.rs
|
||||
@@ -186,7 +186,8 @@ fn do_reexecute(args: &Vec<String>, reload: bool) {
|
||||
// Remove '--deserialize' from the previous parameter first, as this may be a fault recovery start.
|
||||
for index in argv.iter().enumerate() {
|
||||
if index.1 == "--deserialize" {
|
||||
- argv.remove(index.0);
|
||||
+ let idx = index.0;
|
||||
+ argv.remove(idx);
|
||||
break;
|
||||
}
|
||||
}
|
||||
diff --git a/core/bin/unit/entry/config.rs b/core/bin/unit/entry/config.rs
|
||||
index 9e8cc62..e629c77 100644
|
||||
--- a/core/bin/unit/entry/config.rs
|
||||
+++ b/core/bin/unit/entry/config.rs
|
||||
@@ -31,10 +31,9 @@ pub(crate) struct UeConfig {
|
||||
}
|
||||
|
||||
#[allow(missing_docs)]
|
||||
-#[derive(Clone, Debug, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
|
||||
+#[derive(Clone, Debug, Copy, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub enum UnitEmergencyAction {
|
||||
#[serde(alias = "none")]
|
||||
- #[default]
|
||||
None,
|
||||
#[serde(alias = "reboot")]
|
||||
Reboot,
|
||||
@@ -54,6 +53,12 @@ pub enum UnitEmergencyAction {
|
||||
ExitForce,
|
||||
}
|
||||
|
||||
+impl Default for UnitEmergencyAction {
|
||||
+ fn default() -> Self {
|
||||
+ Self::None
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
impl DeserializeWith for UnitEmergencyAction {
|
||||
type Item = Self;
|
||||
fn deserialize_with<'de, D>(de: D) -> Result<Self, D::Error>
|
||||
diff --git a/core/bin/unit/rentry.rs b/core/bin/unit/rentry.rs
|
||||
index 739a323..5d154df 100644
|
||||
--- a/core/bin/unit/rentry.rs
|
||||
+++ b/core/bin/unit/rentry.rs
|
||||
@@ -68,12 +68,11 @@ impl UnitReLoad {
|
||||
}
|
||||
|
||||
/// jobMode why in UnitRentry? change the name?
|
||||
-#[derive(Clone, Debug, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
|
||||
+#[derive(Clone, Debug, Copy, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub(crate) enum JobMode {
|
||||
#[serde(alias = "fail")]
|
||||
Fail,
|
||||
#[serde(alias = "replace")]
|
||||
- #[default]
|
||||
Replace,
|
||||
#[serde(alias = "replace_irreversible")]
|
||||
ReplaceIrreversible,
|
||||
@@ -89,6 +88,12 @@ pub(crate) enum JobMode {
|
||||
Trigger,
|
||||
}
|
||||
|
||||
+impl Default for JobMode {
|
||||
+ fn default() -> Self {
|
||||
+ Self::Replace
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
impl DeserializeWith for JobMode {
|
||||
type Item = Self;
|
||||
fn deserialize_with<'de, D>(de: D) -> Result<Self, D::Error>
|
||||
diff --git a/core/lib/unit/kill.rs b/core/lib/unit/kill.rs
|
||||
index 893125e..4d66861 100644
|
||||
--- a/core/lib/unit/kill.rs
|
||||
+++ b/core/lib/unit/kill.rs
|
||||
@@ -42,10 +42,9 @@ impl KillOperation {
|
||||
}
|
||||
|
||||
/// the method to kill the process
|
||||
-#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
|
||||
+#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub enum KillMode {
|
||||
/// kill all the process in the cgroup of the unit
|
||||
- #[default]
|
||||
ControlGroup,
|
||||
/// only kill the main process
|
||||
Process,
|
||||
@@ -53,6 +52,12 @@ pub enum KillMode {
|
||||
Mixed,
|
||||
}
|
||||
|
||||
+impl Default for KillMode {
|
||||
+ fn default() -> Self {
|
||||
+ Self::ControlGroup
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
impl DeserializeWith for KillMode {
|
||||
type Item = Self;
|
||||
fn deserialize_with<'de, D>(de: D) -> Result<Self, D::Error>
|
||||
diff --git a/exts/sctl/src/main.rs b/exts/sctl/src/main.rs
|
||||
index 20f1934..f799629 100644
|
||||
--- a/exts/sctl/src/main.rs
|
||||
+++ b/exts/sctl/src/main.rs
|
||||
@@ -13,17 +13,14 @@
|
||||
//!
|
||||
|
||||
use clap::Parser;
|
||||
-use cmdproto::{
|
||||
- error::ERROR_CODE_MASK_PRINT_STDOUT,
|
||||
- proto::{
|
||||
- abi::{sys_comm, unit_comm, CommandRequest},
|
||||
- mngr_comm, unit_file, ProstClientStream,
|
||||
- },
|
||||
+use cmdproto::proto::{
|
||||
+ abi::{sys_comm, unit_comm, CommandRequest},
|
||||
+ mngr_comm, unit_file, ProstClientStream,
|
||||
};
|
||||
use std::io::Write;
|
||||
use std::{
|
||||
net::{SocketAddr, TcpStream},
|
||||
- process::{ExitCode, Termination},
|
||||
+ process::exit,
|
||||
};
|
||||
|
||||
/// parse program arguments
|
||||
@@ -187,50 +184,13 @@ fn generate_command_request(args: Args) -> Option<CommandRequest> {
|
||||
Some(command_request)
|
||||
}
|
||||
|
||||
-/// Result used in sctl
|
||||
-pub enum Result {
|
||||
- ///
|
||||
- OK,
|
||||
- ///
|
||||
- Failure(String, u32),
|
||||
-}
|
||||
-
|
||||
-/*
|
||||
- * Implementing Termination is important. Because the default implementation
|
||||
- * always adds a "Error: " prefix to our error message, this is ugly. And it
|
||||
- * always exits with 1 if we return Err, this is bad, we want sctl to return
|
||||
- * many other positive errors like systemctl has done.
|
||||
- */
|
||||
-
|
||||
-impl Termination for Result {
|
||||
- fn report(self) -> ExitCode {
|
||||
- match self {
|
||||
- Result::OK => ExitCode::SUCCESS,
|
||||
- Result::Failure(s, error_code) => {
|
||||
- if error_code & ERROR_CODE_MASK_PRINT_STDOUT != 0 {
|
||||
- let _ = writeln!(std::io::stdout(), "{s}");
|
||||
- } else {
|
||||
- let _ = writeln!(std::io::stderr(), "{s}");
|
||||
- }
|
||||
- let error_code = error_code ^ ERROR_CODE_MASK_PRINT_STDOUT;
|
||||
- if error_code > u8::MAX.into() {
|
||||
- return ExitCode::FAILURE;
|
||||
- }
|
||||
- ExitCode::from(error_code as u8)
|
||||
- }
|
||||
- }
|
||||
- }
|
||||
-}
|
||||
-
|
||||
-fn main() -> Result {
|
||||
+fn main() {
|
||||
let args = Args::parse();
|
||||
|
||||
let command_request = match generate_command_request(args) {
|
||||
None => {
|
||||
- return Result::Failure(
|
||||
- "This command is currently not supported".to_string(),
|
||||
- nix::Error::ENOTSUP as u32,
|
||||
- );
|
||||
+ eprintln!("This command is currently not supported");
|
||||
+ exit(nix::Error::ENOTSUP as i32);
|
||||
}
|
||||
Some(v) => v,
|
||||
};
|
||||
@@ -242,8 +202,8 @@ fn main() -> Result {
|
||||
|
||||
let stream = match TcpStream::connect(&addrs[..]) {
|
||||
Err(e) => {
|
||||
- let err_msg = format!("Failed to connect to sysmaster: {}", e);
|
||||
- return Result::Failure(err_msg, e.raw_os_error().unwrap() as u32);
|
||||
+ eprintln!("Failed to connect to sysmaster: {}", e);
|
||||
+ exit(e.raw_os_error().unwrap() as i32);
|
||||
}
|
||||
Ok(v) => v,
|
||||
};
|
||||
@@ -252,23 +212,24 @@ fn main() -> Result {
|
||||
|
||||
let data = match client.execute(command_request) {
|
||||
Err(e) => {
|
||||
- let err_msg = format!("Failed to execute the given command: {}", e);
|
||||
- // don't want to map all kinds of errors the message is clear, just return 1.
|
||||
- return Result::Failure(err_msg, 1);
|
||||
+ eprintln!("Failed to execute the given command: {}", e);
|
||||
+ exit(1);
|
||||
}
|
||||
Ok(v) => v,
|
||||
};
|
||||
|
||||
/* We should always print the error message if the returned error code is not 0. */
|
||||
if data.message.is_empty() {
|
||||
- return Result::OK;
|
||||
+ exit(0);
|
||||
}
|
||||
|
||||
if data.error_code == 0 {
|
||||
/* Don't care if we fail to write the error out. */
|
||||
let _ = writeln!(std::io::stdout(), "{}", data.message);
|
||||
- return Result::OK;
|
||||
+ exit(0);
|
||||
}
|
||||
|
||||
- Result::Failure(data.message, data.error_code)
|
||||
+ eprintln!("{}", data.message);
|
||||
+
|
||||
+ exit(data.error_code as i32);
|
||||
}
|
||||
diff --git a/libs/device/src/device_action.rs b/libs/device/src/device_action.rs
|
||||
index ac39820..d9c5289 100644
|
||||
--- a/libs/device/src/device_action.rs
|
||||
+++ b/libs/device/src/device_action.rs
|
||||
@@ -19,7 +19,7 @@ use nix::errno::Errno;
|
||||
|
||||
/// device action based on kobject from kernel
|
||||
#[allow(missing_docs)]
|
||||
-#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
|
||||
+#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||
pub enum DeviceAction {
|
||||
Add,
|
||||
Remove,
|
||||
@@ -29,10 +29,15 @@ pub enum DeviceAction {
|
||||
Offline,
|
||||
Bind,
|
||||
Unbind,
|
||||
- #[default]
|
||||
Invalid,
|
||||
}
|
||||
|
||||
+impl Default for DeviceAction {
|
||||
+ fn default() -> Self {
|
||||
+ Self::Invalid
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
impl FromStr for DeviceAction {
|
||||
type Err = crate::error::Error;
|
||||
|
||||
--
|
||||
2.33.0
|
||||
|
||||
@ -11,13 +11,15 @@
|
||||
|
||||
Name: sysmaster
|
||||
Version: 0.2.3
|
||||
Release: 1
|
||||
Release: 2
|
||||
Summary: redesign and reimplement process1.
|
||||
|
||||
License: Mulan PSL v2
|
||||
URL: https://gitee.com/openeuler/sysmaster
|
||||
Source0: %{name}-%{version}.tar.gz
|
||||
|
||||
Patch0001: backport-fix-compatible-with-rustc-1.60.patch
|
||||
|
||||
ExclusiveArch: x86_64 aarch64
|
||||
|
||||
BuildRequires: rust
|
||||
@ -71,6 +73,9 @@ install -Dm0640 -t %{sysmaster_install_target}/plugin %{conf_install_source}/plu
|
||||
/usr/lib/sysmaster/*
|
||||
|
||||
%changelog
|
||||
* Tue May 30 2023 shenyangyang<shenyangyang4@huawei.com> - 0.2.3-2
|
||||
- Support compatible compile with rust 1.60
|
||||
|
||||
* Sat May 6 2023 shenyangyang<shenyangyang4@huawei.com> - 0.2.3-1
|
||||
- update version to 0.2.3
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user