python-frida
LOW
maintainer RubenKelevra
0 votes
base
frida
scanned 2026-09-03 15:53:41.931206
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: @RubenKelevra <rubenkelevra@gmail.com>
2
# Contributor: Caleb Maclennan <caleb@alerque.com>
3
# Contributor: Faule Socke <github@socker.lepus.uberspace.de>
4
5
pkgbase='frida'
6
pkgname=(
7
'frida'
8
'python-frida'
9
)
10
pkgver=17.17.0
11
pkgrel=1
12
pkgdesc='Dynamic instrumentation toolkit for developers, reverse-engineers, and security researchers'
13
arch=('x86_64')
14
url='https://github.com/frida/frida'
15
license=(
16
'LGPL-2.0-or-later WITH WxWindows-exception-3.1'
17
'Zlib'
18
'BSD-3-Clause'
19
'BSD-2-Clause'
20
'BSD-3-Clause WITH PCRE2-exception'
21
'MIT'
22
'LGPL-2.1-or-later'
23
'0BSD'
24
'Apache-2.0'
25
'LicenseRef-Sqlite'
26
'LGPL-2.0-or-later'
27
'GPL-2.0-or-later OR LGPL-3.0-or-later'
28
)
29
options=('!lto')
30
depends=(
31
'capstone'
32
'glib2'
33
'json-glib'
34
'lib32-glibc'
35
'libbpf'
36
'libdwarf'
37
'libffi'
38
'libgee'
39
'libnghttp2'
40
'libngtcp2'
41
'libnice'
42
'libsoup3'
43
'libunwind'
44
'openssl'
45
'sqlite'
46
'systemd-libs'
47
)
48
makedepends=(
49
'brotli'
50
'cmake'
51
'git'
52
'go'
53
'glib2-devel'
54
'gobject-introspection'
55
'lib32-gcc-libs'
56
'lzfse'
57
'meson'
58
'ninja'
59
'nodejs'
60
'npm'
61
'patchelf'
62
'python'
63
'python-build'
64
'python-installer'
65
'python-packaging'
66
'python-setuptools'
67
'python-wheel'
68
'tcl'
69
'vala'
70
)
71
72
_releng_commit='c9cc18138b364f691573c695e1fe47ddc4c56f26'
73
_meson_commit='6620128a0fc86218dd8d2843c7e9a3513772448e'
74
_tomlkit_commit='911cccd630965ff423316e25b4685ecf7df0ec0a'
75
_frida_core_commit='c812943c457376c906802f7bb79d13c67a6e4d22'
76
_frida_gum_commit='ddc10c5559cbb41a3dd72866bfba6ff3945ffa5c'
77
_capstone_commit='d536b1577fd033a31d75f48fd183aa425256cc18'
78
_glib_commit='790ffa82e80d99fba8a3db494e46f907d560893c'
79
_glib_networking_commit='ef47b1a09cf8c1875f181bcf901643689a56d12f'
80
_gvdb_commit='0854af0fdb6d527a8d1999835ac2c5059976c210'
81
_json_glib_commit='1a39cbe151b02c4192987c8fcc98997a59db2154'
82
_libbpf_commit='6c8d0d00a122fe126b7a3094f0785340128506f5'
83
_libdwarf_commit='61ff154ae803d2b0202dbc1bf385cda1ac3ece54'
84
_libgee_commit='ad17ed847039469fcc2dc711ecfee2bbf7d2bf87'
85
_libnice_commit='9a3da6e3e5bbcf935fd85b6b8557ff8c7dd9032c'
86
_lzfse_commit='5cfb7c86919d3c2c636d0d7552b51855a611ba1c'
87
_quickjs_commit='e05ed9f327d382f29ac8a854b0c3faa0dff87716'
88
_tinycc_commit='96e338ddfc6b1b409cd557356cadb3cf0d590d7b'
89
_vala_commit='172348fa9123ff4a95d541c5f9e56837434c4b6e'
90
_frida_python_commit='1cc0bcae641053fc08ec4433dc2118973389b5d2'
91
_frida_bindgen_commit='df17879d92d2700a7f1228a03271ba07e2fb579b'
92
_libusb_commit='ffff4bdfe8faa38cecfad5aab106cae923502d55'
93
_lwip_commit='a9f759897f26347c1a41d8d2a6d3a89aba9ce57b'
94
_usrsctp_commit='377fecfe06bb766c69cc0e1e1f6d5c72cf7704e6'
95
_sdk_version='20260717'
96
_sdk_zlib_commit='171a3eacaea8b731ef1fc586e7777b77742e2a1d'
97
_sdk_libffi_commit='4b75d8a1d9cf401d8a2fa16619938637ea7e7afa'
98
_sdk_pcre2_commit='b47486922fdc3486499b310dc9cf903449700474'
99
_sdk_elfutils_commit='1284bbc128473aea220337685985d465607fbac8'
100
_sdk_xz_commit='e70f5800ab5001c9509d374dbf3e7e6b866c43fe'
101
_sdk_brotli_commit='01d9e2922ca878965ebcd71ee8965d2a7aadb47a'
102
_sdk_minizip_ng_commit='dfc1ccc070ff7bb50726c80215cac515253a8ba0'
103
_sdk_sqlite_commit='9337327a50008f2d2236112ccb6f44059b1bafbd'
104
_sdk_libunwind_commit='4d0abea0effd3c80916e70abe38c2a6156596f05'
105
_sdk_libpsl_commit='b76c0fed2e27353d5fbb067ecdfdf76d2281eb91'
106
_sdk_publicsuffix_commit='06a4956ac640e9f93499fda6b2113846687adfb2'
107
_sdk_libxml2_commit='f09ad5551829b7f2df3666759e701644a0ea8558'
108
_sdk_ngtcp2_commit='5b21d4418ff668d9b5ddc4f744b7a28af4196abf'
109
_sdk_nghttp2_commit='ae13d24ea59c30e36ca53d1b22c4e664588d0445'
110
_sdk_libsoup_commit='4fd67869310b9de8fe2947bc8504ccbcf1abf285'
111
_sdk_openssl_commit='fa60a1c8c704e4ca0cc0dcb289c3be1fea1b50ff'
112
_sdk_v8_commit='a07af892420dfd873b33bd4ce4ba9d963072e1b9'
113
_compat32_zlib_pkg_commit='aba4401af6afa48804f1d592f8e65f8e3d7f9a06'
114
_compat32_pcre2_pkg_commit='36a926cf8f06655673e318ef6198e75359ed7f23'
115
_compat32_libffi_pkg_commit='338f9ff7682d4e039cfadbcb8cfcd15f9de189a7'
116
_compat32_glib2_pkg_commit='1bc9ef92ac7076424bb85e31302d65aa6c32cf96'
117
_compat32_xz_pkg_commit='11549581a11d6bb5e2633197198bf9e38c06324d'
118
_compat32_libunwind_pkg_commit='b1e371a5ba84d9c41ae1de2a4897ce79c83062c5'
119
_compat32_openssl_pkg_commit='8e5607b83b45ade52033980d94f0239e114ef319'
120
_compat32_sqlite_pkg_commit='18a00f62151d24a371c455b05ea6e991853129da'
121
_compat32_brotli_pkg_commit='d07abb35150afbdaf26865414ad41066e2c9869d'
122
_compat32_libpsl_pkg_commit='686a5785f6d8f159c6db95ce72e258c5349bc247'
123
_compat32_libnghttp2_pkg_commit='249b25ba99b997bd0bdf77d625f9a07629d7d297'
124
_compat32_libsoup3_pkg_commit='35c91072cf8027049662ffd49f77db1da06ab222'
125
_compat32_libelf_pkg_commit='adad482d3a12d958e8c11d623dd0e9abf5dc8fbd'
126
127
source=(
128
"frida-${pkgver}.tar.gz::${url}/archive/refs/tags/${pkgver}.tar.gz"
129
"releng-${_releng_commit}.tar.gz::https://github.com/frida/releng/archive/${_releng_commit}.tar.gz"
130
"meson-${_meson_commit}.tar.gz::https://github.com/frida/meson/archive/${_meson_commit}.tar.gz"
131
"tomlkit-${_tomlkit_commit}.tar.gz::https://github.com/python-poetry/tomlkit/archive/${_tomlkit_commit}.tar.gz"
132
"frida-core-${_frida_core_commit}.tar.gz::https://github.com/frida/frida-core/archive/${_frida_core_commit}.tar.gz"
133
"frida-gum-${_frida_gum_commit}.tar.gz::https://github.com/frida/frida-gum/archive/${_frida_gum_commit}.tar.gz"
134
"capstone-${_capstone_commit}.tar.gz::https://github.com/frida/capstone/archive/${_capstone_commit}.tar.gz"
135
"glib-${_glib_commit}.tar.gz::https://github.com/frida/glib/archive/${_glib_commit}.tar.gz"
136
"glib-networking-${_glib_networking_commit}.tar.gz::https://github.com/frida/glib-networking/archive/${_glib_networking_commit}.tar.gz"
137
"gvdb-${_gvdb_commit}.tar.gz::https://gitlab.gnome.org/GNOME/gvdb/-/archive/${_gvdb_commit}/gvdb-${_gvdb_commit}.tar.gz"
138
"json-glib-${_json_glib_commit}.tar.gz::https://github.com/frida/json-glib/archive/${_json_glib_commit}.tar.gz"
139
"libbpf-${_libbpf_commit}.tar.gz::https://github.com/frida/libbpf/archive/${_libbpf_commit}.tar.gz"
140
"libdwarf-${_libdwarf_commit}.tar.gz::https://github.com/frida/libdwarf/archive/${_libdwarf_commit}.tar.gz"
141
"libgee-${_libgee_commit}.tar.gz::https://github.com/frida/libgee/archive/${_libgee_commit}.tar.gz"
142
"libnice-${_libnice_commit}.tar.gz::https://github.com/frida/libnice/archive/${_libnice_commit}.tar.gz"
143
"lzfse-${_lzfse_commit}.tar.gz::https://github.com/frida/lzfse/archive/${_lzfse_commit}.tar.gz"
144
"quickjs-${_quickjs_commit}.tar.gz::https://github.com/frida/quickjs/archive/${_quickjs_commit}.tar.gz"
145
"tinycc-${_tinycc_commit}.tar.gz::https://github.com/frida/tinycc/archive/${_tinycc_commit}.tar.gz"
146
"vala-${_vala_commit}.tar.gz::https://github.com/frida/vala/archive/${_vala_commit}.tar.gz"
147
"frida-python-${_frida_python_commit}.tar.gz::https://github.com/frida/frida-python/archive/${_frida_python_commit}.tar.gz"
148
"frida-bindgen-${_frida_bindgen_commit}.tar.gz::https://github.com/frida/frida-bindgen/archive/${_frida_bindgen_commit}.tar.gz"
149
"libusb-${_libusb_commit}.tar.gz::https://github.com/frida/libusb/archive/${_libusb_commit}.tar.gz"
150
"lwip-${_lwip_commit}.tar.gz::https://github.com/frida/lwip/archive/${_lwip_commit}.tar.gz"
151
"usrsctp-${_usrsctp_commit}.tar.gz::https://github.com/frida/usrsctp/archive/${_usrsctp_commit}.tar.gz"
152
"sdk-zlib-${_sdk_zlib_commit}.tar.gz::https://github.com/frida/zlib/archive/${_sdk_zlib_commit}.tar.gz"
153
"sdk-libffi-${_sdk_libffi_commit}.tar.gz::https://github.com/frida/libffi/archive/${_sdk_libffi_commit}.tar.gz"
154
"sdk-pcre2-${_sdk_pcre2_commit}.tar.gz::https://github.com/frida/pcre2/archive/${_sdk_pcre2_commit}.tar.gz"
155
"sdk-elfutils-${_sdk_elfutils_commit}.tar.gz::https://github.com/frida/elfutils/archive/${_sdk_elfutils_commit}.tar.gz"
156
"sdk-xz-${_sdk_xz_commit}.tar.gz::https://github.com/frida/xz/archive/${_sdk_xz_commit}.tar.gz"
157
"sdk-brotli-${_sdk_brotli_commit}.tar.gz::https://github.com/frida/brotli/archive/${_sdk_brotli_commit}.tar.gz"
158
"sdk-brotli-meson-${_sdk_brotli_commit}.build::https://raw.githubusercontent.com/frida/brotli/${_sdk_brotli_commit}/meson.build"
159
"sdk-minizip-ng-${_sdk_minizip_ng_commit}.tar.gz::https://github.com/frida/minizip-ng/archive/${_sdk_minizip_ng_commit}.tar.gz"
160
"sdk-sqlite-${_sdk_sqlite_commit}.tar.gz::https://github.com/frida/sqlite/archive/${_sdk_sqlite_commit}.tar.gz"
161
"sdk-libunwind-${_sdk_libunwind_commit}.tar.gz::https://github.com/frida/libunwind/archive/${_sdk_libunwind_commit}.tar.gz"
162
"sdk-libpsl-${_sdk_libpsl_commit}.tar.gz::https://github.com/frida/libpsl/archive/${_sdk_libpsl_commit}.tar.gz"
163
"sdk-publicsuffix-${_sdk_publicsuffix_commit}.tar.gz::https://github.com/publicsuffix/list/archive/${_sdk_publicsuffix_commit}.tar.gz"
164
"sdk-libxml2-${_sdk_libxml2_commit}.tar.gz::https://github.com/frida/libxml2/archive/${_sdk_libxml2_commit}.tar.gz"
165
"sdk-ngtcp2-${_sdk_ngtcp2_commit}.tar.gz::https://github.com/frida/ngtcp2/archive/${_sdk_ngtcp2_commit}.tar.gz"
166
"sdk-nghttp2-${_sdk_nghttp2_commit}.tar.gz::https://github.com/frida/nghttp2/archive/${_sdk_nghttp2_commit}.tar.gz"
167
"sdk-libsoup-${_sdk_libsoup_commit}.tar.gz::https://github.com/frida/libsoup/archive/${_sdk_libsoup_commit}.tar.gz"
168
'sdk-libsoup-skip-chunked.patch::https://gitlab.gnome.org/GNOME/libsoup/-/commit/1e9d2b827d97fa6b9925d697b371c0000b051c6a.patch'
169
"sdk-openssl-${_sdk_openssl_commit}.tar.gz::https://github.com/frida/openssl/archive/${_sdk_openssl_commit}.tar.gz"
170
"sdk-v8-${_sdk_v8_commit}.tar.gz::https://github.com/frida/v8/archive/${_sdk_v8_commit}.tar.gz"
171
'sdk-v8-gcc16.patch'
172
'sdk-relocatable-paths.patch'
173
'frida-releng.patch'
174
'frida-core-arch.patch'
175
'frida-hardening.patch'
176
'frida-valac.in'
177
'frida-pkg-config-32'
178
"lib32-zlib-${_compat32_zlib_pkg_commit}.tar.bz2::https://gitlab.archlinux.org/archlinux/packaging/packages/lib32-zlib/-/archive/${_compat32_zlib_pkg_commit}/lib32-zlib-${_compat32_zlib_pkg_commit}.tar.bz2"
179
"lib32-pcre2-${_compat32_pcre2_pkg_commit}.tar.bz2::https://gitlab.archlinux.org/archlinux/packaging/packages/lib32-pcre2/-/archive/${_compat32_pcre2_pkg_commit}/lib32-pcre2-${_compat32_pcre2_pkg_commit}.tar.bz2"
180
"lib32-libffi-${_compat32_libffi_pkg_commit}.tar.bz2::https://gitlab.archlinux.org/archlinux/packaging/packages/lib32-libffi/-/archive/${_compat32_libffi_pkg_commit}/lib32-libffi-${_compat32_libffi_pkg_commit}.tar.bz2"
181
"lib32-glib2-${_compat32_glib2_pkg_commit}.tar.bz2::https://gitlab.archlinux.org/archlinux/packaging/packages/lib32-glib2/-/archive/${_compat32_glib2_pkg_commit}/lib32-glib2-${_compat32_glib2_pkg_commit}.tar.bz2"
182
"lib32-xz-${_compat32_xz_pkg_commit}.tar.bz2::https://gitlab.archlinux.org/archlinux/packaging/packages/lib32-xz/-/archive/${_compat32_xz_pkg_commit}/lib32-xz-${_compat32_xz_pkg_commit}.tar.bz2"
183
"lib32-libunwind-${_compat32_libunwind_pkg_commit}.tar.bz2::https://gitlab.archlinux.org/archlinux/packaging/packages/lib32-libunwind/-/archive/${_compat32_libunwind_pkg_commit}/lib32-libunwind-${_compat32_libunwind_pkg_commit}.tar.bz2"
184
"lib32-openssl-${_compat32_openssl_pkg_commit}.tar.bz2::https://gitlab.archlinux.org/archlinux/packaging/packages/lib32-openssl/-/archive/${_compat32_openssl_pkg_commit}/lib32-openssl-${_compat32_openssl_pkg_commit}.tar.bz2"
185
"lib32-sqlite-${_compat32_sqlite_pkg_commit}.tar.bz2::https://gitlab.archlinux.org/archlinux/packaging/packages/lib32-sqlite/-/archive/${_compat32_sqlite_pkg_commit}/lib32-sqlite-${_compat32_sqlite_pkg_commit}.tar.bz2"
186
"lib32-brotli-${_compat32_brotli_pkg_commit}.tar.bz2::https://gitlab.archlinux.org/archlinux/packaging/packages/lib32-brotli/-/archive/${_compat32_brotli_pkg_commit}/lib32-brotli-${_compat32_brotli_pkg_commit}.tar.bz2"
187
"lib32-libpsl-${_compat32_libpsl_pkg_commit}.tar.bz2::https://gitlab.archlinux.org/archlinux/packaging/packages/lib32-libpsl/-/archive/${_compat32_libpsl_pkg_commit}/lib32-libpsl-${_compat32_libpsl_pkg_commit}.tar.bz2"
188
"lib32-libnghttp2-${_compat32_libnghttp2_pkg_commit}.tar.bz2::https://gitlab.archlinux.org/archlinux/packaging/packages/lib32-libnghttp2/-/archive/${_compat32_libnghttp2_pkg_commit}/lib32-libnghttp2-${_compat32_libnghttp2_pkg_commit}.tar.bz2"
189
"lib32-libsoup3-${_compat32_libsoup3_pkg_commit}.tar.bz2::https://gitlab.archlinux.org/archlinux/packaging/packages/lib32-libsoup3/-/archive/${_compat32_libsoup3_pkg_commit}/lib32-libsoup3-${_compat32_libsoup3_pkg_commit}.tar.bz2"
190
"lib32-libelf-${_compat32_libelf_pkg_commit}.tar.bz2::https://gitlab.archlinux.org/archlinux/packaging/packages/lib32-libelf/-/archive/${_compat32_libelf_pkg_commit}/lib32-libelf-${_compat32_libelf_pkg_commit}.tar.bz2"
191
'compat32-zlib.patch'
192
'compat32-pcre2.patch'
193
'compat32-libffi.patch'
194
'compat32-glib2.patch'
195
'compat32-xz.patch'
196
'compat32-libunwind.patch'
197
'compat32-openssl.patch'
198
'compat32-sqlite.patch'
199
'compat32-brotli.patch'
200
'compat32-libpsl.patch'
201
'compat32-libnghttp2.patch'
202
'compat32-libsoup3.patch'
203
'compat32-libelf.patch'
204
)
205
b2sums=(
206
'583bd0d5cc30dd84d8c6c4f0808ba1a7324047f9feb1e4b86d1e7f252be18e79957a399e1bf051c31e9592b540bd2e24e8a227bad35473ccee3a6b01079dd9b1'
207
'a427f2d003b20241cab84564e00185a6bab0f970a32375c931e627b73a68c3f91b0439367d099d618af81f07af64df219d15e2952fb5876685e50cf44c6a0ebd'
208
'1538b3360ce41fb884ceb4b8627689ab8420468b666b3ddbc98c619589e4edea8e9784aa5059899eba005d2a2b6205e6d1d6153960b7026713510eef9fc54bf3'
209
'4127ac2a39b8e4aaf612b8e0c54d40e87e8a175c408ae1d427333cd7c0fa932d9122f2af01ab2eaad737a8234034c7fc906208cd6241e18918cf9c5ee25f43e9'
210
'1c7252d80571b4b94cbdf66735106d2d4b7e98a07dae15c7bb2d00f24d2a572a4fccbc342f1c7320390e991f78b3fc77af88487639e64b41f5d32b2f9b813359'
211
'c4c05793a29adfbafba7313c5ea304c01799c2a40229b5d1b42f23f008683995e3285a6ccc4ef138542542afc4eba227cc770744e12f6563f79434cc166b939a'
212
'31ca08f88cdc0545d32de7e6b06fc6d292729f7368a77e9a7b45688c7d2f5bf99f339970fe1feb9902555ddee28950cc1ef3e39eb7bc49e6febafeacea825eee'
213
'8dd7ab20d53ea03df8b939611a4bd7b6d165bbd659eab7ddaae8ed19c55181f571a322771e91beaea619cf13a02e7dec6ed4d8959cc54d3dda4dfcd3f36c523f'
214
'f6c7c429f6b2f51cba67945c2a23d3521d7c581ac6501ed11602fa3f4d41f7d8047b19858d163c96b1dd67e2d7e1cb8e8b330c0080e8a681468a4f6c0aa2f1a3'
215
'6f0dc922a7df8bcbf98600a152b17e8e20ff6a3d0531fbe41475a58159cde99a4045e733f9d3548e4b3302fb23019ef4975dd48b040a4e97edf6429235d2cfe2'
216
'69f082cd148c83015362af4ea1e64d72a4b37badd95213f9c43339333d2771bc5f646b60f8da0f6dd345d4dd23f336c4620a211027a8cfa21b0bf4a6b40001b6'
217
'772a342f8b546a89d109759941cb4e59a393e4b81c648dac93b4517904ace3b01a27996dcf9f47c6a4e589bf8aa1c16cdb923a06512ad45980bcead051159f8a'
218
'be66cde556477afda4590a8980bb1e3b3a0de75699eebb245006a100884f798d2e9ea71a015488b0c2b4923103168ba52f5e62da3b7d9d3fc102a66aba458a97'
219
'f78657c43cd94dc191a422e7a124eb7c24f72d02b13e065246bcc329db3fda3aa5366c1cdd7576d6a7770204b6061939886a77523c63b7b832453eccd7ea641a'
220
'884738e164b04edcd09622440863bd856633749e28f42393143155767e25a5132b9fb3448929cf8f3bdf21e9b714d727f1b82fcff550ce9fe948a14f91cb8c4e'
221
'2477febff4fc1fb3f0897001f3f17d57946ae451469f9ca61baf3e5ab7f8b6bf7472c45a5841384512e557be59c15a7f09d39975c0d785a40fdc82158769c8c8'
222
'948a5a0e8339069e3e646d974af956ff75545a243089102b686358b07bc3678c778b68f2fd2565d32c0b654c63d88ef26e09f4e0f6d35af71552cb7f826bdb74'
223
'c782fea3d5d47533e57542dafbb76946f396a19135b6fa485760bcae0a0f452b7a04fc3a522b8882a4f64098f3247e1c94fa9e12de5b73a6f47fa52beb422a5f'
224
'd058bde27c8f89883de05a0229e3f4d83c19abc61e7db752bb4d43f6c99f0346ce962ca4ddae2be7ae1a6ededd4c8cf0b9ea4845e5efb2db9af8eda876903274'
225
'c301569e499896be65e92d57536cb85dcdf38a6c61520d86b450d1c63c5acd7b7c7f6d43834469f4244c329d652abcf1fd9212bcc686c1cca68ca7070e6a6d91'
226
'9b4e044bd74b8522b789d4026d642299b92e0becd9e5d1ec4ed7845637d864643c786001e1ec7b1085efeadea1aea931b084505796cf6fce4799d5ba8f8cbc53'
227
'11a0be3615a0438b16a2989de8ab8b7e6a5737847fab7e895333b0720837b60b2b53c0883d3721456a4073ae4fae8220c7931b6742281f152d8c59c167000462'
228
'6f4797662e66814dc178d365391a0370914bdefc05751e36ca6071fceba70ed1ac46fc7f47fef705347bf4a4221acee0df27e14e7032cbce95424a0ef2cc678e'
229
'303b11566e3145c729aaf07a8585c1b3a0c8d39421c7ff378b789e1a1b57c33fcc0a280e2c87065eb643f7f2d8b840de6f7595c0bd32399fa67f7e0395ca9d27'
230
'e9c192d82ac859f3ccf4338ab30fd9e40009263efc233f889a777a2b12979344a1f505a8109179d26c8327c989827bf15ad8b41f2b4d4c95eadb20ed8fd5d6c2'
231
'9b674f56ffaba9bf8cb223c0b71f56fcfed225c33ba6e156c3290352180ece53988fc15f9a81ccf79b1da920a3b2e44657f505c23b4f81c601c51d498526b6e2'
232
'e0ff54efb256c8ecfbdccd05c9ce3ec6715766835eb4942025949d973dca987f5cda1f7472409df0e59f3e948ffb38d7ca6e01bb9734b09348d19d181aaae477'
233
'63cee68d27a68d2fec858971b1e147e53bbef0349693da4652d85637113154659ddb0623df46134d16d0676d215fa91a93c564863a8bd441b4cf2f1a2352b60e'
234
'd03968c9826e952f97c634da0f2ca14fd3cd7faf80eb40e6e1d13ad02d8e49f10711f65856065b6f38fb02cbac2f0e836c96cfa70c405f467a2ab47b9151e18a'
235
'8778c4209acee501d15ab210f57ec2cf25aefe88238e21c5f655f86dd4b0f047950ce60847a1ce06e752e8b95a557a026e0d9f5c5ab529c72b75658f924c97fc'
236
'db92481ab7208a18637b14d01e5ced99dceccc26516a74057f1e97e0e067f2c78346eedc2ce854a68bee56b5721705f4ced9271e32a76dd1541246a0cad0f9e6'
237
'0a512a75226327372a55c72a2aa16d19461a9b62880ca5b31ab134bb861be80812b57ee1685caa9aa211500eae55bcde2a1120b22e22270148980a06c2763d5b'
238
'0cc182fa8227c7e4008dfdc91f492084c27b270b69419dcd728b90a066f9ca0e20fe3a1e3cee471b36e274c70728ca4c129c5ee45d02e5eb984bda4d192bfd10'
239
'9c4aaabdf97041669d74e7e0599e8384e23a4a6da6614cc3b3e082f4dcf0a158540e2fea4b859dbae325d685d14529e0459804abe4cbe773e5c4f6df233bb6c2'
240
'4d14d92e45d745e7f1025352c4f44cf492b6eb31ed45c3ee53e6861541edfa03c0ae650e3715665e19d879b6b1171acbc443b161dfacb295882d695da852eb62'
241
'9a9fbf2b295ede59b45a8d88ad30dca98d17874eede72af811fd3460c75b61cf2a15691f23941e07f852bb82db00110a726a1b443317a5bf6460e9c30c8e391f'
242
'905e2bef43e30078530b35b2c9f3e45042d42f5104a136e59610010599c87d0953819b4bb728699b87b82c6d11dc30073bcd60b365b4f2cf68eccf616bac5080'
243
'77047cb00326a91365baec9c3349a7a4520468386f384efc4e633dcdb5de53595d39d4717150c2b85849f8cb1edd72f523d3968934acd6911982ae50f630e0bc'
244
'a2ef86d7c8b3490c0cd1a4488eec81d050cba1d834e76589d1462a6cc374f1bf670277cee0f4479af77f700a20c553a1d094ba5e52118b9e46c87b6222e8dfcd'
245
'eb2babf107878f87347c542daf84dfc2bb548807d6f015277717f4beb110f381d11d2e6926d2d36932f98b3ea49e1752986c495d3c449ab558d989f9b240a964'
246
'b97a4daae1e65294f378c9f2a559eb3620ed2b2e6d1c01860f63c88b915eafa0afa4d50018ba834240503485e9fb29e29087b2c55215727bce1cf1c24b15077f'
247
'30409e02626d886dd1e976ed3a074039c8cb58030b1e74e6b29209d76ed8c38952a2771077c26433575728d64abc8f1888282d19dd964de3f29be3d2fa6e8e39'
248
'c8917bd0643b4b22c95e57c0eb411f048ab7630a92ed54c3bd97244b31e42bc56b68766ac34ce1b77152b15c4da7195cc9e093252c3a1a0ef679a88a437ff3c8'
249
'b12192f399a09598a6c49cf82dae81bdce62f9e621233eda650ce585fc84998dca05444926e6749c65d12386ac06240bed1e886c107ade4ba0f2032087b4d729'
250
'626b745ad1e6e40d443c26712b791ae44af732cbaf97c6baef066d3c88d64811e3e923cd3f85375687af1c186092cbb971cf983b267bdea81858d786395adb7a'
251
'7d4c652d381f315c675fed49e81580c803479c90f131204709769d1e8ba94774b83d464ee832c3e2f560a2304f5ce2f72dd6740e987c89d7c241608151af98ae'
252
'242c94ad87f147fe337575e7639dae7c486e6b8a9c089dea2fd67fcd496e076165afaba3003652f2a9d4da4b49d47273852b7e6753d3e527bc65d56ebcf3dcd3'
253
'85da1f19171e0524a5c62fe049b81d21368f41e46e725514a62a3887d14de87a4dcaf99757aad9f6606088a87cd5cf4b0d9bb78830bd4447f72f380077993b22'
254
'7ba008b86fd730eacd9868b66ce4e132719ef3976b92f5c035a7e5308368724eb3fadac7b051c76ff67daca37a59a16cb22cb1752ba4048e2ecc5ee2870f180f'
255
'5a2fa0418c540d8082c622b9db8534d5878ed30fbe817f01979e5773abaa475740b3f8d2b5f1af3caf7c43701af9c41113e5e5da7080260a43608e8260def01f'
256
'd6f6dee0b4abce002222d6e406934d4d43b4c261a61ce1092d8435eba4509d693bd2e278e06f0a5d89cacd5d6a1f78cea7cab225b700c431a14676a00d3f0cec'
257
'4e74d7e9b495542bc88a0c5f50e1cd9cf24df020513bb50708975dbf9673a9a9481aeef23f2ed20a0db3cd0ccea75043335ecb11477d008206222149cf0faccd'
258
'b92e7463bb80633e95d87139c08f7a6325e2b568536c8da02595fe63242bdc5f855c6d2cf46d6c43542c5e6dd41a61c1641c514de5e3e210ab5eeea0590023d3'
259
'c3c28cb317caa1da9e0edec878348d94ff43703fd843d4e99a6a167508a58e174cefde4b3ce088a94f9178717c719208c411164a402ce467e942e2d8ab1c6665'
260
'96a0c6d68eba9514a82ed0ba3a487f657b16eb2798bf42cbf0115967ebade33889e351775a44eb93f2c354558c8be5e86426dba09f32bfdd09a1161461104149'
261
'47e8ed9dee72b31f3e6ba6d526e763f4be352605d457a25bb4d0967854c5698939da45ebebafaa5a75309486158cd36ef5782bb08b644df5d3d1db7fed166527'
262
'0152710b0b0deafa41896e63ec81bd97f41017d1736ce22b1d2d5cdb7a4d909f82e4d7d04d29890719000be0c566947464a31fa848bf5b1937fa9de44830c585'
263
'0f2ff875e71eb90355bcb99604cc507bbe59adf9d891832744f3353a59b6759ab8f8ab2fd43de0035d0d71109c6502b3978a534f7625bffa450df5d8b98bdbbb'
264
'0b768810078071b1c74b0f36d0bc7bd632009acf987f4c0577945b215b4dcecafed7cbdf358e7f8831532b9a42cf721b49482801a9a4baf6d2bab34477ff8aed'
265
'ba9d347271ca6abba1e0d293710323ba09aa3de3ef459a13345cd4c401734b8f36ab57c5d5fd202e20a6163a38addbfb1eb5a89cf783f668c746e526ea030913'
266
'c47a8ed3f6435633de56d063f20d9dcd8bcad188f3a78b94b3fd543dc0c7b49bf44c9f6b24f1a317eee22ffe399bcb19bc5f15e8e47e8b0c8cd3e1ba57031043'
267
'6248e66c8fe2e997b97c360cdc37e03aa859adaafa866be9a371e0682d35b1c51056d4d4549a33cfa4e4b0a650d1b4faf33f46e333545c8069561c8870e0472c'
268
'a51b1cecbbf1324099963ee4826d58f5519c8169461a8572825a1cd5c52ebbdf5c34d15e36bd7b82c6fa43ff239bd57daf96f633a160f2b194a96c1d9c0d269d'
269
'7e5d90c787f4737d035cad67a0fa54de77be81e8a971a790c0e5e1ae384798a325eb9bb26f4b8703c5b30681b4165ea8d4c080e4c3455a3842f8b2529f3a998e'
270
'1225dad32ba798670a8a3cf2721336101d44ba7b4fd5e468e0c7966407c2a3ab171953c16c9b77eec35a978583e9162aa194e4e8608e27bbb4acc0f8c9299d8d'
271
'f13b67bb284ae3e1d558d32d2289efeee1ab48dd41b5f596647ae28fbd07f57b01f2586c581dc0636f381d6d64f5715f8757b9461a16510ae507df4f638abef2'
272
'628914bf5b1f5eb74a71bf5e32838d81514e75bcca02b61da5278f7d233274535275b31294147f07a990c0cae0f8de5b2d5cdaa706c5b6c4914435dbc82c797b'
273
'c28644068415ec063cc0ea52e4cc8bb01db4eda5ea5305174f5b2a7b6deb5413f3356b44326ff4fcafd8a12fdb2db43f8afeb81db2dce2c22f64e91663529ec6'
274
'a45e9e27d6e5f4af676fd2cd385105c85dcd88f60f4c40e04926d4b31ec444aa74ad7d1a67c6fb8bd952de302a3984adc8f9e302b84a030b5a86e3cb62e03117'
275
'0506a63f43196804d9f25e83dd1b9cc38ae027bbb196206e971f49694b60939cadab72430975bd889e12750f0f537df3b62eeed4e6427d28d369bee3e7f3ce3e'
276
'fc247585bf7fbc3e3261a7d80904f26634d7f7e4ebcb3830b5e596531c9151db6f7a7cd7020f9fe421d3db1a08aed709f4b8b4e3c45e7daecf9a7ead8df29d4a'
277
'51e7b3e773b4cc7077045abc40c28e6f1468351af542ef4866515da2593c56cf2400b6599c95ad288f94d515958c0b4d2ec1ef3a575e8d0ba80ada1c396ff009'
278
'4a2bdaf9cc9e3da6e83ea6bdc1e5e1ad421eea9e326dcf44a9ed678cc967859a92982eb6346aa9190409eb923cd42ca271cadc541e5557b47d911e4b8bd98ea2'
279
'52c5d0779c64949bc4778a9ae6381e7e440968a3482389ed7ffef435aeb5e941af86021444fa89e41a23a782bd512c5da073d61bcd303a60e2b66e929dd84e05'
280
'4c7a7e68fa4a605c9d720d9771b80b286eb978f8ca81e464990649dbf59e9a41092d8b4e6cbfdb3773237eb94f9b3bc724b6fb8024d9b9a9335d2206991f01f0'
281
'67f999beb4bf7fa84db88a9b09bcea31d843c51de2b05f1bf0251a156789b1c3be6ea259d83d08f4c942ea3cf55a74f1b5638ae1d7fbda97d10aad732a578f6d'
282
)
283
284
_makepkg_jobs() {
285
local _arg
286
local _jobs=''
287
local _jobs_next=0
288
289
for _arg in ${MAKEFLAGS:-}; do
290
if (( _jobs_next == 1 )); then
291
case "${_arg}" in
292
''|*[!0-9]*) ;;
293
*) _jobs="${_arg}" ;;
294
esac
295
_jobs_next=0
296
continue
297
fi
298
299
case "${_arg}" in
300
-j|--jobs)
301
_jobs_next=1
302
;;
303
-j[0-9]*)
304
_jobs="${_arg#-j}"
305
;;
306
--jobs=[0-9]*)
307
_jobs="${_arg#--jobs=}"
308
;;
309
esac
310
done
311
312
printf '%s\n' "${_jobs:-1}"
313
}
314
315
_compat32_flags() {
316
local _input="${1:-}"
317
local _flag
318
local _flags=()
319
320
for _flag in ${_input}; do
321
[[ "${_flag}" == -m* ]] && continue
322
_flags+=("${_flag}")
323
done
324
printf '%s\n' "${_flags[*]} -m32 -march=pentium4 -mfpmath=sse -mstackrealign -fPIC"
325
}
326
327
_compat32_builddir() {
328
local _name="${1:?missing recipe name}"
329
printf '%s\n' "${srcdir}/compat32-build/lib32-${_name}"
330
}
331
332
_prepare_compat32_recipe() {
333
local _name="${1:?missing recipe name}"
334
local _commit="${2:?missing recipe commit}"
335
local _patch="${3:?missing recipe patch}"
336
local _recipe_dir="${srcdir}/lib32-${_name}-${_commit}"
337
local _patch_path="${srcdir}/${_patch}"
338
local _nested_builddir
339
local _compat_cflags
340
local _compat_cxxflags
341
342
_nested_builddir="$(_compat32_builddir "${_name}")"
343
_compat_cflags="$(_compat32_flags "${CFLAGS:-}")"
344
_compat_cxxflags="$(_compat32_flags "${CXXFLAGS:-}")"
345
346
(
347
cd -- "${_recipe_dir}" || exit 1
348
if [[ "${_name}" == 'glib2' ]]; then
349
ln -sf -- "${srcdir}/glib-${_glib_commit}.tar.gz" \
350
"glib-${_glib_commit}.tar.gz"
351
ln -sf -- "${srcdir}/gvdb-${_gvdb_commit}.tar.gz" \
352
"gvdb-${_gvdb_commit}.tar.gz"
353
fi
354
if patch --dry-run -Np1 --fuzz=0 -i "${_patch_path}" >/dev/null 2>&1; then
355
patch -Np1 --fuzz=0 -i "${_patch_path}"
356
elif patch --dry-run -Rp1 --fuzz=0 -i "${_patch_path}" >/dev/null 2>&1; then
357
printf 'compat32 %s patch already applied\n' "${_name}"
358
else
359
printf 'compat32 %s patch state is inconsistent\n' "${_name}" >&2
360
exit 1
361
fi
362
makepkg -d --nobuild --skippgpcheck \
363
"BUILDDIR=${_nested_builddir}" \
364
"CFLAGS=${_compat_cflags}" \
365
"CXXFLAGS=${_compat_cxxflags}"
366
)
367
}
368
369
_stage_compat32_recipe() {
370
local _name="${1:?missing recipe name}"
371
local _compat32_sysroot="${2:?missing compat32 sysroot}"
372
local _nested_builddir
373
local _package_root
374
375
_nested_builddir="$(_compat32_builddir "${_name}")"
376
_package_root="${_nested_builddir}/lib32-${_name}/pkg/lib32-${_name}/usr"
377
378
[[ -d "${_package_root}" ]] || return 1
379
mkdir -p -- "${_compat32_sysroot}/usr/include" "${_compat32_sysroot}/usr/lib32"
380
381
if [[ -d "${_package_root}/include" ]]; then
382
cp -a -- "${_package_root}/include/." "${_compat32_sysroot}/usr/include/"
383
fi
384
if [[ -d "${_package_root}/lib32" ]]; then
385
cp -a -- "${_package_root}/lib32/." "${_compat32_sysroot}/usr/lib32/"
386
fi
387
if [[ -d "${_package_root}/share/licenses/lib32-${_name}" ]]; then
388
mkdir -p -- "${_compat32_sysroot}/usr/share/licenses/frida/compat32/${_name}"
389
cp -aL -- "${_package_root}/share/licenses/lib32-${_name}/." \
390
"${_compat32_sysroot}/usr/share/licenses/frida/compat32/${_name}/"
391
fi
392
}
393
394
_build_compat32_recipe() {
395
local _name="${1:?missing recipe name}"
396
local _commit="${2:?missing recipe commit}"
397
local _compat32_sysroot="${3:?missing compat32 sysroot}"
398
local _recipe_dir="${srcdir}/lib32-${_name}-${_commit}"
399
local _nested_builddir
400
local _compat_cflags
401
local _compat_cxxflags
402
403
_nested_builddir="$(_compat32_builddir "${_name}")"
404
_compat_cflags="$(_compat32_flags "${CFLAGS:-}")"
405
_compat_cxxflags="$(_compat32_flags "${CXXFLAGS:-}")"
406
407
(
408
cd -- "${_recipe_dir}" || exit 1
409
unset PKG_CONFIG_LIBDIR PKG_CONFIG_SYSROOT_DIR
410
PATH="${srcdir}/compat32-bin:${PATH}" \
411
FRIDA_COMPAT_SYSROOT="${_compat32_sysroot}" \
412
PKG_CONFIG_PATH='' \
413
CPATH="${_compat32_sysroot}/usr/include${CPATH:+:${CPATH}}" \
414
LDFLAGS="${LDFLAGS:-} -L${_compat32_sysroot}/usr/lib32" \
415
makepkg -d --noextract --noprepare --nocheck --noarchive --force \
416
"BUILDDIR=${_nested_builddir}" \
417
"CFLAGS=${_compat_cflags}" \
418
"CXXFLAGS=${_compat_cxxflags}"
419
) || return 1
420
421
_stage_compat32_recipe "${_name}" "${_compat32_sysroot}"
422
}
423
424
_build_compat32_sysroot() {
425
local _compat32_sysroot="${srcdir}/compat32"
426
local _compat32_bin="${srcdir}/compat32-bin"
427
local _glib_pc="${_compat32_sysroot}/usr/lib32/pkgconfig/glib-2.0.pc"
428
429
rm -rf -- "${_compat32_sysroot}" "${_compat32_bin}"
430
mkdir -p -- "${_compat32_sysroot}/usr/include" "${_compat32_sysroot}/usr/lib32"
431
mkdir -p -- "${_compat32_bin}"
432
ln -s -- "${srcdir}/frida-pkg-config-32" "${_compat32_bin}/i686-pc-linux-gnu-pkg-config"
433
434
_build_compat32_recipe 'zlib' "${_compat32_zlib_pkg_commit}" "${_compat32_sysroot}"
435
_build_compat32_recipe 'pcre2' "${_compat32_pcre2_pkg_commit}" "${_compat32_sysroot}"
436
_build_compat32_recipe 'libffi' "${_compat32_libffi_pkg_commit}" "${_compat32_sysroot}"
437
_build_compat32_recipe 'glib2' "${_compat32_glib2_pkg_commit}" "${_compat32_sysroot}"
438
439
[[ -f "${_glib_pc}" ]] || return 1
440
sed -i \
441
-e 's/^Cflags:/Cflags: -DGLIB_STATIC_COMPILATION/' \
442
"${_glib_pc}"
443
444
445
_build_compat32_recipe 'xz' "${_compat32_xz_pkg_commit}" "${_compat32_sysroot}"
446
_build_compat32_recipe 'libunwind' "${_compat32_libunwind_pkg_commit}" "${_compat32_sysroot}"
447
_build_compat32_recipe 'openssl' "${_compat32_openssl_pkg_commit}" "${_compat32_sysroot}"
448
_build_compat32_recipe 'sqlite' "${_compat32_sqlite_pkg_commit}" "${_compat32_sysroot}"
449
_build_compat32_recipe 'brotli' "${_compat32_brotli_pkg_commit}" "${_compat32_sysroot}"
450
_build_compat32_recipe 'libpsl' "${_compat32_libpsl_pkg_commit}" "${_compat32_sysroot}"
451
_build_compat32_recipe 'libnghttp2' "${_compat32_libnghttp2_pkg_commit}" "${_compat32_sysroot}"
452
_build_compat32_recipe 'libsoup3' "${_compat32_libsoup3_pkg_commit}" "${_compat32_sysroot}"
453
_build_compat32_recipe 'libelf' "${_compat32_libelf_pkg_commit}" "${_compat32_sysroot}"
454
455
if find "${_compat32_sysroot}/usr/lib32" \( -type f -o -type l \) -name '*.so*' -print -quit | grep -q .; then
456
printf 'compat32 sysroot unexpectedly contains shared libraries\n' >&2
457
return 1
458
fi
459
460
PKG_CONFIG_PATH='' \
461
PKG_CONFIG_LIBDIR="${_compat32_sysroot}/usr/lib32/pkgconfig" \
462
PKG_CONFIG_SYSROOT_DIR="${_compat32_sysroot}" \
463
pkg-config --static --exists \
464
'zlib' 'libpcre2-8' 'libffi' 'glib-2.0' \
465
'liblzma' 'libunwind' 'openssl' 'sqlite3' \
466
'libbrotlidec' 'libpsl' 'libnghttp2' 'libsoup-3.0' 'libelf'
467
}
468
469
_stage_frida_sdk_source() {
470
local _name="${1:?missing SDK source name}"
471
local _archive="${2:?missing SDK source archive}"
472
local _revision="${3:?missing SDK source revision}"
473
local _dest="${srcdir}/frida-sdk-sources/${_name}"
474
475
rm -rf -- "${_dest}"
476
mkdir -p -- "${_dest}"
477
bsdtar -xf "${srcdir}/${_archive}" -C "${_dest}" --strip-components 1
478
printf '%s\n' "${_revision}" > "${_dest}/.frida-source-revision"
479
}
480
481
_prepare_frida_sdk_sources() {
482
local _sdk_root="${srcdir}/frida-sdk-sources"
483
local _glib_subprojects
484
485
rm -rf -- "${_sdk_root}"
486
mkdir -p -- "${_sdk_root}"
487
488
_stage_frida_sdk_source 'zlib' "sdk-zlib-${_sdk_zlib_commit}.tar.gz" "${_sdk_zlib_commit}"
489
_stage_frida_sdk_source 'libffi' "sdk-libffi-${_sdk_libffi_commit}.tar.gz" "${_sdk_libffi_commit}"
490
_stage_frida_sdk_source 'pcre2' "sdk-pcre2-${_sdk_pcre2_commit}.tar.gz" "${_sdk_pcre2_commit}"
491
_stage_frida_sdk_source 'glib' "glib-${_glib_commit}.tar.gz" "${_glib_commit}"
492
_stage_frida_sdk_source 'elfutils' "sdk-elfutils-${_sdk_elfutils_commit}.tar.gz" "${_sdk_elfutils_commit}"
493
_stage_frida_sdk_source 'libdwarf' "libdwarf-${_libdwarf_commit}.tar.gz" "${_libdwarf_commit}"
494
_stage_frida_sdk_source 'libbpf' "libbpf-${_libbpf_commit}.tar.gz" "${_libbpf_commit}"
495
_stage_frida_sdk_source 'xz' "sdk-xz-${_sdk_xz_commit}.tar.gz" "${_sdk_xz_commit}"
496
_stage_frida_sdk_source 'brotli' "sdk-brotli-${_sdk_brotli_commit}.tar.gz" "${_sdk_brotli_commit}"
497
install -Dm644 -- "${srcdir}/sdk-brotli-meson-${_sdk_brotli_commit}.build" \
498
"${_sdk_root}/brotli/meson.build"
499
_stage_frida_sdk_source 'lzfse' "lzfse-${_lzfse_commit}.tar.gz" "${_lzfse_commit}"
500
_stage_frida_sdk_source 'minizip-ng' "sdk-minizip-ng-${_sdk_minizip_ng_commit}.tar.gz" "${_sdk_minizip_ng_commit}"
501
_stage_frida_sdk_source 'sqlite' "sdk-sqlite-${_sdk_sqlite_commit}.tar.gz" "${_sdk_sqlite_commit}"
502
_stage_frida_sdk_source 'libunwind' "sdk-libunwind-${_sdk_libunwind_commit}.tar.gz" "${_sdk_libunwind_commit}"
503
_stage_frida_sdk_source 'glib-networking' "glib-networking-${_glib_networking_commit}.tar.gz" "${_glib_networking_commit}"
504
_stage_frida_sdk_source 'libnice' "libnice-${_libnice_commit}.tar.gz" "${_libnice_commit}"
505
_stage_frida_sdk_source 'libusb' "libusb-${_libusb_commit}.tar.gz" "${_libusb_commit}"
506
_stage_frida_sdk_source 'lwip' "lwip-${_lwip_commit}.tar.gz" "${_lwip_commit}"
507
_stage_frida_sdk_source 'usrsctp' "usrsctp-${_usrsctp_commit}.tar.gz" "${_usrsctp_commit}"
508
_stage_frida_sdk_source 'libgee' "libgee-${_libgee_commit}.tar.gz" "${_libgee_commit}"
509
_stage_frida_sdk_source 'json-glib' "json-glib-${_json_glib_commit}.tar.gz" "${_json_glib_commit}"
510
_stage_frida_sdk_source 'libpsl' "sdk-libpsl-${_sdk_libpsl_commit}.tar.gz" "${_sdk_libpsl_commit}"
511
rm -rf -- "${_sdk_root}/libpsl/list"
512
mkdir -p -- "${_sdk_root}/libpsl/list"
513
bsdtar -xf "${srcdir}/sdk-publicsuffix-${_sdk_publicsuffix_commit}.tar.gz" \
514
-C "${_sdk_root}/libpsl/list" --strip-components 1
515
_stage_frida_sdk_source 'libxml2' "sdk-libxml2-${_sdk_libxml2_commit}.tar.gz" "${_sdk_libxml2_commit}"
516
_stage_frida_sdk_source 'ngtcp2' "sdk-ngtcp2-${_sdk_ngtcp2_commit}.tar.gz" "${_sdk_ngtcp2_commit}"
517
_stage_frida_sdk_source 'nghttp2' "sdk-nghttp2-${_sdk_nghttp2_commit}.tar.gz" "${_sdk_nghttp2_commit}"
518
_stage_frida_sdk_source 'libsoup' "sdk-libsoup-${_sdk_libsoup_commit}.tar.gz" "${_sdk_libsoup_commit}"
519
patch -d "${_sdk_root}/libsoup" -Np1 --fuzz=0 -i "${srcdir}/sdk-libsoup-skip-chunked.patch"
520
_stage_frida_sdk_source 'capstone' "capstone-${_capstone_commit}.tar.gz" "${_capstone_commit}"
521
_stage_frida_sdk_source 'quickjs' "quickjs-${_quickjs_commit}.tar.gz" "${_quickjs_commit}"
522
_stage_frida_sdk_source 'tinycc' "tinycc-${_tinycc_commit}.tar.gz" "${_tinycc_commit}"
523
patch -d "${_sdk_root}" -Np1 --fuzz=0 -i "${srcdir}/sdk-relocatable-paths.patch"
524
_stage_frida_sdk_source 'openssl' "sdk-openssl-${_sdk_openssl_commit}.tar.gz" "${_sdk_openssl_commit}"
525
_stage_frida_sdk_source 'v8' "sdk-v8-${_sdk_v8_commit}.tar.gz" "${_sdk_v8_commit}"
526
patch -d "${_sdk_root}/v8" -Np1 --fuzz=0 -i "${srcdir}/sdk-v8-gcc16.patch"
527
528
_glib_subprojects="${_sdk_root}/glib/subprojects"
529
rm -rf -- "${_glib_subprojects}/pcre2" "${_glib_subprojects}/gvdb"
530
mkdir -p -- "${_glib_subprojects}/pcre2" "${_glib_subprojects}/gvdb"
531
bsdtar -xf "${srcdir}/sdk-pcre2-${_sdk_pcre2_commit}.tar.gz" \
532
-C "${_glib_subprojects}/pcre2" --strip-components 1
533
bsdtar -xf "${srcdir}/gvdb-${_gvdb_commit}.tar.gz" \
534
-C "${_glib_subprojects}/gvdb" --strip-components 1
535
}
536
537
prepare() {
538
local _npm_dir
539
local _npm_cache="${srcdir}/npm-cache"
540
local _go_mod_cache="${srcdir}/go-mod-cache"
541
local _go_build_cache="${srcdir}/go-build-cache"
542
543
_prepare_frida_sdk_sources
544
545
cd -- "frida-${pkgver}" || return 1
546
547
rm -rf -- releng \
548
subprojects/frida-core \
549
subprojects/frida-gum \
550
subprojects/frida-python
551
552
mv -- "${srcdir}/releng-${_releng_commit}" releng
553
rm -rf -- releng/meson releng/tomlkit
554
mv -- "${srcdir}/meson-${_meson_commit}" releng/meson
555
mv -- "${srcdir}/tomlkit-${_tomlkit_commit}" releng/tomlkit
556
mv -- "${srcdir}/frida-core-${_frida_core_commit}" subprojects/frida-core
557
mv -- "${srcdir}/frida-gum-${_frida_gum_commit}" subprojects/frida-gum
558
mv -- "${srcdir}/capstone-${_capstone_commit}" subprojects/frida-gum/subprojects/capstone
559
mv -- "${srcdir}/glib-${_glib_commit}" subprojects/frida-core/subprojects/glib
560
mv -- "${srcdir}/gvdb-${_gvdb_commit}" subprojects/frida-core/subprojects/glib/subprojects/gvdb
561
mv -- "${srcdir}/glib-networking-${_glib_networking_commit}" subprojects/frida-gum/subprojects/glib-networking
562
mv -- "${srcdir}/json-glib-${_json_glib_commit}" subprojects/frida-gum/subprojects/json-glib
563
mv -- "${srcdir}/libdwarf-${_libdwarf_commit}" subprojects/frida-gum/subprojects/libdwarf
564
mv -- "${srcdir}/libbpf-${_libbpf_commit}" subprojects/frida-core/subprojects/libbpf
565
mv -- "${srcdir}/libgee-${_libgee_commit}" subprojects/frida-core/subprojects/libgee
566
mv -- "${srcdir}/libnice-${_libnice_commit}" subprojects/frida-core/subprojects/libnice
567
mv -- "${srcdir}/lzfse-${_lzfse_commit}" subprojects/frida-core/subprojects/lzfse
568
mv -- "${srcdir}/quickjs-${_quickjs_commit}" subprojects/frida-gum/subprojects/quickjs
569
mv -- "${srcdir}/tinycc-${_tinycc_commit}" subprojects/frida-gum/subprojects/tinycc
570
mv -- "${srcdir}/frida-python-${_frida_python_commit}" subprojects/frida-python
571
rm -rf -- subprojects/frida-python/frida-bindgen
572
mv -- "${srcdir}/frida-bindgen-${_frida_bindgen_commit}" subprojects/frida-python/frida-bindgen
573
mv -- "${srcdir}/libusb-${_libusb_commit}" subprojects/frida-core/subprojects/libusb
574
mv -- "${srcdir}/lwip-${_lwip_commit}" subprojects/frida-core/subprojects/lwip
575
mv -- "${srcdir}/usrsctp-${_usrsctp_commit}" subprojects/frida-core/subprojects/usrsctp
576
577
patch -Np1 --fuzz=0 -i "${srcdir}/frida-releng.patch"
578
patch -Np1 --fuzz=0 -i "${srcdir}/frida-core-arch.patch"
579
patch -Np1 --fuzz=0 -i "${srcdir}/frida-hardening.patch"
580
581
sed -i \
582
"s/libgvc_dep = dependency('libgvc'.*/libgvc_dep = disabler()/" \
583
"${srcdir}/vala-${_vala_commit}/meson.build"
584
585
mkdir -p -- "${_npm_cache}" "${_go_mod_cache}" "${_go_build_cache}"
586
export npm_config_cache="${_npm_cache}"
587
export npm_config_audit=false
588
export npm_config_fund=false
589
590
for _npm_dir in \
591
subprojects/frida-core/src/compiler \
592
subprojects/frida-core/src/barebone; do
593
(
594
cd -- "${_npm_dir}" || exit 1
595
npm ci --ignore-scripts
596
)
597
done
598
599
(
600
cd -- subprojects/frida-core/src/compiler || exit 1
601
GOMODCACHE="${_go_mod_cache}" \
602
GOCACHE="${_go_build_cache}" \
603
go mod download
604
)
605
606
_prepare_compat32_recipe 'zlib' "${_compat32_zlib_pkg_commit}" 'compat32-zlib.patch'
607
_prepare_compat32_recipe 'pcre2' "${_compat32_pcre2_pkg_commit}" 'compat32-pcre2.patch'
608
_prepare_compat32_recipe 'libffi' "${_compat32_libffi_pkg_commit}" 'compat32-libffi.patch'
609
_prepare_compat32_recipe 'glib2' "${_compat32_glib2_pkg_commit}" 'compat32-glib2.patch'
610
_prepare_compat32_recipe 'xz' "${_compat32_xz_pkg_commit}" 'compat32-xz.patch'
611
_prepare_compat32_recipe 'libunwind' "${_compat32_libunwind_pkg_commit}" 'compat32-libunwind.patch'
612
_prepare_compat32_recipe 'openssl' "${_compat32_openssl_pkg_commit}" 'compat32-openssl.patch'
613
_prepare_compat32_recipe 'sqlite' "${_compat32_sqlite_pkg_commit}" 'compat32-sqlite.patch'
614
_prepare_compat32_recipe 'brotli' "${_compat32_brotli_pkg_commit}" 'compat32-brotli.patch'
615
_prepare_compat32_recipe 'libpsl' "${_compat32_libpsl_pkg_commit}" 'compat32-libpsl.patch'
616
_prepare_compat32_recipe 'libnghttp2' "${_compat32_libnghttp2_pkg_commit}" 'compat32-libnghttp2.patch'
617
_prepare_compat32_recipe 'libsoup3' "${_compat32_libsoup3_pkg_commit}" 'compat32-libsoup3.patch'
618
_prepare_compat32_recipe 'libelf' "${_compat32_libelf_pkg_commit}" 'compat32-libelf.patch'
619
}
620
621
_build_frida_sdk() {
622
local _toolchain_prefix="${1:?missing toolchain prefix}"
623
local _jobs="${2:?missing job count}"
624
local _sdk_work_root="${FRIDA_SDK_WORK_ROOT:-${srcdir}}/frida-sdk-build"
625
local _sdk_source_root="${srcdir}/frida-sdk-sources"
626
local _sdk_archive="${_sdk_work_root}/sdk-linux-${CARCH}.tar.xz"
627
local _sdk_prefix="${srcdir}/frida-sdk"
628
local _deps_toml="${srcdir}/frida-${pkgver}/releng/deps.toml"
629
630
if ! grep -qx "version = \"${_sdk_version}\"" "${_deps_toml}"; then
631
printf 'Frida dependency version does not match expected SDK %s\n' "${_sdk_version}" >&2
632
return 1
633
fi
634
635
rm -rf -- "${_sdk_work_root}" "${_sdk_prefix}"
636
mkdir -p -- "${_sdk_work_root}" "${_sdk_prefix}"
637
638
FRIDA_DEPS="${_sdk_work_root}" \
639
FRIDA_DEPS_SOURCE_ROOT="${_sdk_source_root}" \
640
FRIDA_DEPS_TOOLCHAIN_PREFIX="${_toolchain_prefix}" \
641
FRIDA_MAKE_JOBS="${_jobs}" \
642
python "${srcdir}/frida-${pkgver}/releng/deps.py" build \
643
--bundle=sdk \
644
--host="linux-${CARCH}"
645
646
[[ -f "${_sdk_archive}" ]] || {
647
printf 'Missing source-built Frida SDK archive: %s\n' "${_sdk_archive}" >&2
648
return 1
649
}
650
bsdtar -xf "${_sdk_archive}" -C "${_sdk_prefix}"
651
[[ "$(<"${_sdk_prefix}/VERSION.txt")" == "${_sdk_version}" ]] || {
652
printf 'Source-built Frida SDK has an unexpected version\n' >&2
653
return 1
654
}
655
}
656
657
_build_env() {
658
export FRIDA_VERSION="${pkgver}"
659
export FRIDA_COMPAT_SYSROOT="${srcdir}/compat32"
660
export npm_config_cache="${srcdir}/npm-cache"
661
export npm_config_offline=true
662
export npm_config_audit=false
663
export npm_config_fund=false
664
export GOMODCACHE="${srcdir}/go-mod-cache"
665
export GOCACHE="${srcdir}/go-build-cache"
666
export GOPROXY=off
667
export GOSUMDB=off
668
}
669
670
build() {
671
local _jobs
672
local _toolchain_prefix
673
local _vala_builddir
674
675
_jobs="$(_makepkg_jobs)"
676
_toolchain_prefix="${srcdir}/frida-${pkgver}/deps/toolchain-linux-${CARCH}"
677
_vala_builddir="${srcdir}/build-vala"
678
679
_build_env
680
_build_compat32_sysroot
681
682
[[ -d "${_toolchain_prefix}" ]] && chmod -R u+w -- "${_toolchain_prefix}"
683
[[ -d "${_vala_builddir}" ]] && chmod -R u+w -- "${_vala_builddir}"
684
rm -rf -- "${_toolchain_prefix}" "${_vala_builddir}"
685
686
python "${srcdir}/frida-${pkgver}/releng/meson/meson.py" setup \
687
--prefix="${_toolchain_prefix}" \
688
-Doptimization=2 \
689
"${_vala_builddir}" \
690
"${srcdir}/vala-${_vala_commit}"
691
python "${srcdir}/frida-${pkgver}/releng/meson/meson.py" compile \
692
-C "${_vala_builddir}" \
693
--jobs "${_jobs}"
694
python "${srcdir}/frida-${pkgver}/releng/meson/meson.py" install \
695
-C "${_vala_builddir}"
696
697
sed \
698
-e "s|@TOOLCHAIN_PREFIX@|${_toolchain_prefix}|g" \
699
-e "s|@VALA_BUILDDIR@|${_vala_builddir}|g" \
700
"${srcdir}/frida-valac.in" > "${srcdir}/frida-valac"
701
chmod +x -- "${srcdir}/frida-valac"
702
703
cd -- "frida-${pkgver}" || return 1
704
rm -rf -- build
705
706
export FRIDA_MAKE_JOBS="${_jobs}"
707
export FRIDA_COMPAT_PKG_CONFIG="${srcdir}/frida-pkg-config-32"
708
export PATH="${_toolchain_prefix}/bin:${PATH}"
709
export LD_LIBRARY_PATH="${_toolchain_prefix}/lib:${_toolchain_prefix}/lib/vala-0.58:${LD_LIBRARY_PATH:-}"
710
export VALAC="${srcdir}/frida-valac"
711
export PYTHONPATH="${PWD}:${PYTHONPATH}"
712
export VAPIGEN="${_toolchain_prefix}/bin/vapigen-0.58"
713
714
_build_frida_sdk "${_toolchain_prefix}" "${_jobs}"
715
export FRIDA_COMPAT_SDK="${srcdir}/frida-sdk"
716
717
./configure \
718
--prefix=/usr \
719
--enable-shared \
720
--without-prebuilds=toolchain,sdk \
721
--disable-frida-tools \
722
--enable-gadget \
723
--enable-server \
724
--enable-inject \
725
--enable-frida-python \
726
-- \
727
-Dportal=disabled \
728
-Dfrida-core:barebone_backend=enabled \
729
-Dfrida-core:compiler_backend=enabled \
730
--wrap-mode=nodownload
731
732
make -C build
733
734
rm -rf -- "${srcdir}/python-frida-dist"
735
FRIDA_EXTENSION="${PWD}/build/subprojects/frida-python/frida/_frida.abi3.so" \
736
python -m build \
737
--wheel \
738
--no-isolation \
739
--outdir "${srcdir}/python-frida-dist" \
740
subprojects/frida-python
741
}
742
743
_stage_install() {
744
local _dest="$1"
745
746
_build_env
747
748
cd -- "${srcdir}/frida-${pkgver}" || return 1
749
DESTDIR="${_dest}" python releng/meson/meson.py install \
750
-C build \
751
--no-rebuild
752
}
753
754
package_frida() {
755
local _compiler_backend="${pkgdir}/usr/lib/frida-1.0/plugins/frida-compiler-backend.so"
756
local _embedded_symbols
757
local _embedded_symbols_raw
758
local _gumjs_lib="${pkgdir}/usr/lib/libfrida-gumjs-1.0.so"
759
local _gumjs_pc="${pkgdir}/usr/lib/pkgconfig/frida-gumjs-1.0.pc"
760
local _gumjs_symbols
761
local _gumjs_symbols_raw
762
local _quickjs_lib="${srcdir}/frida-${pkgver}/build/subprojects/frida-gum/subprojects/quickjs/libquickjs.a"
763
local _tinycc_lib="${srcdir}/frida-${pkgver}/build/subprojects/frida-gum/subprojects/tinycc/libtcc.a"
764
local _rpath_target
765
local _sdk_component
766
local _sdk_source
767
local _license_file
768
local _license_first_line
769
local _license_relative
770
local _python_dir
771
772
optdepends=('frida-tools: command-line tools')
773
774
_stage_install "${pkgdir}"
775
776
_python_dir="$(find "${pkgdir}/usr/lib" -mindepth 1 -maxdepth 1 -type d -name 'python*' -print -quit)"
777
[[ -n "${_python_dir}" ]] || {
778
printf '%s\n' 'Missing installed Python directory' >&2
779
return 1
780
}
781
rm -rf -- "${_python_dir}/site-packages/frida"
782
rmdir -- "${_python_dir}/site-packages" "${_python_dir}" 2>/dev/null || true
783
784
rm -rf -- \
785
"${pkgdir}/usr/include/libusb-1.0" \
786
"${pkgdir}/usr/include/lwip" \
787
"${pkgdir}/usr/include/quickjs" \
788
"${pkgdir}/usr/include/libtcc.h" \
789
"${pkgdir}/usr/include/usrsctp.h" \
790
"${pkgdir}/usr/lib/libusb-1.0.a" \
791
"${pkgdir}/usr/lib/liblwip.a" \
792
"${pkgdir}/usr/lib/libquickjs.a" \
793
"${pkgdir}/usr/lib/libtcc.a" \
794
"${pkgdir}/usr/lib/libusrsctp.a" \
795
"${pkgdir}/usr/lib/tcc" \
796
"${pkgdir}/usr/lib/pkgconfig/libusb-1.0.pc" \
797
"${pkgdir}/usr/lib/pkgconfig/lwip.pc" \
798
"${pkgdir}/usr/lib/pkgconfig/quickjs.pc" \
799
"${pkgdir}/usr/lib/pkgconfig/libtcc.pc" \
800
"${pkgdir}/usr/lib/pkgconfig/usrsctp.pc"
801
802
[[ -f "${_gumjs_pc}" ]] || {
803
printf 'Missing GumJS pkg-config file: %s\n' "${_gumjs_pc}" >&2
804
return 1
805
}
806
sed -i \
807
-e 's/, quickjs//' \
808
-e 's/, libtcc//' \
809
"${_gumjs_pc}"
810
if grep -Eq '^Requires\.private:.*(quickjs|libtcc)' "${_gumjs_pc}"; then
811
printf '%s\n' 'Internal GumJS dependencies leaked into installed pkg-config metadata' >&2
812
return 1
813
fi
814
815
[[ -f "${_gumjs_lib}" ]] || {
816
printf 'Missing GumJS library: %s\n' "${_gumjs_lib}" >&2
817
return 1
818
}
819
[[ -f "${_quickjs_lib}" ]] || {
820
printf 'Missing QuickJS static library: %s\n' "${_quickjs_lib}" >&2
821
return 1
822
}
823
[[ -f "${_tinycc_lib}" ]] || {
824
printf 'Missing TinyCC static library: %s\n' "${_tinycc_lib}" >&2
825
return 1
826
}
827
828
_gumjs_symbols="$(mktemp)" || return 1
829
_gumjs_symbols_raw="$(mktemp)" || {
830
rm -f -- "${_gumjs_symbols}"
831
return 1
832
}
833
_embedded_symbols="$(mktemp)" || {
834
rm -f -- "${_gumjs_symbols}" "${_gumjs_symbols_raw}"
835
return 1
836
}
837
_embedded_symbols_raw="$(mktemp)" || {
838
rm -f -- "${_gumjs_symbols}" "${_gumjs_symbols_raw}" "${_embedded_symbols}"
839
return 1
840
}
841
if ! nm -D --defined-only "${_gumjs_lib}" > "${_gumjs_symbols_raw}"; then
842
rm -f -- "${_gumjs_symbols}" "${_gumjs_symbols_raw}" "${_embedded_symbols}" "${_embedded_symbols_raw}"
843
return 1
844
fi
845
if ! nm -g --defined-only "${_quickjs_lib}" "${_tinycc_lib}" > "${_embedded_symbols_raw}"; then
846
rm -f -- "${_gumjs_symbols}" "${_gumjs_symbols_raw}" "${_embedded_symbols}" "${_embedded_symbols_raw}"
847
return 1
848
fi
849
awk '{ print $3 }' "${_gumjs_symbols_raw}" | sort -u > "${_gumjs_symbols}"
850
awk '{ print $3 }' "${_embedded_symbols_raw}" | sort -u > "${_embedded_symbols}"
851
rm -f -- "${_gumjs_symbols_raw}" "${_embedded_symbols_raw}"
852
if comm -12 "${_gumjs_symbols}" "${_embedded_symbols}" | grep -q .; then
853
rm -f -- "${_gumjs_symbols}" "${_embedded_symbols}"
854
printf '%s\n' 'Embedded QuickJS or TinyCC symbols leaked from GumJS' >&2
855
return 1
856
fi
857
rm -f -- "${_gumjs_symbols}" "${_embedded_symbols}"
858
859
for _rpath_target in \
860
"${pkgdir}/usr/bin/frida-server" \
861
"${pkgdir}/usr/bin/frida-inject" \
862
"${pkgdir}/usr/lib/frida-1.0/64/frida-helper"; do
863
[[ -f "${_rpath_target}" ]] || continue
864
patchelf --remove-rpath "${_rpath_target}"
865
done
866
867
[[ -f "${_compiler_backend}" ]] || {
868
printf 'Missing Frida compiler backend: %s\n' "${_compiler_backend}" >&2
869
return 1
870
}
871
if grep -aqF "${srcdir}" "${_compiler_backend}"; then
872
printf '%s\n' 'Build path leaked into Frida compiler backend' >&2
873
return 1
874
fi
875
876
install -Dm644 "${srcdir}/frida-${pkgver}/COPYING" \
877
"${pkgdir}/usr/share/licenses/frida/COPYING"
878
879
for _sdk_source in "${srcdir}"/frida-sdk-sources/*; do
880
[[ -d "${_sdk_source}" ]] || continue
881
_sdk_component="${_sdk_source##*/}"
882
while IFS= read -r -d '' _license_file; do
883
grep -Iq . -- "${_license_file}" || continue
884
_license_first_line=''
885
IFS= read -r _license_first_line < "${_license_file}" || true
886
[[ "${_license_first_line}" == '#!'* ]] && continue
887
_license_relative="${_license_file#"${_sdk_source}/"}"
888
install -Dm644 -- "${_license_file}" \
889
"${pkgdir}/usr/share/licenses/frida/sdk/${_sdk_component}/${_license_relative}"
890
done < <(
891
find "${_sdk_source}" -type f \
892
\( -iname 'LICENSE*' -o -iname 'COPYING*' -o -iname 'COPYRIGHT*' -o -iname 'NOTICE*' \) \
893
-print0
894
)
895
done
896
897
if [[ -d "${srcdir}/compat32/usr/share/licenses/frida/compat32" ]]; then
898
cp -a -- "${srcdir}/compat32/usr/share/licenses/frida/compat32" \
899
"${pkgdir}/usr/share/licenses/frida/"
900
fi
901
}
902
903
package_python-frida() {
904
local _extension
905
local _wheel
906
907
pkgdesc='Python bindings for Frida'
908
license=('LGPL-2.0-or-later WITH WxWindows-exception-3.1')
909
depends=(
910
"frida=${pkgver}-${pkgrel}"
911
'glib2'
912
'python'
913
)
914
915
_wheel="$(find "${srcdir}/python-frida-dist" -maxdepth 1 -type f -name 'frida-*.whl' -print -quit)"
916
[[ -n "${_wheel}" ]] || {
917
printf '%s\n' 'Missing prebuilt Frida Python wheel' >&2
918
return 1
919
}
920
python -m installer \
921
--destdir="${pkgdir}" \
922
--compile-bytecode=2 \
923
"${_wheel}"
924
925
_extension="$(find "${pkgdir}/usr/lib" -type f -path '*/site-packages/frida/_frida.abi3.so' -print -quit)"
926
[[ -n "${_extension}" ]] || {
927
printf '%s\n' 'Missing installed Frida Python extension' >&2
928
return 1
929
}
930
patchelf --remove-rpath "${_extension}"
931
932
install -Dm644 "${srcdir}/frida-${pkgver}/subprojects/frida-python/COPYING" \
933
"${pkgdir}/usr/share/licenses/python-frida/COPYING"
934
}
935
Changes since previous scan
--- PKGBUILD @ 2026-06-18 16:11+++ PKGBUILD @ 2026-09-03 15:53@@ -1,42 +1,935 @@-# Maintainer: kriskras99 <admin at kriskras99 dot nl>-# Contributor: Ali Molaei <ali dot molaei at protonmail dot com>-# Contributor: algebro <algebro at tuta dot io>--# The frida build process downloads files during the builds which cannot be disabled--_pkgname=frida-pkgname=python-$_pkgname-pkgver=17.7.2+# Maintainer: @RubenKelevra <rubenkelevra@gmail.com>+# Contributor: Caleb Maclennan <caleb@alerque.com>+# Contributor: Faule Socke <github@socker.lepus.uberspace.de>++pkgbase='frida'+pkgname=(+ 'frida'+ 'python-frida'+)+pkgver=17.17.0 pkgrel=1-pkgdesc="Inject JavaScript to explore native apps on Windows, Mac, Linux, iOS and Android. Python 3 version from PyPi"-arch=('i686' 'x86_64' 'armv7h' 'aarch64')-url="https://www.frida.re"-license=('custom:wxWindows Library License, Version 3.1')-depends=('python' 'nodejs' 'npm')-optdepends=('python-typing_extensions: for Python <3.11'- 'rustup: for injecting Rust code into targets')-makedepends=(python-build python-installer python-wheel python-setuptools git)-# Sourced from https://pypi.org/project/frida/#files-source=("https://files.pythonhosted.org/packages/source/f/${_pkgname}/${_pkgname}-${pkgver}.tar.gz"- "COPYING")-sha256sums=('3dcb095ffa2892a20a63238a49c909448af667018effb795ecbe19f6bb314a3c'- '5ea1544b51a28bc823b03159190d4108f9fb4f4ef912389f5137c6d295e175b2')-conflicts=("python2-${_pkgname}")+pkgdesc='Dynamic instrumentation toolkit for developers, reverse-engineers, and security researchers'+arch=('x86_64')+url='https://github.com/frida/frida'+license=(+ 'LGPL-2.0-or-later WITH WxWindows-exception-3.1'+ 'Zlib'+ 'BSD-3-Clause'+ 'BSD-2-Clause'+ 'BSD-3-Clause WITH PCRE2-exception'+ 'MIT'+ 'LGPL-2.1-or-later'+ '0BSD'+ 'Apache-2.0'+ 'LicenseRef-Sqlite'+ 'LGPL-2.0-or-later'+ 'GPL-2.0-or-later OR LGPL-3.0-or-later'+)+options=('!lto')+depends=(+ 'capstone'+ 'glib2'+ 'json-glib'+ 'lib32-glibc'+ 'libbpf'+ 'libdwarf'+ 'libffi'+ 'libgee'+ 'libnghttp2'+ 'libngtcp2'+ 'libnice'+ 'libsoup3'+ 'libunwind'+ 'openssl'+ 'sqlite'+ 'systemd-libs'+)+makedepends=(+ 'brotli'+ 'cmake'+ 'git'+ 'go'+ 'glib2-devel'+ 'gobject-introspection'+ 'lib32-gcc-libs'+ 'lzfse'+ 'meson'+ 'ninja'+ 'nodejs'+ 'npm'+ 'patchelf'+ 'python'+ 'python-build'+ 'python-installer'+ 'python-packaging'+ 'python-setuptools'+ 'python-wheel'+ 'tcl'+ 'vala'+)++_releng_commit='c9cc18138b364f691573c695e1fe47ddc4c56f26'+_meson_commit='6620128a0fc86218dd8d2843c7e9a3513772448e'+_tomlkit_commit='911cccd630965ff423316e25b4685ecf7df0ec0a'+_frida_core_commit='c812943c457376c906802f7bb79d13c67a6e4d22'+_frida_gum_commit='ddc10c5559cbb41a3dd72866bfba6ff3945ffa5c'+_capstone_commit='d536b1577fd033a31d75f48fd183aa425256cc18'+_glib_commit='790ffa82e80d99fba8a3db494e46f907d560893c'+_glib_networking_commit='ef47b1a09cf8c1875f181bcf901643689a56d12f'+_gvdb_commit='0854af0fdb6d527a8d1999835ac2c5059976c210'+_json_glib_commit='1a39cbe151b02c4192987c8fcc98997a59db2154'+_libbpf_commit='6c8d0d00a122fe126b7a3094f0785340128506f5'+_libdwarf_commit='61ff154ae803d2b0202dbc1bf385cda1ac3ece54'+_libgee_commit='ad17ed847039469fcc2dc711ecfee2bbf7d2bf87'+_libnice_commit='9a3da6e3e5bbcf935fd85b6b8557ff8c7dd9032c'+_lzfse_commit='5cfb7c86919d3c2c636d0d7552b51855a611ba1c'+_quickjs_commit='e05ed9f327d382f29ac8a854b0c3faa0dff87716'+_tinycc_commit='96e338ddfc6b1b409cd557356cadb3cf0d590d7b'+_vala_commit='172348fa9123ff4a95d541c5f9e56837434c4b6e'+_frida_python_commit='1cc0bcae641053fc08ec4433dc2118973389b5d2'+_frida_bindgen_commit='df17879d92d2700a7f1228a03271ba07e2fb579b'+_libusb_commit='ffff4bdfe8faa38cecfad5aab106cae923502d55'+_lwip_commit='a9f759897f26347c1a41d8d2a6d3a89aba9ce57b'+_usrsctp_commit='377fecfe06bb766c69cc0e1e1f6d5c72cf7704e6'+_sdk_version='20260717'+_sdk_zlib_commit='171a3eacaea8b731ef1fc586e7777b77742e2a1d'+_sdk_libffi_commit='4b75d8a1d9cf401d8a2fa16619938637ea7e7afa'+_sdk_pcre2_commit='b47486922fdc3486499b310dc9cf903449700474'+_sdk_elfutils_commit='1284bbc128473aea220337685985d465607fbac8'+_sdk_xz_commit='e70f5800ab5001c9509d374dbf3e7e6b866c43fe'+_sdk_brotli_commit='01d9e2922ca878965ebcd71ee8965d2a7aadb47a'+_sdk_minizip_ng_commit='dfc1ccc070ff7bb50726c80215cac515253a8ba0'+_sdk_sqlite_commit='9337327a50008f2d2236112ccb6f44059b1bafbd'+_sdk_libunwind_commit='4d0abea0effd3c80916e70abe38c2a6156596f05'+_sdk_libpsl_commit='b76c0fed2e27353d5fbb067ecdfdf76d2281eb91'+_sdk_publicsuffix_commit='06a4956ac640e9f93499fda6b2113846687adfb2'+_sdk_libxml2_commit='f09ad5551829b7f2df3666759e701644a0ea8558'+_sdk_ngtcp2_commit='5b21d4418ff668d9b5ddc4f744b7a28af4196abf'+_sdk_nghttp2_commit='ae13d24ea59c30e36ca53d1b22c4e664588d0445'+_sdk_libsoup_commit='4fd67869310b9de8fe2947bc8504ccbcf1abf285'+_sdk_openssl_commit='fa60a1c8c704e4ca0cc0dcb289c3be1fea1b50ff'+_sdk_v8_commit='a07af892420dfd873b33bd4ce4ba9d963072e1b9'+_compat32_zlib_pkg_commit='aba4401af6afa48804f1d592f8e65f8e3d7f9a06'+_compat32_pcre2_pkg_commit='36a926cf8f06655673e318ef6198e75359ed7f23'+_compat32_libffi_pkg_commit='338f9ff7682d4e039cfadbcb8cfcd15f9de189a7'+_compat32_glib2_pkg_commit='1bc9ef92ac7076424bb85e31302d65aa6c32cf96'+_compat32_xz_pkg_commit='11549581a11d6bb5e2633197198bf9e38c06324d'+_compat32_libunwind_pkg_commit='b1e371a5ba84d9c41ae1de2a4897ce79c83062c5'+_compat32_openssl_pkg_commit='8e5607b83b45ade52033980d94f0239e114ef319'+_compat32_sqlite_pkg_commit='18a00f62151d24a371c455b05ea6e991853129da'+_compat32_brotli_pkg_commit='d07abb35150afbdaf26865414ad41066e2c9869d'+_compat32_libpsl_pkg_commit='686a5785f6d8f159c6db95ce72e258c5349bc247'+_compat32_libnghttp2_pkg_commit='249b25ba99b997bd0bdf77d625f9a07629d7d297'+_compat32_libsoup3_pkg_commit='35c91072cf8027049662ffd49f77db1da06ab222'+_compat32_libelf_pkg_commit='adad482d3a12d958e8c11d623dd0e9abf5dc8fbd'++source=(+ "frida-${pkgver}.tar.gz::${url}/archive/refs/tags/${pkgver}.tar.gz"+ "releng-${_releng_commit}.tar.gz::https://github.com/frida/releng/archive/${_releng_commit}.tar.gz"+ "meson-${_meson_commit}.tar.gz::https://github.com/frida/meson/archive/${_meson_commit}.tar.gz"+ "tomlkit-${_tomlkit_commit}.tar.gz::https://github.com/python-poetry/tomlkit/archive/${_tomlkit_commit}.tar.gz"+ "frida-core-${_frida_core_commit}.tar.gz::https://github.com/frida/frida-core/archive/${_frida_core_commit}.tar.gz"+ "frida-gum-${_frida_gum_commit}.tar.gz::https://github.com/frida/frida-gum/archive/${_frida_gum_commit}.tar.gz"+ "capstone-${_capstone_commit}.tar.gz::https://github.com/frida/capstone/archive/${_capstone_commit}.tar.gz"+ "glib-${_glib_commit}.tar.gz::https://github.com/frida/glib/archive/${_glib_commit}.tar.gz"+ "glib-networking-${_glib_networking_commit}.tar.gz::https://github.com/frida/glib-networking/archive/${_glib_networking_commit}.tar.gz"+ "gvdb-${_gvdb_commit}.tar.gz::https://gitlab.gnome.org/GNOME/gvdb/-/archive/${_gvdb_commit}/gvdb-${_gvdb_commit}.tar.gz"+ "json-glib-${_json_glib_commit}.tar.gz::https://github.com/frida/json-glib/archive/${_json_glib_commit}.tar.gz"+ "libbpf-${_libbpf_commit}.tar.gz::https://github.com/frida/libbpf/archive/${_libbpf_commit}.tar.gz"+ "libdwarf-${_libdwarf_commit}.tar.gz::https://github.com/frida/libdwarf/archive/${_libdwarf_commit}.tar.gz"+ "libgee-${_libgee_commit}.tar.gz::https://github.com/frida/libgee/archive/${_libgee_commit}.tar.gz"+ "libnice-${_libnice_commit}.tar.gz::https://github.com/frida/libnice/archive/${_libnice_commit}.tar.gz"+ "lzfse-${_lzfse_commit}.tar.gz::https://github.com/frida/lzfse/archive/${_lzfse_commit}.tar.gz"+ "quickjs-${_quickjs_commit}.tar.gz::https://github.com/frida/quickjs/archive/${_quickjs_commit}.tar.gz"+ "tinycc-${_tinycc_commit}.tar.gz::https://github.com/frida/tinycc/archive/${_tinycc_commit}.tar.gz"+ "vala-${_vala_commit}.tar.gz::https://github.com/frida/vala/archive/${_vala_commit}.tar.gz"+ "frida-python-${_frida_python_commit}.tar.gz::https://github.com/frida/frida-python/archive/${_frida_python_commit}.tar.gz"+ "frida-bindgen-${_frida_bindgen_commit}.tar.gz::https://github.com/frida/frida-bindgen/archive/${_frida_bindgen_commit}.tar.gz"+ "libusb-${_libusb_commit}.tar.gz::https://github.com/frida/libusb/archive/${_libusb_commit}.tar.gz"+ "lwip-${_lwip_commit}.tar.gz::https://github.com/frida/lwip/archive/${_lwip_commit}.tar.gz"+ "usrsctp-${_usrsctp_commit}.tar.gz::https://github.com/frida/usrsctp/archive/${_usrsctp_commit}.tar.gz"+ "sdk-zlib-${_sdk_zlib_commit}.tar.gz::https://github.com/frida/zlib/archive/${_sdk_zlib_commit}.tar.gz"+ "sdk-libffi-${_sdk_libffi_commit}.tar.gz::https://github.com/frida/libffi/archive/${_sdk_libffi_commit}.tar.gz"+ "sdk-pcre2-${_sdk_pcre2_commit}.tar.gz::https://github.com/frida/pcre2/archive/${_sdk_pcre2_commit}.tar.gz"+ "sdk-elfutils-${_sdk_elfutils_commit}.tar.gz::https://github.com/frida/elfutils/archive/${_sdk_elfutils_commit}.tar.gz"+ "sdk-xz-${_sdk_xz_commit}.tar.gz::https://github.com/frida/xz/archive/${_sdk_xz_commit}.tar.gz"+ "sdk-brotli-${_sdk_brotli_commit}.tar.gz::https://github.com/frida/brotli/archive/${_sdk_brotli_commit}.tar.gz"+ "sdk-brotli-meson-${_sdk_brotli_commit}.build::https://raw.githubusercontent.com/frida/brotli/${_sdk_brotli_commit}/meson.build"+ "sdk-minizip-ng-${_sdk_minizip_ng_commit}.tar.gz::https://github.com/frida/minizip-ng/archive/${_sdk_minizip_ng_commit}.tar.gz"+ "sdk-sqlite-${_sdk_sqlite_commit}.tar.gz::https://github.com/frida/sqlite/archive/${_sdk_sqlite_commit}.tar.gz"+ "sdk-libunwind-${_sdk_libunwind_commit}.tar.gz::https://github.com/frida/libunwind/archive/${_sdk_libunwind_commit}.tar.gz"+ "sdk-libpsl-${_sdk_libpsl_commit}.tar.gz::https://github.com/frida/libpsl/archive/${_sdk_libpsl_commit}.tar.gz"+ "sdk-publicsuffix-${_sdk_publicsuffix_commit}.tar.gz::https://github.com/publicsuffix/list/archive/${_sdk_publicsuffix_commit}.tar.gz"+ "sdk-libxml2-${_sdk_libxml2_commit}.tar.gz::https://github.com/frida/libxml2/archive/${_sdk_libxml2_commit}.tar.gz"+ "sdk-ngtcp2-${_sdk_ngtcp2_commit}.tar.gz::https://github.com/frida/ngtcp2/archive/${_sdk_ngtcp2_commit}.tar.gz"+ "sdk-nghttp2-${_sdk_nghttp2_commit}.tar.gz::https://github.com/frida/nghttp2/archive/${_sdk_nghttp2_commit}.tar.gz"+ "sdk-libsoup-${_sdk_libsoup_commit}.tar.gz::https://github.com/frida/libsoup/archive/${_sdk_libsoup_commit}.tar.gz"+ 'sdk-libsoup-skip-chunked.patch::https://gitlab.gnome.org/GNOME/libsoup/-/commit/1e9d2b827d97fa6b9925d697b371c0000b051c6a.patch'+ "sdk-openssl-${_sdk_openssl_commit}.tar.gz::https://github.com/frida/openssl/archive/${_sdk_openssl_commit}.tar.gz"+ "sdk-v8-${_sdk_v8_commit}.tar.gz::https://github.com/frida/v8/archive/${_sdk_v8_commit}.tar.gz"+ 'sdk-v8-gcc16.patch'+ 'sdk-relocatable-paths.patch'+ 'frida-releng.patch'+ 'frida-core-arch.patch'+ 'frida-hardening.patch'+ 'frida-valac.in'+ 'frida-pkg-config-32'+ "lib32-zlib-${_compat32_zlib_pkg_commit}.tar.bz2::https://gitlab.archlinux.org/archlinux/packaging/packages/lib32-zlib/-/archive/${_compat32_zlib_pkg_commit}/lib32-zlib-${_compat32_zlib_pkg_commit}.tar.bz2"+ "lib32-pcre2-${_compat32_pcre2_pkg_commit}.tar.bz2::https://gitlab.archlinux.org/archlinux/packaging/packages/lib32-pcre2/-/archive/${_compat32_pcre2_pkg_commit}/lib32-pcre2-${_compat32_pcre2_pkg_commit}.tar.bz2"+ "lib32-libffi-${_compat32_libffi_pkg_commit}.tar.bz2::https://gitlab.archlinux.org/archlinux/packaging/packages/lib32-libffi/-/archive/${_compat32_libffi_pkg_commit}/lib32-libffi-${_compat32_libffi_pkg_commit}.tar.bz2"+ "lib32-glib2-${_compat32_glib2_pkg_commit}.tar.bz2::https://gitlab.archlinux.org/archlinux/packaging/packages/lib32-glib2/-/archive/${_compat32_glib2_pkg_commit}/lib32-glib2-${_compat32_glib2_pkg_commit}.tar.bz2"+ "lib32-xz-${_compat32_xz_pkg_commit}.tar.bz2::https://gitlab.archlinux.org/archlinux/packaging/packages/lib32-xz/-/archive/${_compat32_xz_pkg_commit}/lib32-xz-${_compat32_xz_pkg_commit}.tar.bz2"+ "lib32-libunwind-${_compat32_libunwind_pkg_commit}.tar.bz2::https://gitlab.archlinux.org/archlinux/packaging/packages/lib32-libunwind/-/archive/${_compat32_libunwind_pkg_commit}/lib32-libunwind-${_compat32_libunwind_pkg_commit}.tar.bz2"+ "lib32-openssl-${_compat32_openssl_pkg_commit}.tar.bz2::https://gitlab.archlinux.org/archlinux/packaging/packages/lib32-openssl/-/archive/${_compat32_openssl_pkg_commit}/lib32-openssl-${_compat32_openssl_pkg_commit}.tar.bz2"+ "lib32-sqlite-${_compat32_sqlite_pkg_commit}.tar.bz2::https://gitlab.archlinux.org/archlinux/packaging/packages/lib32-sqlite/-/archive/${_compat32_sqlite_pkg_commit}/lib32-sqlite-${_compat32_sqlite_pkg_commit}.tar.bz2"+ "lib32-brotli-${_compat32_brotli_pkg_commit}.tar.bz2::https://gitlab.archlinux.org/archlinux/packaging/packages/lib32-brotli/-/archive/${_compat32_brotli_pkg_commit}/lib32-brotli-${_compat32_brotli_pkg_commit}.tar.bz2"+ "lib32-libpsl-${_compat32_libpsl_pkg_commit}.tar.bz2::https://gitlab.archlinux.org/archlinux/packaging/packages/lib32-libpsl/-/archive/${_compat32_libpsl_pkg_commit}/lib32-libpsl-${_compat32_libpsl_pkg_commit}.tar.bz2"+ "lib32-libnghttp2-${_compat32_libnghttp2_pkg_commit}.tar.bz2::https://gitlab.archlinux.org/archlinux/packaging/packages/lib32-libnghttp2/-/archive/${_compat32_libnghttp2_pkg_commit}/lib32-libnghttp2-${_compat32_libnghttp2_pkg_commit}.tar.bz2"+ "lib32-libsoup3-${_compat32_libsoup3_pkg_commit}.tar.bz2::https://gitlab.archlinux.org/archlinux/packaging/packages/lib32-libsoup3/-/archive/${_compat32_libsoup3_pkg_commit}/lib32-libsoup3-${_compat32_libsoup3_pkg_commit}.tar.bz2"+ "lib32-libelf-${_compat32_libelf_pkg_commit}.tar.bz2::https://gitlab.archlinux.org/archlinux/packaging/packages/lib32-libelf/-/archive/${_compat32_libelf_pkg_commit}/lib32-libelf-${_compat32_libelf_pkg_commit}.tar.bz2"+ 'compat32-zlib.patch'+ 'compat32-pcre2.patch'+ 'compat32-libffi.patch'+ 'compat32-glib2.patch'+ 'compat32-xz.patch'+ 'compat32-libunwind.patch'+ 'compat32-openssl.patch'+ 'compat32-sqlite.patch'+ 'compat32-brotli.patch'+ 'compat32-libpsl.patch'+ 'compat32-libnghttp2.patch'+ 'compat32-libsoup3.patch'+ 'compat32-libelf.patch'+)+b2sums=(+ '583bd0d5cc30dd84d8c6c4f0808ba1a7324047f9feb1e4b86d1e7f252be18e79957a399e1bf051c31e9592b540bd2e24e8a227bad35473ccee3a6b01079dd9b1'+ 'a427f2d003b20241cab84564e00185a6bab0f970a32375c931e627b73a68c3f91b0439367d099d618af81f07af64df219d15e2952fb5876685e50cf44c6a0ebd'+ '1538b3360ce41fb884ceb4b8627689ab8420468b666b3ddbc98c619589e4edea8e9784aa5059899eba005d2a2b6205e6d1d6153960b7026713510eef9fc54bf3'+ '4127ac2a39b8e4aaf612b8e0c54d40e87e8a175c408ae1d427333cd7c0fa932d9122f2af01ab2eaad737a8234034c7fc906208cd6241e18918cf9c5ee25f43e9'+ '1c7252d80571b4b94cbdf66735106d2d4b7e98a07dae15c7bb2d00f24d2a572a4fccbc342f1c7320390e991f78b3fc77af88487639e64b41f5d32b2f9b813359'+ 'c4c05793a29adfbafba7313c5ea304c01799c2a40229b5d1b42f23f008683995e3285a6ccc4ef138542542afc4eba227cc770744e12f6563f79434cc166b939a'+ '31ca08f88cdc0545d32de7e6b06fc6d292729f7368a77e9a7b45688c7d2f5bf99f339970fe1feb9902555ddee28950cc1ef3e39eb7bc49e6febafeacea825eee'+ '8dd7ab20d53ea03df8b939611a4bd7b6d165bbd659eab7ddaae8ed19c55181f571a322771e91beaea619cf13a02e7dec6ed4d8959cc54d3dda4dfcd3f36c523f'+ 'f6c7c429f6b2f51cba67945c2a23d3521d7c581ac6501ed11602fa3f4d41f7d8047b19858d163c96b1dd67e2d7e1cb8e8b330c0080e8a681468a4f6c0aa2f1a3'+ '6f0dc922a7df8bcbf98600a152b17e8e20ff6a3d0531fbe41475a58159cde99a4045e733f9d3548e4b3302fb23019ef4975dd48b040a4e97edf6429235d2cfe2'+ '69f082cd148c83015362af4ea1e64d72a4b37badd95213f9c43339333d2771bc5f646b60f8da0f6dd345d4dd23f336c4620a211027a8cfa21b0bf4a6b40001b6'+ '772a342f8b546a89d109759941cb4e59a393e4b81c648dac93b4517904ace3b01a27996dcf9f47c6a4e589bf8aa1c16cdb923a06512ad45980bcead051159f8a'+ 'be66cde556477afda4590a8980bb1e3b3a0de75699eebb245006a100884f798d2e9ea71a015488b0c2b4923103168ba52f5e62da3b7d9d3fc102a66aba458a97'+ 'f78657c43cd94dc191a422e7a124eb7c24f72d02b13e065246bcc329db3fda3aa5366c1cdd7576d6a7770204b6061939886a77523c63b7b832453eccd7ea641a'+ '884738e164b04edcd09622440863bd856633749e28f42393143155767e25a5132b9fb3448929cf8f3bdf21e9b714d727f1b82fcff550ce9fe948a14f91cb8c4e'+ '2477febff4fc1fb3f0897001f3f17d57946ae451469f9ca61baf3e5ab7f8b6bf7472c45a5841384512e557be59c15a7f09d39975c0d785a40fdc82158769c8c8'+ '948a5a0e8339069e3e646d974af956ff75545a243089102b686358b07bc3678c778b68f2fd2565d32c0b654c63d88ef26e09f4e0f6d35af71552cb7f826bdb74'+ 'c782fea3d5d47533e57542dafbb76946f396a19135b6fa485760bcae0a0f452b7a04fc3a522b8882a4f64098f3247e1c94fa9e12de5b73a6f47fa52beb422a5f'+ 'd058bde27c8f89883de05a0229e3f4d83c19abc61e7db752bb4d43f6c99f0346ce962ca4ddae2be7ae1a6ededd4c8cf0b9ea4845e5efb2db9af8eda876903274'+ 'c301569e499896be65e92d57536cb85dcdf38a6c61520d86b450d1c63c5acd7b7c7f6d43834469f4244c329d652abcf1fd9212bcc686c1cca68ca7070e6a6d91'+ '9b4e044bd74b8522b789d4026d642299b92e0becd9e5d1ec4ed7845637d864643c786001e1ec7b1085efeadea1aea931b084505796cf6fce4799d5ba8f8cbc53'+ '11a0be3615a0438b16a2989de8ab8b7e6a5737847fab7e895333b0720837b60b2b53c0883d3721456a4073ae4fae8220c7931b6742281f152d8c59c167000462'+ '6f4797662e66814dc178d365391a0370914bdefc05751e36ca6071fceba70ed1ac46fc7f47fef705347bf4a4221acee0df27e14e7032cbce95424a0ef2cc678e'+ '303b11566e3145c729aaf07a8585c1b3a0c8d39421c7ff378b789e1a1b57c33fcc0a280e2c87065eb643f7f2d8b840de6f7595c0bd32399fa67f7e0395ca9d27'+ 'e9c192d82ac859f3ccf4338ab30fd9e40009263efc233f889a777a2b12979344a1f505a8109179d26c8327c989827bf15ad8b41f2b4d4c95eadb20ed8fd5d6c2'+ '9b674f56ffaba9bf8cb223c0b71f56fcfed225c33ba6e156c3290352180ece53988fc15f9a81ccf79b1da920a3b2e44657f505c23b4f81c601c51d498526b6e2'+ 'e0ff54efb256c8ecfbdccd05c9ce3ec6715766835eb4942025949d973dca987f5cda1f7472409df0e59f3e948ffb38d7ca6e01bb9734b09348d19d181aaae477'+ '63cee68d27a68d2fec858971b1e147e53bbef0349693da4652d85637113154659ddb0623df46134d16d0676d215fa91a93c564863a8bd441b4cf2f1a2352b60e'+ 'd03968c9826e952f97c634da0f2ca14fd3cd7faf80eb40e6e1d13ad02d8e49f10711f65856065b6f38fb02cbac2f0e836c96cfa70c405f467a2ab47b9151e18a'+ '8778c4209acee501d15ab210f57ec2cf25aefe88238e21c5f655f86dd4b0f047950ce60847a1ce06e752e8b95a557a026e0d9f5c5ab529c72b75658f924c97fc'+ 'db92481ab7208a18637b14d01e5ced99dceccc26516a74057f1e97e0e067f2c78346eedc2ce854a68bee56b5721705f4ced9271e32a76dd1541246a0cad0f9e6'+ '0a512a75226327372a55c72a2aa16d19461a9b62880ca5b31ab134bb861be80812b57ee1685caa9aa211500eae55bcde2a1120b22e22270148980a06c2763d5b'+ '0cc182fa8227c7e4008dfdc91f492084c27b270b69419dcd728b90a066f9ca0e20fe3a1e3cee471b36e274c70728ca4c129c5ee45d02e5eb984bda4d192bfd10'+ '9c4aaabdf97041669d74e7e0599e8384e23a4a6da6614cc3b3e082f4dcf0a158540e2fea4b859dbae325d685d14529e0459804abe4cbe773e5c4f6df233bb6c2'+ '4d14d92e45d745e7f1025352c4f44cf492b6eb31ed45c3ee53e6861541edfa03c0ae650e3715665e19d879b6b1171acbc443b161dfacb295882d695da852eb62'+ '9a9fbf2b295ede59b45a8d88ad30dca98d17874eede72af811fd3460c75b61cf2a15691f23941e07f852bb82db00110a726a1b443317a5bf6460e9c30c8e391f'+ '905e2bef43e30078530b35b2c9f3e45042d42f5104a136e59610010599c87d0953819b4bb728699b87b82c6d11dc30073bcd60b365b4f2cf68eccf616bac5080'+ '77047cb00326a91365baec9c3349a7a4520468386f384efc4e633dcdb5de53595d39d4717150c2b85849f8cb1edd72f523d3968934acd6911982ae50f630e0bc'+ 'a2ef86d7c8b3490c0cd1a4488eec81d050cba1d834e76589d1462a6cc374f1bf670277cee0f4479af77f700a20c553a1d094ba5e52118b9e46c87b6222e8dfcd'+ 'eb2babf107878f87347c542daf84dfc2bb548807d6f015277717f4beb110f381d11d2e6926d2d36932f98b3ea49e1752986c495d3c449ab558d989f9b240a964'+ 'b97a4daae1e65294f378c9f2a559eb3620ed2b2e6d1c01860f63c88b915eafa0afa4d50018ba834240503485e9fb29e29087b2c55215727bce1cf1c24b15077f'+ '30409e02626d886dd1e976ed3a074039c8cb58030b1e74e6b29209d76ed8c38952a2771077c26433575728d64abc8f1888282d19dd964de3f29be3d2fa6e8e39'+ 'c8917bd0643b4b22c95e57c0eb411f048ab7630a92ed54c3bd97244b31e42bc56b68766ac34ce1b77152b15c4da7195cc9e093252c3a1a0ef679a88a437ff3c8'+ 'b12192f399a09598a6c49cf82dae81bdce62f9e621233eda650ce585fc84998dca05444926e6749c65d12386ac06240bed1e886c107ade4ba0f2032087b4d729'+ '626b745ad1e6e40d443c26712b791ae44af732cbaf97c6baef066d3c88d64811e3e923cd3f85375687af1c186092cbb971cf983b267bdea81858d786395adb7a'+ '7d4c652d381f315c675fed49e81580c803479c90f131204709769d1e8ba94774b83d464ee832c3e2f560a2304f5ce2f72dd6740e987c89d7c241608151af98ae'+ '242c94ad87f147fe337575e7639dae7c486e6b8a9c089dea2fd67fcd496e076165afaba3003652f2a9d4da4b49d47273852b7e6753d3e527bc65d56ebcf3dcd3'+ '85da1f19171e0524a5c62fe049b81d21368f41e46e725514a62a3887d14de87a4dcaf99757aad9f6606088a87cd5cf4b0d9bb78830bd4447f72f380077993b22'+ '7ba008b86fd730eacd9868b66ce4e132719ef3976b92f5c035a7e5308368724eb3fadac7b051c76ff67daca37a59a16cb22cb1752ba4048e2ecc5ee2870f180f'+ '5a2fa0418c540d8082c622b9db8534d5878ed30fbe817f01979e5773abaa475740b3f8d2b5f1af3caf7c43701af9c41113e5e5da7080260a43608e8260def01f'+ 'd6f6dee0b4abce002222d6e406934d4d43b4c261a61ce1092d8435eba4509d693bd2e278e06f0a5d89cacd5d6a1f78cea7cab225b700c431a14676a00d3f0cec'+ '4e74d7e9b495542bc88a0c5f50e1cd9cf24df020513bb50708975dbf9673a9a9481aeef23f2ed20a0db3cd0ccea75043335ecb11477d008206222149cf0faccd'+ 'b92e7463bb80633e95d87139c08f7a6325e2b568536c8da02595fe63242bdc5f855c6d2cf46d6c43542c5e6dd41a61c1641c514de5e3e210ab5eeea0590023d3'+ 'c3c28cb317caa1da9e0edec878348d94ff43703fd843d4e99a6a167508a58e174cefde4b3ce088a94f9178717c719208c411164a402ce467e942e2d8ab1c6665'+ '96a0c6d68eba9514a82ed0ba3a487f657b16eb2798bf42cbf0115967ebade33889e351775a44eb93f2c354558c8be5e86426dba09f32bfdd09a1161461104149'+ '47e8ed9dee72b31f3e6ba6d526e763f4be352605d457a25bb4d0967854c5698939da45ebebafaa5a75309486158cd36ef5782bb08b644df5d3d1db7fed166527'+ '0152710b0b0deafa41896e63ec81bd97f41017d1736ce22b1d2d5cdb7a4d909f82e4d7d04d29890719000be0c566947464a31fa848bf5b1937fa9de44830c585'+ '0f2ff875e71eb90355bcb99604cc507bbe59adf9d891832744f3353a59b6759ab8f8ab2fd43de0035d0d71109c6502b3978a534f7625bffa450df5d8b98bdbbb'+ '0b768810078071b1c74b0f36d0bc7bd632009acf987f4c0577945b215b4dcecafed7cbdf358e7f8831532b9a42cf721b49482801a9a4baf6d2bab34477ff8aed'+ 'ba9d347271ca6abba1e0d293710323ba09aa3de3ef459a13345cd4c401734b8f36ab57c5d5fd202e20a6163a38addbfb1eb5a89cf783f668c746e526ea030913'+ 'c47a8ed3f6435633de56d063f20d9dcd8bcad188f3a78b94b3fd543dc0c7b49bf44c9f6b24f1a317eee22ffe399bcb19bc5f15e8e47e8b0c8cd3e1ba57031043'+ '6248e66c8fe2e997b97c360cdc37e03aa859adaafa866be9a371e0682d35b1c51056d4d4549a33cfa4e4b0a650d1b4faf33f46e333545c8069561c8870e0472c'+ 'a51b1cecbbf1324099963ee4826d58f5519c8169461a8572825a1cd5c52ebbdf5c34d15e36bd7b82c6fa43ff239bd57daf96f633a160f2b194a96c1d9c0d269d'+ '7e5d90c787f4737d035cad67a0fa54de77be81e8a971a790c0e5e1ae384798a325eb9bb26f4b8703c5b30681b4165ea8d4c080e4c3455a3842f8b2529f3a998e'+ '1225dad32ba798670a8a3cf2721336101d44ba7b4fd5e468e0c7966407c2a3ab171953c16c9b77eec35a978583e9162aa194e4e8608e27bbb4acc0f8c9299d8d'+ 'f13b67bb284ae3e1d558d32d2289efeee1ab48dd41b5f596647ae28fbd07f57b01f2586c581dc0636f381d6d64f5715f8757b9461a16510ae507df4f638abef2'+ '628914bf5b1f5eb74a71bf5e32838d81514e75bcca02b61da5278f7d233274535275b31294147f07a990c0cae0f8de5b2d5cdaa706c5b6c4914435dbc82c797b'+ 'c28644068415ec063cc0ea52e4cc8bb01db4eda5ea5305174f5b2a7b6deb5413f3356b44326ff4fcafd8a12fdb2db43f8afeb81db2dce2c22f64e91663529ec6'+ 'a45e9e27d6e5f4af676fd2cd385105c85dcd88f60f4c40e04926d4b31ec444aa74ad7d1a67c6fb8bd952de302a3984adc8f9e302b84a030b5a86e3cb62e03117'+ '0506a63f43196804d9f25e83dd1b9cc38ae027bbb196206e971f49694b60939cadab72430975bd889e12750f0f537df3b62eeed4e6427d28d369bee3e7f3ce3e'+ 'fc247585bf7fbc3e3261a7d80904f26634d7f7e4ebcb3830b5e596531c9151db6f7a7cd7020f9fe421d3db1a08aed709f4b8b4e3c45e7daecf9a7ead8df29d4a'+ '51e7b3e773b4cc7077045abc40c28e6f1468351af542ef4866515da2593c56cf2400b6599c95ad288f94d515958c0b4d2ec1ef3a575e8d0ba80ada1c396ff009'+ '4a2bdaf9cc9e3da6e83ea6bdc1e5e1ad421eea9e326dcf44a9ed678cc967859a92982eb6346aa9190409eb923cd42ca271cadc541e5557b47d911e4b8bd98ea2'+ '52c5d0779c64949bc4778a9ae6381e7e440968a3482389ed7ffef435aeb5e941af86021444fa89e41a23a782bd512c5da073d61bcd303a60e2b66e929dd84e05'+ '4c7a7e68fa4a605c9d720d9771b80b286eb978f8ca81e464990649dbf59e9a41092d8b4e6cbfdb3773237eb94f9b3bc724b6fb8024d9b9a9335d2206991f01f0'+ '67f999beb4bf7fa84db88a9b09bcea31d843c51de2b05f1bf0251a156789b1c3be6ea259d83d08f4c942ea3cf55a74f1b5638ae1d7fbda97d10aad732a578f6d'+)++_makepkg_jobs() {+ local _arg+ local _jobs=''+ local _jobs_next=0++ for _arg in ${MAKEFLAGS:-}; do+ if (( _jobs_next == 1 )); then+ case "${_arg}" in+ ''|*[!0-9]*) ;;+ *) _jobs="${_arg}" ;;+ esac+ _jobs_next=0+ continue+ fi++ case "${_arg}" in+ -j|--jobs)+ _jobs_next=1+ ;;+ -j[0-9]*)+ _jobs="${_arg#-j}"+ ;;+ --jobs=[0-9]*)+ _jobs="${_arg#--jobs=}"+ ;;+ esac+ done++ printf '%s\n' "${_jobs:-1}"+}++_compat32_flags() {+ local _input="${1:-}"+ local _flag+ local _flags=()++ for _flag in ${_input}; do+ [[ "${_flag}" == -m* ]] && continue+ _flags+=("${_flag}")+ done+ printf '%s\n' "${_flags[*]} -m32 -march=pentium4 -mfpmath=sse -mstackrealign -fPIC"+}++_compat32_builddir() {+ local _name="${1:?missing recipe name}"+ printf '%s\n' "${srcdir}/compat32-build/lib32-${_name}"+}++_prepare_compat32_recipe() {+ local _name="${1:?missing recipe name}"+ local _commit="${2:?missing recipe commit}"+ local _patch="${3:?missing recipe patch}"+ local _recipe_dir="${srcdir}/lib32-${_name}-${_commit}"+ local _patch_path="${srcdir}/${_patch}"+ local _nested_builddir+ local _compat_cflags+ local _compat_cxxflags++ _nested_builddir="$(_compat32_builddir "${_name}")"+ _compat_cflags="$(_compat32_flags "${CFLAGS:-}")"+ _compat_cxxflags="$(_compat32_flags "${CXXFLAGS:-}")"++ (+ cd -- "${_recipe_dir}" || exit 1+ if [[ "${_name}" == 'glib2' ]]; then+ ln -sf -- "${srcdir}/glib-${_glib_commit}.tar.gz" \+ "glib-${_glib_commit}.tar.gz"+ ln -sf -- "${srcdir}/gvdb-${_gvdb_commit}.tar.gz" \+ "gvdb-${_gvdb_commit}.tar.gz"+ fi+ if patch --dry-run -Np1 --fuzz=0 -i "${_patch_path}" >/dev/null 2>&1; then+ patch -Np1 --fuzz=0 -i "${_patch_path}"+ elif patch --dry-run -Rp1 --fuzz=0 -i "${_patch_path}" >/dev/null 2>&1; then+ printf 'compat32 %s patch already applied\n' "${_name}"+ else+ printf 'compat32 %s patch state is inconsistent\n' "${_name}" >&2+ exit 1+ fi+ makepkg -d --nobuild --skippgpcheck \+ "BUILDDIR=${_nested_builddir}" \+ "CFLAGS=${_compat_cflags}" \+ "CXXFLAGS=${_compat_cxxflags}"+ )+}++_stage_compat32_recipe() {+ local _name="${1:?missing recipe name}"+ local _compat32_sysroot="${2:?missing compat32 sysroot}"+ local _nested_builddir+ local _package_root++ _nested_builddir="$(_compat32_builddir "${_name}")"+ _package_root="${_nested_builddir}/lib32-${_name}/pkg/lib32-${_name}/usr"++ [[ -d "${_package_root}" ]] || return 1+ mkdir -p -- "${_compat32_sysroot}/usr/include" "${_compat32_sysroot}/usr/lib32"++ if [[ -d "${_package_root}/include" ]]; then+ cp -a -- "${_package_root}/include/." "${_compat32_sysroot}/usr/include/"+ fi+ if [[ -d "${_package_root}/lib32" ]]; then+ cp -a -- "${_package_root}/lib32/." "${_compat32_sysroot}/usr/lib32/"+ fi+ if [[ -d "${_package_root}/share/licenses/lib32-${_name}" ]]; then+ mkdir -p -- "${_compat32_sysroot}/usr/share/licenses/frida/compat32/${_name}"+ cp -aL -- "${_package_root}/share/licenses/lib32-${_name}/." \+ "${_compat32_sysroot}/usr/share/licenses/frida/compat32/${_name}/"+ fi+}++_build_compat32_recipe() {+ local _name="${1:?missing recipe name}"+ local _commit="${2:?missing recipe commit}"+ local _compat32_sysroot="${3:?missing compat32 sysroot}"+ local _recipe_dir="${srcdir}/lib32-${_name}-${_commit}"+ local _nested_builddir+ local _compat_cflags+ local _compat_cxxflags++ _nested_builddir="$(_compat32_builddir "${_name}")"+ _compat_cflags="$(_compat32_flags "${CFLAGS:-}")"+ _compat_cxxflags="$(_compat32_flags "${CXXFLAGS:-}")"++ (+ cd -- "${_recipe_dir}" || exit 1+ unset PKG_CONFIG_LIBDIR PKG_CONFIG_SYSROOT_DIR+ PATH="${srcdir}/compat32-bin:${PATH}" \+ FRIDA_COMPAT_SYSROOT="${_compat32_sysroot}" \+ PKG_CONFIG_PATH='' \+ CPATH="${_compat32_sysroot}/usr/include${CPATH:+:${CPATH}}" \+ LDFLAGS="${LDFLAGS:-} -L${_compat32_sysroot}/usr/lib32" \+ makepkg -d --noextract --noprepare --nocheck --noarchive --force \+ "BUILDDIR=${_nested_builddir}" \+ "CFLAGS=${_compat_cflags}" \+ "CXXFLAGS=${_compat_cxxflags}"+ ) || return 1++ _stage_compat32_recipe "${_name}" "${_compat32_sysroot}"+}++_build_compat32_sysroot() {+ local _compat32_sysroot="${srcdir}/compat32"+ local _compat32_bin="${srcdir}/compat32-bin"+ local _glib_pc="${_compat32_sysroot}/usr/lib32/pkgconfig/glib-2.0.pc"++ rm -rf -- "${_compat32_sysroot}" "${_compat32_bin}"+ mkdir -p -- "${_compat32_sysroot}/usr/include" "${_compat32_sysroot}/usr/lib32"+ mkdir -p -- "${_compat32_bin}"+ ln -s -- "${srcdir}/frida-pkg-config-32" "${_compat32_bin}/i686-pc-linux-gnu-pkg-config"++ _build_compat32_recipe 'zlib' "${_compat32_zlib_pkg_commit}" "${_compat32_sysroot}"+ _build_compat32_recipe 'pcre2' "${_compat32_pcre2_pkg_commit}" "${_compat32_sysroot}"+ _build_compat32_recipe 'libffi' "${_compat32_libffi_pkg_commit}" "${_compat32_sysroot}"+ _build_compat32_recipe 'glib2' "${_compat32_glib2_pkg_commit}" "${_compat32_sysroot}"++ [[ -f "${_glib_pc}" ]] || return 1+ sed -i \+ -e 's/^Cflags:/Cflags: -DGLIB_STATIC_COMPILATION/' \+ "${_glib_pc}"+++ _build_compat32_recipe 'xz' "${_compat32_xz_pkg_commit}" "${_compat32_sysroot}"+ _build_compat32_recipe 'libunwind' "${_compat32_libunwind_pkg_commit}" "${_compat32_sysroot}"+ _build_compat32_recipe 'openssl' "${_compat32_openssl_pkg_commit}" "${_compat32_sysroot}"+ _build_compat32_recipe 'sqlite' "${_compat32_sqlite_pkg_commit}" "${_compat32_sysroot}"+ _build_compat32_recipe 'brotli' "${_compat32_brotli_pkg_commit}" "${_compat32_sysroot}"+ _build_compat32_recipe 'libpsl' "${_compat32_libpsl_pkg_commit}" "${_compat32_sysroot}"+ _build_compat32_recipe 'libnghttp2' "${_compat32_libnghttp2_pkg_commit}" "${_compat32_sysroot}"+ _build_compat32_recipe 'libsoup3' "${_compat32_libsoup3_pkg_commit}" "${_compat32_sysroot}"+ _build_compat32_recipe 'libelf' "${_compat32_libelf_pkg_commit}" "${_compat32_sysroot}"++ if find "${_compat32_sysroot}/usr/lib32" \( -type f -o -type l \) -name '*.so*' -print -quit | grep -q .; then+ printf 'compat32 sysroot unexpectedly contains shared libraries\n' >&2+ return 1+ fi++ PKG_CONFIG_PATH='' \+ PKG_CONFIG_LIBDIR="${_compat32_sysroot}/usr/lib32/pkgconfig" \+ PKG_CONFIG_SYSROOT_DIR="${_compat32_sysroot}" \+ pkg-config --static --exists \+ 'zlib' 'libpcre2-8' 'libffi' 'glib-2.0' \+ 'liblzma' 'libunwind' 'openssl' 'sqlite3' \+ 'libbrotlidec' 'libpsl' 'libnghttp2' 'libsoup-3.0' 'libelf'+}++_stage_frida_sdk_source() {+ local _name="${1:?missing SDK source name}"+ local _archive="${2:?missing SDK source archive}"+ local _revision="${3:?missing SDK source revision}"+ local _dest="${srcdir}/frida-sdk-sources/${_name}"++ rm -rf -- "${_dest}"+ mkdir -p -- "${_dest}"+ bsdtar -xf "${srcdir}/${_archive}" -C "${_dest}" --strip-components 1+ printf '%s\n' "${_revision}" > "${_dest}/.frida-source-revision"+}++_prepare_frida_sdk_sources() {+ local _sdk_root="${srcdir}/frida-sdk-sources"+ local _glib_subprojects++ rm -rf -- "${_sdk_root}"+ mkdir -p -- "${_sdk_root}"++ _stage_frida_sdk_source 'zlib' "sdk-zlib-${_sdk_zlib_commit}.tar.gz" "${_sdk_zlib_commit}"+ _stage_frida_sdk_source 'libffi' "sdk-libffi-${_sdk_libffi_commit}.tar.gz" "${_sdk_libffi_commit}"+ _stage_frida_sdk_source 'pcre2' "sdk-pcre2-${_sdk_pcre2_commit}.tar.gz" "${_sdk_pcre2_commit}"+ _stage_frida_sdk_source 'glib' "glib-${_glib_commit}.tar.gz" "${_glib_commit}"+ _stage_frida_sdk_source 'elfutils' "sdk-elfutils-${_sdk_elfutils_commit}.tar.gz" "${_sdk_elfutils_commit}"+ _stage_frida_sdk_source 'libdwarf' "libdwarf-${_libdwarf_commit}.tar.gz" "${_libdwarf_commit}"+ _stage_frida_sdk_source 'libbpf' "libbpf-${_libbpf_commit}.tar.gz" "${_libbpf_commit}"+ _stage_frida_sdk_source 'xz' "sdk-xz-${_sdk_xz_commit}.tar.gz" "${_sdk_xz_commit}"+ _stage_frida_sdk_source 'brotli' "sdk-brotli-${_sdk_brotli_commit}.tar.gz" "${_sdk_brotli_commit}"+ install -Dm644 -- "${srcdir}/sdk-brotli-meson-${_sdk_brotli_commit}.build" \+ "${_sdk_root}/brotli/meson.build"+ _stage_frida_sdk_source 'lzfse' "lzfse-${_lzfse_commit}.tar.gz" "${_lzfse_commit}"+ _stage_frida_sdk_source 'minizip-ng' "sdk-minizip-ng-${_sdk_minizip_ng_commit}.tar.gz" "${_sdk_minizip_ng_commit}"+ _stage_frida_sdk_source 'sqlite' "sdk-sqlite-${_sdk_sqlite_commit}.tar.gz" "${_sdk_sqlite_commit}"+ _stage_frida_sdk_source 'libunwind' "sdk-libunwind-${_sdk_libunwind_commit}.tar.gz" "${_sdk_libunwind_commit}"+ _stage_frida_sdk_source 'glib-networking' "glib-networking-${_glib_networking_commit}.tar.gz" "${_glib_networking_commit}"+ _stage_frida_sdk_source 'libnice' "libnice-${_libnice_commit}.tar.gz" "${_libnice_commit}"+ _stage_frida_sdk_source 'libusb' "libusb-${_libusb_commit}.tar.gz" "${_libusb_commit}"+ _stage_frida_sdk_source 'lwip' "lwip-${_lwip_commit}.tar.gz" "${_lwip_commit}"+ _stage_frida_sdk_source 'usrsctp' "usrsctp-${_usrsctp_commit}.tar.gz" "${_usrsctp_commit}"+ _stage_frida_sdk_source 'libgee' "libgee-${_libgee_commit}.tar.gz" "${_libgee_commit}"+ _stage_frida_sdk_source 'json-glib' "json-glib-${_json_glib_commit}.tar.gz" "${_json_glib_commit}"+ _stage_frida_sdk_source 'libpsl' "sdk-libpsl-${_sdk_libpsl_commit}.tar.gz" "${_sdk_libpsl_commit}"+ rm -rf -- "${_sdk_root}/libpsl/list"+ mkdir -p -- "${_sdk_root}/libpsl/list"+ bsdtar -xf "${srcdir}/sdk-publicsuffix-${_sdk_publicsuffix_commit}.tar.gz" \+ -C "${_sdk_root}/libpsl/list" --strip-components 1+ _stage_frida_sdk_source 'libxml2' "sdk-libxml2-${_sdk_libxml2_commit}.tar.gz" "${_sdk_libxml2_commit}"+ _stage_frida_sdk_source 'ngtcp2' "sdk-ngtcp2-${_sdk_ngtcp2_commit}.tar.gz" "${_sdk_ngtcp2_commit}"+ _stage_frida_sdk_source 'nghttp2' "sdk-nghttp2-${_sdk_nghttp2_commit}.tar.gz" "${_sdk_nghttp2_commit}"+ _stage_frida_sdk_source 'libsoup' "sdk-libsoup-${_sdk_libsoup_commit}.tar.gz" "${_sdk_libsoup_commit}"+ patch -d "${_sdk_root}/libsoup" -Np1 --fuzz=0 -i "${srcdir}/sdk-libsoup-skip-chunked.patch"+ _stage_frida_sdk_source 'capstone' "capstone-${_capstone_commit}.tar.gz" "${_capstone_commit}"+ _stage_frida_sdk_source 'quickjs' "quickjs-${_quickjs_commit}.tar.gz" "${_quickjs_commit}"+ _stage_frida_sdk_source 'tinycc' "tinycc-${_tinycc_commit}.tar.gz" "${_tinycc_commit}"+ patch -d "${_sdk_root}" -Np1 --fuzz=0 -i "${srcdir}/sdk-relocatable-paths.patch"+ _stage_frida_sdk_source 'openssl' "sdk-openssl-${_sdk_openssl_commit}.tar.gz" "${_sdk_openssl_commit}"+ _stage_frida_sdk_source 'v8' "sdk-v8-${_sdk_v8_commit}.tar.gz" "${_sdk_v8_commit}"+ patch -d "${_sdk_root}/v8" -Np1 --fuzz=0 -i "${srcdir}/sdk-v8-gcc16.patch"++ _glib_subprojects="${_sdk_root}/glib/subprojects"+ rm -rf -- "${_glib_subprojects}/pcre2" "${_glib_subprojects}/gvdb"+ mkdir -p -- "${_glib_subprojects}/pcre2" "${_glib_subprojects}/gvdb"+ bsdtar -xf "${srcdir}/sdk-pcre2-${_sdk_pcre2_commit}.tar.gz" \+ -C "${_glib_subprojects}/pcre2" --strip-components 1+ bsdtar -xf "${srcdir}/gvdb-${_gvdb_commit}.tar.gz" \+ -C "${_glib_subprojects}/gvdb" --strip-components 1+}++prepare() {+ local _npm_dir+ local _npm_cache="${srcdir}/npm-cache"+ local _go_mod_cache="${srcdir}/go-mod-cache"+ local _go_build_cache="${srcdir}/go-build-cache"++ _prepare_frida_sdk_sources++ cd -- "frida-${pkgver}" || return 1++ rm -rf -- releng \+ subprojects/frida-core \+ subprojects/frida-gum \+ subprojects/frida-python++ mv -- "${srcdir}/releng-${_releng_commit}" releng+ rm -rf -- releng/meson releng/tomlkit+ mv -- "${srcdir}/meson-${_meson_commit}" releng/meson+ mv -- "${srcdir}/tomlkit-${_tomlkit_commit}" releng/tomlkit+ mv -- "${srcdir}/frida-core-${_frida_core_commit}" subprojects/frida-core+ mv -- "${srcdir}/frida-gum-${_frida_gum_commit}" subprojects/frida-gum+ mv -- "${srcdir}/capstone-${_capstone_commit}" subprojects/frida-gum/subprojects/capstone+ mv -- "${srcdir}/glib-${_glib_commit}" subprojects/frida-core/subprojects/glib+ mv -- "${srcdir}/gvdb-${_gvdb_commit}" subprojects/frida-core/subprojects/glib/subprojects/gvdb+ mv -- "${srcdir}/glib-networking-${_glib_networking_commit}" subprojects/frida-gum/subprojects/glib-networking+ mv -- "${srcdir}/json-glib-${_json_glib_commit}" subprojects/frida-gum/subprojects/json-glib+ mv -- "${srcdir}/libdwarf-${_libdwarf_commit}" subprojects/frida-gum/subprojects/libdwarf+ mv -- "${srcdir}/libbpf-${_libbpf_commit}" subprojects/frida-core/subprojects/libbpf+ mv -- "${srcdir}/libgee-${_libgee_commit}" subprojects/frida-core/subprojects/libgee+ mv -- "${srcdir}/libnice-${_libnice_commit}" subprojects/frida-core/subprojects/libnice+ mv -- "${srcdir}/lzfse-${_lzfse_commit}" subprojects/frida-core/subprojects/lzfse+ mv -- "${srcdir}/quickjs-${_quickjs_commit}" subprojects/frida-gum/subprojects/quickjs+ mv -- "${srcdir}/tinycc-${_tinycc_commit}" subprojects/frida-gum/subprojects/tinycc+ mv -- "${srcdir}/frida-python-${_frida_python_commit}" subprojects/frida-python+ rm -rf -- subprojects/frida-python/frida-bindgen+ mv -- "${srcdir}/frida-bindgen-${_frida_bindgen_commit}" subprojects/frida-python/frida-bindgen+ mv -- "${srcdir}/libusb-${_libusb_commit}" subprojects/frida-core/subprojects/libusb+ mv -- "${srcdir}/lwip-${_lwip_commit}" subprojects/frida-core/subprojects/lwip+ mv -- "${srcdir}/usrsctp-${_usrsctp_commit}" subprojects/frida-core/subprojects/usrsctp++ patch -Np1 --fuzz=0 -i "${srcdir}/frida-releng.patch"+ patch -Np1 --fuzz=0 -i "${srcdir}/frida-core-arch.patch"+ patch -Np1 --fuzz=0 -i "${srcdir}/frida-hardening.patch"++ sed -i \+ "s/libgvc_dep = dependency('libgvc'.*/libgvc_dep = disabler()/" \+ "${srcdir}/vala-${_vala_commit}/meson.build"++ mkdir -p -- "${_npm_cache}" "${_go_mod_cache}" "${_go_build_cache}"+ export npm_config_cache="${_npm_cache}"+ export npm_config_audit=false+ export npm_config_fund=false++ for _npm_dir in \+ subprojects/frida-core/src/compiler \+ subprojects/frida-core/src/barebone; do+ (+ cd -- "${_npm_dir}" || exit 1+ npm ci --ignore-scripts+ )+ done++ (+ cd -- subprojects/frida-core/src/compiler || exit 1+ GOMODCACHE="${_go_mod_cache}" \+ GOCACHE="${_go_build_cache}" \+ go mod download+ )++ _prepare_compat32_recipe 'zlib' "${_compat32_zlib_pkg_commit}" 'compat32-zlib.patch'+ _prepare_compat32_recipe 'pcre2' "${_compat32_pcre2_pkg_commit}" 'compat32-pcre2.patch'+ _prepare_compat32_recipe 'libffi' "${_compat32_libffi_pkg_commit}" 'compat32-libffi.patch'+ _prepare_compat32_recipe 'glib2' "${_compat32_glib2_pkg_commit}" 'compat32-glib2.patch'+ _prepare_compat32_recipe 'xz' "${_compat32_xz_pkg_commit}" 'compat32-xz.patch'+ _prepare_compat32_recipe 'libunwind' "${_compat32_libunwind_pkg_commit}" 'compat32-libunwind.patch'+ _prepare_compat32_recipe 'openssl' "${_compat32_openssl_pkg_commit}" 'compat32-openssl.patch'+ _prepare_compat32_recipe 'sqlite' "${_compat32_sqlite_pkg_commit}" 'compat32-sqlite.patch'+ _prepare_compat32_recipe 'brotli' "${_compat32_brotli_pkg_commit}" 'compat32-brotli.patch'+ _prepare_compat32_recipe 'libpsl' "${_compat32_libpsl_pkg_commit}" 'compat32-libpsl.patch'+ _prepare_compat32_recipe 'libnghttp2' "${_compat32_libnghttp2_pkg_commit}" 'compat32-libnghttp2.patch'+ _prepare_compat32_recipe 'libsoup3' "${_compat32_libsoup3_pkg_commit}" 'compat32-libsoup3.patch'+ _prepare_compat32_recipe 'libelf' "${_compat32_libelf_pkg_commit}" 'compat32-libelf.patch'+}++_build_frida_sdk() {+ local _toolchain_prefix="${1:?missing toolchain prefix}"+ local _jobs="${2:?missing job count}"+ local _sdk_work_root="${FRIDA_SDK_WORK_ROOT:-${srcdir}}/frida-sdk-build"+ local _sdk_source_root="${srcdir}/frida-sdk-sources"+ local _sdk_archive="${_sdk_work_root}/sdk-linux-${CARCH}.tar.xz"+ local _sdk_prefix="${srcdir}/frida-sdk"+ local _deps_toml="${srcdir}/frida-${pkgver}/releng/deps.toml"++ if ! grep -qx "version = \"${_sdk_version}\"" "${_deps_toml}"; then+ printf 'Frida dependency version does not match expected SDK %s\n' "${_sdk_version}" >&2+ return 1+ fi++ rm -rf -- "${_sdk_work_root}" "${_sdk_prefix}"+ mkdir -p -- "${_sdk_work_root}" "${_sdk_prefix}"++ FRIDA_DEPS="${_sdk_work_root}" \+ FRIDA_DEPS_SOURCE_ROOT="${_sdk_source_root}" \+ FRIDA_DEPS_TOOLCHAIN_PREFIX="${_toolchain_prefix}" \+ FRIDA_MAKE_JOBS="${_jobs}" \+ python "${srcdir}/frida-${pkgver}/releng/deps.py" build \+ --bundle=sdk \+ --host="linux-${CARCH}"++ [[ -f "${_sdk_archive}" ]] || {+ printf 'Missing source-built Frida SDK archive: %s\n' "${_sdk_archive}" >&2+ return 1+ }+ bsdtar -xf "${_sdk_archive}" -C "${_sdk_prefix}"+ [[ "$(<"${_sdk_prefix}/VERSION.txt")" == "${_sdk_version}" ]] || {+ printf 'Source-built Frida SDK has an unexpected version\n' >&2+ return 1+ }+}++_build_env() {+ export FRIDA_VERSION="${pkgver}"+ export FRIDA_COMPAT_SYSROOT="${srcdir}/compat32"+ export npm_config_cache="${srcdir}/npm-cache"+ export npm_config_offline=true+ export npm_config_audit=false+ export npm_config_fund=false+ export GOMODCACHE="${srcdir}/go-mod-cache"+ export GOCACHE="${srcdir}/go-build-cache"+ export GOPROXY=off+ export GOSUMDB=off+} build() {- if [[ -n $LDFLAGS ]]; then- export LDFLAGS="${LDFLAGS//-Wl,-z,pack-relative-relocs/}"- fi- cd "$srcdir/$_pkgname-$pkgver"- python -m build --wheel --no-isolation-}--package() {- cd "$srcdir/$_pkgname-$pkgver"- python -m installer --destdir="$pkgdir" dist/*.whl-- cd "$srcdir"- install -d "$pkgdir/usr/share/licenses/$pkgname"- install -m 644 "COPYING" "$pkgdir/usr/share/licenses/$pkgname/"-}-+ local _jobs+ local _toolchain_prefix+ local _vala_builddir++ _jobs="$(_makepkg_jobs)"+ _toolchain_prefix="${srcdir}/frida-${pkgver}/deps/toolchain-linux-${CARCH}"+ _vala_builddir="${srcdir}/build-vala"++ _build_env+ _build_compat32_sysroot++ [[ -d "${_toolchain_prefix}" ]] && chmod -R u+w -- "${_toolchain_prefix}"+ [[ -d "${_vala_builddir}" ]] && chmod -R u+w -- "${_vala_builddir}"+ rm -rf -- "${_toolchain_prefix}" "${_vala_builddir}"++ python "${srcdir}/frida-${pkgver}/releng/meson/meson.py" setup \+ --prefix="${_toolchain_prefix}" \+ -Doptimization=2 \+ "${_vala_builddir}" \+ "${srcdir}/vala-${_vala_commit}"+ python "${srcdir}/frida-${pkgver}/releng/meson/meson.py" compile \+ -C "${_vala_builddir}" \+ --jobs "${_jobs}"+ python "${srcdir}/frida-${pkgver}/releng/meson/meson.py" install \+ -C "${_vala_builddir}"++ sed \+ -e "s|@TOOLCHAIN_PREFIX@|${_toolchain_prefix}|g" \+ -e "s|@VALA_BUILDDIR@|${_vala_builddir}|g" \+ "${srcdir}/frida-valac.in" > "${srcdir}/frida-valac"+ chmod +x -- "${srcdir}/frida-valac"++ cd -- "frida-${pkgver}" || return 1+ rm -rf -- build++ export FRIDA_MAKE_JOBS="${_jobs}"+ export FRIDA_COMPAT_PKG_CONFIG="${srcdir}/frida-pkg-config-32"+ export PATH="${_toolchain_prefix}/bin:${PATH}"+ export LD_LIBRARY_PATH="${_toolchain_prefix}/lib:${_toolchain_prefix}/lib/vala-0.58:${LD_LIBRARY_PATH:-}"+ export VALAC="${srcdir}/frida-valac"+ export PYTHONPATH="${PWD}:${PYTHONPATH}"+ export VAPIGEN="${_toolchain_prefix}/bin/vapigen-0.58"++ _build_frida_sdk "${_toolchain_prefix}" "${_jobs}"+ export FRIDA_COMPAT_SDK="${srcdir}/frida-sdk"++ ./configure \+ --prefix=/usr \+ --enable-shared \+ --without-prebuilds=toolchain,sdk \+ --disable-frida-tools \+ --enable-gadget \+ --enable-server \+ --enable-inject \+ --enable-frida-python \+ -- \+ -Dportal=disabled \+ -Dfrida-core:barebone_backend=enabled \+ -Dfrida-core:compiler_backend=enabled \+ --wrap-mode=nodownload++ make -C build++ rm -rf -- "${srcdir}/python-frida-dist"+ FRIDA_EXTENSION="${PWD}/build/subprojects/frida-python/frida/_frida.abi3.so" \+ python -m build \+ --wheel \+ --no-isolation \+ --outdir "${srcdir}/python-frida-dist" \+ subprojects/frida-python+}++_stage_install() {+ local _dest="$1"++ _build_env++ cd -- "${srcdir}/frida-${pkgver}" || return 1+ DESTDIR="${_dest}" python releng/meson/meson.py install \+ -C build \+ --no-rebuild+}++package_frida() {+ local _compiler_backend="${pkgdir}/usr/lib/frida-1.0/plugins/frida-compiler-backend.so"+ local _embedded_symbols+ local _embedded_symbols_raw+ local _gumjs_lib="${pkgdir}/usr/lib/libfrida-gumjs-1.0.so"+ local _gumjs_pc="${pkgdir}/usr/lib/pkgconfig/frida-gumjs-1.0.pc"+ local _gumjs_symbols+ local _gumjs_symbols_raw+ local _quickjs_lib="${srcdir}/frida-${pkgver}/build/subprojects/frida-gum/subprojects/quickjs/libquickjs.a"+ local _tinycc_lib="${srcdir}/frida-${pkgver}/build/subprojects/frida-gum/subprojects/tinycc/libtcc.a"+ local _rpath_target+ local _sdk_component+ local _sdk_source+ local _license_file+ local _license_first_line+ local _license_relative+ local _python_dir++ optdepends=('frida-tools: command-line tools')++ _stage_install "${pkgdir}"++ _python_dir="$(find "${pkgdir}/usr/lib" -mindepth 1 -maxdepth 1 -type d -name 'python*' -print -quit)"+ [[ -n "${_python_dir}" ]] || {+ printf '%s\n' 'Missing installed Python directory' >&2+ return 1+ }+ rm -rf -- "${_python_dir}/site-packages/frida"+ rmdir -- "${_python_dir}/site-packages" "${_python_dir}" 2>/dev/null || true++ rm -rf -- \+ "${pkgdir}/usr/include/libusb-1.0" \+ "${pkgdir}/usr/include/lwip" \+ "${pkgdir}/usr/include/quickjs" \+ "${pkgdir}/usr/include/libtcc.h" \+ "${pkgdir}/usr/include/usrsctp.h" \+ "${pkgdir}/usr/lib/libusb-1.0.a" \+ "${pkgdir}/usr/lib/liblwip.a" \+ "${pkgdir}/usr/lib/libquickjs.a" \+ "${pkgdir}/usr/lib/libtcc.a" \+ "${pkgdir}/usr/lib/libusrsctp.a" \+ "${pkgdir}/usr/lib/tcc" \+ "${pkgdir}/usr/lib/pkgconfig/libusb-1.0.pc" \+ "${pkgdir}/usr/lib/pkgconfig/lwip.pc" \+ "${pkgdir}/usr/lib/pkgconfig/quickjs.pc" \+ "${pkgdir}/usr/lib/pkgconfig/libtcc.pc" \+ "${pkgdir}/usr/lib/pkgconfig/usrsctp.pc"++ [[ -f "${_gumjs_pc}" ]] || {+ printf 'Missing GumJS pkg-config file: %s\n' "${_gumjs_pc}" >&2+ return 1+ }+ sed -i \+ -e 's/, quickjs//' \+ -e 's/, libtcc//' \+ "${_gumjs_pc}"+ if grep -Eq '^Requires\.private:.*(quickjs|libtcc)' "${_gumjs_pc}"; then+ printf '%s\n' 'Internal GumJS dependencies leaked into installed pkg-config metadata' >&2+ return 1+ fi++ [[ -f "${_gumjs_lib}" ]] || {+ printf 'Missing GumJS library: %s\n' "${_gumjs_lib}" >&2+ return 1+ }+ [[ -f "${_quickjs_lib}" ]] || {+ printf 'Missing QuickJS static library: %s\n' "${_quickjs_lib}" >&2+ return 1+ }+ [[ -f "${_tinycc_lib}" ]] || {+ printf 'Missing TinyCC static library: %s\n' "${_tinycc_lib}" >&2+ return 1+ }++ _gumjs_symbols="$(mktemp)" || return 1+ _gumjs_symbols_raw="$(mktemp)" || {+ rm -f -- "${_gumjs_symbols}"+ return 1+ }+ _embedded_symbols="$(mktemp)" || {+ rm -f -- "${_gumjs_symbols}" "${_gumjs_symbols_raw}"+ return 1+ }+ _embedded_symbols_raw="$(mktemp)" || {+ rm -f -- "${_gumjs_symbols}" "${_gumjs_symbols_raw}" "${_embedded_symbols}"+ return 1+ }+ if ! nm -D --defined-only "${_gumjs_lib}" > "${_gumjs_symbols_raw}"; then+ rm -f -- "${_gumjs_symbols}" "${_gumjs_symbols_raw}" "${_embedded_symbols}" "${_embedded_symbols_raw}"+ return 1+ fi+ if ! nm -g --defined-only "${_quickjs_lib}" "${_tinycc_lib}" > "${_embedded_symbols_raw}"; then+ rm -f -- "${_gumjs_symbols}" "${_gumjs_symbols_raw}" "${_embedded_symbols}" "${_embedded_symbols_raw}"+ return 1+ fi+ awk '{ print $3 }' "${_gumjs_symbols_raw}" | sort -u > "${_gumjs_symbols}"+ awk '{ print $3 }' "${_embedded_symbols_raw}" | sort -u > "${_embedded_symbols}"+ rm -f -- "${_gumjs_symbols_raw}" "${_embedded_symbols_raw}"+ if comm -12 "${_gumjs_symbols}" "${_embedded_symbols}" | grep -q .; then+ rm -f -- "${_gumjs_symbols}" "${_embedded_symbols}"+ printf '%s\n' 'Embedded QuickJS or TinyCC symbols leaked from GumJS' >&2+ return 1+ fi+ rm -f -- "${_gumjs_symbols}" "${_embedded_symbols}"++ for _rpath_target in \+ "${pkgdir}/usr/bin/frida-server" \+ "${pkgdir}/usr/bin/frida-inject" \+ "${pkgdir}/usr/lib/frida-1.0/64/frida-helper"; do+ [[ -f "${_rpath_target}" ]] || continue+ patchelf --remove-rpath "${_rpath_target}"+ done++ [[ -f "${_compiler_backend}" ]] || {+ printf 'Missing Frida compiler backend: %s\n' "${_compiler_backend}" >&2+ return 1+ }+ if grep -aqF "${srcdir}" "${_compiler_backend}"; then+ printf '%s\n' 'Build path leaked into Frida compiler backend' >&2+ return 1+ fi++ install -Dm644 "${srcdir}/frida-${pkgver}/COPYING" \+ "${pkgdir}/usr/share/licenses/frida/COPYING"++ for _sdk_source in "${srcdir}"/frida-sdk-sources/*; do+ [[ -d "${_sdk_source}" ]] || continue+ _sdk_component="${_sdk_source##*/}"+ while IFS= read -r -d '' _license_file; do+ grep -Iq . -- "${_license_file}" || continue+ _license_first_line=''+ IFS= read -r _license_first_line < "${_license_file}" || true+ [[ "${_license_first_line}" == '#!'* ]] && continue+ _license_relative="${_license_file#"${_sdk_source}/"}"+ install -Dm644 -- "${_license_file}" \+ "${pkgdir}/usr/share/licenses/frida/sdk/${_sdk_component}/${_license_relative}"+ done < <(+ find "${_sdk_source}" -type f \+ \( -iname 'LICENSE*' -o -iname 'COPYING*' -o -iname 'COPYRIGHT*' -o -iname 'NOTICE*' \) \+ -print0+ )+ done++ if [[ -d "${srcdir}/compat32/usr/share/licenses/frida/compat32" ]]; then+ cp -a -- "${srcdir}/compat32/usr/share/licenses/frida/compat32" \+ "${pkgdir}/usr/share/licenses/frida/"+ fi+}++package_python-frida() {+ local _extension+ local _wheel++ pkgdesc='Python bindings for Frida'+ license=('LGPL-2.0-or-later WITH WxWindows-exception-3.1')+ depends=(+ "frida=${pkgver}-${pkgrel}"+ 'glib2'+ 'python'+ )++ _wheel="$(find "${srcdir}/python-frida-dist" -maxdepth 1 -type f -name 'frida-*.whl' -print -quit)"+ [[ -n "${_wheel}" ]] || {+ printf '%s\n' 'Missing prebuilt Frida Python wheel' >&2+ return 1+ }+ python -m installer \+ --destdir="${pkgdir}" \+ --compile-bytecode=2 \+ "${_wheel}"++ _extension="$(find "${pkgdir}/usr/lib" -type f -path '*/site-packages/frida/_frida.abi3.so' -print -quit)"+ [[ -n "${_extension}" ]] || {+ printf '%s\n' 'Missing installed Frida Python extension' >&2+ return 1+ }+ patchelf --remove-rpath "${_extension}"++ install -Dm644 "${srcdir}/frida-${pkgver}/subprojects/frida-python/COPYING" \+ "${pkgdir}/usr/share/licenses/python-frida/COPYING"+}+Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-09-03 15:53:41 | Low | 1 |
| 2026-06-18 16:11:54 | Clean | 0 |