Skip to content

Commit

Permalink
Create --target directories lazily (#3274)
Browse files Browse the repository at this point in the history
## Summary

Based on feedback in
#3257 (comment).
  • Loading branch information
charliermarsh authored Apr 26, 2024
1 parent 1a4f7de commit ad99e3a
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 5 deletions.
13 changes: 10 additions & 3 deletions crates/install-wheel-rs/src/linker.rs
Original file line number Diff line number Diff line change
Expand Up @@ -85,11 +85,18 @@ pub fn install_wheel(
)?;
let mut record = read_record_file(&mut record_file)?;

debug!(name, "Writing entrypoints");
let (console_scripts, gui_scripts) =
parse_scripts(&wheel, &dist_info_prefix, None, layout.python_version.1)?;
write_script_entrypoints(layout, site_packages, &console_scripts, &mut record, false)?;
write_script_entrypoints(layout, site_packages, &gui_scripts, &mut record, true)?;

if console_scripts.is_empty() && gui_scripts.is_empty() {
debug!(name, "No entrypoints");
} else {
debug!(name, "Writing entrypoints");

fs_err::create_dir_all(&layout.scheme.scripts)?;
write_script_entrypoints(layout, site_packages, &console_scripts, &mut record, false)?;
write_script_entrypoints(layout, site_packages, &gui_scripts, &mut record, true)?;
}

// 2.a Unpacked archive includes distribution-1.0.dist-info/ and (if there is data) distribution-1.0.data/.
// 2.b Move each subtree of distribution-1.0.data/ onto its destination path. Each subdirectory of distribution-1.0.data/ is a key into a dict of destination directories, such as distribution-1.0.data/(purelib|platlib|headers|scripts|data). The initially supported paths are taken from distutils.command.install.
Expand Down
7 changes: 7 additions & 0 deletions crates/install-wheel-rs/src/wheel.rs
Original file line number Diff line number Diff line change
Expand Up @@ -537,6 +537,7 @@ pub(crate) fn install_data(
move_folder_recorded(&path, &layout.scheme.data, site_packages, record)?;
}
Some("scripts") => {
let mut initialized = false;
for file in fs::read_dir(path)? {
let file = file?;

Expand All @@ -556,6 +557,12 @@ pub(crate) fn install_data(
continue;
}

// Create the scripts directory, if it doesn't exist.
if !initialized {
fs::create_dir_all(&layout.scheme.scripts)?;
initialized = true;
}

install_script(layout, site_packages, record, &file)?;
}
}
Expand Down
2 changes: 0 additions & 2 deletions crates/uv-interpreter/src/target.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,6 @@ impl Target {
/// Initialize the `--target` directory.
pub fn init(&self) -> std::io::Result<()> {
fs_err::create_dir_all(&self.0)?;
fs_err::create_dir_all(self.0.join("bin"))?;
fs_err::create_dir_all(self.0.join("include"))?;
Ok(())
}

Expand Down

0 comments on commit ad99e3a

Please sign in to comment.