diff --git a/recipes/polars-mojo/recipe.yaml b/recipes/polars-mojo/recipe.yaml new file mode 100644 index 00000000..44638d6e --- /dev/null +++ b/recipes/polars-mojo/recipe.yaml @@ -0,0 +1,91 @@ +context: + name: polars-mojo + version: "0.1.0" + mojo_version: "=1.0.0" + +package: + name: ${{ name }} + version: ${{ version }} + +source: + - git: https://github.com/ethqnol/polars-mojo.git + rev: 191381da3c6a0cffba532c5581d38883489d72ea + +build: + number: 0 + script: + - cargo build --release + - | + TARGET_DIR="target/${CARGO_BUILD_TARGET:-}/release" + if [ ! -d "$TARGET_DIR" ]; then + TARGET_DIR="target/release" + fi + mkdir -p ${{ PREFIX }}/lib + if [ -f "$TARGET_DIR/libpolars_ffi.dylib" ]; then + cp "$TARGET_DIR/libpolars_ffi.dylib" ${{ PREFIX }}/lib/ + fi + if [ -f "$TARGET_DIR/libpolars_ffi.so" ]; then + cp "$TARGET_DIR/libpolars_ffi.so" ${{ PREFIX }}/lib/ + fi + cp "$TARGET_DIR/libpolars_ffi.a" ${{ PREFIX }}/lib/ + + - mkdir -p ${{ PREFIX }}/lib/mojo + - mojo precompile molars -o ${{ PREFIX }}/lib/mojo/molars.mojoc + - cp -r molars ${{ PREFIX }}/lib/mojo/molars + + - mkdir -p ${{ PREFIX }}/etc/conda/activate.d ${{ PREFIX }}/etc/conda/deactivate.d + - | + cat << 'EOF' > ${{ PREFIX }}/etc/conda/activate.d/molars.sh + export _MOLARS_OLD_LIBRARY_PATH="${LIBRARY_PATH:-}" + export _MOLARS_OLD_LD_LIBRARY_PATH="${LD_LIBRARY_PATH:-}" + export _MOLARS_OLD_DYLD_FALLBACK_LIBRARY_PATH="${DYLD_FALLBACK_LIBRARY_PATH:-}" + export LIBRARY_PATH="${CONDA_PREFIX}/lib${LIBRARY_PATH:+:${LIBRARY_PATH}}" + export LD_LIBRARY_PATH="${CONDA_PREFIX}/lib${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}" + export DYLD_FALLBACK_LIBRARY_PATH="${CONDA_PREFIX}/lib${DYLD_FALLBACK_LIBRARY_PATH:+:${DYLD_FALLBACK_LIBRARY_PATH}}" + EOF + - | + cat << 'EOF' > ${{ PREFIX }}/etc/conda/deactivate.d/molars.sh + if [ -n "${_MOLARS_OLD_LIBRARY_PATH+x}" ]; then + export LIBRARY_PATH="${_MOLARS_OLD_LIBRARY_PATH}" + unset _MOLARS_OLD_LIBRARY_PATH + fi + if [ -n "${_MOLARS_OLD_LD_LIBRARY_PATH+x}" ]; then + export LD_LIBRARY_PATH="${_MOLARS_OLD_LD_LIBRARY_PATH}" + unset _MOLARS_OLD_LD_LIBRARY_PATH + fi + if [ -n "${_MOLARS_OLD_DYLD_FALLBACK_LIBRARY_PATH+x}" ]; then + export DYLD_FALLBACK_LIBRARY_PATH="${_MOLARS_OLD_DYLD_FALLBACK_LIBRARY_PATH}" + unset _MOLARS_OLD_DYLD_FALLBACK_LIBRARY_PATH + fi + EOF + +requirements: + build: + - ${{ compiler('c') }} + - ${{ compiler('rust') }} + host: + - mojo-compiler ${{ mojo_version }} + run: + - ${{ pin_compatible('mojo-compiler') }} + +tests: + - package_contents: + files: + - lib/libpolars_ffi.${{ "dylib" if osx else "so" }} + - lib/libpolars_ffi.a + - lib/mojo/molars.mojoc + - files: + source: + - tests/ + script: + - mojo run -I $PREFIX/lib/mojo -Xlinker -L$PREFIX/lib -Xlinker -lpolars_ffi tests/test_arrow_abi.mojo + - mojo run -I $PREFIX/lib/mojo -Xlinker -L$PREFIX/lib -Xlinker -lpolars_ffi tests/test_dataframe.mojo + +about: + homepage: https://github.com/ethqnol/polars-mojo + license: MIT + license_file: LICENSE + summary: Polars DataFrame bindings for Mojo via Arrow C Data Interface + + +