From 797307e7aa75b10d105d4fc149d62deaab0b0097 Mon Sep 17 00:00:00 2001 From: Wolf Vollprecht Date: Tue, 1 Jul 2025 16:46:07 +0200 Subject: [PATCH 1/3] implement config conversion for repodata_gateway --- Cargo.lock | 1 + crates/rattler_repodata_gateway/Cargo.toml | 1 + .../src/gateway/channel_config.rs | 27 +++++++++++++++++++ 3 files changed, 29 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index f4880af81d..ee16a83267 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4606,6 +4606,7 @@ dependencies = [ "pin-project-lite", "rattler_cache", "rattler_conda_types", + "rattler_config", "rattler_digest", "rattler_networking", "rattler_redaction", diff --git a/crates/rattler_repodata_gateway/Cargo.toml b/crates/rattler_repodata_gateway/Cargo.toml index 03fc6d844a..5ce485ba06 100644 --- a/crates/rattler_repodata_gateway/Cargo.toml +++ b/crates/rattler_repodata_gateway/Cargo.toml @@ -56,6 +56,7 @@ zstd = { workspace = true } retry-policies = { workspace = true } rattler_cache = { workspace = true } rattler_redaction = { workspace = true, features = ["reqwest", "reqwest-middleware"] } +rattler_config = { workspace = true, optional = true, default-features = false } [target.'cfg(unix)'.dependencies] libc = { workspace = true } diff --git a/crates/rattler_repodata_gateway/src/gateway/channel_config.rs b/crates/rattler_repodata_gateway/src/gateway/channel_config.rs index 6b20179218..e53b7bca42 100644 --- a/crates/rattler_repodata_gateway/src/gateway/channel_config.rs +++ b/crates/rattler_repodata_gateway/src/gateway/channel_config.rs @@ -72,3 +72,30 @@ impl ChannelConfig { .map_or(&self.default, |(_, config)| config) } } + +#[cfg(feature = "rattler_config")] +impl From<&rattler_config::ConfigBase> for ChannelConfig +where + T: rattler_config::Config + Default, +{ + fn from(config: &rattler_config::ConfigBase) -> Self { + let repodata_config = &config.repodata_config; + let default = repodata_config.default.clone().into(); + + let per_channel = repodata_config + .per_channel + .iter() + .map(|(url, config)| { + ( + url.clone(), + config.merge(repodata_config.default.clone()).into(), + ) + }) + .collect(); + + ChannelConfig { + default, + per_channel, + } + } +} From 520c3098bde8c0bb6f4dd6086af6d2504745b108 Mon Sep 17 00:00:00 2001 From: Wolf Vollprecht Date: Tue, 1 Jul 2025 16:52:05 +0200 Subject: [PATCH 2/3] fix --- .../rattler_repodata_gateway/src/gateway/channel_config.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/crates/rattler_repodata_gateway/src/gateway/channel_config.rs b/crates/rattler_repodata_gateway/src/gateway/channel_config.rs index e53b7bca42..8852b1755d 100644 --- a/crates/rattler_repodata_gateway/src/gateway/channel_config.rs +++ b/crates/rattler_repodata_gateway/src/gateway/channel_config.rs @@ -74,11 +74,11 @@ impl ChannelConfig { } #[cfg(feature = "rattler_config")] -impl From<&rattler_config::ConfigBase> for ChannelConfig +impl From<&rattler_config::config::ConfigBase> for ChannelConfig where - T: rattler_config::Config + Default, + T: rattler_config::config::Config + Default, { - fn from(config: &rattler_config::ConfigBase) -> Self { + fn from(config: &rattler_config::config::ConfigBase) -> Self { let repodata_config = &config.repodata_config; let default = repodata_config.default.clone().into(); From b400fc3b6243a2a0ffe7d858aa588a878302a8b0 Mon Sep 17 00:00:00 2001 From: Wolf Vollprecht Date: Fri, 4 Jul 2025 17:54:31 +0200 Subject: [PATCH 3/3] add one more conversion method --- .../src/gateway/channel_config.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/crates/rattler_repodata_gateway/src/gateway/channel_config.rs b/crates/rattler_repodata_gateway/src/gateway/channel_config.rs index 8852b1755d..a7ba7fea1d 100644 --- a/crates/rattler_repodata_gateway/src/gateway/channel_config.rs +++ b/crates/rattler_repodata_gateway/src/gateway/channel_config.rs @@ -41,6 +41,19 @@ impl Default for SourceConfig { } } +#[cfg(feature = "rattler_config")] +impl From for SourceConfig { + fn from(value: rattler_config::config::repodata_config::RepodataChannelConfig) -> Self { + SourceConfig { + jlap_enabled: !value.disable_jlap.unwrap_or(false), + zstd_enabled: !value.disable_zstd.unwrap_or(false), + bz2_enabled: !value.disable_bzip2.unwrap_or(false), + sharded_enabled: !value.disable_sharded.unwrap_or(false), + cache_action: Default::default(), + } + } +} + /// Describes additional information for fetching channels. #[derive(Debug, Default)] pub struct ChannelConfig {