Skip to content

Commit 6dea12a

Browse files
authored
feat(bundler): add recommends for deb and rpm (#11402)
closes #10351
1 parent 1f31183 commit 6dea12a

File tree

8 files changed

+77
-0
lines changed

8 files changed

+77
-0
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
"tauri-bundler": "patch:feat"
3+
---
4+
5+
Add `bundle > linux > deb > recommends` and `bundle > linux > rpm > recommends` fields to declare a strong, but not absolute, dependency for your `.deb` and `.rpm` packages.
6+

crates/tauri-bundler/src/bundle/linux/debian.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,15 @@ fn generate_control_file(
198198
if !dependencies.is_empty() {
199199
writeln!(file, "Depends: {}", dependencies.join(", "))?;
200200
}
201+
let dependencies = settings
202+
.deb()
203+
.recommends
204+
.as_ref()
205+
.cloned()
206+
.unwrap_or_default();
207+
if !dependencies.is_empty() {
208+
writeln!(file, "Recommends: {}", dependencies.join(", "))?;
209+
}
201210
let provides = settings
202211
.deb()
203212
.provides

crates/tauri-bundler/src/bundle/linux/rpm.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,17 @@ pub fn bundle_project(settings: &Settings) -> crate::Result<Vec<PathBuf>> {
8484
builder = builder.provides(Dependency::any(dep));
8585
}
8686

87+
// Add recommends
88+
for dep in settings
89+
.rpm()
90+
.recommends
91+
.as_ref()
92+
.cloned()
93+
.unwrap_or_default()
94+
{
95+
builder = builder.recommends(Dependency::any(dep));
96+
}
97+
8798
// Add conflicts
8899
for dep in settings
89100
.rpm()

crates/tauri-bundler/src/bundle/settings.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,8 @@ pub struct DebianSettings {
170170
// OS-specific settings:
171171
/// the list of debian dependencies.
172172
pub depends: Option<Vec<String>>,
173+
/// the list of debian dependencies recommendations.
174+
pub recommends: Option<Vec<String>>,
173175
/// the list of dependencies the package provides.
174176
pub provides: Option<Vec<String>>,
175177
/// the list of package conflicts.
@@ -222,6 +224,8 @@ pub struct AppImageSettings {
222224
pub struct RpmSettings {
223225
/// The list of RPM dependencies your application relies on.
224226
pub depends: Option<Vec<String>>,
227+
/// the list of of RPM dependencies your application recommends.
228+
pub recommends: Option<Vec<String>>,
225229
/// The list of RPM dependencies your application provides.
226230
pub provides: Option<Vec<String>>,
227231
/// The list of RPM dependencies your application conflicts with. They must not be present

crates/tauri-cli/config.schema.json

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2574,6 +2574,16 @@
25742574
"type": "string"
25752575
}
25762576
},
2577+
"recommends": {
2578+
"description": "The list of deb dependencies your application recommends.",
2579+
"type": [
2580+
"array",
2581+
"null"
2582+
],
2583+
"items": {
2584+
"type": "string"
2585+
}
2586+
},
25772587
"provides": {
25782588
"description": "The list of dependencies the package provides.",
25792589
"type": [
@@ -2685,6 +2695,16 @@
26852695
"type": "string"
26862696
}
26872697
},
2698+
"recommends": {
2699+
"description": "The list of RPM dependencies your application recommends.",
2700+
"type": [
2701+
"array",
2702+
"null"
2703+
],
2704+
"items": {
2705+
"type": "string"
2706+
}
2707+
},
26882708
"provides": {
26892709
"description": "The list of RPM dependencies your application provides.",
26902710
"type": [

crates/tauri-cli/src/interface/rust.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1346,6 +1346,7 @@ fn tauri_config_to_bundle_settings(
13461346
} else {
13471347
Some(depends_deb)
13481348
},
1349+
recommends: config.linux.deb.recommends,
13491350
provides: config.linux.deb.provides,
13501351
conflicts: config.linux.deb.conflicts,
13511352
replaces: config.linux.deb.replaces,
@@ -1368,6 +1369,7 @@ fn tauri_config_to_bundle_settings(
13681369
} else {
13691370
Some(depends_rpm)
13701371
},
1372+
recommends: config.linux.rpm.recommends,
13711373
provides: config.linux.rpm.provides,
13721374
conflicts: config.linux.rpm.conflicts,
13731375
obsoletes: config.linux.rpm.obsoletes,

crates/tauri-schema-generator/schemas/config.schema.json

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2574,6 +2574,16 @@
25742574
"type": "string"
25752575
}
25762576
},
2577+
"recommends": {
2578+
"description": "The list of deb dependencies your application recommends.",
2579+
"type": [
2580+
"array",
2581+
"null"
2582+
],
2583+
"items": {
2584+
"type": "string"
2585+
}
2586+
},
25772587
"provides": {
25782588
"description": "The list of dependencies the package provides.",
25792589
"type": [
@@ -2685,6 +2695,16 @@
26852695
"type": "string"
26862696
}
26872697
},
2698+
"recommends": {
2699+
"description": "The list of RPM dependencies your application recommends.",
2700+
"type": [
2701+
"array",
2702+
"null"
2703+
],
2704+
"items": {
2705+
"type": "string"
2706+
}
2707+
},
26882708
"provides": {
26892709
"description": "The list of RPM dependencies your application provides.",
26902710
"type": [

crates/tauri-utils/src/config.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,8 @@ pub struct AppImageConfig {
331331
pub struct DebConfig {
332332
/// The list of deb dependencies your application relies on.
333333
pub depends: Option<Vec<String>>,
334+
/// The list of deb dependencies your application recommends.
335+
pub recommends: Option<Vec<String>>,
334336
/// The list of dependencies the package provides.
335337
pub provides: Option<Vec<String>>,
336338
/// The list of package conflicts.
@@ -398,6 +400,8 @@ pub struct LinuxConfig {
398400
pub struct RpmConfig {
399401
/// The list of RPM dependencies your application relies on.
400402
pub depends: Option<Vec<String>>,
403+
/// The list of RPM dependencies your application recommends.
404+
pub recommends: Option<Vec<String>>,
401405
/// The list of RPM dependencies your application provides.
402406
pub provides: Option<Vec<String>>,
403407
/// The list of RPM dependencies your application conflicts with. They must not be present
@@ -442,6 +446,7 @@ impl Default for RpmConfig {
442446
fn default() -> Self {
443447
Self {
444448
depends: None,
449+
recommends: None,
445450
provides: None,
446451
conflicts: None,
447452
obsoletes: None,

0 commit comments

Comments
 (0)