Skip to content

Commit 8738eda

Browse files
committed
Rename some structs
1 parent 8670d74 commit 8738eda

File tree

6 files changed

+142
-107
lines changed

6 files changed

+142
-107
lines changed

crates/cargo-gpu-build/src/build.rs

Lines changed: 38 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@ use crate::{
77
lockfile::{LockfileMismatchError, LockfileMismatchHandler},
88
spirv_builder::{CompileResult, SpirvBuilder, SpirvBuilderError},
99
spirv_cache::{
10-
backend::{Install, InstallError, InstallParams, InstallRunParams, InstalledBackend},
10+
backend::{
11+
SpirvCodegenBackend, SpirvCodegenBackendInstallError, SpirvCodegenBackendInstaller,
12+
SpirvCodegenBackendInstallerParams, SpirvCodegenBackendInstallerRunParams,
13+
},
1114
command::CommandExecError,
1215
toolchain::{
1316
HaltToolchainInstallation, InheritStderr, InheritStdout, NoopOnComponentsInstall,
@@ -20,14 +23,14 @@ use crate::{
2023
#[cfg(feature = "watch")]
2124
use crate::spirv_builder::SpirvWatcher;
2225

23-
/// Parameters for [`ShaderCrateBuilder::new()`].
26+
/// Parameters for [`CargoGpuBuilder::new()`].
2427
#[derive(Debug, Clone)]
2528
#[non_exhaustive]
26-
pub struct ShaderCrateBuilderParams<W, T, C, O, E> {
29+
pub struct CargoGpuBuilderParams<W, T, C, O, E> {
2730
/// Parameters of the shader crate build.
2831
pub build: SpirvBuilder,
2932
/// Parameters of the codegen backend installation for the shader crate.
30-
pub install: InstallParams,
33+
pub install: SpirvCodegenBackendInstallerParams,
3134
/// There is a tricky situation where a shader crate that depends on workspace config can have
3235
/// a different `Cargo.lock` lockfile version from the the workspace's `Cargo.lock`. This can
3336
/// prevent builds when an old Rust toolchain doesn't recognise the newer lockfile version.
@@ -58,7 +61,7 @@ pub struct ShaderCrateBuilderParams<W, T, C, O, E> {
5861
pub stdio_cfg: StdioCfg<O, E>,
5962
}
6063

61-
impl<W, T, C, O, E> ShaderCrateBuilderParams<W, T, C, O, E> {
64+
impl<W, T, C, O, E> CargoGpuBuilderParams<W, T, C, O, E> {
6265
/// Replaces build parameters of the shader crate.
6366
#[inline]
6467
#[must_use]
@@ -69,7 +72,7 @@ impl<W, T, C, O, E> ShaderCrateBuilderParams<W, T, C, O, E> {
6972
/// Replaces codegen backend installation parameters of the shader crate.
7073
#[inline]
7174
#[must_use]
72-
pub fn install(self, install: InstallParams) -> Self {
75+
pub fn install(self, install: SpirvCodegenBackendInstallerParams) -> Self {
7376
Self { install, ..self }
7477
}
7578

@@ -89,8 +92,8 @@ impl<W, T, C, O, E> ShaderCrateBuilderParams<W, T, C, O, E> {
8992
/// Replaces the writer of user output.
9093
#[inline]
9194
#[must_use]
92-
pub fn writer<NW>(self, writer: NW) -> ShaderCrateBuilderParams<NW, T, C, O, E> {
93-
ShaderCrateBuilderParams {
95+
pub fn writer<NW>(self, writer: NW) -> CargoGpuBuilderParams<NW, T, C, O, E> {
96+
CargoGpuBuilderParams {
9497
build: self.build,
9598
install: self.install,
9699
force_overwrite_lockfiles_v4_to_v3: self.force_overwrite_lockfiles_v4_to_v3,
@@ -106,8 +109,8 @@ impl<W, T, C, O, E> ShaderCrateBuilderParams<W, T, C, O, E> {
106109
pub fn halt<NT, NC>(
107110
self,
108111
halt: HaltToolchainInstallation<NT, NC>,
109-
) -> ShaderCrateBuilderParams<W, NT, NC, O, E> {
110-
ShaderCrateBuilderParams {
112+
) -> CargoGpuBuilderParams<W, NT, NC, O, E> {
113+
CargoGpuBuilderParams {
111114
build: self.build,
112115
install: self.install,
113116
force_overwrite_lockfiles_v4_to_v3: self.force_overwrite_lockfiles_v4_to_v3,
@@ -123,8 +126,8 @@ impl<W, T, C, O, E> ShaderCrateBuilderParams<W, T, C, O, E> {
123126
pub fn stdio_cfg<NO, NE>(
124127
self,
125128
stdio_cfg: StdioCfg<NO, NE>,
126-
) -> ShaderCrateBuilderParams<W, T, C, NO, NE> {
127-
ShaderCrateBuilderParams {
129+
) -> CargoGpuBuilderParams<W, T, C, NO, NE> {
130+
CargoGpuBuilderParams {
128131
build: self.build,
129132
install: self.install,
130133
force_overwrite_lockfiles_v4_to_v3: self.force_overwrite_lockfiles_v4_to_v3,
@@ -135,16 +138,16 @@ impl<W, T, C, O, E> ShaderCrateBuilderParams<W, T, C, O, E> {
135138
}
136139
}
137140

138-
/// [`Default`] parameters for [`ShaderCrateBuilder::new()`].
139-
pub type DefaultShaderCrateBuilderParams = ShaderCrateBuilderParams<
141+
/// [`Default`] parameters for [`CargoGpuBuilder::new()`].
142+
pub type DefaultCargoGpuBuilderParams = CargoGpuBuilderParams<
140143
io::Stdout,
141144
NoopOnToolchainInstall,
142145
NoopOnComponentsInstall,
143146
InheritStdout,
144147
InheritStderr,
145148
>;
146149

147-
impl From<SpirvBuilder> for DefaultShaderCrateBuilderParams {
150+
impl From<SpirvBuilder> for DefaultCargoGpuBuilderParams {
148151
#[inline]
149152
fn from(build: SpirvBuilder) -> Self {
150153
Self {
@@ -154,12 +157,12 @@ impl From<SpirvBuilder> for DefaultShaderCrateBuilderParams {
154157
}
155158
}
156159

157-
impl Default for DefaultShaderCrateBuilderParams {
160+
impl Default for DefaultCargoGpuBuilderParams {
158161
#[inline]
159162
fn default() -> Self {
160163
Self {
161164
build: SpirvBuilder::default(),
162-
install: InstallParams::default(),
165+
install: SpirvCodegenBackendInstallerParams::default(),
163166
force_overwrite_lockfiles_v4_to_v3: false,
164167
writer: io::stdout(),
165168
halt: HaltToolchainInstallation::noop(),
@@ -171,20 +174,20 @@ impl Default for DefaultShaderCrateBuilderParams {
171174
/// A builder for compiling a `rust-gpu` shader crate.
172175
#[derive(Debug, Clone)]
173176
#[non_exhaustive]
174-
pub struct ShaderCrateBuilder<W = io::Stdout> {
177+
pub struct CargoGpuBuilder<W = io::Stdout> {
175178
/// The underlying builder for compiling the shader crate.
176179
pub builder: SpirvBuilder,
177180
/// The arguments used to install the backend.
178-
pub installed_backend_args: Install,
181+
pub installed_backend_args: SpirvCodegenBackendInstaller,
179182
/// The installed backend.
180-
pub installed_backend: InstalledBackend,
183+
pub installed_backend: SpirvCodegenBackend,
181184
/// The lockfile mismatch handler.
182185
pub lockfile_mismatch_handler: LockfileMismatchHandler,
183186
/// Writer of user output.
184187
pub writer: W,
185188
}
186189

187-
impl<W> ShaderCrateBuilder<W>
190+
impl<W> CargoGpuBuilder<W>
188191
where
189192
W: io::Write,
190193
{
@@ -199,16 +202,16 @@ where
199202
/// * the backend installation fails,
200203
/// * there is a lockfile version mismatch that cannot be resolved automatically.
201204
#[inline]
202-
pub fn new<I, R, T, C, O, E>(params: I) -> Result<Self, NewShaderCrateBuilderError<R>>
205+
pub fn new<I, R, T, C, O, E>(params: I) -> Result<Self, NewCargoGpuBuilderError<R>>
203206
where
204-
I: Into<ShaderCrateBuilderParams<W, T, C, O, E>>,
207+
I: Into<CargoGpuBuilderParams<W, T, C, O, E>>,
205208
R: From<CommandExecError>,
206209
T: FnOnce(&str) -> Result<(), R>,
207210
C: FnOnce(&str) -> Result<(), R>,
208211
O: FnMut() -> Stdio,
209212
E: FnMut() -> Stdio,
210213
{
211-
let ShaderCrateBuilderParams {
214+
let CargoGpuBuilderParams {
212215
mut build,
213216
install,
214217
force_overwrite_lockfiles_v4_to_v3,
@@ -218,16 +221,16 @@ where
218221
} = params.into();
219222

220223
if build.target.is_none() {
221-
return Err(NewShaderCrateBuilderError::MissingTarget);
224+
return Err(NewCargoGpuBuilderError::MissingTarget);
222225
}
223226
let path_to_crate = build
224227
.path_to_crate
225228
.as_ref()
226-
.ok_or(NewShaderCrateBuilderError::MissingCratePath)?;
229+
.ok_or(NewCargoGpuBuilderError::MissingCratePath)?;
227230
let shader_crate = dunce::canonicalize(path_to_crate)?;
228231

229-
let backend_to_install = Install::new(shader_crate, install);
230-
let backend_install_params = InstallRunParams::default()
232+
let backend_to_install = SpirvCodegenBackendInstaller::new(shader_crate, install);
233+
let backend_install_params = SpirvCodegenBackendInstallerRunParams::default()
231234
.writer(&mut writer)
232235
.halt(HaltToolchainInstallation {
233236
on_toolchain_install: |channel: &str| (halt.on_toolchain_install)(channel),
@@ -237,7 +240,7 @@ where
237240
stdout: || (stdio_cfg.stdout)(),
238241
stderr: || (stdio_cfg.stderr)(),
239242
});
240-
let backend = backend_to_install.run(backend_install_params)?;
243+
let backend = backend_to_install.install(backend_install_params)?;
241244

242245
let lockfile_mismatch_handler = LockfileMismatchHandler::new(
243246
&backend_to_install.shader_crate,
@@ -265,7 +268,7 @@ where
265268
///
266269
/// Returns an error if building the shader crate failed.
267270
#[inline]
268-
pub fn build(&mut self) -> Result<CompileResult, ShaderCrateBuildError> {
271+
pub fn build(&mut self) -> Result<CompileResult, CargoGpuBuildError> {
269272
let shader_crate = self.installed_backend_args.shader_crate.display();
270273
user_output!(&mut self.writer, "Compiling shaders at {shader_crate}...\n")?;
271274

@@ -280,7 +283,7 @@ where
280283
/// Returns an error if watching shader crate for changes failed.
281284
#[cfg(feature = "watch")]
282285
#[inline]
283-
pub fn watch(&mut self) -> Result<SpirvWatcher, ShaderCrateBuildError> {
286+
pub fn watch(&mut self) -> Result<SpirvWatcher, CargoGpuBuildError> {
284287
let shader_crate = self.installed_backend_args.shader_crate.display();
285288
user_output!(
286289
&mut self.writer,
@@ -292,10 +295,10 @@ where
292295
}
293296
}
294297

295-
/// An error indicating what went wrong when creating a [`ShaderCrateBuilder`].
298+
/// An error indicating what went wrong when creating a [`CargoGpuBuilder`].
296299
#[derive(Debug, thiserror::Error)]
297300
#[non_exhaustive]
298-
pub enum NewShaderCrateBuilderError<E = CommandExecError> {
301+
pub enum NewCargoGpuBuilderError<E = CommandExecError> {
299302
/// Shader crate target is missing from parameters of the build.
300303
#[error("shader crate target must be set, for example `spirv-unknown-vulkan1.2`")]
301304
MissingTarget,
@@ -307,7 +310,7 @@ pub enum NewShaderCrateBuilderError<E = CommandExecError> {
307310
InvalidCratePath(#[from] io::Error),
308311
/// The backend installation failed.
309312
#[error("could not install backend: {0}")]
310-
Install(#[from] InstallError<E>),
313+
Install(#[from] SpirvCodegenBackendInstallError<E>),
311314
/// There is a lockfile version mismatch that cannot be resolved automatically.
312315
#[error(transparent)]
313316
LockfileMismatch(#[from] LockfileMismatchError),
@@ -316,7 +319,7 @@ pub enum NewShaderCrateBuilderError<E = CommandExecError> {
316319
/// An error indicating what went wrong when building the shader crate.
317320
#[derive(Debug, thiserror::Error)]
318321
#[non_exhaustive]
319-
pub enum ShaderCrateBuildError {
322+
pub enum CargoGpuBuildError {
320323
/// Failed to write user output.
321324
#[error("failed to write user output: {0}")]
322325
IoWrite(#[from] io::Error),

crates/cargo-gpu-build/src/lockfile.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ impl LockfileMismatchHandler {
6868
})
6969
}
7070

71-
/// See docs for [`force_overwrite_lockfiles_v4_to_v3`](field@crate::build::ShaderCrateBuilderParams::force_overwrite_lockfiles_v4_to_v3)
71+
/// See docs for [`force_overwrite_lockfiles_v4_to_v3`](field@crate::build::CargoGpuBuilderParams::force_overwrite_lockfiles_v4_to_v3)
7272
/// flag for why we do this.
7373
fn ensure_workspace_rust_version_does_not_conflict_with_shader(
7474
shader_crate_path: &Path,
@@ -96,7 +96,7 @@ impl LockfileMismatchHandler {
9696
}
9797
}
9898

99-
/// See docs for [`force_overwrite_lockfiles_v4_to_v3`](field@crate::build::ShaderCrateBuilderParams::force_overwrite_lockfiles_v4_to_v3)
99+
/// See docs for [`force_overwrite_lockfiles_v4_to_v3`](field@crate::build::CargoGpuBuilderParams::force_overwrite_lockfiles_v4_to_v3)
100100
/// flag for why we do this.
101101
fn ensure_shader_rust_version_does_not_conflict_with_any_cargo_locks(
102102
shader_crate_path: &Path,
@@ -334,7 +334,7 @@ pub enum LockfileMismatchError {
334334
/// Conflicting lockfile manifest versions detected, with advice on how to resolve them
335335
/// by setting the [`force_overwrite_lockfiles_v4_to_v3`] flag.
336336
///
337-
/// [`force_overwrite_lockfiles_v4_to_v3`]: field@crate::build::ShaderCrateBuilderParams::force_overwrite_lockfiles_v4_to_v3
337+
/// [`force_overwrite_lockfiles_v4_to_v3`]: field@crate::build::CargoGpuBuilderParams::force_overwrite_lockfiles_v4_to_v3
338338
#[error(
339339
r#"conflicting `Cargo.lock` versions detected ⚠️
340340

crates/cargo-gpu/src/build.rs

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,11 @@ use std::{io::Write as _, panic, path::PathBuf};
55

66
use anyhow::Context as _;
77
use cargo_gpu_build::{
8-
build::{ShaderCrateBuilder, ShaderCrateBuilderParams},
8+
build::{CargoGpuBuilder, CargoGpuBuilderParams},
99
spirv_builder::{CompileResult, ModuleResult, SpirvBuilder},
10-
spirv_cache::backend::Install,
1110
};
1211

13-
use crate::{linkage::Linkage, user_consent::ask_for_user_consent};
12+
use crate::{install::Install, linkage::Linkage, user_consent::ask_for_user_consent};
1413

1514
/// Args for just a build.
1615
#[derive(Debug, Clone, clap::Parser, serde::Deserialize, serde::Serialize)]
@@ -54,7 +53,7 @@ pub struct InstallArgs {
5453
/// The flattened [`Install`].
5554
#[clap(flatten)]
5655
#[serde(flatten)]
57-
pub backend: Install,
56+
pub install: Install,
5857

5958
/// There is a tricky situation where a shader crate that depends on workspace config can have
6059
/// a different `Cargo.lock` lockfile version from the the workspace's `Cargo.lock`. This can
@@ -85,7 +84,7 @@ pub struct InstallArgs {
8584
pub auto_install_rust_toolchain: bool,
8685
}
8786

88-
/// `cargo build` subcommands
87+
/// `cargo build` subcommands.
8988
#[derive(Clone, Debug, clap::Parser, serde::Deserialize, serde::Serialize)]
9089
#[non_exhaustive]
9190
pub struct Build {
@@ -106,16 +105,17 @@ impl Build {
106105
/// Returns an error if the build process fails somehow.
107106
#[inline]
108107
pub fn run(&mut self) -> anyhow::Result<()> {
109-
self.build.spirv_builder.path_to_crate = Some(self.install.backend.shader_crate.clone());
108+
self.build.spirv_builder.path_to_crate =
109+
Some(self.install.install.spirv_installer.shader_crate.clone());
110110

111111
let halt = ask_for_user_consent(self.install.auto_install_rust_toolchain);
112-
let crate_builder_params = ShaderCrateBuilderParams::from(self.build.spirv_builder.clone())
113-
.install(self.install.backend.params.clone())
112+
let crate_builder_params = CargoGpuBuilderParams::from(self.build.spirv_builder.clone())
113+
.install(self.install.install.spirv_installer.params.clone())
114114
.force_overwrite_lockfiles_v4_to_v3(self.install.force_overwrite_lockfiles_v4_to_v3)
115115
.halt(halt);
116-
let crate_builder = ShaderCrateBuilder::new(crate_builder_params)?;
116+
let crate_builder = CargoGpuBuilder::new(crate_builder_params)?;
117117

118-
self.install.backend = crate_builder.installed_backend_args.clone();
118+
self.install.install.spirv_installer = crate_builder.installed_backend_args.clone();
119119
self.build.spirv_builder = crate_builder.builder.clone();
120120

121121
// Ensure the shader output dir exists
@@ -135,15 +135,15 @@ impl Build {
135135
self.build(crate_builder)
136136
}
137137

138-
/// Builds shader crate using [`ShaderCrateBuilder`].
139-
fn build(&self, mut crate_builder: ShaderCrateBuilder) -> anyhow::Result<()> {
138+
/// Builds shader crate using [`CargoGpuBuilder`].
139+
fn build(&self, mut crate_builder: CargoGpuBuilder) -> anyhow::Result<()> {
140140
let result = crate_builder.build()?;
141141
self.parse_compilation_result(&result)?;
142142
Ok(())
143143
}
144144

145-
/// Watches shader crate for changes using [`ShaderCrateBuilder`].
146-
fn watch(&self, mut crate_builder: ShaderCrateBuilder) -> anyhow::Result<Infallible> {
145+
/// Watches shader crate for changes using [`CargoGpuBuilder`].
146+
fn watch(&self, mut crate_builder: CargoGpuBuilder) -> anyhow::Result<Infallible> {
147147
let this = self.clone();
148148
let mut watcher = crate_builder.watch()?;
149149
let watch_thread = std::thread::spawn(move || -> ! {
@@ -196,10 +196,10 @@ impl Build {
196196
log::debug!(
197197
"linkage of {} relative to {}",
198198
path.display(),
199-
self.install.backend.shader_crate.display()
199+
self.install.install.spirv_installer.shader_crate.display()
200200
);
201201
let spv_path = path
202-
.relative_to(&self.install.backend.shader_crate)
202+
.relative_to(&self.install.install.spirv_installer.shader_crate)
203203
.map_or(path, |path_relative_to_shader_crate| {
204204
path_relative_to_shader_crate.to_path("")
205205
});
@@ -255,7 +255,10 @@ mod test {
255255
command: Command::Build(build),
256256
} = Cli::parse_from(args)
257257
{
258-
assert_eq!(shader_crate_path, build.install.backend.shader_crate);
258+
assert_eq!(
259+
shader_crate_path,
260+
build.install.install.spirv_installer.shader_crate
261+
);
259262
assert_eq!(output_dir, build.build.output_dir);
260263

261264
// TODO:

crates/cargo-gpu/src/install.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
//! `cargo gpu install`
2+
3+
use cargo_gpu_build::spirv_cache::backend::SpirvCodegenBackendInstaller;
4+
5+
/// `cargo gpu install` subcommands.
6+
#[derive(Clone, Debug, clap::Parser, serde::Deserialize, serde::Serialize)]
7+
#[non_exhaustive]
8+
pub struct Install {
9+
/// The flattened [`SpirvCodegenBackendInstaller`].
10+
#[clap(flatten)]
11+
#[serde(flatten)]
12+
pub spirv_installer: SpirvCodegenBackendInstaller,
13+
}

0 commit comments

Comments
 (0)