Skip to content

Commit 72b8048

Browse files
authored
feat(cli.rs): fill debian depends with tauri dependencies (#1767)
1 parent 22676df commit 72b8048

4 files changed

Lines changed: 63 additions & 12 deletions

File tree

.changes/debian-depends.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"cli.rs": patch
3+
---
4+
5+
Automatically add Tauri dependencies to the debian package `Depends` section.

tooling/cli.rs/src/build.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ impl Build {
7070
let tauri_path = tauri_dir();
7171
set_current_dir(&tauri_path).with_context(|| "failed to change current working directory")?;
7272

73-
rewrite_manifest(config.clone())?;
73+
let manifest = rewrite_manifest(config.clone())?;
7474

7575
let config_guard = config.lock().unwrap();
7676
let config_ = config_guard.as_ref().unwrap();
@@ -150,7 +150,7 @@ impl Build {
150150
}
151151
let mut settings_builder = SettingsBuilder::new()
152152
.package_settings(app_settings.get_package_settings())
153-
.bundle_settings(app_settings.get_bundle_settings(&config_)?)
153+
.bundle_settings(app_settings.get_bundle_settings(&config_, &manifest)?)
154154
.binaries(app_settings.get_binaries(&config_)?)
155155
.project_out_directory(out_dir);
156156

tooling/cli.rs/src/build/rust.rs

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ use std::{
1313
use anyhow::Context;
1414
use serde::Deserialize;
1515

16-
use crate::helpers::{app_paths::tauri_dir, config::Config};
16+
use crate::helpers::{app_paths::tauri_dir, config::Config, manifest::Manifest};
1717
use tauri_bundler::{
1818
AppCategory, BundleBinary, BundleSettings, DebianSettings, MacOsSettings, PackageSettings,
1919
UpdaterSettings, WindowsSettings,
@@ -163,8 +163,13 @@ impl AppSettings {
163163
&self.cargo_package_settings
164164
}
165165

166-
pub fn get_bundle_settings(&self, config: &Config) -> crate::Result<BundleSettings> {
166+
pub fn get_bundle_settings(
167+
&self,
168+
config: &Config,
169+
manifest: &Manifest,
170+
) -> crate::Result<BundleSettings> {
167171
tauri_config_to_bundle_settings(
172+
manifest,
168173
config.tauri.bundle.clone(),
169174
config.tauri.system_tray.clone(),
170175
config.tauri.updater.clone(),
@@ -336,6 +341,7 @@ pub fn get_workspace_dir(current_dir: &Path) -> PathBuf {
336341
}
337342

338343
fn tauri_config_to_bundle_settings(
344+
manifest: &Manifest,
339345
config: crate::helpers::config::BundleConfig,
340346
system_tray_config: Option<crate::helpers::config::SystemTrayConfig>,
341347
updater_config: crate::helpers::config::UpdaterConfig,
@@ -353,12 +359,21 @@ fn tauri_config_to_bundle_settings(
353359

354360
#[allow(unused_mut)]
355361
let mut resources = config.resources.unwrap_or_default();
362+
#[allow(unused_mut)]
363+
let mut depends = config.deb.depends.unwrap_or_default();
364+
356365
#[cfg(target_os = "linux")]
357366
{
358367
if let Some(system_tray_config) = &system_tray_config {
359368
let mut icon_path = system_tray_config.icon_path.clone();
360369
icon_path.set_extension("png");
361-
resources.push(icon_path.to_string_lossy().to_string());
370+
depends.push("libappindicator3-1".to_string());
371+
}
372+
373+
depends.push("libwebkit2gtk-4.0".to_string());
374+
depends.push("libgtk-3-0".to_string());
375+
if manifest.features.contains(&"menu".into()) || system_tray_config.is_some() {
376+
depends.push("libgtksourceview-3.0-1".to_string());
362377
}
363378
}
364379

@@ -382,7 +397,11 @@ fn tauri_config_to_bundle_settings(
382397
long_description: config.long_description,
383398
external_bin: config.external_bin,
384399
deb: DebianSettings {
385-
depends: config.deb.depends,
400+
depends: if depends.is_empty() {
401+
None
402+
} else {
403+
Some(depends)
404+
},
386405
use_bootstrapper: Some(config.deb.use_bootstrapper),
387406
files: config.deb.files,
388407
},

tooling/cli.rs/src/helpers/manifest.rs

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,21 @@ use std::{
1212
io::{Read, Write},
1313
};
1414

15-
pub fn rewrite_manifest(config: ConfigHandle) -> crate::Result<()> {
15+
pub struct Manifest {
16+
pub features: Vec<String>,
17+
}
18+
19+
fn features_to_vec(features: &Array) -> Vec<String> {
20+
let mut string_features = Vec::new();
21+
for feat in features.iter() {
22+
if let Value::String(feature) = feat {
23+
string_features.push(feature.value().to_string());
24+
}
25+
}
26+
string_features
27+
}
28+
29+
pub fn rewrite_manifest(config: ConfigHandle) -> crate::Result<Manifest> {
1630
let manifest_path = tauri_dir().join("Cargo.toml");
1731
let mut manifest_str = String::new();
1832
let mut manifest_file = File::open(&manifest_path)
@@ -49,7 +63,16 @@ pub fn rewrite_manifest(config: ConfigHandle) -> crate::Result<()> {
4963

5064
if let Some(tauri) = tauri_entry.as_table_mut() {
5165
let manifest_features = tauri.entry("features");
52-
*manifest_features = Item::Value(Value::Array(features));
66+
if let Item::Value(Value::Array(f)) = &manifest_features {
67+
for feat in f.iter() {
68+
if let Value::String(feature) = feat {
69+
if feature.value() == "menu" {
70+
features.push("menu").unwrap();
71+
}
72+
}
73+
}
74+
}
75+
*manifest_features = Item::Value(Value::Array(features.clone()));
5376
} else if let Some(tauri) = tauri_entry.as_value_mut() {
5477
match tauri {
5578
Value::InlineTable(table) => {
@@ -63,15 +86,15 @@ pub fn rewrite_manifest(config: ConfigHandle) -> crate::Result<()> {
6386
}
6487
}
6588
}
66-
*manifest_features = Value::Array(features);
89+
*manifest_features = Value::Array(features.clone());
6790
}
6891
Value::String(version) => {
6992
let mut def = InlineTable::default();
7093
def.get_or_insert(
7194
"version",
7295
version.to_string().replace("\"", "").replace(" ", ""),
7396
);
74-
def.get_or_insert("features", Value::Array(features));
97+
def.get_or_insert("features", Value::Array(features.clone()));
7598
*tauri = Value::InlineTable(def);
7699
}
77100
_ => {
@@ -81,7 +104,9 @@ pub fn rewrite_manifest(config: ConfigHandle) -> crate::Result<()> {
81104
}
82105
}
83106
} else {
84-
return Ok(());
107+
return Ok(Manifest {
108+
features: features_to_vec(&features),
109+
});
85110
}
86111

87112
let mut manifest_file =
@@ -98,5 +123,7 @@ pub fn rewrite_manifest(config: ConfigHandle) -> crate::Result<()> {
98123
)?;
99124
manifest_file.flush()?;
100125

101-
Ok(())
126+
Ok(Manifest {
127+
features: features_to_vec(&features),
128+
})
102129
}

0 commit comments

Comments
 (0)