diff --git a/crates/install-wheel-rs/src/linker.rs b/crates/install-wheel-rs/src/linker.rs index cf7121914..6ceda23a7 100644 --- a/crates/install-wheel-rs/src/linker.rs +++ b/crates/install-wheel-rs/src/linker.rs @@ -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. diff --git a/crates/install-wheel-rs/src/wheel.rs b/crates/install-wheel-rs/src/wheel.rs index 863fdeb1e..3663133da 100644 --- a/crates/install-wheel-rs/src/wheel.rs +++ b/crates/install-wheel-rs/src/wheel.rs @@ -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)?; } } diff --git a/crates/uv-interpreter/src/target.rs b/crates/uv-interpreter/src/target.rs index c20c1b36a..e6519c91e 100644 --- a/crates/uv-interpreter/src/target.rs +++ b/crates/uv-interpreter/src/target.rs @@ -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(()) }