mirror of
https://github.com/robbert-vdh/yabridge.git
synced 2026-05-09 20:29:10 +02:00
Add a last known config field to the configuration
For verifying that a combination of Wine and yabridge is going to work together properly.
This commit is contained in:
@@ -44,7 +44,7 @@ const YABRIDGE_PREFIX: &str = "yabridge";
|
|||||||
#[derive(Deserialize, Serialize, Debug)]
|
#[derive(Deserialize, Serialize, Debug)]
|
||||||
pub struct Config {
|
pub struct Config {
|
||||||
/// The installation method to use. We will default to creating copies since that works
|
/// The installation method to use. We will default to creating copies since that works
|
||||||
/// everywehre.
|
/// everywhere.
|
||||||
pub method: InstallationMethod,
|
pub method: InstallationMethod,
|
||||||
/// The path to the directory containing `libyabridge.so`. If not set, then yabridgectl will
|
/// The path to the directory containing `libyabridge.so`. If not set, then yabridgectl will
|
||||||
/// look in `/usr/lib` and `$XDG_DATA_HOME/yabridge` since those are the expected locations for
|
/// look in `/usr/lib` and `$XDG_DATA_HOME/yabridge` since those are the expected locations for
|
||||||
@@ -53,6 +53,10 @@ pub struct Config {
|
|||||||
/// Directories to search for Windows VST plugins. We're using an ordered set here out of
|
/// Directories to search for Windows VST plugins. We're using an ordered set here out of
|
||||||
/// convenience so we can't get duplicates and the config file is always sorted.
|
/// convenience so we can't get duplicates and the config file is always sorted.
|
||||||
pub plugin_dirs: BTreeSet<PathBuf>,
|
pub plugin_dirs: BTreeSet<PathBuf>,
|
||||||
|
/// The last known combination of Wine and yabridge versions that would work together properly.
|
||||||
|
/// This is mostly to diagnose issues with older Wine versions (such as those in Ubuntu's repos)
|
||||||
|
/// early on.
|
||||||
|
pub last_known_config: Option<KnownConfig>,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Specifies how yabridge will be set up for the found plugins.
|
/// Specifies how yabridge will be set up for the found plugins.
|
||||||
@@ -88,6 +92,22 @@ impl Display for InstallationMethod {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Stores information about a combination of yabridge and Wine that works together properly.
|
||||||
|
/// Whenever we encounter a new version of yabridge or Wine, we'll check whether `yabridge-host.exe`
|
||||||
|
/// can run without issues. This is needed because older versions of Wine won't be able to run newer
|
||||||
|
/// winelibs, and Ubuntu ships with old versions of Wine. To prevent repeating unnecessarily
|
||||||
|
/// repeating this check we'll keep track of the last combination of Wine and yabridge that would
|
||||||
|
/// work together properly.
|
||||||
|
#[derive(Deserialize, Serialize, Debug)]
|
||||||
|
pub struct KnownConfig {
|
||||||
|
/// The output of `wine --version`, minus the trailing newline.
|
||||||
|
wine_version: String,
|
||||||
|
/// The results from running the contents of `yabridge-host.exe.so` through
|
||||||
|
/// [`DefaultHasher`](std::collections::hash_map::DefaultHasher). Hash collisions aren't really
|
||||||
|
/// an issue here since we mostly care about the version of Wine.
|
||||||
|
yabridge_host_hash: u64,
|
||||||
|
}
|
||||||
|
|
||||||
impl Config {
|
impl Config {
|
||||||
/// Try to read the config file, creating a new default file if necessary. This will fail if the
|
/// Try to read the config file, creating a new default file if necessary. This will fail if the
|
||||||
/// file could not be created or if it could not be parsed.
|
/// file could not be created or if it could not be parsed.
|
||||||
@@ -106,6 +126,7 @@ impl Config {
|
|||||||
method: InstallationMethod::Copy,
|
method: InstallationMethod::Copy,
|
||||||
yabridge_home: None,
|
yabridge_home: None,
|
||||||
plugin_dirs: BTreeSet::new(),
|
plugin_dirs: BTreeSet::new(),
|
||||||
|
last_known_config: None,
|
||||||
};
|
};
|
||||||
|
|
||||||
// If no existing config file exists, then write a new config file with default
|
// If no existing config file exists, then write a new config file with default
|
||||||
|
|||||||
Reference in New Issue
Block a user