From 3cc4ec54f2625935ed4351599c90c42972d9a44c Mon Sep 17 00:00:00 2001 From: Mose Schmiedel Date: Tue, 12 May 2026 11:52:15 +0200 Subject: [PATCH 1/5] build: use `rattler-build` and enable `pixi-build` feature --- {src => conda.recipe}/recipe.yaml | 21 +++++++++++++-------- pixi.toml | 15 ++++++++++++++- 2 files changed, 27 insertions(+), 9 deletions(-) rename {src => conda.recipe}/recipe.yaml (64%) diff --git a/src/recipe.yaml b/conda.recipe/recipe.yaml similarity index 64% rename from src/recipe.yaml rename to conda.recipe/recipe.yaml index a8e0e39d..276bd9b0 100644 --- a/src/recipe.yaml +++ b/conda.recipe/recipe.yaml @@ -1,6 +1,5 @@ context: - version: "0.1.0" - max_requirement: "max = 25.3.0.dev2025040705" + version: "0.5.0" package: name: "larecs" @@ -8,29 +7,34 @@ package: source: - git: https://github.com/samufi/larecs.git - rev: v0.1.0 + rev: 9b861b83434206dd9d03c9d4a6857ec96f05c2b5 build: number: 0 script: - mojo package src/larecs -o ${{ PREFIX }}/lib/mojo/larecs.mojopkg + requirements: + build: + - mojo-compiler >=0.26.2,<1.0.0 host: - - ${{ max_requirement }} + - mojo-compiler >=0.26.2,<1.0.0 run: - - ${{ pin_compatible('max') }} + - ${{ pin_compatible('mojo-compiler') }} tests: - script: - if: unix then: - - mojo test --sanitize address -D ASSERT=all test + - scripts/run-tests.sh test requirements: run: - - ${{ max_requirement }} + - ${{ pin_compatible('mojo-compiler') }} files: source: - test/ + - scripts/ + - test/ + - pixi.toml about: homepage: https://samufi.github.io/larecs/ @@ -43,4 +47,5 @@ extra: maintainers: - samufi - mlange-42 + - moseschmiedel project_name: Larecs🌲 diff --git a/pixi.toml b/pixi.toml index 820d6138..7bce820a 100644 --- a/pixi.toml +++ b/pixi.toml @@ -8,9 +8,22 @@ channels = ["conda-forge", "https://repo.prefix.dev/max-nightly"] description = "Larecs🌲 is a performance-oriented archetype-based ECS for Mojo🔥." name = "larecs" platforms = ["linux-64", "osx-arm64"] -version = "0.4.0" +version = "0.5.0" +preview = ["pixi-build"] [tasks] [dependencies] mojo = ">=0.26.2, <1.0.0" + +[package] +name = {workspace = true} +version = {workspace = true} + +[package.build.backend] +name = "pixi-build-rattler-build" +version = "*" +channels = ["conda-forge", "https://repo.prefix.dev/max-nightly"] + +[package.build.config] +recipe = "conda.recipe/recipe.yaml" From a30dd21654c88999d5634d63dd370480c94d732b Mon Sep 17 00:00:00 2001 From: Mose Schmiedel Date: Tue, 12 May 2026 15:17:53 +0200 Subject: [PATCH 2/5] chore: upgrade `scripts/pixi.lock` version --- scripts/pixi.lock | 92 +++++++++++++++++++++++------------------------ 1 file changed, 46 insertions(+), 46 deletions(-) diff --git a/scripts/pixi.lock b/scripts/pixi.lock index 35e5291d..5ecd6317 100644 --- a/scripts/pixi.lock +++ b/scripts/pixi.lock @@ -1,4 +1,6 @@ -version: 6 +version: 7 +platforms: +- name: osx-arm64 environments: default: channels: @@ -6,12 +8,12 @@ environments: - url: https://conda.anaconda.org/conda-forge/ indexes: - https://pypi.org/simple - options: - pypi-prerelease-mode: if-necessary-or-explicit packages: osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_9.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.4.22-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_9.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.8.0-hf6b4638_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.5.2-hcf2aa1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.3-h8088a28_0.conda @@ -21,14 +23,39 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.6-h1d4f5a5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.2-hd24854e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.14.4-h4c637c5_100_cp314.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.3-h46df422_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h010d191_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-hbf9d68e_6.conda - pypi: https://files.pythonhosted.org/packages/de/26/6a28db36a65f9f6e57cb0da611593e309b6422bdbf07e0785cf5b6e8e4cc/perfetto-0.16.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ec/11/3325d41e6ee15bf1125654301211247b042563bcc898784351252549a8ad/protobuf-7.34.1-cp310-abi3-macosx_10_9_universal2.whl packages: +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.4.22-hbd8a1cb_0.conda + sha256: c9dbcc8039a52023660d6d1bbf87594a93dd69c6ac5a2a44323af2c92976728d + md5: e18ad67cf881dcadee8b8d9e2f8e5f73 + depends: + - __unix + license: ISC + purls: [] + size: 131039 + timestamp: 1776865545798 +- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda + build_number: 8 + sha256: ad6d2e9ac39751cc0529dd1566a26751a0bf2542adb0c232533d32e176e21db5 + md5: 0539938c55b6b1a59b560e843ad864a4 + constrains: + - python 3.14.* *_cp314 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6989 + timestamp: 1752805904792 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + sha256: 1d30098909076af33a35017eed6f2953af1c769e273a0626a04722ac4acaba3c + md5: ad659d0a2b3e47e38d829aa8cad2d610 + license: LicenseRef-Public-Domain + purls: [] + size: 119135 + timestamp: 1767016325805 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_9.conda sha256: 540fe54be35fac0c17feefbdc3e29725cce05d7367ffedfaaa1bdda234b019df md5: 620b85a3f45526a8bc4d23fd78fc22f0 @@ -39,15 +66,6 @@ packages: purls: [] size: 124834 timestamp: 1771350416561 -- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.4.22-hbd8a1cb_0.conda - sha256: c9dbcc8039a52023660d6d1bbf87594a93dd69c6ac5a2a44323af2c92976728d - md5: e18ad67cf881dcadee8b8d9e2f8e5f73 - depends: - - __unix - license: ISC - purls: [] - size: 131039 - timestamp: 1776865545798 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.8.0-hf6b4638_0.conda sha256: f4b1cafc59afaede8fa0a2d9cf376840f1c553001acd72f6ead18bbc8ac8c49c md5: 65466e82c09e888ca7560c11a97d5450 @@ -133,19 +151,6 @@ packages: purls: [] size: 3106008 timestamp: 1775587972483 -- pypi: https://files.pythonhosted.org/packages/de/26/6a28db36a65f9f6e57cb0da611593e309b6422bdbf07e0785cf5b6e8e4cc/perfetto-0.16.0-py3-none-any.whl - name: perfetto - version: 0.16.0 - sha256: 7da26220635d80fd6a8401f3c75499d180cc48ebd257dad147090ec88b6417c1 - requires_dist: - - protobuf - - numpy ; extra == 'numpy' - - pandas ; extra == 'pandas' -- pypi: https://files.pythonhosted.org/packages/ec/11/3325d41e6ee15bf1125654301211247b042563bcc898784351252549a8ad/protobuf-7.34.1-cp310-abi3-macosx_10_9_universal2.whl - name: protobuf - version: 7.34.1 - sha256: d8b2cc79c4d8f62b293ad9b11ec3aebce9af481fa73e64556969f7345ebf9fc7 - requires_python: '>=3.10' - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.14.4-h4c637c5_100_cp314.conda build_number: 100 sha256: 27e7d6cbe021f37244b643f06a98e46767255f7c2907108dd3736f042757ddad @@ -171,17 +176,6 @@ packages: size: 13533346 timestamp: 1775616188373 python_site_packages_path: lib/python3.14/site-packages -- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda - build_number: 8 - sha256: ad6d2e9ac39751cc0529dd1566a26751a0bf2542adb0c232533d32e176e21db5 - md5: 0539938c55b6b1a59b560e843ad864a4 - constrains: - - python 3.14.* *_cp314 - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 6989 - timestamp: 1752805904792 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.3-h46df422_0.conda sha256: a77010528efb4b548ac2a4484eaf7e1c3907f2aec86123ed9c5212ae44502477 md5: f8381319127120ce51e081dce4865cf4 @@ -204,13 +198,6 @@ packages: purls: [] size: 3127137 timestamp: 1769460817696 -- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - sha256: 1d30098909076af33a35017eed6f2953af1c769e273a0626a04722ac4acaba3c - md5: ad659d0a2b3e47e38d829aa8cad2d610 - license: LicenseRef-Public-Domain - purls: [] - size: 119135 - timestamp: 1767016325805 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-hbf9d68e_6.conda sha256: 9485ba49e8f47d2b597dd399e88f4802e100851b27c21d7525625b0b4025a5d9 md5: ab136e4c34e97f34fb621d2592a393d8 @@ -222,3 +209,16 @@ packages: purls: [] size: 433413 timestamp: 1764777166076 +- pypi: https://files.pythonhosted.org/packages/de/26/6a28db36a65f9f6e57cb0da611593e309b6422bdbf07e0785cf5b6e8e4cc/perfetto-0.16.0-py3-none-any.whl + name: perfetto + version: 0.16.0 + sha256: 7da26220635d80fd6a8401f3c75499d180cc48ebd257dad147090ec88b6417c1 + requires_dist: + - protobuf + - numpy ; extra == 'numpy' + - pandas ; extra == 'pandas' +- pypi: https://files.pythonhosted.org/packages/ec/11/3325d41e6ee15bf1125654301211247b042563bcc898784351252549a8ad/protobuf-7.34.1-cp310-abi3-macosx_10_9_universal2.whl + name: protobuf + version: 7.34.1 + sha256: d8b2cc79c4d8f62b293ad9b11ec3aebce9af481fa73e64556969f7345ebf9fc7 + requires_python: '>=3.10' From 3ee51b8c4975ea408c20931fbaf3c7220a8b7983 Mon Sep 17 00:00:00 2001 From: Mose Schmiedel Date: Tue, 12 May 2026 16:15:51 +0200 Subject: [PATCH 3/5] feat: use rattler-build for packaing --- .github/workflows/main.yml | 2 +- .github/workflows/release.yml | 22 ++-------------------- conda.recipe/recipe.yaml | 5 ++--- scripts/run_tests.sh | 2 +- 4 files changed, 6 insertions(+), 25 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 2074d204..d1c35d5b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -30,7 +30,7 @@ jobs: - name: Run tests run: | - scripts/run_tests.sh test + pixi run scripts/run_tests.sh test - name: Check formatting run: | diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index dd65f75f..2305ece7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -26,23 +26,5 @@ jobs: uses: actions/checkout@v3 with: fetch-depth: 0 - - name: Install pixi CLI - run: | - curl -ssL https://pixi.sh/install.sh | bash - - - name: Build package - run: | - pixi run mojo package src/larecs - - - name: Test package - run: | - scripts/run_tests.sh test - - - name: Upload package - if: ${{ github.event_name == 'release' }} - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file: larecs.mojopkg - asset_name: larecs.mojopkg - tag: ${{ github.ref }} + - name: Build conda package + uses: prefix-dev/rattler-build-action@v0.2.37 diff --git a/conda.recipe/recipe.yaml b/conda.recipe/recipe.yaml index 276bd9b0..51461c18 100644 --- a/conda.recipe/recipe.yaml +++ b/conda.recipe/recipe.yaml @@ -6,8 +6,7 @@ package: version: ${{ version }} source: - - git: https://github.com/samufi/larecs.git - rev: 9b861b83434206dd9d03c9d4a6857ec96f05c2b5 + path: ../ build: number: 0 @@ -26,7 +25,7 @@ tests: - script: - if: unix then: - - scripts/run-tests.sh test + - scripts/run_tests.sh test requirements: run: - ${{ pin_compatible('mojo-compiler') }} diff --git a/scripts/run_tests.sh b/scripts/run_tests.sh index b98575a4..d57884d9 100755 --- a/scripts/run_tests.sh +++ b/scripts/run_tests.sh @@ -13,7 +13,7 @@ failed_tests=() echo "### ------------------------------------------------------------- ###" while IFS= read -r test_file; do echo "Running test: $test_file" - if ! pixi run mojo --Werror -D ASSERT=all -I src "$test_file" ; then + if ! mojo --Werror -D ASSERT=all -I src "$test_file" ; then failed_tests+=("$test_file") fi echo "### ------------------------------------------------------------- ###" From 10104ed417a43cf74ff2a3b9f2f6db4cc55ab27c Mon Sep 17 00:00:00 2001 From: Mose Schmiedel Date: Tue, 12 May 2026 16:16:26 +0200 Subject: [PATCH 4/5] build: add recipe for building latest release of larecs --- conda.recipe/recipe-latest-release.yaml | 51 +++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 conda.recipe/recipe-latest-release.yaml diff --git a/conda.recipe/recipe-latest-release.yaml b/conda.recipe/recipe-latest-release.yaml new file mode 100644 index 00000000..94b168bb --- /dev/null +++ b/conda.recipe/recipe-latest-release.yaml @@ -0,0 +1,51 @@ +context: + version: "0.5.0" + +package: + name: "larecs" + version: ${{ version }} + +source: + - git: https://github.com/samufi/larecs.git + rev: 3ee51b8c4975ea408c20931fbaf3c7220a8b7983 + +build: + number: 0 + script: + - mojo package src/larecs -o ${{ PREFIX }}/lib/mojo/larecs.mojopkg + +requirements: + build: + - mojo-compiler >=0.26.2,<1.0.0 + host: + - mojo-compiler >=0.26.2,<1.0.0 + run: + - ${{ pin_compatible('mojo-compiler') }} + +tests: + - script: + - if: unix + then: + - scripts/run_tests.sh test + requirements: + run: + - ${{ pin_compatible('mojo-compiler') }} + files: + source: + - scripts/ + - test/ + - pixi.toml + +about: + homepage: https://samufi.github.io/larecs/ + license: LGPL-3.0-only + license_file: LICENSE + summary: A performance-oriented archetype-based ECS for Mojo🔥. + repository: https://github.com/samufi/larecs + +extra: + maintainers: + - samufi + - mlange-42 + - moseschmiedel + project_name: Larecs🌲 From aa53fa40780e40f1c78f582c6760a05828d2cd5b Mon Sep 17 00:00:00 2001 From: Mose Schmiedel Date: Tue, 12 May 2026 16:22:01 +0200 Subject: [PATCH 5/5] ci: specify channels for rattler-build --- .github/workflows/release.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2305ece7..703c410f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -28,3 +28,5 @@ jobs: fetch-depth: 0 - name: Build conda package uses: prefix-dev/rattler-build-action@v0.2.37 + with: + build-args: --channel conda-forge --channel https://repo.prefix.dev/max-nightly