Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
78 commits
Select commit Hold shift + click to select a range
5a0fd40
update libwebp and libxml2
henderkes Dec 1, 2025
7204d27
Update PHP extensions for Linux and Darwin
henderkes Dec 1, 2025
14b822a
don't build avx2 if we don't have it
henderkes Dec 1, 2025
d1041c5
remove openssl source/test dir (4.1gb?!)
henderkes Dec 1, 2025
7f863d1
don't remove dir, just don't build tests
henderkes Dec 1, 2025
b965ffc
don't build extra programs
henderkes Dec 1, 2025
c051a48
don't add -l:libstdc++.a if we're not actually using gcc/clang
henderkes Dec 1, 2025
150d866
revert turning off sse for libwebp, need to check why debian fails bu…
henderkes Dec 1, 2025
22d263c
maybe explicit mavx2?!
henderkes Dec 1, 2025
5b4f4f8
maybe?
henderkes Dec 1, 2025
b844407
update go-xcaddy version automatically
henderkes Dec 1, 2025
719d818
we need to check for structure of pdo_sqlsrv extension
henderkes Dec 2, 2025
98773ee
zig toolchain can always use libc
henderkes Dec 3, 2025
66840a8
update xdebug to use pie sources
henderkes Dec 5, 2025
7bdcda1
gmp can't build with std=c23 (default with gcc 15)
henderkes Dec 5, 2025
6b5f702
ncurses can't build with std=c23 (default with gcc 15)
henderkes Dec 5, 2025
1d5aec0
c17 instead
henderkes Dec 5, 2025
b2182b4
use source extract hook for pdo_sqlsrv
henderkes Dec 5, 2025
47ab5d7
use c17 for extensions as well?
henderkes Dec 5, 2025
dce63d3
we need extensions to explicitly tell which c std they need
henderkes Dec 6, 2025
a54021b
Apply suggestion from @henderkes
henderkes Dec 10, 2025
f0b5e4f
Fix typo in ncurses.php enable-symlinks option (#994)
crazywhalecc Dec 10, 2025
07ea1e2
update libwebp and libxml2 (#982)
henderkes Dec 10, 2025
3c89ce6
Update version to 2.7.10 (#997)
crazywhalecc Dec 10, 2025
acd0e2b
Prepare for skeleton
crazywhalecc Dec 15, 2025
d064e13
the libwebp 1.6.0 bug affects centos 7 too
henderkes Dec 15, 2025
18c5ccf
the libwebp 1.6.0 bug affects centos 7 too (#1004)
henderkes Dec 16, 2025
1707c67
Sort
crazywhalecc Dec 18, 2025
dd5762f
Add lib skeleton command and sort config, spc_mode suuport, etc...
crazywhalecc Dec 18, 2025
9fdfef5
macOS don't need to disable avx2 explicitly (#1007)
crazywhalecc Dec 18, 2025
656a58c
remove source dir after successful build in CI environment
henderkes Dec 18, 2025
0247458
we were installing to wrong dir if source name != lib name
henderkes Dec 18, 2025
ce44e00
@crazywhalecc how to use patch points to delete source dirs?
henderkes Dec 18, 2025
037d224
why does phpstan think this is necessary?
henderkes Dec 18, 2025
e677be7
remove
henderkes Dec 18, 2025
9e051c8
fix: check for link first before checking for is_dir
henderkes Dec 18, 2025
e1a14bb
fix implicit include
henderkes Dec 18, 2025
53f7cde
fix swoole compilation with php 8.5.1
henderkes Dec 18, 2025
6b52000
fix downloader selecting drafts
henderkes Dec 20, 2025
f7ca621
Test
crazywhalecc Dec 26, 2025
8650ce4
Add MACOSX_DEPLOYMENT_TARGET to env.ini (#1009)
crazywhalecc Dec 26, 2025
9a681a9
add mariadb mysqlnd plugins
henderkes Dec 27, 2025
09b89a3
WIP: use system libraries for grpc without building our own grpc lib
henderkes Dec 27, 2025
e952f1c
we don't even need to build grpc library for grpc extension...
henderkes Dec 27, 2025
5ef4623
grpc will fail for php 8.5, it's not updated yet
henderkes Dec 27, 2025
93a3590
factor grpc extension out to ext-grpc, keep library for now, even tho…
henderkes Dec 28, 2025
2f31226
make grpc php 8.5 compatible
henderkes Dec 28, 2025
e7a88f1
enable fat for gmp when next version releases
henderkes Dec 29, 2025
08388c0
force enable tailcall vm with zig
henderkes Dec 29, 2025
7688a55
don't get zig master branch
henderkes Dec 29, 2025
022fdb2
fix no-strip
henderkes Dec 29, 2025
a06cc32
pin libpng to released tags, not git
henderkes Dec 30, 2025
64f7a35
don't need it anymore
henderkes Jan 1, 2026
d1b1949
use OPENSSL_CONF directory for openssl default configuration
henderkes Jan 2, 2026
fff2484
postgresql doesn't build under c23
henderkes Jan 2, 2026
559a290
use little trick to order libargon2 before libsodium
henderkes Jan 2, 2026
890ff47
our memcache patch prevents shared building
henderkes Jan 3, 2026
54001ab
simplify logic a bit
henderkes Jan 3, 2026
1be353f
more concise message
henderkes Jan 3, 2026
76025b9
missing space
henderkes Jan 3, 2026
6bbb3c9
remove -release handling functionality
henderkes Jan 3, 2026
f8b0c2c
add release thing to extension build too
henderkes Jan 3, 2026
94644d3
fix
henderkes Jan 3, 2026
3a17cec
deploy extensions with -release flag too
henderkes Jan 3, 2026
34910d1
add patch point for shared ext build
henderkes Jan 4, 2026
cd2dc5b
Fix nghttp2 and curl build configurations for static linking (#1014)
crazywhalecc Jan 13, 2026
d902e70
fix arm64 builds
henderkes Jan 16, 2026
b09337d
add excimer extension
henderkes Jan 17, 2026
0b863cb
Merge branch 'main' into feat/excimer
henderkes Jan 17, 2026
19f9417
zig now supports -Wl,-exported_symbols_list
henderkes Jan 17, 2026
1e2b401
test excimer
henderkes Jan 17, 2026
ae0217b
add excimer extension (#1018)
henderkes Jan 19, 2026
af75ffa
suggestions, change openssldir
henderkes Jan 19, 2026
6cf4c40
Merge remote-tracking branch 'origin/main' into henderkes-patch-1
henderkes Jan 19, 2026
372760e
Update patch point docs
crazywhalecc Jan 19, 2026
b3c4502
up version
henderkes Jan 19, 2026
1c28f0f
bunch of fixes/changes to make packages build (#1006)
henderkes Jan 19, 2026
cfb8cc9
Merge branch 'main' into v3-feat/skeleton
crazywhalecc Jan 20, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions bin/spc-alpine-docker
Original file line number Diff line number Diff line change
Expand Up @@ -108,8 +108,7 @@ RUN apk update; \
wget \
xz \
gettext-dev \
binutils-gold \
patchelf
binutils-gold

RUN curl -#fSL https://dl.static-php.dev/static-php-cli/bulk/php-8.4.4-cli-linux-\$(uname -m).tar.gz | tar -xz -C /usr/local/bin && \
chmod +x /usr/local/bin/php
Expand Down
5 changes: 0 additions & 5 deletions bin/spc-gnu-docker
Original file line number Diff line number Diff line change
Expand Up @@ -92,11 +92,6 @@ RUN echo "source scl_source enable devtoolset-10" >> /etc/bashrc
RUN source /etc/bashrc
RUN yum install -y which

RUN curl -fsSL -o patchelf.tgz https://github.com/NixOS/patchelf/releases/download/0.18.0/patchelf-0.18.0-$SPC_USE_ARCH.tar.gz && \
mkdir -p /patchelf && \
tar -xzf patchelf.tgz -C /patchelf --strip-components=1 && \
cp /patchelf/bin/patchelf /usr/bin/

RUN curl -o cmake.tgz -#fSL https://github.com/Kitware/CMake/releases/download/v3.31.4/cmake-3.31.4-linux-$SPC_USE_ARCH.tar.gz && \
mkdir /cmake && \
tar -xzf cmake.tgz -C /cmake --strip-components 1
Expand Down
276 changes: 138 additions & 138 deletions config/artifact.json
Original file line number Diff line number Diff line change
@@ -1,135 +1,4 @@
{
"vswhere": {
"binary": {
"windows-x86_64": {
"type": "url",
"url": "https://github.com/microsoft/vswhere/releases/download/3.1.7/vswhere.exe",
"extract": "{pkg_root_path}/bin/vswhere.exe"
}
}
},
"musl-wrapper": {
"source": "https://musl.libc.org/releases/musl-1.2.5.tar.gz"
},
"php-src": {
"source": {
"type": "php-release"
}
},
"php-sdk-binary-tools": {
"binary": {
"windows-x86_64": {
"type": "git",
"rev": "master",
"url": "https://github.com/php/php-sdk-binary-tools.git",
"extract": "{php_sdk_path}"
}
}
},
"go-xcaddy": {
"binary": "custom"
},
"musl-toolchain": {
"binary": {
"linux-x86_64": {
"type": "url",
"url": "https://dl.static-php.dev/static-php-cli/deps/musl-toolchain/x86_64-musl-toolchain.tgz",
"extract": "{pkg_root_path}/musl-toolchain"
},
"linux-aarch64": {
"type": "url",
"url": "https://dl.static-php.dev/static-php-cli/deps/musl-toolchain/aarch64-musl-toolchain.tgz",
"extract": "{pkg_root_path}/musl-toolchain"
}
}
},
"pkg-config": {
"source": "https://dl.static-php.dev/static-php-cli/deps/pkg-config/pkg-config-0.29.2.tar.gz",
"binary": {
"linux-x86_64": {
"type": "ghrel",
"repo": "static-php/static-php-cli-hosted",
"match": "pkg-config-aarch64-linux-musl-1.2.5.txz",
"extract": {
"bin/pkg-config": "{pkg_root_path}/bin/pkg-config"
}
},
"linux-aarch64": {
"type": "ghrel",
"repo": "static-php/static-php-cli-hosted",
"match": "pkg-config-x86_64-linux-musl-1.2.5.txz",
"extract": {
"bin/pkg-config": "{pkg_root_path}/bin/pkg-config"
}
},
"macos-x86_64": {
"type": "ghrel",
"repo": "static-php/static-php-cli-hosted",
"match": "pkg-config-x86_64-darwin.txz",
"extract": {
"bin/pkg-config": "{pkg_root_path}/bin/pkg-config"
}
},
"macos-aarch64": {
"type": "ghrel",
"repo": "static-php/static-php-cli-hosted",
"match": "pkg-config-aarch64-darwin.txz",
"extract": "{pkg_root_path}"
}
}
},
"strawberry-perl": {
"binary": {
"windows-x86_64": {
"type": "url",
"url": "https://github.com/StrawberryPerl/Perl-Dist-Strawberry/releases/download/SP_5380_5361/strawberry-perl-5.38.0.1-64bit-portable.zip",
"extract": "{pkg_root_path}/strawberry-perl"
}
}
},
"upx": {
"binary": {
"linux-x86_64": {
"type": "ghrel",
"repo": "upx/upx",
"match": "upx.+-amd64_linux\\.tar\\.xz",
"extract": {
"upx": "{pkg_root_path}/bin/upx"
}
},
"linux-aarch64": {
"type": "ghrel",
"repo": "upx/upx",
"match": "upx.+-arm64_linux\\.tar\\.xz",
"extract": {
"upx": "{pkg_root_path}/bin/upx"
}
},
"windows-x86_64": {
"type": "ghrel",
"repo": "upx/upx",
"match": "upx.+-win64\\.zip",
"extract": {
"upx.exe": "{pkg_root_path}/bin/upx.exe"
}
}
}
},
"zig": {
"binary": "custom"
},
"nasm": {
"binary": {
"windows-x86_64": {
"type": "url",
"url": "https://dl.static-php.dev/static-php-cli/deps/nasm/nasm-2.16.01-win64.zip",
"extract": {
"nasm.exe": "{php_sdk_path}/bin/nasm.exe",
"ndisasm.exe": "{php_sdk_path}/bin/ndisasm.exe"
}
}
}
},
"amqp": {
"source": {
"type": "url",
Expand Down Expand Up @@ -395,6 +264,9 @@
"repo": "guanzhi/GmSSL"
}
},
"go-xcaddy": {
"binary": "custom"
},
"grpc": {
"binary": "hosted",
"source": {
Expand Down Expand Up @@ -733,13 +605,6 @@
"extract": "php-src/ext/memcached"
}
},
"mimalloc": {
"source": {
"type": "ghtagtar",
"repo": "microsoft/mimalloc",
"match": "v2\\.\\d\\.[^3].*"
}
},
"micro": {
"source": {
"type": "git",
Expand All @@ -748,6 +613,13 @@
"url": "https://github.com/static-php/phpmicro"
}
},
"mimalloc": {
"source": {
"type": "ghtagtar",
"repo": "microsoft/mimalloc",
"match": "v2\\.\\d\\.[^3].*"
}
},
"mongodb": {
"source": {
"type": "ghrel",
Expand All @@ -765,6 +637,35 @@
"extract": "php-src/ext/msgpack"
}
},
"musl-toolchain": {
"binary": {
"linux-x86_64": {
"type": "url",
"url": "https://dl.static-php.dev/static-php-cli/deps/musl-toolchain/x86_64-musl-toolchain.tgz",
"extract": "{pkg_root_path}/musl-toolchain"
},
"linux-aarch64": {
"type": "url",
"url": "https://dl.static-php.dev/static-php-cli/deps/musl-toolchain/aarch64-musl-toolchain.tgz",
"extract": "{pkg_root_path}/musl-toolchain"
}
}
},
"musl-wrapper": {
"source": "https://musl.libc.org/releases/musl-1.2.5.tar.gz"
},
"nasm": {
"binary": {
"windows-x86_64": {
"type": "url",
"url": "https://dl.static-php.dev/static-php-cli/deps/nasm/nasm-2.16.01-win64.zip",
"extract": {
"nasm.exe": "{php_sdk_path}/bin/nasm.exe",
"ndisasm.exe": "{php_sdk_path}/bin/ndisasm.exe"
}
}
}
},
"ncurses": {
"binary": "hosted",
"source": {
Expand Down Expand Up @@ -850,6 +751,56 @@
"extract": "php-src/ext/pdo_sqlsrv"
}
},
"php-sdk-binary-tools": {
"binary": {
"windows-x86_64": {
"type": "git",
"rev": "master",
"url": "https://github.com/php/php-sdk-binary-tools.git",
"extract": "{php_sdk_path}"
}
}
},
"php-src": {
"source": {
"type": "php-release"
}
},
"pkg-config": {
"binary": {
"linux-x86_64": {
"type": "ghrel",
"repo": "static-php/static-php-cli-hosted",
"match": "pkg-config-aarch64-linux-musl-1.2.5.txz",
"extract": {
"bin/pkg-config": "{pkg_root_path}/bin/pkg-config"
}
},
"linux-aarch64": {
"type": "ghrel",
"repo": "static-php/static-php-cli-hosted",
"match": "pkg-config-x86_64-linux-musl-1.2.5.txz",
"extract": {
"bin/pkg-config": "{pkg_root_path}/bin/pkg-config"
}
},
"macos-x86_64": {
"type": "ghrel",
"repo": "static-php/static-php-cli-hosted",
"match": "pkg-config-x86_64-darwin.txz",
"extract": {
"bin/pkg-config": "{pkg_root_path}/bin/pkg-config"
}
},
"macos-aarch64": {
"type": "ghrel",
"repo": "static-php/static-php-cli-hosted",
"match": "pkg-config-aarch64-darwin.txz",
"extract": "{pkg_root_path}"
}
},
"source": "https://dl.static-php.dev/static-php-cli/deps/pkg-config/pkg-config-0.29.2.tar.gz"
},
"postgresql": {
"source": {
"type": "ghtagtar",
Expand Down Expand Up @@ -950,6 +901,15 @@
"extract": "php-src/ext/sqlsrv"
}
},
"strawberry-perl": {
"binary": {
"windows-x86_64": {
"type": "url",
"url": "https://github.com/StrawberryPerl/Perl-Dist-Strawberry/releases/download/SP_5380_5361/strawberry-perl-5.38.0.1-64bit-portable.zip",
"extract": "{pkg_root_path}/strawberry-perl"
}
}
},
"swoole": {
"source": {
"type": "ghtar",
Expand Down Expand Up @@ -982,6 +942,43 @@
"version": "2.3.12"
}
},
"upx": {
"binary": {
"linux-x86_64": {
"type": "ghrel",
"repo": "upx/upx",
"match": "upx.+-amd64_linux\\.tar\\.xz",
"extract": {
"upx": "{pkg_root_path}/bin/upx"
}
},
"linux-aarch64": {
"type": "ghrel",
"repo": "upx/upx",
"match": "upx.+-arm64_linux\\.tar\\.xz",
"extract": {
"upx": "{pkg_root_path}/bin/upx"
}
},
"windows-x86_64": {
"type": "ghrel",
"repo": "upx/upx",
"match": "upx.+-win64\\.zip",
"extract": {
"upx.exe": "{pkg_root_path}/bin/upx.exe"
}
}
}
},
"vswhere": {
"binary": {
"windows-x86_64": {
"type": "url",
"url": "https://github.com/microsoft/vswhere/releases/download/3.1.7/vswhere.exe",
"extract": "{pkg_root_path}/bin/vswhere.exe"
}
}
},
"watcher": {
"source": {
"type": "ghtar",
Expand Down Expand Up @@ -1041,6 +1038,9 @@
"extract": "php-src/ext/yaml"
}
},
"zig": {
"binary": "custom"
},
"zlib": {
"binary": "hosted",
"source": {
Expand Down
15 changes: 10 additions & 5 deletions config/env.ini
Original file line number Diff line number Diff line change
Expand Up @@ -122,17 +122,20 @@ SPC_CMD_VAR_PHP_MAKE_EXTRA_CFLAGS="-g -fstack-protector-strong -fno-ident -fPIE
; EXTRA_LDFLAGS for `make` php, can use -release to set a soname for libphp.so
SPC_CMD_VAR_PHP_MAKE_EXTRA_LDFLAGS=""

; optional, path to openssl conf. This affects where openssl will look for the default CA.
; default on Debian/Alpine: /etc/ssl, default on RHEL: /etc/pki/tls
OPENSSLDIR=""

[macos]
; build target: macho or macho (possibly we could support macho-universal in the future)
; Currently we do not support universal and cross-compilation for macOS.
SPC_TARGET=native-macos
; compiler environments
CC=${SPC_LINUX_DEFAULT_CC}
CXX=${SPC_LINUX_DEFAULT_CXX}
AR=${SPC_LINUX_DEFAULT_AR}
LD=${SPC_LINUX_DEFAULT_LD}
CC=clang
CXX=clang++
AR=ar
LD=ld
; default compiler flags, used in CMake toolchain file, openssl and pkg-config build
; this will be added to all CFLAGS and CXXFLAGS for the library builds
SPC_DEFAULT_C_FLAGS="--target=${MAC_ARCH}-apple-darwin -Os"
SPC_DEFAULT_CXX_FLAGS="--target=${MAC_ARCH}-apple-darwin -Os"
SPC_DEFAULT_LD_FLAGS=""
Expand All @@ -150,3 +153,5 @@ SPC_CMD_PREFIX_PHP_CONFIGURE="./configure --prefix= --with-valgrind=no --enable-
SPC_CMD_VAR_PHP_EMBED_TYPE="static"
; EXTRA_CFLAGS for `configure` and `make` php
SPC_CMD_VAR_PHP_MAKE_EXTRA_CFLAGS="-g -fstack-protector-strong -fpic -fpie -Werror=unknown-warning-option ${SPC_DEFAULT_C_FLAGS}"
; minimum compatible macOS version (LLVM vars, availability not guaranteed)
MACOSX_DEPLOYMENT_TARGET=12.0
Loading