diff --git a/Makefile.envs b/Makefile.envs index 207c7ecdc..d53d266ef 100644 --- a/Makefile.envs +++ b/Makefile.envs @@ -145,7 +145,7 @@ export MAIN_MODULE_CFLAGS= $(CFLAGS_BASE) \ -I$(PYTHONINCLUDE) \ -s EXCEPTION_CATCHING_ALLOWED=['we only want to allow exception handling in side modules'] -export STDLIB_MODULE_CFLAGS= $(SIDE_MODULE_CFLAGS) -I Include/ -I . +export STDLIB_MODULE_CFLAGS= $(SIDE_MODULE_CFLAGS) -I Include/ -I . -I Include/internal/ # For RUST export CARGO_HOME ?= $(HOME)/.cargo diff --git a/docs/project/changelog.md b/docs/project/changelog.md index 436c35dd5..985fd82f2 100644 --- a/docs/project/changelog.md +++ b/docs/project/changelog.md @@ -12,6 +12,10 @@ substitutions: # Change Log +## Unreleased + +- New packages: the standard library lzma module {pr}`2939` + ## Version 0.21.0 _August 9, 2022_ diff --git a/packages/liblzma/meta.yaml b/packages/liblzma/meta.yaml new file mode 100644 index 000000000..a3d8bf53f --- /dev/null +++ b/packages/liblzma/meta.yaml @@ -0,0 +1,25 @@ +package: + name: liblzma + version: 5.2.2 + +source: + url: https://github.com/xz-mirror/xz/releases/download/v5.2.2/xz-5.2.2.tar.gz + sha256: 73df4d5d34f0468bd57d09f2d8af363e95ed6cc3a4a86129d2f2c366259902a2 + +build: + library: true + script: | + emconfigure ./configure \ + CFLAGS="-fPIC" \ + --disable-xz \ + --disable-xzdec \ + --disable-lzmadec \ + --disable-lzmainfo \ + --disable-lzma-links \ + --disable-scripts \ + --disable-doc \ + --enable-shared=no \ + --prefix=${WASM_LIBRARY_DIR} + + emmake make -j ${PYODIDE_JOBS:-3} + emmake make install diff --git a/packages/lzma/empty/.keep b/packages/lzma/empty/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/packages/lzma/meta.yaml b/packages/lzma/meta.yaml new file mode 100644 index 000000000..507bcafca --- /dev/null +++ b/packages/lzma/meta.yaml @@ -0,0 +1,23 @@ +package: + name: lzma + version: 1.0.0 # Nonesense + _cpython_dynlib: true +source: + path: empty +build: + sharedlibrary: true + script: | + mkdir dist + export DISTDIR=$(pwd)/dist + cd $CPYTHONBUILD + emcc $STDLIB_MODULE_CFLAGS -c Modules/_lzmamodule.c -o Modules/_lzmamodule.o \ + $(pkg-config --cflags --dont-define-prefix liblzma) + + emcc Modules/_lzmamodule.o -o $DISTDIR/_lzma.so $SIDE_MODULE_LDFLAGS \ + $(pkg-config --libs --dont-define-prefix liblzma) +requirements: + run: + - liblzma +test: + imports: + - lzma diff --git a/packages/lzma/test_lzma.py b/packages/lzma/test_lzma.py new file mode 100644 index 000000000..937af9287 --- /dev/null +++ b/packages/lzma/test_lzma.py @@ -0,0 +1,17 @@ +from pytest_pyodide import run_in_pyodide + + +@run_in_pyodide(packages=["test", "lzma"], pytest_assert_rewrites=False) +def test_lzma(selenium): + # TODO: libregrtest.main(["test_lzma"]) doesn't collect any tests for some unknown reason. + + import test.test_lzma + import unittest + + suite = unittest.TestSuite( + [unittest.TestLoader().loadTestsFromModule(test.test_lzma)] + ) + + runner = unittest.TextTestRunner(verbosity=2) + result = runner.run(suite) + assert result.wasSuccessful() diff --git a/pyodide-build/pyodide_build/common.py b/pyodide-build/pyodide_build/common.py index 9ad476f24..13f1acdef 100644 --- a/pyodide-build/pyodide_build/common.py +++ b/pyodide-build/pyodide_build/common.py @@ -80,6 +80,7 @@ CORE_PACKAGES = { "sharedlib-test-py", "cpp-exceptions-test", "ssl", + "lzma", "pytest", "tblib", }