You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: Added <api>/check/<test> and added run-all-tests-via-api.py
Although the <api>/check endpoint worked just fine locally, it times out
the workload on edge. So we need to be able to call each test one by
one.
So in addition to this, I added a <api>/list endpoint which lists all
tests, then a /check/<test> endpoint which calls a singular test. This
allows us to run just a specific test, if need be.
Also added instructions on how this works to README.md
@@ -84,10 +84,10 @@ Buildscripts to build numpy and other wheels for wasix. For convenience, this pa
84
84
85
85
The build script is controlled by the following environment variables:
86
86
87
-
*`CC`, `CXX`, `AR`, `LD`, `RANLIB`, etc... : The cross-compiler tools. These should all be normal clang tools, but target wasm32-wasix by default and use the wasix sysroot.
88
-
*`WASIX_SYSROOT`: The path to the wasix sysroot that is used by the toolchain. Libraries will get installed here when you run `make install` or when they are required to build a package.
89
-
*`INSTALL_DIR`: The path to the python library path. Wheels will get installed here when you run `make install`.
90
-
*`WASMER`: The path to the wasmer binary. You must have it registered to handle wasm files as binfmt_misc. You can do this with `sudo $WASMER binfmt reregister`.
87
+
-`CC`, `CXX`, `AR`, `LD`, `RANLIB`, etc... : The cross-compiler tools. These should all be normal clang tools, but target wasm32-wasix by default and use the wasix sysroot.
88
+
-`WASIX_SYSROOT`: The path to the wasix sysroot that is used by the toolchain. Libraries will get installed here when you run `make install` or when they are required to build a package.
89
+
-`INSTALL_DIR`: The path to the python library path. Wheels will get installed here when you run `make install`.
90
+
-`WASMER`: The path to the wasmer binary. You must have it registered to handle wasm files as binfmt_misc. You can do this with `sudo $WASMER binfmt reregister`.
91
91
92
92
The easiest way to setup all the environment variables is to activate the wasix-clang environment using `source wasix-clang/activate`.
93
93
@@ -154,111 +154,111 @@ Here is a list of the versions of the wheels and libraries that are included in
154
154
155
155
#### Wheels
156
156
157
-
* numpy: numpy/numpy main
158
-
* markupsafe: 3.0.2
159
-
* pandas: 2.3.2
160
-
* pytz: 2025.2
161
-
* dateutil: 2.9.0
162
-
* tzdata: 2025.2
163
-
* six: 1.17.0
164
-
* msgpack: 1.1.0
165
-
* pycryptodome: 3.23.0
166
-
* pycryptodomex: 3.23.0
167
-
* pyzbar: 0.1.9
168
-
* cpython: 3.1.2
169
-
* pypandoc: 1.15
170
-
* pypandoc_binary: 1.15
171
-
* psycopg: 3.2.9
172
-
* psycopg-binary: 3.2.9
173
-
* psycopg-pool: pool-3.2.6
174
-
* brotlicffi: 1.1.0.0
175
-
* cffi: 1.17.1
176
-
* pillow: 11.3.0
177
-
* matplotlib: 3.10.6
178
-
* uvloop: 0.21.0
179
-
* mysqlclient: 2.2.7
180
-
* python-qrcode: 8.2
181
-
* pycparser: 2.22
182
-
* pydantic: 2.11.7
183
-
* typing_extensions: 4.14.1
184
-
* typing-inspection: 0.4.1
185
-
* annotated-types: 0.7.0
186
-
* shapely: 2.1.1
187
-
* mrab-regex: 2025.7.31
188
-
* lxml: 6.0.0
189
-
* protobuf: 31.1
190
-
* grpc: 1.74.1
191
-
* numpy: 1.26.5
192
-
* numpy: 2.0.2
193
-
* numpy: 2.3.2
194
-
* python-crc32c: 1.7.1
195
-
* requests: 2.32.4
196
-
* urllib3: 2.5.0
197
-
* idna: 3.10
198
-
* certifi: 2025.08.03
199
-
* charset-normalizer: 3.4.3
200
-
* pypng: 0.20250521.0
201
-
* pyarrow: 19.0.1
202
-
* pyarrow: 21.0.0
203
-
* packaging: 25.0
204
-
* pyparsing: 3.2.3
205
-
* cycler: 0.12.1
206
-
* kiwisolver: 1.4.9
207
-
* contourpy: 1.3.3
208
-
* pyopenssl: 25.1.0
209
-
* aspw: 3.50.4.0
157
+
- numpy: numpy/numpy main
158
+
- markupsafe: 3.0.2
159
+
- pandas: 2.3.2
160
+
- pytz: 2025.2
161
+
- dateutil: 2.9.0
162
+
- tzdata: 2025.2
163
+
- six: 1.17.0
164
+
- msgpack: 1.1.0
165
+
- pycryptodome: 3.23.0
166
+
- pycryptodomex: 3.23.0
167
+
- pyzbar: 0.1.9
168
+
- cpython: 3.1.2
169
+
- pypandoc: 1.15
170
+
- pypandoc_binary: 1.15
171
+
- psycopg: 3.2.9
172
+
- psycopg-binary: 3.2.9
173
+
- psycopg-pool: pool-3.2.6
174
+
- brotlicffi: 1.1.0.0
175
+
- cffi: 1.17.1
176
+
- pillow: 11.3.0
177
+
- matplotlib: 3.10.6
178
+
- uvloop: 0.21.0
179
+
- mysqlclient: 2.2.7
180
+
- python-qrcode: 8.2
181
+
- pycparser: 2.22
182
+
- pydantic: 2.11.7
183
+
- typing_extensions: 4.14.1
184
+
- typing-inspection: 0.4.1
185
+
- annotated-types: 0.7.0
186
+
- shapely: 2.1.1
187
+
- mrab-regex: 2025.7.31
188
+
- lxml: 6.0.0
189
+
- protobuf: 31.1
190
+
- grpc: 1.74.1
191
+
- numpy: 1.26.5
192
+
- numpy: 2.0.2
193
+
- numpy: 2.3.2
194
+
- python-crc32c: 1.7.1
195
+
- requests: 2.32.4
196
+
- urllib3: 2.5.0
197
+
- idna: 3.10
198
+
- certifi: 2025.08.03
199
+
- charset-normalizer: 3.4.3
200
+
- pypng: 0.20250521.0
201
+
- pyarrow: 19.0.1
202
+
- pyarrow: 21.0.0
203
+
- packaging: 25.0
204
+
- pyparsing: 3.2.3
205
+
- cycler: 0.12.1
206
+
- kiwisolver: 1.4.9
207
+
- contourpy: 1.3.3
208
+
- pyopenssl: 25.1.0
209
+
- aspw: 3.50.4.0
210
210
<!-- WHEEL_VERSIONS_END -->
211
211
212
212
psycopg3-c is just the sdist of psycopg3-binary
213
213
214
214
#### Libraries
215
215
216
-
* libzbar: 0.23.93
217
-
* libffi: wasix-org/libffi main
218
-
* pandoc: haskell-wasm/pandoc wasm
219
-
* postgresql: 17.5
220
-
* brotli: 1.1.0
221
-
* zlib: develop
222
-
* 1.3.1 does not have proper cmake support, so we are using develop for now
-`TEST_DIR=/tests/ wasmer run . --registry=wasmer.wtf --net --forward-host-env`
300
+
-`curl localhost:8081/check`
301
+
302
+
This will run all tests via fastapi.
303
+
304
+
You may also run each test individually by:
305
+
306
+
-`curl localhost:80801/list`
307
+
-`curl localhost:8081/check/<test-file>`
308
+
309
+
This is needed when testing on edge, since `.../check` times out the workload.
310
+
In conjunction with this, there is a convenience script which runs all tests each in a separate query.
311
+
312
+
So you may also run `./run-all-tests-via-api.py --host <hostname> --port <port>`.
313
+
This is intended to be run to validate package functionaltiy on edge, as each test becomes a separate workload.
301
314
302
315
### Notes
303
316
@@ -325,7 +338,7 @@ to check which python libraries depend on shared libs. We try to keep that to a
325
338
326
339
### Structure
327
340
328
-
<!--
341
+
<!--
329
342
There is the pkgs folder that contains most stuff
330
343
331
344
For each project that can be built there are multiple files depending on the type.
@@ -351,52 +364,52 @@ TODO: Make this more understandable
351
364
352
365
Inside the pkgs/ folder there can be the following directories:
353
366
354
-
*`*.source`: clean submodule checkout
355
-
*`*.prepared`: patched worktree of source
356
-
*`*.build`: temporary build directory
357
-
*`*.tar.gz`: python sdist
358
-
*`*.sdist`: unpacked python sdist
359
-
*`*.whl`: compiled python wheel
360
-
*`*.wheel`: unpacked python wheel
361
-
*`*.lib`: unpacked library/application
362
-
*`*.tar.xz`: packed library/application
367
+
-`*.source`: clean submodule checkout
368
+
-`*.prepared`: patched worktree of source
369
+
-`*.build`: temporary build directory
370
+
-`*.tar.gz`: python sdist
371
+
-`*.sdist`: unpacked python sdist
372
+
-`*.whl`: compiled python wheel
373
+
-`*.wheel`: unpacked python wheel
374
+
-`*.lib`: unpacked library/application
375
+
-`*.tar.xz`: packed library/application
363
376
364
377
#### Base structure
365
378
366
379
Each project follows a consistent flow through the first three main directories.
367
380
368
-
*`*.source`
369
-
* This is a clean checkout of the project's upstream source code, tracked as a git submodule.
370
-
* We avoid modifying this directly, since changes here would slow down git operations in the build-scripts repo.
371
-
*`*.prepared`
372
-
* A git worktree created from the `*.source` repository.
373
-
* If patches are needed, they're applied here.
374
-
* If no patches are needed, it's just a clean mirror of the source.
375
-
* This directory is persistent and only refreshed if the source changes so new patches can be developed in this directory
376
-
*`*.build`
377
-
* A copy of the `*.prepared` directory, used for the actual build step.
378
-
* Contains all intermediate build artifacts.
379
-
* This directory is temporary and may be deleted between builds. Never make manual changes here.
381
+
-`*.source`
382
+
- This is a clean checkout of the project's upstream source code, tracked as a git submodule.
383
+
- We avoid modifying this directly, since changes here would slow down git operations in the build-scripts repo.
384
+
-`*.prepared`
385
+
- A git worktree created from the `*.source` repository.
386
+
- If patches are needed, they're applied here.
387
+
- If no patches are needed, it's just a clean mirror of the source.
388
+
- This directory is persistent and only refreshed if the source changes so new patches can be developed in this directory
389
+
-`*.build`
390
+
- A copy of the `*.prepared` directory, used for the actual build step.
391
+
- Contains all intermediate build artifacts.
392
+
- This directory is temporary and may be deleted between builds. Never make manual changes here.
380
393
381
394
The remaining steps are different depending on the type of project.
382
395
383
396
#### Python modules
384
397
385
-
* The build step creates a `*.tar.gz` sdist from the `*.build` directory.
386
-
* The sdist is then extracted into a `*.sdist` folder.
387
-
* Finally, a wheel (`*.whl`) is built from the `*.sdist`.
388
-
* If you want to you can make a `*.wheel` directory to view the unpacked wheel
398
+
- The build step creates a `*.tar.gz` sdist from the `*.build` directory.
399
+
- The sdist is then extracted into a `*.sdist` folder.
400
+
- Finally, a wheel (`*.whl`) is built from the `*.sdist`.
401
+
- If you want to you can make a `*.wheel` directory to view the unpacked wheel
389
402
390
403
#### WASIX libraries and applications
391
404
392
-
* The build step builds the library and installs it into a `*.lib` folder, following the correct directory structure.
393
-
* That folder is then compressed into a final distributable *.tar.xz.
405
+
- The build step builds the library and installs it into a `*.lib` folder, following the correct directory structure.
406
+
- That folder is then compressed into a final distributable \*.tar.xz.
394
407
395
408
#### Interdependencies
396
409
397
410
If a project depends on other project they can either be direct dependencies of that project or you can define a `*.sysroot` target with the dependencies as prerequisites.
398
411
399
-
*`*.sysroot`
400
-
* Contains the merged builds of multiple other projects
401
-
* Useful when a project is using pkg-config to find its dependencies
402
-
* Automatically builds a sysroot from its list of prerequisites
412
+
-`*.sysroot`
413
+
- Contains the merged builds of multiple other projects
414
+
- Useful when a project is using pkg-config to find its dependencies
415
+
- Automatically builds a sysroot from its list of prerequisites
0 commit comments