Skip to content

Commit 94969d6

Browse files
authored
Merge pull request #936 from jingjingxyk/build_native_php
Build native php
2 parents fdbcdff + 636cf04 commit 94969d6

18 files changed

+146
-123
lines changed

.github/workflows/auto-cache-pool-tarball.yml

+13-4
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,11 @@ on:
55
pull_request:
66
schedule:
77
- cron: '0 0 */6 * *'
8+
workflow_dispatch:
89

910
jobs:
1011
auto-cache-pool:
11-
if: 1
12+
if: ${{ (github.repository_owner == 'swoole') }}
1213
runs-on: ubuntu-latest
1314
steps:
1415
- uses: actions/checkout@v4
@@ -70,7 +71,9 @@ jobs:
7071
set -x
7172
mkdir -p pool/lib
7273
mkdir -p pool/ext
74+
mkdir -p pool/php-tar
7375
mkdir -p bin/runtime
76+
mkdir -p bin/var
7477
if [ ! -f bin/runtime/php ] ; then
7578
bash setup-php-runtime.sh
7679
fi
@@ -84,11 +87,16 @@ jobs:
8487
composer install --no-interaction --no-autoloader --no-scripts --profile --no-dev
8588
composer dump-autoload --optimize --profile --no-dev
8689
87-
php prepare.php +inotify --show-tarball-hash=1
88-
php prepare.php @macos --show-tarball-hash=1
90+
php prepare.php +inotify +apcu +ds +ssh2 +uuid +protobuf +gettext --with-libavif=1 --show-tarball-hash=1
91+
php prepare.php +apcu +ds +ssh2 +uuid +protobuf +gettext --with-libavif=1 --show-tarball-hash=1 @macos
92+
# php sapi/scripts/download-php-src-archive.php
93+
php prepare.php --show-tarball-hash=1 --with-php-version=8.1.32
94+
php prepare.php --show-tarball-hash=1 --with-php-version=8.2.28
95+
php prepare.php --show-tarball-hash=1 --with-php-version=8.3.19
96+
php prepare.php --show-tarball-hash=1 --with-php-version=8.4.5
8997
9098
cd ${{ github.workspace }}/pool/
91-
zip -9 -r ${WORK_DIR}/all-deps.zip ext lib
99+
zip -9 -r ${WORK_DIR}/all-deps.zip ext lib php-tar
92100
HASH=$(sha256sum ${WORK_DIR}/all-deps.zip | awk '{print $1}')
93101
echo " all-deps.zip sha265: ${HASH} "
94102
echo -n ${HASH} > ${WORK_DIR}/all-deps.zip.sha256sum
@@ -98,6 +106,7 @@ jobs:
98106
run: |
99107
ls -A pool/lib/
100108
ls -A pool/ext/
109+
ls -A pool/php-tar/
101110
102111
- name: production artifacts
103112
uses: actions/upload-artifact@v4

.github/workflows/build-alpine-builder-container.sh

+36
Original file line numberDiff line numberDiff line change
@@ -83,5 +83,41 @@ linux/ppc64le
8383
linux/s390x
8484
EOF
8585

86+
# 3.20 开始支持 linux/riscv64
8687
# 龙芯架构
8788
# https://cr.loongnix.cn/search
89+
90+
: <<'EOF'
91+
92+
# docker.io/tonistiigi/binfmt:latest
93+
"supported": [
94+
"linux/amd64",
95+
"linux/amd64/v2",
96+
"linux/amd64/v3",
97+
"linux/arm64",
98+
"linux/riscv64",
99+
"linux/ppc64le",
100+
"linux/s390x",
101+
"linux/386",
102+
"linux/mips64le",
103+
"linux/mips64",
104+
"linux/loong64",
105+
"linux/arm/v7",
106+
"linux/arm/v6"
107+
],
108+
"emulators": [
109+
"llvm-16-runtime.binfmt",
110+
"llvm-17-runtime.binfmt",
111+
"llvm-18-runtime.binfmt",
112+
"python3.12",
113+
"qemu-aarch64",
114+
"qemu-arm",
115+
"qemu-loongarch64",
116+
"qemu-mips64",
117+
"qemu-mips64el",
118+
"qemu-ppc64le",
119+
"qemu-riscv64",
120+
"qemu-s390x"
121+
]
122+
123+
EOF

.github/workflows/linux-aarch64.yml

+5-5
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ name: build-php-cli-linux-aarch64
33
on: [ push, pull_request ]
44

55
env:
6-
BUILD_PHP_VERSION: 8.2.27
6+
BUILD_PHP_VERSION: 8.2.28
77

88
jobs:
99
linux-aarch64:
@@ -12,10 +12,10 @@ jobs:
1212
strategy:
1313
matrix:
1414
php-version:
15-
- "8.2.27"
16-
- "8.1.31"
17-
- "8.3.15"
18-
- "8.4.2"
15+
- "8.2.28"
16+
- "8.1.32"
17+
- "8.3.19"
18+
- "8.4.5"
1919
steps:
2020
- uses: actions/checkout@v4
2121
- name: Show Environment Info

.github/workflows/linux-riscv64.yml

+9
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,15 @@ jobs:
7676
ls -A pool/lib/
7777
ls -A /usr/local/swoole-cli/
7878
79+
- name: Set up QEMU
80+
# Add support for more platforms with QEMU (optional)
81+
# https://github.com/docker/setup-qemu-action
82+
uses: docker/setup-qemu-action@v3
83+
-
84+
name: Set up Docker Buildx
85+
uses: docker/setup-buildx-action@v3
86+
# 例子: https://github.com/tuna/tunasync-scripts/blob/master/.github/workflows/docker-images.yml#L102
87+
7988
- name: Prepare QEMU
8089
run: |
8190
set -x

.github/workflows/linux-x86_64.yml

+10-9
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,13 @@ on:
1818
php_version:
1919
required: true
2020
description: "定制构建选项: 指定 PHP 版本(版本号大于等于8.1)"
21-
default: '--with-php-version=8.2.27'
21+
default: '--with-php-version=8.2.28'
2222
type: choice
2323
options:
24-
- '--with-php-version=8.1.31'
25-
- '--with-php-version=8.2.27'
26-
- '--with-php-version=8.3.15'
24+
- '--with-php-version=8.1.32'
25+
- '--with-php-version=8.2.28'
26+
- '--with-php-version=8.3.19'
27+
- '--with-php-version=8.4.5'
2728
build_type:
2829
required: true
2930
description: "定制构建选项: 指定构建类型"
@@ -39,7 +40,7 @@ on:
3940
type: string
4041

4142
env:
42-
BUILD_PHP_VERSION: 8.2.27
43+
BUILD_PHP_VERSION: 8.2.28
4344

4445
jobs:
4546
linux-x86_64:
@@ -48,10 +49,10 @@ jobs:
4849
strategy:
4950
matrix:
5051
php-version:
51-
- "8.2.27"
52-
- "8.1.31"
53-
- "8.3.15"
54-
- "8.4.2"
52+
- "8.2.28"
53+
- "8.1.32"
54+
- "8.3.19"
55+
- "8.4.5"
5556
steps:
5657
- uses: actions/checkout@v4
5758
- name: Show Environment Info

.github/workflows/macos-aarch64.yml

+5-5
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ name: build-php-cli-macos-aarch64
33
on: [ push, pull_request ]
44

55
env:
6-
BUILD_PHP_VERSION: 8.2.27
6+
BUILD_PHP_VERSION: 8.2.28
77

88
jobs:
99
macos-aarch64:
@@ -17,10 +17,10 @@ jobs:
1717
strategy:
1818
matrix:
1919
php-version:
20-
- "8.2.27"
21-
- "8.1.31"
22-
- "8.3.15"
23-
- "8.4.2"
20+
- "8.2.28"
21+
- "8.1.32"
22+
- "8.3.19"
23+
- "8.4.5"
2424

2525
steps:
2626
- uses: actions/checkout@v4

.github/workflows/macos-x86_64.yml

+5-5
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ on:
55
pull_request:
66

77
env:
8-
BUILD_PHP_VERSION: 8.2.27
8+
BUILD_PHP_VERSION: 8.2.28
99

1010
jobs:
1111
macos-x86_64:
@@ -19,10 +19,10 @@ jobs:
1919
strategy:
2020
matrix:
2121
php-version:
22-
- "8.2.27"
23-
- "8.1.31"
24-
- "8.3.15"
25-
- "8.4.2"
22+
- "8.2.28"
23+
- "8.1.32"
24+
- "8.3.19"
25+
- "8.4.5"
2626
steps:
2727
- uses: actions/checkout@v4
2828
- name: Show Environment Info

.github/workflows/windows-cygwin.yml

+5-5
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ on:
55
pull_request:
66

77
env:
8-
BUILD_PHP_VERSION: 8.2.27
8+
BUILD_PHP_VERSION: 8.2.28
99

1010
jobs:
1111
windows-cygwin:
@@ -14,10 +14,10 @@ jobs:
1414
strategy:
1515
matrix:
1616
php-version:
17-
- "8.2.27"
18-
- "8.1.31"
19-
- "8.3.15"
20-
- "8.4.2"
17+
- "8.2.28"
18+
- "8.1.32"
19+
- "8.3.19"
20+
- "8.4.5"
2121
steps:
2222
- name: Show Environment Info
2323
shell: cmd

sapi/scripts/cygwin/cygwin-config-ext.sh

+21-33
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,9 @@ __PROJECT__=$(
1111
)
1212
cd ${__PROJECT__}
1313

14+
1415
PHP_VERSION='8.2.27'
15-
SWOOLE_VERSION='v6.0.0'
16+
SWOOLE_VERSION='v6.0.1'
1617
X_PHP_VERSION='8.2'
1718

1819
while [ $# -gt 0 ]; do
@@ -47,43 +48,30 @@ mkdir -p ${EXT_TEMP_CACHE_DIR}
4748
test -d ${WORK_TEMP_DIR}/ext/ && rm -rf ${WORK_TEMP_DIR}/ext/
4849
mkdir -p ${WORK_TEMP_DIR}/ext/
4950

50-
cd ${__PROJECT__}/pool/ext
51-
if [ ! -f redis-${REDIS_VERSION}.tgz ]; then
52-
curl -fSLo ${EXT_TEMP_CACHE_DIR}/redis-${REDIS_VERSION}.tgz https://pecl.php.net/get/redis-${REDIS_VERSION}.tgz
53-
mv ${EXT_TEMP_CACHE_DIR}/redis-${REDIS_VERSION}.tgz ${__PROJECT__}/pool/ext
54-
fi
55-
mkdir -p ${WORK_TEMP_DIR}/ext/redis/
56-
tar --strip-components=1 -C ${WORK_TEMP_DIR}/ext/redis/ -xf redis-${REDIS_VERSION}.tgz
51+
download_and_extract() {
52+
local EXT_NAME=$1
53+
local EXT_VERSION=$2
54+
local EXT_URL="https://pecl.php.net/get/${EXT_NAME}-${EXT_VERSION}.tgz"
5755

58-
: <<'EOF'
59-
# mongodb 扩展 不支持 cygwin 环境下构建
60-
# 详见: https://github.com/mongodb/mongo-php-driver/issues/1381
56+
cd ${__PROJECT__}/pool/ext
57+
if [ ! -f ${EXT_NAME}-${EXT_VERSION}.tgz ]; then
58+
curl -fSLo ${EXT_TEMP_CACHE_DIR}/${EXT_NAME}-${EXT_VERSION}.tgz ${EXT_URL}
59+
mv ${EXT_TEMP_CACHE_DIR}/${EXT_NAME}-${EXT_VERSION}.tgz ${__PROJECT__}/pool/ext
60+
fi
6161

62-
cd ${__PROJECT__}/pool/ext
63-
if [ ! -f mongodb-${MONGODB_VERSION}.tgz ]; then
64-
curl -fSLo ${EXT_TEMP_CACHE_DIR}/mongodb-${MONGODB_VERSION}.tgz https://pecl.php.net/get/mongodb-${MONGODB_VERSION}.tgz
65-
mv ${EXT_TEMP_CACHE_DIR}/redis-${REDIS_VERSION}.tgz ${__PROJECT__}/pool/ext
66-
fi
67-
mkdir -p ${WORK_TEMP_DIR}/ext/mongodb/
68-
tar --strip-components=1 -C ${WORK_TEMP_DIR}/ext/mongodb/ -xf redis-${REDIS_VERSION}.tgz
62+
mkdir -p ${WORK_TEMP_DIR}/ext/${EXT_NAME}/
63+
tar --strip-components=1 -C ${WORK_TEMP_DIR}/ext/${EXT_NAME}/ -xf ${EXT_NAME}-${EXT_VERSION}.tgz
64+
}
6965

70-
EOF
66+
# Download and extract extensions
67+
download_and_extract "redis" ${REDIS_VERSION}
7168

72-
cd ${__PROJECT__}/pool/ext
73-
if [ ! -f yaml-${YAML_VERSION}.tgz ]; then
74-
curl -fSLo ${EXT_TEMP_CACHE_DIR}/yaml-${YAML_VERSION}.tgz https://pecl.php.net/get/yaml-${YAML_VERSION}.tgz
75-
mv ${EXT_TEMP_CACHE_DIR}/yaml-${YAML_VERSION}.tgz ${__PROJECT__}/pool/ext
76-
fi
77-
mkdir -p ${WORK_TEMP_DIR}/ext/yaml/
78-
tar --strip-components=1 -C ${WORK_TEMP_DIR}/ext/yaml/ -xf yaml-${YAML_VERSION}.tgz
69+
# mongodb 扩展 不支持 cygwin 环境下构建
70+
# 详见: https://github.com/mongodb/mongo-php-driver/issues/1381
71+
# download_and_extract "mongodb" ${MONGODB_VERSION}
7972

80-
cd ${__PROJECT__}/pool/ext
81-
if [ ! -f imagick-${IMAGICK_VERSION}.tgz ]; then
82-
curl -fSLo ${EXT_TEMP_CACHE_DIR}/imagick-${IMAGICK_VERSION}.tgz https://pecl.php.net/get/imagick-${IMAGICK_VERSION}.tgz
83-
mv ${EXT_TEMP_CACHE_DIR}/imagick-${IMAGICK_VERSION}.tgz ${__PROJECT__}/pool/ext
84-
fi
85-
mkdir -p ${WORK_TEMP_DIR}/ext/imagick/
86-
tar --strip-components=1 -C ${WORK_TEMP_DIR}/ext/imagick/ -xf imagick-${IMAGICK_VERSION}.tgz
73+
download_and_extract "yaml" ${YAML_VERSION}
74+
download_and_extract "imagick" ${IMAGICK_VERSION}
8775

8876
cd ${__PROJECT__}/pool/ext
8977
if [ ! -f swoole-${SWOOLE_VERSION}.tgz ]; then

sapi/scripts/download-php-src-archive.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
$poject_dir = realpath(__DIR__ . '/../../');
44

55
# $php_version_tag = trim(file_get_contents($poject_dir . '/sapi/PHP-VERSION.conf'));
6-
$php_version_tag = '8.2.23';
6+
$php_version_tag = '8.2.28';
77
$php_source_folder = $poject_dir . "/var/php-{$php_version_tag}";
88
$php_archive_file = $poject_dir . "/pool/php-tar/php-{$php_version_tag}.tar.gz";
9-
$php_archive_file_sha256sum = '9c81202e6397d973c89d162e30ab6fe6689dea9cbbb235be5a5366707a38b649';
9+
$php_archive_file_sha256sum = 'c1fbad2787ec3e27bf334cb94b2590f47c10f49b5ea1192165a3e91afe838832';
1010
$download_dir = dirname($php_archive_file);
1111
$download_php_counter = 0;
1212

sapi/src/builder/enabled_extensions.php

+4-4
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,12 @@
3737
'yaml',
3838
'imagick',
3939
'mongodb',
40-
//'gettext',
40+
'gettext',
4141
'uuid',
42-
//'phpy'
43-
'xlswriter',
4442
'apcu',
4543
'ds',
4644
'ssh2',
47-
'pgsql'
45+
'pgsql',
46+
'xlswriter',
47+
//'phpy'
4848
];

sapi/src/builder/extension/phpy.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
# $options .= ' --with-python-version=3.12';
1212
# $options .= ' --with-python-dir=/opt/anaconda3';
1313

14-
$tag = 'v1.0.4';
14+
$tag = 'v1.0.11';
1515

1616

1717
$python3_prefix = PYTHON3_PREFIX;
@@ -39,7 +39,7 @@
3939
git clone -b main --depth=1 https://github.com/swoole/phpy.git
4040
EOF
4141
)
42-
//->withPeclVersion('1.0.8')
42+
//->withPeclVersion('1.0.11')
4343
->withDependentExtensions(...$dependentExtensions)
4444
->withDependentLibraries(...$dependentLibraries);
4545
$p->addExtension($ext);

sapi/src/builder/extension/swoole.php

+2
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,15 @@
55

66
return function (Preprocessor $p) {
77

8+
89
$options = [];
910

1011
$dependentLibraries = ['curl', 'openssl', 'cares', 'zlib', 'brotli', 'nghttp2', 'sqlite3', 'unix_odbc', 'pgsql', 'libzstd'];
1112
$dependentExtensions = ['curl', 'openssl', 'sockets', 'mysqlnd', 'pdo'];
1213

1314
// v5.1.x 不支持 PHP 8.4
1415
// swoole 支持计划 https://wiki.swoole.com/zh-cn/#/version/supported?id=%e6%94%af%e6%8c%81%e8%ae%a1%e5%88%92
16+
1517
$swoole_tag = 'v6.0.1';
1618
$file = "swoole-{$swoole_tag}.tar.gz";
1719

0 commit comments

Comments
 (0)