typephp
LOW
maintainer matth
0 votes
scanned 2026-08-27 15:32:51.856305
Why flagged
Uploaded within the last 14 days with 2 or fewer community votes — little peer review so far.
Triggered rules
Low
Few votes, recently uploaded
zero_votes_recent
Uploaded within the last 14 days with 2 or fewer community votes — little peer review so far.
PKGBUILD
1
# Maintainer: Matt Harrison <matt@harrison.us.com>
2
# Maintained at: https://github.com/matt-h/aur-pkgbuilds or https://codeberg.org/matt/aur-pkgbuilds
3
4
pkgname=typephp
5
pkgver=0.6.6
6
pkgrel=1
7
pkgdesc='AOT compiler that compiles PHP to native binaries'
8
arch=('x86_64' 'aarch64')
9
url='https://github.com/swoole/typephp'
10
license=('GPL-3.0-or-later')
11
depends=('cmake' 'gcc' 'gcc-libs' 'glibc' 'gmp' 'make' 'mpfr' 'php' 'php-embed' 'pkgconf' 'python')
12
makedepends=('composer' 'patchelf' 'python-setuptools')
13
_phpy_commit=5b9c650316ad87644e885a64a0a6767b03abdfa6
14
source=(
15
"${pkgname}-${pkgver}.tar.gz::https://github.com/swoole/typephp/archive/refs/tags/v${pkgver}.tar.gz"
16
"phpy-${_phpy_commit}.tar.gz::https://github.com/swoole/phpy/archive/${_phpy_commit}.tar.gz"
17
'tpc.sh'
18
'php-config.sh'
19
'typephp-root-path.patch'
20
)
21
b2sums=('47208b0fc9eeedc56655233692e0d92af8bea4d1ad98848a5b591cd1db14c4d0526d30d28fa00902f936fbb056d52b067b170229a326aab8ebe636a6f098e489'
22
'1054bbbf7ca92037dbbc6306509ea9079f5bfe787aac50dec325f900ec1ef3d58ec4c84ae9a4a4d3d58f2acba8431a221cb69a04cfc92984ae9e3c1a5c914b4e'
23
'65d611297e462695090408e36fdd81c879b6d1dda3f712a9bc2eee0ce30c588adec69e5db46a8a624bf5c77615f61859147f5ae3693945ec41e8707d1a208f08'
24
'0fb3520559f06c333b67894671815fb570ee7b5ffa3f1d1b2f6176a87dd123534457a66fb1a7fa69c7021421126faff0522237b8b8802056f6cea8e88e9b27d3'
25
'0c2402dec6bfe10ef7abd18e0ed1d8f95939992bd5ebf5e5c91cd5d26466ecf84c562d9383c38296a5287433cc1e21d1b5c700d29f3cbbd3477c2eb0cc5b3059')
26
27
prepare() {
28
local php_args=()
29
30
cd "${srcdir}/${pkgname}-${pkgver}"
31
32
patch -Np1 -i "${srcdir}/typephp-root-path.patch"
33
34
# Arch ships iconv.so with php, but extensions may be disabled in php.ini.
35
# Load it for Composer without modifying the host's PHP configuration.
36
php -r 'exit(extension_loaded("iconv") ? 0 : 1);' || \
37
php_args=(-d extension=iconv)
38
php "${php_args[@]}" /usr/bin/composer install \
39
--no-dev \
40
--prefer-dist \
41
--no-progress \
42
--classmap-authoritative
43
}
44
45
build() {
46
local src="${srcdir}/${pkgname}-${pkgver}"
47
local phpx_home="${src}/vendor/swoole/phpx"
48
49
cd "${srcdir}/phpy-${_phpy_commit}"
50
phpize
51
./configure
52
make
53
54
cmake -S "${phpx_home}" -B "${phpx_home}/build" \
55
-D CMAKE_BUILD_TYPE=Release \
56
-D BUILD_TESTS=OFF \
57
-D BUILD_EXT=OFF \
58
-D GITHUB_ACTION=ON \
59
-D php_dir="$(php-config --prefix)"
60
cmake --build "${phpx_home}/build" --target phpx --parallel "$(nproc)"
61
62
cd "${src}"
63
PHPX_HOME="${phpx_home}" \
64
PHP_HOME="$(php-config --prefix)" \
65
LD_LIBRARY_PATH="${phpx_home}/lib:$(php-config --prefix)/lib" \
66
php -d "extension=${srcdir}/phpy-${_phpy_commit}/modules/phpy.so" \
67
bin/tpc.php project.yml --job "$(nproc)" --no-progress
68
69
test -x tpc
70
}
71
72
check() {
73
local src="${srcdir}/${pkgname}-${pkgver}"
74
local phpx_home="${src}/vendor/swoole/phpx"
75
76
PHPX_HOME="${phpx_home}" \
77
PHP_HOME="$(php-config --prefix)" \
78
LD_LIBRARY_PATH="${phpx_home}/lib:$(php-config --prefix)/lib" \
79
"${src}/tpc" --version
80
}
81
82
package() {
83
local src="${srcdir}/${pkgname}-${pkgver}"
84
local appdir="${pkgdir}/opt/typephp"
85
86
install -d "${appdir}"
87
cp -a "${src}/vendor" "${appdir}/vendor"
88
rm -rf "${appdir}/vendor/swoole/phpx/build"
89
install -Dm755 "${src}/tpc" "${appdir}/tpc"
90
91
# Arch's PHP package currently ships a php_hash.h revision which is valid C
92
# but not C++. Keep pacman-owned headers untouched and patch a private SDK
93
# copy, matching the workaround used by TypePHP's upstream CI.
94
install -d "${appdir}/php/include" "${appdir}/php/lib"
95
cp -a /usr/include/php "${appdir}/php/include/php"
96
if grep -Fq 'char *base = ecalloc(' \
97
"${appdir}/php/include/php/ext/hash/php_hash.h"; then
98
patch -Np1 -d "${appdir}/php/include/php" \
99
-i "${src}/.github/patches/php-hash-cxx.patch"
100
else
101
printf '%s\n' 'php_hash.h already contains the upstream C++ fix'
102
fi
103
install -Dm755 "${srcdir}/php-config.sh" "${appdir}/php/bin/php-config"
104
ln -s /usr/bin/php "${appdir}/php/bin/php"
105
ln -s /usr/lib/libphp.so "${appdir}/php/lib/libphp.so"
106
107
# Generated Linux binaries require libphpx in the system loader path.
108
# Keep the Composer PHPX layout intact via a symlink because
109
# the compiler also checks PHPX_HOME/lib/libphpx.so.
110
install -Dm755 "${appdir}/vendor/swoole/phpx/lib/libphpx.so" \
111
"${pkgdir}/usr/lib/libphpx.so"
112
patchelf --set-rpath '/usr/lib' "${pkgdir}/usr/lib/libphpx.so"
113
rm "${appdir}/vendor/swoole/phpx/lib/libphpx.so"
114
ln -s /usr/lib/libphpx.so \
115
"${appdir}/vendor/swoole/phpx/lib/libphpx.so"
116
117
patchelf --set-rpath '$ORIGIN/vendor/swoole/phpx/lib:/usr/lib' \
118
"${appdir}/tpc"
119
120
install -Dm755 "${srcdir}/tpc.sh" "${pkgdir}/usr/bin/tpc"
121
122
install -Dm644 "${src}/completions/tpc.bash" \
123
"${pkgdir}/usr/share/bash-completion/completions/tpc"
124
install -Dm644 "${src}/LICENSE" \
125
"${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
126
# phpy is licensed under the Apache License
127
install -Dm644 "${srcdir}/phpy-${_phpy_commit}/LICENSE" \
128
"${pkgdir}/usr/share/licenses/${pkgname}/LICENSE-phpy"
129
install -Dm644 "${src}/README.md" \
130
"${pkgdir}/usr/share/doc/${pkgname}/README.md"
131
}
132
133
# vim:set ts=2 sw=2 et:
134
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-08-27 15:32:51 | Low | 1 |