Commit Graph

20 Commits

Author SHA1 Message Date
Gyeongjae Choi 83ba807b10
Handle shared libraries with version suffix (#3154) 2022-09-30 11:06:41 +09:00
Gyeongjae Choi a916ea0b34
BLD simplify building CMake based packages (#3128)
This PR makes building CMake based packages easier.
- Introduce a custom toolchain file for Pyodide. It inherits most of settings from the original Emscripten toolchain file with some modifications. Packages built by pyodide-build will automatically use that toolchain file.
- Proxy cmake in pywasmcross.py, in order to proxy other compiler toolchains.
2022-09-22 10:42:26 +09:00
Gyeongjae Choi 6d5de461a5
Proxy ranlib and strip (#3082) 2022-09-13 13:19:44 +09:00
Roman Yurchak c85e00806b
MAINT Switch to pytest-pyodide (#2893)
Co-authored-by: ryanking13 <def6488@gmail.com>
2022-07-31 19:00:45 +09:00
Gyeongjae Choi 06d82f9e42
Do not strip -shared flag when building packages (#2897) 2022-07-26 15:48:36 +09:00
Hood Chatham 686426ab39
Respect symbol visibility in export calculation (#2821)
We shouldn't export symbols with `__attribute__((visibility("hidden")))`. Numpy has
a test to check that symbols with this attribute aren't exported. This fixes that test.
2022-07-04 11:32:36 -07:00
Hood Chatham 61c062f5aa
Remove replace_libs (#2822)
We don't use this feature anymore.
2022-07-02 06:53:16 -07:00
Hood Chatham fac51bdcf0
Default to -sSIDE_MODULE=2 in packages (#2712)
Drops the size of the dist directory from 271mb to 226 mb which is a 17% size reduction.
2022-06-23 07:15:21 -07:00
Hood Chatham 6c7e3d03f0
MAINT Remove pywasmcross rule to drop libs and includes from HOST_INSTALL_DIR (#2644)
This rule is out of date, we intend to ensure that HOST_INSTALL_DIR
consists of cross-build packages which have the right libs and includes
so they can be used.
2022-05-29 23:04:59 -07:00
Henry Schreiner e31bb554e4
chore: complete more incomplete types (#2590)
* chore: add some incomplete types
* chore: modernize pyproject.toml

Adding more incomplete types. About 2/3 of the way through being
able to turn on the strictness flag for it.
2022-05-21 13:35:02 -07:00
Hood Chatham eabfa8101e
Use pypa/build (#2272)
This resolves #2189.

> build isolation would be a bit difficult to use in our case, as for instance
> when building scipy we need the patched numpy on the host and not the numpy
> version specified in pyproject.toml (which would be unpatched)

This is indeed the case, certain packages cannot be isolated. My strategy is to
make a list of packages that shouldn't be isolated and add symlinks from the
isolated build environment into the `.artifacts` directory to "unisolate" them.
Then we remove the unisolated package requirements from the list of packages to
install, in case pesky constraints aren't satisfied. In particular, packages
that expect to be used with `pypa/build` often feel free to put very specific
constraints on their build dependencies (often asking them to be == to a
particular version). Specific version constraints is good for build
reproducibility and with build isolation doesn't cost anything. So we just
ignore the constraints. Hopefully nothing goes wrong.

In particular, any package that does stuff both at build time and at runtime and
requires synchronization between the build time and run time environments needs
the unisolation. This includes cffi with `_cffi_backend.so`, and of course numpy
and scipy. pycparser needs to be unisolated because it is a dependency of cffi.

Currently I have also unisolated pythran and cython, though these are build time
only tools and do not really need to be unisolated. Cython I unisolated
specifically because numcodecs needs it but it isn't in the numcodecs build
dependencies. Pythran I unisolated because of a problem with the scipy build
which I don't fully understand (some problem with long double feature
detection).
2022-03-21 22:05:30 -07:00
Hood Chatham f7b0f8c5cb
No replay (#2256)
Our package build process currently has a significant flaw: we first run setup.py, recording all compilation commands, then we rewrite these compilation commands to invoke emcc and replay them, and then we pray that the cross compiled executables ended up in the right place to go into the wheel. This is not a good strategy because the build script is allowed to implement arbitrary logic, and if it moves, renames, etc any of the output files then we lose track of them. This has repeatedly caused difficulty for us.

However, we also make no particularly significant use of the two pass approach. We can just do the simpler thing: capture the compiler commands as they occur, modify them as needed, and then run the fixed command.

I also added a patch to fix the numpy feature detection for wasm so that we don't have to include _npyconfig.h and config.h, numpy can generate them in the way it would for a native build. I opened a numpy PR that would fix the detection for us upstream:
numpy/numpy#21154

This clears the way for us to switch to using pypa/build (as @henryiii has suggested) by removing our dependence on specific setuptools behavior.

This is on top of #2238.
2022-03-13 11:39:06 -07:00
Henry Schreiner 4f8b0a0344
chore: more pre-commit checking (#2257) 2022-03-07 21:51:20 -08:00
Hood Chatham 282fbedcad
MAINT Invoke pywasmcross via function calls (#2063) 2021-12-25 12:08:43 -08:00
Hood Chatham 6065bcd532
MAINT Clean up environment variables and pywasmcross (#2053) 2021-12-20 11:26:27 -08:00
Roman Yurchak 075116857f CI Fix black 2021-11-16 22:14:36 +01:00
Hao Zhang 3a9e21e424
Fix wasm-ld unknown arguments error (#1963) (#1965) 2021-11-16 22:06:38 +01:00
Roman Yurchak 74c1d4aa9a
CI with Github Actions and conda (#1690) 2021-10-27 09:35:59 +02:00
Hood Chatham 49b33b5442
Add package config for pyodide package (#1848) 2021-09-21 08:46:44 +02:00
Roman Yurchak 4e9d10833e
BLD Create an installable pyodide-build package (#1566) 2021-05-03 20:51:11 +02:00