Apply v2 patch for xlswriter

This commit is contained in:
crazywhalecc
2026-04-08 10:04:07 +08:00
parent 30c9a3f7a3
commit 76fc5abfe7
2 changed files with 18 additions and 0 deletions

View File

@@ -16,3 +16,4 @@ ext-xlswriter:
support:
BSD: wip
arg-type: custom
arg-type@windows: '--with-xlswriter'

View File

@@ -4,10 +4,14 @@ declare(strict_types=1);
namespace Package\Extension;
use Package\Target\php;
use StaticPHP\Attribute\Package\BeforeStage;
use StaticPHP\Attribute\Package\CustomPhpConfigureArg;
use StaticPHP\Attribute\Package\Extension;
use StaticPHP\Attribute\PatchDescription;
use StaticPHP\Package\PackageInstaller;
use StaticPHP\Package\PhpExtensionPackage;
use StaticPHP\Util\SourcePatcher;
#[Extension('xlswriter')]
class xlswriter extends PhpExtensionPackage
@@ -22,4 +26,17 @@ class xlswriter extends PhpExtensionPackage
}
return $arg;
}
#[BeforeStage('php', [php::class, 'makeForWindows'], 'ext-xlswriter')]
#[PatchDescription('Fix Windows build: apply win32 patch and add UTF-8 BOM to theme.c')]
public function patchBeforeMakeForWindows(): void
{
// fix windows build with openssl extension duplicate symbol bug
SourcePatcher::patchFile('spc_fix_xlswriter_win32.patch', $this->getSourceDir());
$content = file_get_contents($this->getSourceDir() . '/library/libxlsxwriter/src/theme.c');
$bom = pack('CCC', 0xEF, 0xBB, 0xBF);
if (!str_starts_with($content, $bom)) {
file_put_contents($this->getSourceDir() . '/library/libxlsxwriter/src/theme.c', $bom . $content);
}
}
}