From 4cc6c10f749d0c5809cd4b99ade64a50c06fc8da Mon Sep 17 00:00:00 2001 From: Niel Duysters Date: Mon, 26 Oct 2026 01:31:29 +0100 Subject: [PATCH 1/7] Add Arti for desktop build on x86_64 --- config/desktop.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/desktop.toml b/config/desktop.toml index 4f3eb6b8a..5d2dae7cf 100644 --- a/config/desktop.toml +++ b/config/desktop.toml @@ -9,6 +9,7 @@ filesystem_size = 650 # Package settings [packages] +arti = "source" cosmic-edit = {} cosmic-files = {} cosmic-icons = {} From 75599fe51fcf01c1f0af6ccafa4f7190d11332bd Mon Sep 17 00:00:00 2001 From: Niel Duysters Date: Mon, 26 Oct 2026 01:46:50 +0100 Subject: [PATCH 2/7] Configure cargoflags for Arti recipe - Disabled Arti 'harden' feature which depends on "secmen-prop" using Rustix resource-limit APIs unavailable on Redox. - Add static-sqlite to bundle sqlite into Arti so we don't have to use Redox' sqlite package which is currently in WIP and non-functional. --- recipes/wip/net/onion-routing/arti/recipe.toml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/recipes/wip/net/onion-routing/arti/recipe.toml b/recipes/wip/net/onion-routing/arti/recipe.toml index 4135fd70d..62b1cc079 100644 --- a/recipes/wip/net/onion-routing/arti/recipe.toml +++ b/recipes/wip/net/onion-routing/arti/recipe.toml @@ -1,9 +1,12 @@ -#TODO fix secmem-proc crate [source] git = "https://gitlab.torproject.org/tpo/core/arti" shallow_clone = true [build] template = "cargo" +cargoflags = [ + "--no-default-features", + "--features=default-runtime,dns-proxy,compression,bridge-client,pt-client,onion-service-client,vanguards,flowctl-cc,static-sqlite"," +] cargopackages = ["arti"] dependencies = [ "openssl3", From 6412e0cd58158556d6588084584833e83e8308d0 Mon Sep 17 00:00:00 2001 From: Niel Duysters Date: Mon, 26 Oct 2026 01:48:08 +0100 Subject: [PATCH 3/7] Add TODO to switch to Redox sqlite3-package once functional Currently we bundle sqlite into Arti since Redox' sqlite3 package is non-functional today. --- recipes/wip/net/onion-routing/arti/recipe.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/wip/net/onion-routing/arti/recipe.toml b/recipes/wip/net/onion-routing/arti/recipe.toml index 62b1cc079..375088c65 100644 --- a/recipes/wip/net/onion-routing/arti/recipe.toml +++ b/recipes/wip/net/onion-routing/arti/recipe.toml @@ -3,6 +3,7 @@ git = "https://gitlab.torproject.org/tpo/core/arti" shallow_clone = true [build] template = "cargo" +# TODO: Remove `static-sqlite` feature once Redox' sqlite3-package is fully functional. cargoflags = [ "--no-default-features", "--features=default-runtime,dns-proxy,compression,bridge-client,pt-client,onion-service-client,vanguards,flowctl-cc,static-sqlite"," From a30fc94a00aa6ed97a02aaf5ab4edbb74865c87a Mon Sep 17 00:00:00 2001 From: Niel Duysters Date: Mon, 26 Oct 2026 01:56:48 +0100 Subject: [PATCH 4/7] Add redox.patch for Arti to avoid "try_lock() not supported" Arti creates a state.lock and calls `File::try_lock()`, but Redox returns "try_lock() not supported". This patch makes sure we use Redox libc's `flock`. This is using the same workaround Arti already had for Android. --- .../wip/net/onion-routing/arti/recipe.toml | 1 + .../wip/net/onion-routing/arti/redox.patch | 53 +++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 recipes/wip/net/onion-routing/arti/redox.patch diff --git a/recipes/wip/net/onion-routing/arti/recipe.toml b/recipes/wip/net/onion-routing/arti/recipe.toml index 375088c65..803062cb1 100644 --- a/recipes/wip/net/onion-routing/arti/recipe.toml +++ b/recipes/wip/net/onion-routing/arti/recipe.toml @@ -1,6 +1,7 @@ [source] git = "https://gitlab.torproject.org/tpo/core/arti" shallow_clone = true +patches = ["redox.patch"] [build] template = "cargo" # TODO: Remove `static-sqlite` feature once Redox' sqlite3-package is fully functional. diff --git a/recipes/wip/net/onion-routing/arti/redox.patch b/recipes/wip/net/onion-routing/arti/redox.patch new file mode 100644 index 000000000..579b62d4f --- /dev/null +++ b/recipes/wip/net/onion-routing/arti/redox.patch @@ -0,0 +1,53 @@ +diff --git a/crates/fslock-guard/Cargo.toml b/crates/fslock-guard/Cargo.toml +index 9cbffb2c..2fd42d35 100644 +--- a/crates/fslock-guard/Cargo.toml ++++ b/crates/fslock-guard/Cargo.toml +@@ -21,7 +21,7 @@ full = [] + [dependencies] + thiserror = "2" + +-[target.'cfg(target_os = "android")'.dependencies] ++[target.'cfg(any(target_os = "android", target_os = "redox"))'.dependencies] + libc = "0.2" + + [target.'cfg(unix)'.dev-dependencies] +diff --git a/crates/fslock-guard/src/lib.rs b/crates/fslock-guard/src/lib.rs +index b5e938bb..7c32168c 100644 +--- a/crates/fslock-guard/src/lib.rs ++++ b/crates/fslock-guard/src/lib.rs +@@ -177,7 +177,7 @@ impl Drop for LockFileGuard { + /// Try to lock `f`, blocking if need be. + /// + /// On non-android, this just calls [`fs::File::lock`]. +-#[cfg(not(target_os = "android"))] ++#[cfg(not(any(target_os = "android", target_os = "redox")))] + fn do_lock(f: &fs::File) -> std::io::Result<()> { + f.lock() + } +@@ -185,7 +185,7 @@ fn do_lock(f: &fs::File) -> std::io::Result<()> { + /// Try to lock `f`, without blocking. + /// + /// On non-android, this just calls [`fs::File::try_lock`]. +-#[cfg(not(target_os = "android"))] ++#[cfg(not(any(target_os = "android", target_os = "redox")))] + fn do_try_lock(f: &fs::File) -> Result<(), std::fs::TryLockError> { + f.try_lock() + } +@@ -204,7 +204,7 @@ fn do_try_lock(f: &fs::File) -> Result<(), std::fs::TryLockError> { + // TODO MSRV ????: we can remove this once Rust supports file locking on Android + // at our MSRV. As of May 2026, https://github.com/rust-lang/rust/pull/157038/ + // seems like the likeliest MR for that, but it has not been merged. +-#[cfg(target_os = "android")] ++#[cfg(any(target_os = "android", target_os = "redox"))] + fn do_lock(f: &fs::File) -> std::io::Result<()> { + use std::os::fd::AsRawFd; + +@@ -231,7 +231,7 @@ fn do_lock(f: &fs::File) -> std::io::Result<()> { + /// on those filesystems. + // + // TODO MSRV ????: See 'TODO MSRV' on do_lock above. +-#[cfg(target_os = "android")] ++#[cfg(any(target_os = "android", target_os = "redox"))] + fn do_try_lock(f: &fs::File) -> Result<(), std::fs::TryLockError> { + use std::os::fd::AsRawFd; + From c57ae486cf9751b006e7b1077e8de61fe3d256d0 Mon Sep 17 00:00:00 2001 From: Niel Duysters Date: Mon, 26 Oct 2026 01:57:22 +0100 Subject: [PATCH 5/7] Fix typo in recipe.toml Trailing quotes. --- recipes/wip/net/onion-routing/arti/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/net/onion-routing/arti/recipe.toml b/recipes/wip/net/onion-routing/arti/recipe.toml index 803062cb1..f6da6e633 100644 --- a/recipes/wip/net/onion-routing/arti/recipe.toml +++ b/recipes/wip/net/onion-routing/arti/recipe.toml @@ -7,7 +7,7 @@ template = "cargo" # TODO: Remove `static-sqlite` feature once Redox' sqlite3-package is fully functional. cargoflags = [ "--no-default-features", - "--features=default-runtime,dns-proxy,compression,bridge-client,pt-client,onion-service-client,vanguards,flowctl-cc,static-sqlite"," + "--features=default-runtime,dns-proxy,compression,bridge-client,pt-client,onion-service-client,vanguards,flowctl-cc,static-sqlite", ] cargopackages = ["arti"] dependencies = [ From b5b7f271e050077690bb6b117a38975b86ca8e8a Mon Sep 17 00:00:00 2001 From: Niel Duysters Date: Mon, 26 Oct 2026 02:00:12 +0100 Subject: [PATCH 6/7] Fix whitespaces in arti/redox.patch --- .../wip/net/onion-routing/arti/redox.patch | 21 +++---------------- 1 file changed, 3 insertions(+), 18 deletions(-) diff --git a/recipes/wip/net/onion-routing/arti/redox.patch b/recipes/wip/net/onion-routing/arti/redox.patch index 579b62d4f..0ad0ca567 100644 --- a/recipes/wip/net/onion-routing/arti/redox.patch +++ b/recipes/wip/net/onion-routing/arti/redox.patch @@ -2,15 +2,10 @@ diff --git a/crates/fslock-guard/Cargo.toml b/crates/fslock-guard/Cargo.toml index 9cbffb2c..2fd42d35 100644 --- a/crates/fslock-guard/Cargo.toml +++ b/crates/fslock-guard/Cargo.toml -@@ -21,7 +21,7 @@ full = [] - [dependencies] - thiserror = "2" - +@@ -24,2 +24,2 @@ -[target.'cfg(target_os = "android")'.dependencies] +[target.'cfg(any(target_os = "android", target_os = "redox"))'.dependencies] libc = "0.2" - - [target.'cfg(unix)'.dev-dependencies] diff --git a/crates/fslock-guard/src/lib.rs b/crates/fslock-guard/src/lib.rs index b5e938bb..7c32168c 100644 --- a/crates/fslock-guard/src/lib.rs @@ -33,21 +28,11 @@ index b5e938bb..7c32168c 100644 fn do_try_lock(f: &fs::File) -> Result<(), std::fs::TryLockError> { f.try_lock() } -@@ -204,7 +204,7 @@ fn do_try_lock(f: &fs::File) -> Result<(), std::fs::TryLockError> { - // TODO MSRV ????: we can remove this once Rust supports file locking on Android - // at our MSRV. As of May 2026, https://github.com/rust-lang/rust/pull/157038/ - // seems like the likeliest MR for that, but it has not been merged. +@@ -207,2 +207,2 @@ -#[cfg(target_os = "android")] +#[cfg(any(target_os = "android", target_os = "redox"))] fn do_lock(f: &fs::File) -> std::io::Result<()> { - use std::os::fd::AsRawFd; - -@@ -231,7 +231,7 @@ fn do_lock(f: &fs::File) -> std::io::Result<()> { - /// on those filesystems. - // - // TODO MSRV ????: See 'TODO MSRV' on do_lock above. +@@ -234,2 +234,2 @@ -#[cfg(target_os = "android")] +#[cfg(any(target_os = "android", target_os = "redox"))] fn do_try_lock(f: &fs::File) -> Result<(), std::fs::TryLockError> { - use std::os::fd::AsRawFd; - From 3ace387af409e92352ed5b5ba0c9b2cff4cdb2db Mon Sep 17 00:00:00 2001 From: Niel Duysters Date: Mon, 26 Oct 2026 04:43:53 +0100 Subject: [PATCH 7/7] CI: Fix 7zip source archive URL --- recipes/wip/archives/7zip/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/archives/7zip/recipe.toml b/recipes/wip/archives/7zip/recipe.toml index 1bab446bf..a11ee01a6 100644 --- a/recipes/wip/archives/7zip/recipe.toml +++ b/recipes/wip/archives/7zip/recipe.toml @@ -1,5 +1,5 @@ #TODO add script for gnu make: https://github.com/ip7z/7zip/blob/main/DOC/readme.txt#L110 [source] -tar = "https://7-zip.org/a/7z2605-src.tar.xz" +tar = "https://github.com/ip7z/7zip/releases/download/26.05/7z2605-src.tar.xz" [build] template = "cmake"