On 21/03/2026 17:30, Jonas Smedegaard wrote:
Please demonstrate that the patch works, but uploading as an NMU.
I have done this, and the NMU is now built succesfully on
all release architectures.

One small additional change was needed compared to
previous debdiffs, the rust-reqwest package was updated
to 0.13 and a rust-reqwest-0.12 package was introduced,
I adjusted the debian build-dependency in the nanopub
package to accomodate this.


diff -Nru nanopub-0.2.0+ds/debian/changelog nanopub-0.2.0+ds/debian/changelog
--- nanopub-0.2.0+ds/debian/changelog   2026-02-25 11:55:33.000000000 +0000
+++ nanopub-0.2.0+ds/debian/changelog   2026-03-11 08:36:24.000000000 +0000
@@ -1,3 +1,14 @@
+nanopub (0.2.0+ds-1.1) unstable; urgency=medium
+
+  * Non-maintainer upload.
+  * Add patch based on upstream commit to update getrandom and eliminate
+    dependency on rand.
+  * Adjust debian build-dependencies for rand related changes.
+  * Tighten debian build-dependency for reqwest crate to take account
+    of introduction of semver-suffix package.
+
+ -- Peter Michael Green <[email protected]>  Wed, 11 Mar 2026 08:36:24 +0000
+
 nanopub (0.2.0+ds-1) unstable; urgency=medium
 
   [ upstream ]
diff -Nru nanopub-0.2.0+ds/debian/control nanopub-0.2.0+ds/debian/control
--- nanopub-0.2.0+ds/debian/control     2026-02-25 11:55:33.000000000 +0000
+++ nanopub-0.2.0+ds/debian/control     2026-03-11 08:36:24.000000000 +0000
@@ -11,15 +11,14 @@
  librust-clap-dev,
  librust-clap-complete-dev,
  librust-futures-dev,
- librust-getrandom-dev,
+ librust-getrandom-0.4-dev,
  librust-openssl-probe-dev,
  librust-oxjsonld-dev,
  librust-oxrdf-dev,
  librust-oxrdfio-dev,
  librust-oxttl-dev,
- librust-rand-core-dev,
  librust-regex-dev,
- librust-reqwest-dev,
+ librust-reqwest-0.12-dev,
  librust-rsa-dev,
  librust-serde-dev,
  librust-tokio-dev,
diff -Nru nanopub-0.2.0+ds/debian/patches/0001_getrandom_rand.patch 
nanopub-0.2.0+ds/debian/patches/0001_getrandom_rand.patch
--- nanopub-0.2.0+ds/debian/patches/0001_getrandom_rand.patch   1970-01-01 
00:00:00.000000000 +0000
+++ nanopub-0.2.0+ds/debian/patches/0001_getrandom_rand.patch   2026-03-11 
08:36:24.000000000 +0000
@@ -0,0 +1,100 @@
+Description: update getrandom to 0.4
+ This patch adopts portions of upstream commit 
372445a710784c8d7d3261b019f4de41f6b3e5b7
+ and futher bumps getrandom to version 0.4.
+Author: Peter Michael Green <[email protected]>
+Forwarded: not-needed
+Last-Update: 2026-03-11
+
+Index: nanopub-0.2.0+ds/lib/Cargo.toml
+===================================================================
+--- nanopub-0.2.0+ds.orig/lib/Cargo.toml
++++ nanopub-0.2.0+ds/lib/Cargo.toml
+@@ -27,12 +27,15 @@ regex = "1.10"
+ serde = { version = "1.0", features = ["derive"] }
+ chrono = "0.4.35"
+ reqwest = { version = "0.12", default-features = false }
+-rand = { version = "0.8", features = ["std", "std_rng"], default-features = 
false }
+-getrandom = { version = "0.2", features = ["js"] }
++getrandom = { version = "0.4", default-features = false }
++
++# TODO: use rsa 0.10 when out
++# rsa = { version = "0.10.0-rc.15", default-features = false, features = 
["encoding", "sha2" ] }
++# rand = { version = "0.10", features = ["std", "std_rng", "sys_rng"], 
default-features = false }
++# getrandom = { version = "0.4", features = ["wasm_js"] }
+ # openssl-probe = "0.1"
+ 
+ # reqwest = { version = "0.11", features = ["rustls-tls"], default-features = 
false }
+-# rand = { version = "0.8", features = ["std_rng"], default-features = false }
+ # log = { version = "0.0.2", features = ["std"] }
+ # futures = "0.3"
+ # sophia = { version = "0.8.0-alpha.3", git = 
"https://github.com/pchampin/sophia_rs.git";, rev = "ec13628", features = 
["jsonld"] }
+Index: nanopub-0.2.0+ds/lib/src/profile.rs
+===================================================================
+--- nanopub-0.2.0+ds.orig/lib/src/profile.rs
++++ nanopub-0.2.0+ds/lib/src/profile.rs
+@@ -1,6 +1,4 @@
+ use base64::{engine, Engine as _};
+-use rand::rngs::StdRng;
+-use rand::SeedableRng;
+ use rsa::pkcs1::{DecodeRsaPrivateKey, DecodeRsaPublicKey};
+ use rsa::pkcs8::{DecodePrivateKey, DecodePublicKey, EncodePrivateKey, 
EncodePublicKey};
+ use rsa::{RsaPrivateKey, RsaPublicKey};
+@@ -238,9 +236,36 @@ pub fn get_pubkey_str(pubkey: &RsaPublic
+ 
+ /// Generate private/public key pair
+ pub fn gen_keys() -> Result<(String, String), NpError> {
+-    let mut rng = StdRng::from_entropy();
+-    let bits = 2048;
+-    let priv_key = RsaPrivateKey::new(&mut rng, bits).expect("failed to 
generate a key");
++    // rsa 0.9 requires rand_core 0.6 traits; rand 0.9 uses rand_core 0.9, so 
we can't use rand directly
++    // Bridge: implement rand_core 0.6's RngCore+CryptoRng on a wrapper 
backed by getrandom::fill.
++    struct GetrandomRng;
++    impl rsa::rand_core::RngCore for GetrandomRng {
++        fn next_u32(&mut self) -> u32 {
++            let mut b = [0u8; 4];
++            getrandom::fill(&mut b).expect("getrandom failed");
++            u32::from_le_bytes(b)
++        }
++        fn next_u64(&mut self) -> u64 {
++            let mut b = [0u8; 8];
++            getrandom::fill(&mut b).expect("getrandom failed");
++            u64::from_le_bytes(b)
++        }
++        fn fill_bytes(&mut self, dest: &mut [u8]) {
++            getrandom::fill(dest).expect("getrandom failed");
++        }
++        fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), 
rsa::rand_core::Error> {
++            getrandom::fill(dest).expect("getrandom failed");
++            Ok(())
++        }
++    }
++    impl rsa::rand_core::CryptoRng for GetrandomRng {}
++    // TODO: waiting for rsa v0.10
++    // use rand::rngs::{StdRng, SysRng};
++    // use rand::SeedableRng;
++    // let mut rng = StdRng::try_from_rng(&mut SysRng).expect("failed to seed 
RNG");
++    // let priv_key = RsaPrivateKey::new(&mut rng, 2048).expect("failed to 
generate a key");
++
++    let priv_key = RsaPrivateKey::new(&mut GetrandomRng, 2048).expect("failed 
to generate a key");
+     let pub_key = RsaPublicKey::from(&priv_key);
+     Ok((
+         normalize_key(&priv_key.to_pkcs8_pem(rsa::pkcs8::LineEnding::LF)?)?,
+Index: nanopub-0.2.0+ds/lib/src/utils.rs
+===================================================================
+--- nanopub-0.2.0+ds.orig/lib/src/utils.rs
++++ nanopub-0.2.0+ds/lib/src/utils.rs
+@@ -1,4 +1,4 @@
+-use getrandom::getrandom;
++use getrandom::fill;
+ use oxjsonld::JsonLdParser;
+ use oxrdf::{
+     Dataset, GraphNameRef, NamedNode, NamedNodeRef, NamedOrBlankNodeRef, 
QuadRef, TermRef,
+@@ -85,7 +85,7 @@ pub fn get_np_server(random: bool) -> &'
+     }
+     // Generate a random number
+     let mut buf = [0u8; 4];
+-    getrandom(&mut buf).expect("Failed to generate random number");
++    fill(&mut buf).expect("Failed to generate random number");
+     let num = u32::from_ne_bytes(buf);
+     let index = num as usize % LIST_SERVERS.len();
+     LIST_SERVERS[index]
diff -Nru nanopub-0.2.0+ds/debian/patches/1001_wasm-pack.patch 
nanopub-0.2.0+ds/debian/patches/1001_wasm-pack.patch
--- nanopub-0.2.0+ds/debian/patches/1001_wasm-pack.patch        2026-02-25 
11:55:21.000000000 +0000
+++ nanopub-0.2.0+ds/debian/patches/1001_wasm-pack.patch        2026-03-11 
08:35:47.000000000 +0000
@@ -6,9 +6,11 @@
 Last-Update: 2026-02-25
 ---
 This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---- a/lib/Cargo.toml
-+++ b/lib/Cargo.toml
-@@ -38,7 +38,6 @@
+Index: nanopub-0.2.0+ds/lib/Cargo.toml
+===================================================================
+--- nanopub-0.2.0+ds.orig/lib/Cargo.toml
++++ nanopub-0.2.0+ds/lib/Cargo.toml
+@@ -42,7 +42,6 @@ getrandom = { version = "0.4", default-f
  # sophia = { version = "0.8.0-alpha.3", git = 
"https://github.com/pchampin/sophia_rs.git";, rev = "ec13628", features = 
["jsonld"] }
  
  [dev-dependencies]
diff -Nru nanopub-0.2.0+ds/debian/patches/2003_no_wasm.patch 
nanopub-0.2.0+ds/debian/patches/2003_no_wasm.patch
--- nanopub-0.2.0+ds/debian/patches/2003_no_wasm.patch  2026-02-25 
11:55:21.000000000 +0000
+++ nanopub-0.2.0+ds/debian/patches/2003_no_wasm.patch  2026-03-11 
08:26:43.000000000 +0000
@@ -15,14 +15,3 @@
  ]
  
  [workspace.package]
---- a/lib/Cargo.toml
-+++ b/lib/Cargo.toml
-@@ -28,7 +28,7 @@
- chrono = "0.4.35"
- reqwest = { version = "0.12", default-features = false }
- rand = { version = "0.8", features = ["std", "std_rng"], default-features = 
false }
--getrandom = { version = "0.2", features = ["js"] }
-+getrandom = { version = "0.2" }
- # openssl-probe = "0.1"
- 
- # reqwest = { version = "0.11", features = ["rustls-tls"], default-features = 
false }
diff -Nru nanopub-0.2.0+ds/debian/patches/series 
nanopub-0.2.0+ds/debian/patches/series
--- nanopub-0.2.0+ds/debian/patches/series      2026-02-25 11:55:21.000000000 
+0000
+++ nanopub-0.2.0+ds/debian/patches/series      2026-03-11 08:36:24.000000000 
+0000
@@ -1,3 +1,4 @@
+0001_getrandom_rand.patch
 1001_wasm-pack.patch
 2001_privacy.patch
 2003_no_net.patch

Reply via email to