From 38fae6e9cbcdd8e932a53bf1c763279dc55729d5 Mon Sep 17 00:00:00 2001 From: Gyeongjae Choi Date: Fri, 17 Jun 2022 11:26:09 +0900 Subject: [PATCH] PKG Add shapely and geos (#2725) Co-authored-by: Hood --- docs/project/changelog.md | 3 ++- packages/geos/meta.yaml | 29 +++++++++++++++++++++++++++++ packages/shapely/meta.yaml | 22 ++++++++++++++++++++++ packages/shapely/test_shapely.py | 19 +++++++++++++++++++ 4 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 packages/geos/meta.yaml create mode 100644 packages/shapely/meta.yaml create mode 100644 packages/shapely/test_shapely.py diff --git a/docs/project/changelog.md b/docs/project/changelog.md index bdb8e1312..cc29d1510 100644 --- a/docs/project/changelog.md +++ b/docs/project/changelog.md @@ -173,7 +173,8 @@ substitutions: - New packages: opencv-python v4.5.5.64 {pr}`2305`, ffmpeg {pr}`2305`, libwebp {pr}`2305`, h5py, pkgconfig and libhdf5 {pr}`2411`, bitarray {pr}`2459`, gsw {pr}`2511`, cftime {pr}`2504`, svgwrite, jsonschema, tskit {pr}`2506`, xarray {pr}`2538`, demes, libgsl, newick, - ruamel, msprime {pr}`2548`, gmpy2 {pr}`2665`, xgboost {pr}`2537`, galpy {pr}`2676`. + ruamel, msprime {pr}`2548`, gmpy2 {pr}`2665`, xgboost {pr}`2537`, galpy {pr}`2676`, + shapely, geos {pr}`2725`. ## Version 0.20.0 diff --git a/packages/geos/meta.yaml b/packages/geos/meta.yaml new file mode 100644 index 000000000..a3c936cec --- /dev/null +++ b/packages/geos/meta.yaml @@ -0,0 +1,29 @@ +package: + name: geos + version: 3.10.3 + +source: + url: http://download.osgeo.org/geos/geos-3.10.3.tar.bz2 + sha256: 3c141b07d61958a758345d5f54e3c735834b2f4303edb9f67fb26914f0d44770 + +build: + sharedlibrary: true + script: | + echo "set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS TRUE)" > SupportSharedLib.cmake + + LDFLAGS="${SIDE_MODULE_LDFLAGS}" emcmake cmake \ + -DDISABLE_GEOS_INLINE=ON \ + -DBUILD_TESTING=OFF \ + -DBUILD_BENCHMARKS=OFF \ + -DBUILD_DOCUMENTATION=OFF \ + -DCMAKE_C_FLAGS="-fPIC" \ + -DCMAKE_CXX_FLAGS="-fPIC" \ + -DCMAKE_PROJECT_INCLUDE=SupportSharedLib.cmake \ + -DCMAKE_INSTALL_PREFIX=${WASM_LIBRARY_DIR} \ + ./ + + emmake make -j ${PYODIDE_JOBS:-3} + emmake make install + + mkdir -p dist + cp ${WASM_LIBRARY_DIR}/lib/libgeos* dist/ diff --git a/packages/shapely/meta.yaml b/packages/shapely/meta.yaml new file mode 100644 index 000000000..d233b842c --- /dev/null +++ b/packages/shapely/meta.yaml @@ -0,0 +1,22 @@ +package: + name: shapely + version: 1.8.2 +source: + url: https://files.pythonhosted.org/packages/93/3c/cda77e57a08c49569de5bd90376c547bcb981420100adcb0f3770ed681b1/Shapely-1.8.2.tar.gz + sha256: 572af9d5006fd5e3213e37ee548912b0341fb26724d6dc8a4e3950c10197ebb6 +build: + script: | + export GEOS_CONFIG=${WASM_LIBRARY_DIR}/bin/geos-config +requirements: + run: + - geos + - numpy +test: + imports: + - shapely + - shapely.geos + - shapely.geometry + - shapely.ops + - shapely.prepared + - shapely.validation + - shapely.strtree diff --git a/packages/shapely/test_shapely.py b/packages/shapely/test_shapely.py new file mode 100644 index 000000000..da95d017d --- /dev/null +++ b/packages/shapely/test_shapely.py @@ -0,0 +1,19 @@ +from pyodide_test_runner import run_in_pyodide + + +@run_in_pyodide(packages=["shapely"]) +def test_shapely(selenium): + from shapely.geometry import MultiLineString + + coords = [((0, 0), (1, 1)), ((-1, 0), (1, 0))] + lines = MultiLineString(coords) + assert lines.area == 0.0 + assert round(lines.length, 2) == 3.41 + + +@run_in_pyodide(packages=["shapely"]) +def test_shapely_geos(selenium): + import shapely.geos + + assert shapely.geos.geos_version + assert shapely.geos.geos_version_string