From ae6c32e918e72d3ebaf1302e9ed0c1be6ee36627 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sat, 4 Jul 2026 22:43:31 +0900 Subject: fix(composer-repository): use create_packages for lazy metadata-url packages load_async_packages (the v2 metadata-url/packagist protocol path) called a separate create_packages_static helper instead of the instance method create_packages. PHP has a single createPackages method used everywhere, so this duplicate silently skipped the notification-url injection (and dist-mirror/transport-options setup) that create_packages performs. Every package resolved via the lazy provider path ended up missing notification-url in composer.lock/installed.json. Removed the now-dead duplicate. --- .../shirabe/src/repository/composer_repository.rs | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) (limited to 'crates/shirabe/src') diff --git a/crates/shirabe/src/repository/composer_repository.rs b/crates/shirabe/src/repository/composer_repository.rs index baf5768..2de6ad0 100644 --- a/crates/shirabe/src/repository/composer_repository.rs +++ b/crates/shirabe/src/repository/composer_repository.rs @@ -396,7 +396,7 @@ impl ComposerRepository { let flat: Vec> = partial.into_values().flatten().collect(); return self - .create_packages_flat(flat, Some("packages.json inline packages".to_string())); + .create_packages(flat, Some("packages.json inline packages".to_string())); } return Err(LogicException { @@ -1564,7 +1564,7 @@ impl ComposerRepository { // load acceptable packages in the providers let versions_to_load_vec: Vec> = versions_to_load.values().cloned().collect(); - let loaded_packages = self.create_packages_flat(versions_to_load_vec, packages_source)?; + let loaded_packages = self.create_packages(versions_to_load_vec, packages_source)?; let uids: Vec = versions_to_load.keys().cloned().collect(); let self_handle = self.self_handle(); @@ -1600,7 +1600,7 @@ impl ComposerRepository { "root file ({})", Url::sanitize(self.get_packages_json_url()) ); - for package in self.create_packages_flat(repo_data, Some(source))? { + for package in self.create_packages(repo_data, Some(source))? { self.add_package(package); } Ok(()) @@ -1842,7 +1842,7 @@ impl ComposerRepository { } let loaded_packages: Vec = - ComposerRepository::create_packages_static(versions_to_load, packages_source)?; + self.create_packages(versions_to_load, packages_source)?; let self_handle = self.self_handle(); for package in loaded_packages.into_iter() { if let Some(h) = self_handle.as_ref() { @@ -2571,7 +2571,7 @@ impl ComposerRepository { Ok(packages) } - fn create_packages_flat( + fn create_packages( &mut self, packages: Vec>, source: Option, @@ -2645,17 +2645,6 @@ impl ComposerRepository { }) } - fn create_packages_static( - packages: Vec>, - _source: Option, - ) -> anyhow::Result> { - if packages.is_empty() { - return Ok(vec![]); - } - let loader = ArrayLoader::new(Some(VersionParser::new()), true); - Ok(loader.load_packages(packages)?.into_iter().collect()) - } - fn fetch_file( &mut self, filename: &str, -- cgit v1.3.1