--- Begin Message ---
Package: mdevctl
Version: 1.1.0-2
Severity: serious
Note: I did my testing with version 1.2.0-1 from unstable, but i'm pretty sure
the
issues apply equally to the version in testing.
mdevctl FTVFS with the new 1.x upload of rust-uuid. There are three issues.
1. The Debian build- dependency is unsatisfiable, librust-uuid+rand-dev is no
longer
provided by the new version of rust-uuid, because upstream no longer has a
"rand"
feature.
2. The cargo dependency is unsatisfiable, because the style of dependency used
has
an implicit upper version limit per semver.
3. hyphenated has been renamed to "hyphenated" in uuid 1.x
The attatched debdiff fixes the abover issues and also fixes incomplete cleanup
by the clean target. I have tested that the package builds with the patch but
I have not tested it beyond that.
I may or may not NMU this later.
diff -Nru mdevctl-1.2.0/debian/changelog mdevctl-1.2.0/debian/changelog
--- mdevctl-1.2.0/debian/changelog 2022-08-09 11:24:25.000000000 +0000
+++ mdevctl-1.2.0/debian/changelog 2022-08-14 23:04:02.000000000 +0000
@@ -1,3 +1,11 @@
+mdevctl (1.2.0-1.1) UNRELEASED; urgency=medium
+
+ * Non-maintainer upload.
+ * Add patch for rust-uuid 1.x and update dependencies accordingly
+ * Fix clean target.
+
+ -- Peter Micheal Green <plugw...@debian.org> Sun, 14 Aug 2022 23:04:02 +0000
+
mdevctl (1.2.0-1) unstable; urgency=medium
[ Athos Ribeiro ]
diff -Nru mdevctl-1.2.0/debian/control mdevctl-1.2.0/debian/control
--- mdevctl-1.2.0/debian/control 2022-08-09 11:24:25.000000000 +0000
+++ mdevctl-1.2.0/debian/control 2022-08-14 23:04:02.000000000 +0000
@@ -14,7 +14,7 @@
librust-clap-complete-dev (>= 3.0.6),
librust-clap+strsim-dev,
librust-tempfile-dev (>= 3.1.0) <!nocheck>,
- librust-uuid+rand-dev (>= 0.8.1),
+ librust-uuid-1+v4-dev,
pkg-config,
python3-docutils,
systemd,
diff -Nru mdevctl-1.2.0/debian/patches/lower-versions-for-unstable.patch
mdevctl-1.2.0/debian/patches/lower-versions-for-unstable.patch
--- mdevctl-1.2.0/debian/patches/lower-versions-for-unstable.patch
2022-08-09 11:24:25.000000000 +0000
+++ mdevctl-1.2.0/debian/patches/lower-versions-for-unstable.patch
2022-08-14 23:04:02.000000000 +0000
@@ -5,8 +5,10 @@
X-Not-Forwarded-Reason: Currently frozen, but likely available after the
release
Author: Christian Ehrhardt <christian.ehrha...@canonical.com>
Last-Update: 2021-07-14
---- a/Cargo.toml
-+++ b/Cargo.toml
+Index: mdevctl-1.2.0/Cargo.toml
+===================================================================
+--- mdevctl-1.2.0.orig/Cargo.toml
++++ mdevctl-1.2.0/Cargo.toml
@@ -13,14 +13,14 @@ homepage = "https://github.com/mdevctl/m
[dependencies]
@@ -17,13 +19,11 @@
+env_logger = "0.9.0"
log = "0.4"
serde_json = {version = "1.0", features = ["preserve_order"]}
--uuid = {version = "0.8.2", features = ["v4"]}
-+uuid = {version = "0.8.1", features = ["v4"]}
+ uuid = {version = "0.8.2", features = ["v4"]}
tempfile = "3"
[build-dependencies]
-clap = { version = "3.1.18", features = ["derive"]}
+clap = { version = "3.1.7", features = ["derive"]}
clap_complete = "3.0.6"
--uuid = "0.8.2"
-+uuid = "0.8.1"
+ uuid = "0.8.2"
diff -Nru mdevctl-1.2.0/debian/patches/series
mdevctl-1.2.0/debian/patches/series
--- mdevctl-1.2.0/debian/patches/series 2022-08-09 11:24:25.000000000 +0000
+++ mdevctl-1.2.0/debian/patches/series 2022-08-14 23:04:02.000000000 +0000
@@ -1,2 +1,3 @@
lower-versions-for-unstable.patch
main-binary-already-installed.patch
+uuid-1.0.patch
diff -Nru mdevctl-1.2.0/debian/patches/uuid-1.0.patch
mdevctl-1.2.0/debian/patches/uuid-1.0.patch
--- mdevctl-1.2.0/debian/patches/uuid-1.0.patch 1970-01-01 00:00:00.000000000
+0000
+++ mdevctl-1.2.0/debian/patches/uuid-1.0.patch 2022-08-14 23:04:02.000000000
+0000
@@ -0,0 +1,233 @@
+Index: mdevctl-1.2.0/src/main.rs
+===================================================================
+--- mdevctl-1.2.0.orig/src/main.rs
++++ mdevctl-1.2.0/src/main.rs
+@@ -81,7 +81,7 @@ fn define_command_helper(
+ return Err(anyhow!(
+ "Cowardly refusing to overwrite existing config for {}/{}",
+ parent,
+- uuid.to_hyphenated().to_string()
++ uuid.hyphenated().to_string()
+ ));
+ }
+
+@@ -115,7 +115,7 @@ fn define_command_helper(
+ if dev.is_defined() {
+ return Err(anyhow!(
+ "Device {} on {} already defined",
+- dev.uuid.to_hyphenated().to_string(),
++ dev.uuid.hyphenated().to_string(),
+ dev.parent()?
+ ));
+ }
+@@ -149,7 +149,7 @@ fn define_command(
+ }
+ Callout::invoke(&mut dev, Action::Define, |dev| dev.define()).map(|_| {
+ if uuid.is_none() {
+- println!("{}", dev.uuid.to_hyphenated());
++ println!("{}", dev.uuid.hyphenated());
+ }
+ })
+ }
+@@ -247,7 +247,7 @@ fn start_command_helper(
+ Ordering::Greater => {
+ return Err(anyhow!(
+ "Multiple definitions found for device {}. Please
specify a parent.",
+- uuid.unwrap().to_hyphenated().to_string()
++ uuid.unwrap().hyphenated().to_string()
+ ));
+ }
+ Ordering::Equal => {
+@@ -260,7 +260,7 @@ fn start_command_helper(
+ if mdev_type.is_some() && mdev_type !=
d.mdev_type {
+ return Err(anyhow!(
+ "Device {} already exists on parent {}
with type {}",
+- d.uuid.to_hyphenated().to_string(),
++ d.uuid.hyphenated().to_string(),
+ d.parent().unwrap(),
+ d.mdev_type.as_ref().unwrap()
+ ));
+@@ -305,7 +305,7 @@ fn start_command(
+
+ Callout::invoke(&mut dev, Action::Start, |dev| dev.start()).map(|_| {
+ if uuid.is_none() {
+- println!("{}", dev.uuid.to_hyphenated());
++ println!("{}", dev.uuid.hyphenated());
+ }
+ })
+ }
+@@ -330,24 +330,24 @@ fn get_defined_device<'a>(
+ return match parent {
+ None => Err(anyhow!(
+ "Mediated device {} is not defined",
+- uuid.to_hyphenated().to_string()
++ uuid.hyphenated().to_string()
+ )),
+ Some(p) => Err(anyhow!(
+ "Mediated device {}/{} is not defined",
+ p,
+- uuid.to_hyphenated().to_string()
++ uuid.hyphenated().to_string()
+ )),
+ };
+ } else if devs.len() > 1 {
+ return match parent {
+ None => Err(anyhow!(
+ "Multiple definitions found for {}, specify a parent",
+- uuid.to_hyphenated().to_string()
++ uuid.hyphenated().to_string()
+ )),
+ Some(p) => Err(anyhow!(
+ "Multiple definitions found for {}/{}",
+ p,
+- uuid.to_hyphenated().to_string()
++ uuid.hyphenated().to_string()
+ )),
+ };
+ } else {
+@@ -356,7 +356,7 @@ fn get_defined_device<'a>(
+ return Err(anyhow!(
+ "Multiple definitions found for {}/{}",
+ parent,
+- uuid.to_hyphenated().to_string()
++ uuid.hyphenated().to_string()
+ ));
+ }
+ return Ok(children.get(0).unwrap().clone());
+Index: mdevctl-1.2.0/Cargo.toml
+===================================================================
+--- mdevctl-1.2.0.orig/Cargo.toml
++++ mdevctl-1.2.0/Cargo.toml
+@@ -17,10 +17,10 @@ clap = { version = "3.1.7", features = [
+ env_logger = "0.9.0"
+ log = "0.4"
+ serde_json = {version = "1.0", features = ["preserve_order"]}
+-uuid = {version = "0.8.2", features = ["v4"]}
++uuid = {version = "1.0.0", features = ["v4"]}
+ tempfile = "3"
+
+ [build-dependencies]
+ clap = { version = "3.1.7", features = ["derive"]}
+ clap_complete = "3.0.6"
+-uuid = "0.8.2"
++uuid = "1.0.0"
+Index: mdevctl-1.2.0/src/callouts.rs
+===================================================================
+--- mdevctl-1.2.0.orig/src/callouts.rs
++++ mdevctl-1.2.0/src/callouts.rs
+@@ -139,7 +139,7 @@ impl Callout {
+ if &st == "[{}]" {
+ debug!(
+ "Attribute field for {} is empty",
+- dev.uuid.to_hyphenated().to_string()
++ dev.uuid.hyphenated().to_string()
+ );
+ st = "[]".to_string();
+ }
+Index: mdevctl-1.2.0/src/mdev.rs
+===================================================================
+--- mdevctl-1.2.0.orig/src/mdev.rs
++++ mdevctl-1.2.0/src/mdev.rs
+@@ -43,7 +43,7 @@ impl<'a> MDev<'a> {
+
+ pub fn path(&self) -> PathBuf {
+ let mut p = self.env.mdev_base();
+- p.push(self.uuid.to_hyphenated().to_string());
++ p.push(self.uuid.hyphenated().to_string());
+ p
+ }
+
+@@ -52,7 +52,7 @@ impl<'a> MDev<'a> {
+ self.parent.as_ref().ok_or_else(|| {
+ anyhow!(
+ "Device {} is missing a parent",
+- self.uuid.to_hyphenated().to_string()
++ self.uuid.hyphenated().to_string()
+ )
+ })
+ }
+@@ -62,7 +62,7 @@ impl<'a> MDev<'a> {
+ self.mdev_type.as_ref().ok_or_else(|| {
+ anyhow!(
+ "Device {} is missing a mdev_type",
+- self.uuid.to_hyphenated().to_string()
++ self.uuid.hyphenated().to_string()
+ )
+ })
+ }
+@@ -71,7 +71,7 @@ impl<'a> MDev<'a> {
+ self.parent.as_ref().map(|x| {
+ let mut path = self.env.persist_base();
+ path.push(x);
+- path.push(self.uuid.to_hyphenated().to_string());
++ path.push(self.uuid.hyphenated().to_string());
+ path
+ })
+ }
+@@ -215,7 +215,7 @@ impl<'a> MDev<'a> {
+ }
+ }
+
+- let mut output = self.uuid.to_hyphenated().to_string();
++ let mut output = self.uuid.hyphenated().to_string();
+ output.push(' ');
+ output.push_str(self.parent()?);
+ output.push(' ');
+@@ -265,7 +265,7 @@ impl<'a> MDev<'a> {
+ .collect();
+ partial.insert("attrs".to_string(), jsonattrs.into());
+
+- let full = serde_json::json!({ self.uuid.to_hyphenated().to_string():
partial });
++ let full = serde_json::json!({ self.uuid.hyphenated().to_string():
partial });
+
+ match include_uuid {
+ true => Ok(full),
+@@ -360,7 +360,7 @@ impl<'a> MDev<'a> {
+ path.pop();
+ path.push("create");
+ debug!("Creating mediated device: {:?} -> {:?}", self.uuid, path);
+- match fs::write(path, self.uuid.to_hyphenated().to_string()) {
++ match fs::write(path, self.uuid.hyphenated().to_string()) {
+ Ok(_) => {
+ self.active = true;
+ Ok(())
+@@ -368,7 +368,7 @@ impl<'a> MDev<'a> {
+ Err(e) => Err(e).with_context(|| {
+ format!(
+ "Failed to create mdev {}, type {} on {}",
+- self.uuid.to_hyphenated(),
++ self.uuid.hyphenated(),
+ mdev_type,
+ parent
+ )
+@@ -409,7 +409,7 @@ impl<'a> MDev<'a> {
+ let p = self.persist_path().ok_or_else(|| {
+ anyhow!(
+ "Failed to undefine {}",
+- self.uuid.to_hyphenated().to_string()
++ self.uuid.hyphenated().to_string()
+ )
+ })?;
+
+Index: mdevctl-1.2.0/src/tests.rs
+===================================================================
+--- mdevctl-1.2.0.orig/src/tests.rs
++++ mdevctl-1.2.0/src/tests.rs
+@@ -210,7 +210,7 @@ fn test_load_json_helper(uuid: &str, par
+ let jsonstr = serde_json::to_string_pretty(&jsonval).unwrap();
+
+ test.compare_to_file(&format!("{}.out", uuid), &jsonstr);
+- assert_eq!(uuid, dev.uuid.to_hyphenated().to_string());
++ assert_eq!(uuid, dev.uuid.hyphenated().to_string());
+ assert_eq!(Some(parent.to_string()), dev.parent);
+ }
+ }
+@@ -846,7 +846,7 @@ fn test_start_helper<F>(
+ assert_eq!(uuid.unwrap(), dev.uuid);
+ }
+ let contents = fs::read_to_string(create_path).expect("Unable to read
'create' file");
+- assert_eq!(dev.uuid.to_hyphenated().to_string(), contents);
++ assert_eq!(dev.uuid.hyphenated().to_string(), contents);
+ }
+ }
+
diff -Nru mdevctl-1.2.0/debian/rules mdevctl-1.2.0/debian/rules
--- mdevctl-1.2.0/debian/rules 2022-08-09 11:24:25.000000000 +0000
+++ mdevctl-1.2.0/debian/rules 2022-08-14 23:04:02.000000000 +0000
@@ -33,3 +33,7 @@
dh_auto_test $@
endif
endif
+
+execute_after_dh_auto_clean:
+ rm -f mdevctl.spec Makefile
+
--- End Message ---