Compare commits

...

7 Commits

Author SHA1 Message Date
Marc
3ce68b64cf Revert "fix libheif" (#1154) 2026-07-08 12:52:28 +07:00
Jerry Ma
9a403ae79e Merge branch 'main' into revert-1153-fix/heif 2026-07-08 13:27:54 +08:00
Jerry Ma
532972337e Enable SQLite column metadata (#1204) 2026-07-07 22:39:33 +08:00
Jan Jakeš
fe1ef6e2e0 Enable SQLite column metadata
Build Unix SQLite with SQLITE_ENABLE_COLUMN_METADATA so the metadata APIs are available on macOS and Linux.

Remove the pdo_sqlite configure override that forced PHP to treat sqlite3_column_table_name() as unavailable, and add sanity checks for both SQLite compile options and PDO column metadata.
2026-07-07 13:11:42 +02:00
Jerry Ma
f2b2af774c pin zstd, proper fix: https://github.com/kjdev/php-ext-zstd/pull/100 (#1195) 2026-06-25 19:06:00 +08:00
henderkes
a78e6fa5f8 pin zstd, proper fix: https://github.com/kjdev/php-ext-zstd/pull/100 2026-06-25 15:39:18 +07:00
Marc
ca3daad350 Revert "fix libheif" 2026-05-22 16:25:09 +07:00
6 changed files with 36 additions and 42 deletions

View File

@@ -333,10 +333,9 @@
}
},
"ext-zstd": {
"type": "git",
"type": "ghtagtar",
"repo": "kjdev/php-ext-zstd",
"path": "php-src/ext/zstd",
"rev": "master",
"url": "https://github.com/kjdev/php-ext-zstd",
"license": {
"type": "file",
"path": "LICENSE"

View File

@@ -1,23 +0,0 @@
<?php
declare(strict_types=1);
namespace SPC\builder\extension;
use SPC\builder\Extension;
use SPC\store\FileSystem;
use SPC\util\CustomExt;
#[CustomExt('pdo_sqlite')]
class pdo_sqlite extends Extension
{
public function patchBeforeConfigure(): bool
{
FileSystem::replaceFileRegex(
SOURCE_PATH . '/php-src/configure',
'/sqlite3_column_table_name=yes/',
'sqlite3_column_table_name=no'
);
return true;
}
}

View File

@@ -11,28 +11,15 @@ trait libheif
{
public function patchBeforeBuild(): bool
{
$patched = false;
if (!str_contains(file_get_contents($this->source_dir . '/CMakeLists.txt'), 'libbrotlienc')) {
FileSystem::replaceFileStr(
$this->source_dir . '/CMakeLists.txt',
'list(APPEND REQUIRES_PRIVATE "libbrotlidec")',
'list(APPEND REQUIRES_PRIVATE "libbrotlidec")' . "\n" . ' list(APPEND REQUIRES_PRIVATE "libbrotlienc")'
);
$patched = true;
return true;
}
// libheif 1.22+ ships a C-incompatible header: `struct heif_bad_pixel`
$heif_properties = $this->source_dir . '/libheif/api/libheif/heif_properties.h';
if (file_exists($heif_properties)
&& str_contains(file_get_contents($heif_properties), 'struct heif_bad_pixel { uint32_t row; uint32_t column; };')
) {
FileSystem::replaceFileStr(
$heif_properties,
'struct heif_bad_pixel { uint32_t row; uint32_t column; };',
'typedef struct heif_bad_pixel { uint32_t row; uint32_t column; } heif_bad_pixel;'
);
$patched = true;
}
return $patched;
return false;
}
protected function build(): void

View File

@@ -10,7 +10,12 @@ trait sqlite
{
protected function build(): void
{
UnixAutoconfExecutor::create($this)->configure()->make();
UnixAutoconfExecutor::create($this)
->appendEnv([
'CFLAGS' => '-DSQLITE_ENABLE_COLUMN_METADATA=1',
])
->configure()
->make();
$this->patchPkgconfPrefix(['sqlite3.pc']);
}
}

View File

@@ -0,0 +1,16 @@
<?php
declare(strict_types=1);
$pdo = new PDO('sqlite::memory:');
$pdo->exec('CREATE TABLE spc_column_metadata_test (id INTEGER)');
$stmt = $pdo->query('SELECT id FROM spc_column_metadata_test');
if ($stmt === false) {
throw new RuntimeException('Failed to query SQLite metadata test table.');
}
$metadata = $stmt->getColumnMeta(0);
if (($metadata['table'] ?? null) !== 'spc_column_metadata_test') {
throw new RuntimeException('PDO SQLite column metadata does not include the origin table.');
}

View File

@@ -0,0 +1,10 @@
<?php
declare(strict_types=1);
$sqlite = new SQLite3(':memory:');
$enabled = $sqlite->querySingle("SELECT sqlite_compileoption_used('ENABLE_COLUMN_METADATA')");
if ((int) $enabled !== 1) {
throw new RuntimeException('SQLite was not built with SQLITE_ENABLE_COLUMN_METADATA.');
}