From 3a575f0bf7f1a6487beef0fd69f10df76a38f8e7 Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Mon, 26 Jan 2026 00:50:39 +0800 Subject: [PATCH 1/4] Use yml instead of yaml (sync with craft) --- config/{artifact.yaml => artifact.yml} | 0 config/{pkg.lib.yaml => pkg.lib.yml} | 0 spc.registry.json | 4 ++-- 3 files changed, 2 insertions(+), 2 deletions(-) rename config/{artifact.yaml => artifact.yml} (100%) rename config/{pkg.lib.yaml => pkg.lib.yml} (100%) diff --git a/config/artifact.yaml b/config/artifact.yml similarity index 100% rename from config/artifact.yaml rename to config/artifact.yml diff --git a/config/pkg.lib.yaml b/config/pkg.lib.yml similarity index 100% rename from config/pkg.lib.yaml rename to config/pkg.lib.yml diff --git a/spc.registry.json b/spc.registry.json index 3ced5656..0e4720aa 100644 --- a/spc.registry.json +++ b/spc.registry.json @@ -12,13 +12,13 @@ }, "config": [ "config/pkg.ext.json", - "config/pkg.lib.yaml", + "config/pkg.lib.yml", "config/pkg.target.json" ] }, "artifact": { "config": [ - "config/artifact.yaml" + "config/artifact.yml" ], "psr-4": { "Package\\Artifact": "src/Package/Artifact" From 51415fb6bf1771a72687028c4759918f90925add Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Mon, 26 Jan 2026 00:50:53 +0800 Subject: [PATCH 2/4] Use shorter summary json file name --- src/StaticPHP/Util/LicenseDumper.php | 32 ++++++++++++++-------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/StaticPHP/Util/LicenseDumper.php b/src/StaticPHP/Util/LicenseDumper.php index 57fc3aec..f45c395a 100644 --- a/src/StaticPHP/Util/LicenseDumper.php +++ b/src/StaticPHP/Util/LicenseDumper.php @@ -63,7 +63,7 @@ class LicenseDumper } } - // Generate LICENSE-SUMMARY.json (read-modify-write) + // Generate SUMMARY.json (read-modify-write) $this->generateSummary($target_dir, $license_summary); logger()->info("Successfully dumped {$dumped_count} license(s) to: {$target_dir}"); @@ -190,7 +190,7 @@ class LicenseDumper } /** - * Generate LICENSE-SUMMARY.json file with read-modify-write support. + * Generate SUMMARY.json file with read-modify-write support. * * @param string $target_dir Target directory * @param array $license_summary License summary data (license_type => [artifacts]) @@ -202,14 +202,14 @@ class LicenseDumper return; } - $summary_file = "{$target_dir}/LICENSE-SUMMARY.json"; + $summary_file = "{$target_dir}/SUMMARY.json"; // Read existing summary if exists $existing_data = []; if (file_exists($summary_file)) { $content = file_get_contents($summary_file); $existing_data = json_decode($content, true) ?? []; - logger()->debug('Loaded existing LICENSE-SUMMARY.json'); + logger()->debug('Loaded existing SUMMARY.json'); } // Initialize structure @@ -217,7 +217,7 @@ class LicenseDumper $existing_data['artifacts'] = []; } if (!isset($existing_data['summary'])) { - $existing_data['summary'] = ['license_types' => []]; + $existing_data['summary'] = ['license-types' => []]; } // Merge new license information @@ -226,30 +226,30 @@ class LicenseDumper // Add/update artifact info $existing_data['artifacts'][$artifact_name] = [ 'license' => $license_type, - 'dumped_at' => date('Y-m-d H:i:s'), + 'dumped-at' => date('Y-m-d H:i:s'), ]; // Update license_types summary - if (!isset($existing_data['summary']['license_types'][$license_type])) { - $existing_data['summary']['license_types'][$license_type] = []; + if (!isset($existing_data['summary']['license-types'][$license_type])) { + $existing_data['summary']['license-types'][$license_type] = []; } - if (!in_array($artifact_name, $existing_data['summary']['license_types'][$license_type])) { - $existing_data['summary']['license_types'][$license_type][] = $artifact_name; + if (!in_array($artifact_name, $existing_data['summary']['license-types'][$license_type])) { + $existing_data['summary']['license-types'][$license_type][] = $artifact_name; } } } // Sort license types and artifacts - ksort($existing_data['summary']['license_types']); - foreach ($existing_data['summary']['license_types'] as &$artifacts) { + ksort($existing_data['summary']['license-types']); + foreach ($existing_data['summary']['license-types'] as &$artifacts) { sort($artifacts); } ksort($existing_data['artifacts']); // Update totals - $existing_data['summary']['total_artifacts'] = count($existing_data['artifacts']); - $existing_data['summary']['total_license_types'] = count($existing_data['summary']['license_types']); - $existing_data['summary']['last_updated'] = date('Y-m-d H:i:s'); + $existing_data['summary']['total-artifacts'] = count($existing_data['artifacts']); + $existing_data['summary']['total-license-types'] = count($existing_data['summary']['license-types']); + $existing_data['summary']['last-updated'] = date('Y-m-d H:i:s'); // Write JSON file file_put_contents( @@ -257,6 +257,6 @@ class LicenseDumper json_encode($existing_data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE) ); - logger()->info('Generated LICENSE-SUMMARY.json with ' . $existing_data['summary']['total_artifacts'] . ' artifact(s)'); + logger()->info('Generated SUMMARY.json with ' . $existing_data['summary']['total-artifacts'] . ' artifact(s)'); } } From 0d4cde79fac478a460c66fe181c8aa32c65d3546 Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Tue, 3 Feb 2026 20:23:32 +0800 Subject: [PATCH 3/4] Add download options for build:libs command --- src/StaticPHP/Command/BuildLibsCommand.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/StaticPHP/Command/BuildLibsCommand.php b/src/StaticPHP/Command/BuildLibsCommand.php index a415ca3e..a637fe7c 100644 --- a/src/StaticPHP/Command/BuildLibsCommand.php +++ b/src/StaticPHP/Command/BuildLibsCommand.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace StaticPHP\Command; +use StaticPHP\Artifact\DownloaderOptions; use StaticPHP\Package\PackageInstaller; use StaticPHP\Util\V2CompatLayer; use Symfony\Component\Console\Attribute\AsCommand; @@ -23,6 +24,8 @@ class BuildLibsCommand extends BaseCommand new InputOption('no-download', null, null, 'Skip downloading artifacts (use existing cached files)'), ...V2CompatLayer::getLegacyBuildOptions(), ]); + // Downloader options (with 'dl-' prefix to avoid conflicts) + $this->getDefinition()->addOptions(DownloaderOptions::getConsoleOptions('dl')); } public function handle(): int From a02f287d9706cffce5d194c19d20d0daf4c0a452 Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Tue, 3 Feb 2026 20:23:59 +0800 Subject: [PATCH 4/4] Fix macOS wrong patch file directory --- src/Package/Library/curl.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Package/Library/curl.php b/src/Package/Library/curl.php index a2856ad4..283c765a 100644 --- a/src/Package/Library/curl.php +++ b/src/Package/Library/curl.php @@ -22,9 +22,9 @@ class curl { shell()->cd($lib->getSourceDir())->exec('sed -i.save s@\${CMAKE_C_IMPLICIT_LINK_LIBRARIES}@@ ./CMakeLists.txt'); if (SystemTarget::getTargetOS() === 'Darwin') { - FileSystem::replaceFileRegex("{$lib->getSourceDir()}/curl/CMakeLists.txt", '/NOT COREFOUNDATION_FRAMEWORK/m', 'FALSE'); - FileSystem::replaceFileRegex("{$lib->getSourceDir()}/curl/CMakeLists.txt", '/NOT SYSTEMCONFIGURATION_FRAMEWORK/m', 'FALSE'); - FileSystem::replaceFileRegex("{$lib->getSourceDir()}/curl/CMakeLists.txt", '/NOT CORESERVICES_FRAMEWORK/m', 'FALSE'); + FileSystem::replaceFileRegex("{$lib->getSourceDir()}/CMakeLists.txt", '/NOT COREFOUNDATION_FRAMEWORK/m', 'FALSE'); + FileSystem::replaceFileRegex("{$lib->getSourceDir()}/CMakeLists.txt", '/NOT SYSTEMCONFIGURATION_FRAMEWORK/m', 'FALSE'); + FileSystem::replaceFileRegex("{$lib->getSourceDir()}/CMakeLists.txt", '/NOT CORESERVICES_FRAMEWORK/m', 'FALSE'); } return true; }