mirror of
https://github.com/astral-sh/uv.git
synced 2025-08-04 19:08:04 +00:00
Create --target
directories lazily (#3274)
## Summary Based on feedback in https://github.com/astral-sh/uv/pull/3257#issuecomment-2078560574.
This commit is contained in:
parent
1a4f7de831
commit
ad99e3af63
3 changed files with 17 additions and 5 deletions
|
@ -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.
|
||||
|
|
|
@ -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?;
|
||||
|
||||
|
@ -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)?;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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(())
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue