typephp

LOW
maintainer matth 0 votes scanned 2026-08-27 15:32:51.856305
View on AUR
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
4pkgname=typephp
5pkgver=0.6.6
6pkgrel=1
7pkgdesc='AOT compiler that compiles PHP to native binaries'
8arch=('x86_64' 'aarch64')
9url='https://github.com/swoole/typephp'
10license=('GPL-3.0-or-later')
11depends=('cmake' 'gcc' 'gcc-libs' 'glibc' 'gmp' 'make' 'mpfr' 'php' 'php-embed' 'pkgconf' 'python')
12makedepends=('composer' 'patchelf' 'python-setuptools')
13_phpy_commit=5b9c650316ad87644e885a64a0a6767b03abdfa6
14source=(
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)
21b2sums=('47208b0fc9eeedc56655233692e0d92af8bea4d1ad98848a5b591cd1db14c4d0526d30d28fa00902f936fbb056d52b067b170229a326aab8ebe636a6f098e489'
22 '1054bbbf7ca92037dbbc6306509ea9079f5bfe787aac50dec325f900ec1ef3d58ec4c84ae9a4a4d3d58f2acba8431a221cb69a04cfc92984ae9e3c1a5c914b4e'
23 '65d611297e462695090408e36fdd81c879b6d1dda3f712a9bc2eee0ce30c588adec69e5db46a8a624bf5c77615f61859147f5ae3693945ec41e8707d1a208f08'
24 '0fb3520559f06c333b67894671815fb570ee7b5ffa3f1d1b2f6176a87dd123534457a66fb1a7fa69c7021421126faff0522237b8b8802056f6cea8e88e9b27d3'
25 '0c2402dec6bfe10ef7abd18e0ed1d8f95939992bd5ebf5e5c91cd5d26466ecf84c562d9383c38296a5287433cc1e21d1b5c700d29f3cbbd3477c2eb0cc5b3059')
26
27prepare() {
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
45build() {
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
72check() {
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
82package() {
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)SeverityRules
2026-08-27 15:32:51 Low 1

Report a package

Reports go to the AURWatch maintainer (one person) and are read by hand. No login required.

0 / 4000
Your suggestion