Skip to content

Commit 45ba8ce

Browse files
committed
Make PHP version configurable (default=8.0.24)
1 parent e100020 commit 45ba8ce

File tree

6 files changed

+104
-61
lines changed

6 files changed

+104
-61
lines changed

wasm-build/php/Dockerfile

Lines changed: 29 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
FROM trzeci/emscripten:1.39.18-fastcomp
22
SHELL ["/bin/bash", "-c"]
3+
ARG VRZNO_FLAG="--disable-vrzno"
4+
ENV VRZNO_FLAG ${VRZNO_FLAG}
5+
ARG PHP_VERSION=8.0.24
6+
ENV PHP_VERSION ${PHP_VERSION}
37

48
WORKDIR /root
5-
COPY ./docker-build-files/* /root/
69
RUN mkdir lib
710

811
RUN set -euxo pipefail;\
@@ -31,29 +34,31 @@ ENV INITIAL_MEMORY 1024MB
3134
ENV EMCC_ALLOW_FASTCOMP 1
3235
ENV TIMER "(which pv > /dev/null && pv --name '${@}' || cat)"
3336

34-
# Get and patch PHP 7.0.30
35-
RUN git clone https://github.com/php/php-src.git php7.4-src \
36-
--branch PHP-7.4.30 \
37+
# Get and patch PHP
38+
COPY ./docker-build-files/php7.4.patch /root/
39+
RUN git clone https://github.com/php/php-src.git php-src \
40+
--branch PHP-$PHP_VERSION \
3741
--single-branch \
3842
--depth 1 \
3943
&& git apply --no-index /root/php7.4.patch \
40-
&& mkdir -p php7.4-src/preload/Zend \
41-
&& cp php7.4-src/Zend/bench.php php7.4-src/preload/Zend \
42-
&& touch php7.4-src/patched
44+
&& mkdir -p php-src/preload/Zend \
45+
&& cp php-src/Zend/bench.php php-src/preload/Zend \
46+
&& touch php-src/patched
4347

4448

4549
# Get and patch Sqlite3
50+
COPY ./docker-build-files/sqlite3-wasm.patch /root/
4651
RUN set -euxo pipefail;\
4752
wget --no-check-certificate https://sqlite.org/2020/sqlite-amalgamation-3330000.zip; \
4853
unzip sqlite-amalgamation-3330000.zip; \
4954
rm sqlite-amalgamation-3330000.zip; \
5055
mv sqlite-amalgamation-3330000 sqlite3.33-src; \
5156
git apply --no-index /root/sqlite3-wasm.patch; \
52-
cp -v sqlite3.33-src/sqlite3.h php7.4-src/main/sqlite3.h; \
53-
cp -v sqlite3.33-src/sqlite3.c php7.4-src/main/sqlite3.c;
57+
cp -v sqlite3.33-src/sqlite3.h php-src/main/sqlite3.h; \
58+
cp -v sqlite3.33-src/sqlite3.c php-src/main/sqlite3.c;
5459

5560
# Get VRZNO
56-
RUN git clone https://github.com/seanmorris/vrzno.git php7.4-src/ext/vrzno \
61+
RUN git clone https://github.com/seanmorris/vrzno.git php-src/ext/vrzno \
5762
--branch DomAccess \
5863
--single-branch \
5964
--depth 1
@@ -70,11 +75,11 @@ RUN cd libxml2 && emmake make
7075
RUN cd libxml2 && emmake make install
7176

7277
# Build the patched PHP
73-
RUN cd php7.4-src/ && PKG_CONFIG_PATH=$PKG_CONFIG_PATH ./buildconf --force
78+
RUN cd php-src/ && PKG_CONFIG_PATH=$PKG_CONFIG_PATH ./buildconf --force
7479

7580
# RUN ls /root/lib/lib/; sleep 50
7681

77-
RUN cd php7.4-src/ && PKG_CONFIG_PATH=$PKG_CONFIG_PATH emconfigure ./configure \
82+
RUN cd php-src/ && PKG_CONFIG_PATH=$PKG_CONFIG_PATH emconfigure ./configure \
7883
PKG_CONFIG_PATH=$PKG_CONFIG_PATH \
7984
--enable-embed=static \
8085
--with-layout=GNU \
@@ -100,20 +105,28 @@ RUN cd php7.4-src/ && PKG_CONFIG_PATH=$PKG_CONFIG_PATH emconfigure ./configure \
100105
--enable-mbstring \
101106
--disable-mbregex \
102107
--enable-tokenizer \
103-
--enable-vrzno \
108+
$VRZNO_FLAG \
104109
--enable-xml \
105110
--enable-simplexml \
106111
--with-gd
107112

108-
RUN cd php7.4-src/ && emmake make -j8
113+
RUN cd php-src/ && emmake make -j8
109114

110-
RUN cp -v php7.4-src/.libs/libphp7.la php7.4-src/.libs/libphp7.a /root/lib/
115+
RUN cp -v php-src/.libs/libphp.la /root/lib/libphp7.la
116+
RUN cp -v php-src/.libs/libphp.a /root/lib//libphp7.a
111117

112-
RUN cd php7.4-src/ && emcc -O3 \
118+
COPY ./docker-build-files/pib_eval.c /root/
119+
RUN if [ "$VRZNO_FLAG" = "--enable-vrzno" ]; \
120+
then export DEFINES='-DWITH_VRZNO=1'; \
121+
else export DEFINES=''; \
122+
fi && \
123+
cd php-src/ && \
124+
emcc -O3 \
113125
-I . \
114126
-I Zend \
115127
-I main \
116128
-I TSRM/ \
117129
-I /root/libxml2 \
130+
$DEFINES \
118131
/root/pib_eval.c \
119132
-o /root/lib/pib_eval.o;

wasm-build/php/docker-build-files/php7.4-sqlite.patch

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
diff --git a/php7.4-src/ext/pdo/config.m4 b/php7.4-src/ext/pdo/config.m4
2-
--- a/php7.4-src/ext/pdo/config.m4
3-
+++ b/php7.4-src/ext/pdo/config.m4
1+
diff --git a/php-src/ext/pdo/config.m4 b/php-src/ext/pdo/config.m4
2+
--- a/php-src/ext/pdo/config.m4
3+
+++ b/php-src/ext/pdo/config.m4
44
@@ -4,15 +4,14 @@ PHP_ARG_ENABLE([pdo],
55
[Disable PHP Data Objects support])],
66
[yes])
@@ -21,10 +21,10 @@ diff --git a/php7.4-src/ext/pdo/config.m4 b/php7.4-src/ext/pdo/config.m4
2121
- dnl so we always include the known-good working hack.
2222
PHP_ADD_MAKEFILE_FRAGMENT
2323
fi
24-
diff --git a/php7.4-src/ext/pdo_sqlite/config.m4 b/php7.4-src/ext/pdo_sqlite/config.m4
24+
diff --git a/php-src/ext/pdo_sqlite/config.m4 b/php-src/ext/pdo_sqlite/config.m4
2525
index fbb3d05c..42a8fd47 100644
26-
--- a/php7.4-src/ext/pdo_sqlite/config.m4
27-
+++ b/php7.4-src/ext/pdo_sqlite/config.m4
26+
--- a/php-src/ext/pdo_sqlite/config.m4
27+
+++ b/php-src/ext/pdo_sqlite/config.m4
2828
@@ -10,25 +10,7 @@ if test "$PHP_PDO_SQLITE" != "no"; then
2929
AC_MSG_ERROR([PDO is not enabled! Add --enable-pdo to your configure line.])
3030
fi
@@ -52,9 +52,9 @@ index fbb3d05c..42a8fd47 100644
5252
+ $ext_shared,,-I$pdo_cv_inc_path)
5353
PHP_ADD_EXTENSION_DEP(pdo_sqlite, pdo)
5454
fi
55-
diff --git a/php7.4-src/ext/pdo_sqlite/pdo_sqlite.c b/php7.4-src/ext/pdo_sqlite/pdo_sqlite.c
56-
--- a/php7.4-src/ext/pdo_sqlite/pdo_sqlite.c
57-
+++ b/php7.4-src/ext/pdo_sqlite/pdo_sqlite.c
55+
diff --git a/php-src/ext/pdo_sqlite/pdo_sqlite.c b/php-src/ext/pdo_sqlite/pdo_sqlite.c
56+
--- a/php-src/ext/pdo_sqlite/pdo_sqlite.c
57+
+++ b/php-src/ext/pdo_sqlite/pdo_sqlite.c
5858
@@ -23,8 +23,8 @@
5959
#include "php.h"
6060
#include "php_ini.h"
@@ -66,10 +66,10 @@ diff --git a/php7.4-src/ext/pdo_sqlite/pdo_sqlite.c b/php7.4-src/ext/pdo_sqlite/
6666
#include "php_pdo_sqlite.h"
6767
#include "php_pdo_sqlite_int.h"
6868
#include "zend_exceptions.h"
69-
diff --git a/php7.4-src/ext/pdo_sqlite/sqlite_driver.c b/php7.4-src/ext/pdo_sqlite/sqlite_driver.c
69+
diff --git a/php-src/ext/pdo_sqlite/sqlite_driver.c b/php-src/ext/pdo_sqlite/sqlite_driver.c
7070
index 83ea2d60..7265bfc7 100644
71-
--- a/php7.4-src/ext/pdo_sqlite/sqlite_driver.c
72-
+++ b/php7.4-src/ext/pdo_sqlite/sqlite_driver.c
71+
--- a/php-src/ext/pdo_sqlite/sqlite_driver.c
72+
+++ b/php-src/ext/pdo_sqlite/sqlite_driver.c
7373
@@ -23,8 +23,8 @@
7474
#include "php.h"
7575
#include "php_ini.h"
@@ -81,9 +81,9 @@ index 83ea2d60..7265bfc7 100644
8181
#include "php_pdo_sqlite.h"
8282
#include "php_pdo_sqlite_int.h"
8383
#include "zend_exceptions.h"
84-
diff --git a/php7.4-src/ext/pdo_sqlite/sqlite_statement.c b/php7.4-src/ext/pdo_sqlite/sqlite_statement.c
85-
--- a/php7.4-src/ext/pdo_sqlite/sqlite_statement.c
86-
+++ b/php7.4-src/ext/pdo_sqlite/sqlite_statement.c
84+
diff --git a/php-src/ext/pdo_sqlite/sqlite_statement.c b/php-src/ext/pdo_sqlite/sqlite_statement.c
85+
--- a/php-src/ext/pdo_sqlite/sqlite_statement.c
86+
+++ b/php-src/ext/pdo_sqlite/sqlite_statement.c
8787
@@ -23,8 +23,8 @@
8888
#include "php.h"
8989
#include "php_ini.h"
@@ -95,9 +95,9 @@ diff --git a/php7.4-src/ext/pdo_sqlite/sqlite_statement.c b/php7.4-src/ext/pdo_s
9595
#include "php_pdo_sqlite.h"
9696
#include "php_pdo_sqlite_int.h"
9797

98-
diff --git a/php7.4-src/ext/sqlite3/config0.m4 b/php7.4-src/ext/sqlite3/config0.m4
99-
--- a/php7.4-src/ext/sqlite3/config0.m4
100-
+++ b/php7.4-src/ext/sqlite3/config0.m4
98+
diff --git a/php-src/ext/sqlite3/config0.m4 b/php-src/ext/sqlite3/config0.m4
99+
--- a/php-src/ext/sqlite3/config0.m4
100+
+++ b/php-src/ext/sqlite3/config0.m4
101101
@@ -5,26 +5,6 @@ PHP_ARG_WITH([sqlite3],
102102
[yes])
103103

wasm-build/php/docker-build-files/php7.4.patch

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
diff --git a/php7.4-src/ext/pdo/config.m4 b/php7.4-src/ext/pdo/config.m4
2-
--- a/php7.4-src/ext/pdo/config.m4
3-
+++ b/php7.4-src/ext/pdo/config.m4
1+
diff --git a/php-src/ext/pdo/config.m4 b/php-src/ext/pdo/config.m4
2+
--- a/php-src/ext/pdo/config.m4
3+
+++ b/php-src/ext/pdo/config.m4
44
@@ -4,15 +4,14 @@ PHP_ARG_ENABLE([pdo],
55
[Disable PHP Data Objects support])],
66
[yes])
@@ -21,9 +21,9 @@ diff --git a/php7.4-src/ext/pdo/config.m4 b/php7.4-src/ext/pdo/config.m4
2121
- dnl so we always include the known-good working hack.
2222
PHP_ADD_MAKEFILE_FRAGMENT
2323
fi
24-
diff --git a/php7.4-src/ext/pdo_sqlite/config.m4 b/php7.4-src/ext/pdo_sqlite/config.m4
25-
--- a/php7.4-src/ext/pdo_sqlite/config.m4
26-
+++ b/php7.4-src/ext/pdo_sqlite/config.m4
24+
diff --git a/php-src/ext/pdo_sqlite/config.m4 b/php-src/ext/pdo_sqlite/config.m4
25+
--- a/php-src/ext/pdo_sqlite/config.m4
26+
+++ b/php-src/ext/pdo_sqlite/config.m4
2727
@@ -10,25 +10,7 @@ if test "$PHP_PDO_SQLITE" != "no"; then
2828
AC_MSG_ERROR([PDO is not enabled! Add --enable-pdo to your configure line.])
2929
fi
@@ -51,9 +51,9 @@ diff --git a/php7.4-src/ext/pdo_sqlite/config.m4 b/php7.4-src/ext/pdo_sqlite/con
5151
+ $ext_shared,,-I$pdo_cv_inc_path)
5252
PHP_ADD_EXTENSION_DEP(pdo_sqlite, pdo)
5353
fi
54-
diff --git a/php7.4-src/ext/pdo_sqlite/pdo_sqlite.c b/php7.4-src/ext/pdo_sqlite/pdo_sqlite.c
55-
--- a/php7.4-src/ext/pdo_sqlite/pdo_sqlite.c
56-
+++ b/php7.4-src/ext/pdo_sqlite/pdo_sqlite.c
54+
diff --git a/php-src/ext/pdo_sqlite/pdo_sqlite.c b/php-src/ext/pdo_sqlite/pdo_sqlite.c
55+
--- a/php-src/ext/pdo_sqlite/pdo_sqlite.c
56+
+++ b/php-src/ext/pdo_sqlite/pdo_sqlite.c
5757
@@ -23,8 +23,8 @@
5858
#include "php.h"
5959
#include "php_ini.h"
@@ -65,9 +65,9 @@ diff --git a/php7.4-src/ext/pdo_sqlite/pdo_sqlite.c b/php7.4-src/ext/pdo_sqlite/
6565
#include "php_pdo_sqlite.h"
6666
#include "php_pdo_sqlite_int.h"
6767
#include "zend_exceptions.h"
68-
diff --git a/php7.4-src/ext/pdo_sqlite/sqlite_driver.c b/php7.4-src/ext/pdo_sqlite/sqlite_driver.c
69-
--- a/php7.4-src/ext/pdo_sqlite/sqlite_driver.c
70-
+++ b/php7.4-src/ext/pdo_sqlite/sqlite_driver.c
68+
diff --git a/php-src/ext/pdo_sqlite/sqlite_driver.c b/php-src/ext/pdo_sqlite/sqlite_driver.c
69+
--- a/php-src/ext/pdo_sqlite/sqlite_driver.c
70+
+++ b/php-src/ext/pdo_sqlite/sqlite_driver.c
7171
@@ -23,8 +23,8 @@
7272
#include "php.h"
7373
#include "php_ini.h"
@@ -79,9 +79,9 @@ diff --git a/php7.4-src/ext/pdo_sqlite/sqlite_driver.c b/php7.4-src/ext/pdo_sqli
7979
#include "php_pdo_sqlite.h"
8080
#include "php_pdo_sqlite_int.h"
8181
#include "zend_exceptions.h"
82-
diff --git a/php7.4-src/ext/pdo_sqlite/sqlite_statement.c b/php7.4-src/ext/pdo_sqlite/sqlite_statement.c
83-
--- a/php7.4-src/ext/pdo_sqlite/sqlite_statement.c
84-
+++ b/php7.4-src/ext/pdo_sqlite/sqlite_statement.c
82+
diff --git a/php-src/ext/pdo_sqlite/sqlite_statement.c b/php-src/ext/pdo_sqlite/sqlite_statement.c
83+
--- a/php-src/ext/pdo_sqlite/sqlite_statement.c
84+
+++ b/php-src/ext/pdo_sqlite/sqlite_statement.c
8585
@@ -23,8 +23,8 @@
8686
#include "php.h"
8787
#include "php_ini.h"
@@ -93,9 +93,9 @@ diff --git a/php7.4-src/ext/pdo_sqlite/sqlite_statement.c b/php7.4-src/ext/pdo_s
9393
#include "php_pdo_sqlite.h"
9494
#include "php_pdo_sqlite_int.h"
9595

96-
diff --git a/php7.4-src/ext/sqlite3/config0.m4 b/php7.4-src/ext/sqlite3/config0.m4
97-
--- a/php7.4-src/ext/sqlite3/config0.m4
98-
+++ b/php7.4-src/ext/sqlite3/config0.m4
96+
diff --git a/php-src/ext/sqlite3/config0.m4 b/php-src/ext/sqlite3/config0.m4
97+
--- a/php-src/ext/sqlite3/config0.m4
98+
+++ b/php-src/ext/sqlite3/config0.m4
9999
@@ -5,26 +5,6 @@ PHP_ARG_WITH([sqlite3],
100100
[yes])
101101

@@ -123,9 +123,9 @@ diff --git a/php7.4-src/ext/sqlite3/config0.m4 b/php7.4-src/ext/sqlite3/config0.
123123
PHP_NEW_EXTENSION(sqlite3, sqlite3.c, $ext_shared,,-DZEND_ENABLE_STATIC_TSRMLS_CACHE=1)
124124
PHP_SUBST(SQLITE3_SHARED_LIBADD)
125125
fi
126-
diff --git a/php7.4-src/sapi/embed/php_embed.c b/php7.4-src/sapi/embed/php_embed.c
127-
--- a/php7.4-src/sapi/embed/php_embed.c
128-
+++ b/php7.4-src/sapi/embed/php_embed.c
126+
diff --git a/php-src/sapi/embed/php_embed.c b/php-src/sapi/embed/php_embed.c
127+
--- a/php-src/sapi/embed/php_embed.c
128+
+++ b/php-src/sapi/embed/php_embed.c
129129
@@ -211,8 +211,8 @@ EMBED_SAPI_API int php_embed_init(int argc, char **argv)
130130
return FAILURE;
131131
}

wasm-build/php/docker-build-files/pib_eval.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66
#include "zend_exceptions.h"
77
#include "zend_closures.h"
88

9-
#include "../php7.4-src/ext/vrzno/php_vrzno.h"
10-
119
#include "sqlite3.h"
1210
#include "sqlite3.c"
1311

@@ -99,6 +97,9 @@ int EMSCRIPTEN_KEEPALIVE pib_refresh()
9997
return pib_init();
10098
}
10199

100+
#ifdef WITH_VRZNO
101+
#include "../php-src/ext/vrzno/php_vrzno.h"
102+
102103
int EMSCRIPTEN_KEEPALIVE exec_callback(zend_function *fptr)
103104
{
104105
int retVal = vrzno_exec_callback(fptr);
@@ -112,3 +113,4 @@ int EMSCRIPTEN_KEEPALIVE del_callback(zend_function *fptr)
112113
{
113114
return vrzno_del_callback(fptr);
114115
}
116+
#endif

wasm-build/php/node-build-wasm.sh

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,20 @@
11
#!/bin/bash
22

3-
docker build . --tag=wasm-wordpress-php-builder
3+
set -e
4+
5+
PHP_VERSION=${1:-8.0.24}
6+
if [[ $PHP_VERSION == "7.*" ]]
7+
then
8+
VRZNO_FLAG="--enable-vrzno"
9+
EXTRA_EXPORTED_FUNCTIONS=', "_exec_callback", "_del_callback"'
10+
else
11+
VRZNO_FLAG="--disable-vrzno"
12+
EXTRA_EXPORTED_FUNCTIONS=""
13+
fi
14+
15+
EXPORTED_FUNCTIONS='["_pib_init", "_pib_destroy", "_pib_run", "_pib_exec" "_pib_refresh", "_main", "_php_embed_init", "_php_embed_shutdown", "_php_embed_shutdown", "_zend_eval_string" '$EXTRA_EXPORTED_FUNCTIONS']'
16+
17+
docker build . --tag=wasm-wordpress-php-builder --build-arg PHP_VERSION=$PHP_VERSION --build-arg VRZNO_FLAG="$VRZNO_FLAG"
418

519
docker run \
620
-v `pwd`/preload:/preload \
@@ -9,7 +23,7 @@ docker run \
923
emcc -O3 \
1024
-o /output/node-php.js \
1125
--llvm-lto 2 \
12-
-s EXPORTED_FUNCTIONS='["_pib_init", "_pib_destroy", "_pib_run", "_pib_exec" "_pib_refresh", "_main", "_php_embed_init", "_php_embed_shutdown", "_php_embed_shutdown", "_zend_eval_string", "_exec_callback", "_del_callback"]' \
26+
-s EXPORTED_FUNCTIONS="$EXPORTED_FUNCTIONS" \
1327
-s EXTRA_EXPORTED_RUNTIME_METHODS='["ccall", "UTF8ToString", "lengthBytesUTF8"]' \
1428
-s MAXIMUM_MEMORY=-1 \
1529
-s INITIAL_MEMORY=1024MB \

wasm-build/php/webworker-build-wasm.sh

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,20 @@
11
#!/bin/bash
22

3-
docker build . --tag=wasm-wordpress-php-builder
3+
set -e
4+
5+
PHP_VERSION=${1:-8.0.24}
6+
if [[ $PHP_VERSION == "7.*" ]]
7+
then
8+
VRZNO_FLAG="--enable-vrzno"
9+
EXTRA_EXPORTED_FUNCTIONS=', "_exec_callback", "_del_callback"'
10+
else
11+
VRZNO_FLAG="--disable-vrzno"
12+
EXTRA_EXPORTED_FUNCTIONS=""
13+
fi
14+
15+
EXPORTED_FUNCTIONS='["_pib_init", "_pib_destroy", "_pib_run", "_pib_exec" "_pib_refresh", "_main", "_php_embed_init", "_php_embed_shutdown", "_php_embed_shutdown", "_zend_eval_string" '$EXTRA_EXPORTED_FUNCTIONS']'
16+
17+
docker build . --tag=wasm-wordpress-php-builder --build-arg PHP_VERSION=$PHP_VERSION --build-arg VRZNO_FLAG="$VRZNO_FLAG"
418

519
docker run \
620
-v `pwd`/preload:/preload \
@@ -9,7 +23,7 @@ docker run \
923
emcc -O3 \
1024
-o /output/webworker-php.js \
1125
--llvm-lto 2 \
12-
-s EXPORTED_FUNCTIONS='["_pib_init", "_pib_destroy", "_pib_run", "_pib_exec" "_pib_refresh", "_main", "_php_embed_init", "_php_embed_shutdown", "_php_embed_shutdown", "_zend_eval_string", "_exec_callback", "_del_callback"]' \
26+
-s EXPORTED_FUNCTIONS="$EXPORTED_FUNCTIONS" \
1327
-s EXTRA_EXPORTED_RUNTIME_METHODS='["ccall", "UTF8ToString", "lengthBytesUTF8", "FS", "PROXYFS"]' \
1428
-s MAXIMUM_MEMORY=-1 \
1529
-s INITIAL_MEMORY=1024MB \

0 commit comments

Comments
 (0)