diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index a837ab7a..500cd979 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -528,96 +528,95 @@ jobs: path: uv/stats.csv retention-days: 10 -# pixi: -# runs-on: ubuntu-22.04 -# steps: -# - name: Checkout -# uses: actions/checkout@v4 -# -# - name: Setup Python -# uses: actions/setup-python@v5 -# with: -# python-version: "3.11" -# -# - name: setup -# run: ./bin/actions_prereqs.sh -# -# - name: tooling -# run: | -# /usr/bin/time --output=timings/tooling.txt --format="%e,%S,%U,%P,%M,%I,%O" \ -# make pixi-tooling -# -# - name: import -# run: | -# /usr/bin/time --output=timings/import.txt --format="%e,%S,%U,%P,%M,%I,%O" \ -# make pixi-import -# -# - name: lock cold -# run: | -# make pixi-clean-cache -# make pixi-clean-venv -# make pixi-clean-lock -# /usr/bin/time --output=timings/lock-cold.txt --format="%e,%S,%U,%P,%M,%I,%O" \ -# make pixi-lock -# -# - name: lock warm -# run: | -# make pixi-clean-lock -# /usr/bin/time --output=timings/lock-warm.txt --format="%e,%S,%U,%P,%M,%I,%O" \ -# make pixi-lock -# -# - name: install cold -# run: | -# make pixi-clean-cache -# make pixi-clean-venv -# /usr/bin/time --output=timings/install-cold.txt --format="%e,%S,%U,%P,%M,%I,%O" \ -# make pixi-install -# -# - name: install warm -# run: | -# make pixi-clean-venv -# /usr/bin/time --output=timings/install-warm.txt --format="%e,%S,%U,%P,%M,%I,%O" \ -# make pixi-install -# -# - name: update cold -# run: | -# make pixi-clean-cache -# /usr/bin/time --output=timings/update-cold.txt --format="%e,%S,%U,%P,%M,%I,%O" \ -# make pixi-update -# -# - name: update warm -# run: | -# /usr/bin/time --output=timings/update-warm.txt --format="%e,%S,%U,%P,%M,%I,%O" \ -# make pixi-update -# -# - name: add package -# run: | -# /usr/bin/time --output=timings/add-package.txt --format="%e,%S,%U,%P,%M,%I,%O" \ -# make pixi-add-package -# -# - name: stats -# run: | -# VERSION=$(make pixi-version) -# CSV=pixi/stats.csv -# TIMESTAMP=$(date +%s) -# mkdir -p "pixi" -# echo "tool,version,timestamp,stat,elapsed time,system,user,cpu percent,max rss,inputs,outputs" > "$CSV" -# for stat in "tooling" "import" "lock-cold" "lock-warm" "install-cold" "install-warm" "update-cold" "update-warm" "add-package"; do -# echo "pixi,$VERSION,$TIMESTAMP,$stat,$(cat timings/$stat.txt | tr -d '%')" >> "$CSV" -# done -# csv2md "$CSV" >> $GITHUB_STEP_SUMMARY -# -# - uses: actions/upload-artifact@v4 -# if: github.ref == 'refs/heads/main' -# with: -# name: pixi-stats -# path: pixi/stats.csv -# retention-days: 10 + pixi: + runs-on: ubuntu-22.04 + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: "3.11" + + - name: setup + run: ./bin/actions_prereqs.sh + + - name: tooling + run: | + /usr/bin/time --output=timings/tooling.txt --format="%e,%S,%U,%P,%M,%I,%O" \ + make pixi-tooling + + - name: import + run: | + /usr/bin/time --output=timings/import.txt --format="%e,%S,%U,%P,%M,%I,%O" \ + make pixi-import + + - name: lock cold + run: | + make pixi-clean-cache + make pixi-clean-venv + make pixi-clean-lock + /usr/bin/time --output=timings/lock-cold.txt --format="%e,%S,%U,%P,%M,%I,%O" \ + make pixi-lock + + - name: lock warm + run: | + make pixi-clean-lock + /usr/bin/time --output=timings/lock-warm.txt --format="%e,%S,%U,%P,%M,%I,%O" \ + make pixi-lock + + - name: install cold + run: | + make pixi-clean-cache + make pixi-clean-venv + /usr/bin/time --output=timings/install-cold.txt --format="%e,%S,%U,%P,%M,%I,%O" \ + make pixi-install + + - name: install warm + run: | + make pixi-clean-venv + /usr/bin/time --output=timings/install-warm.txt --format="%e,%S,%U,%P,%M,%I,%O" \ + make pixi-install + + - name: update cold + run: | + make pixi-clean-cache + /usr/bin/time --output=timings/update-cold.txt --format="%e,%S,%U,%P,%M,%I,%O" \ + make pixi-update + + - name: update warm + run: | + /usr/bin/time --output=timings/update-warm.txt --format="%e,%S,%U,%P,%M,%I,%O" \ + make pixi-update + + - name: add package + run: | + /usr/bin/time --output=timings/add-package.txt --format="%e,%S,%U,%P,%M,%I,%O" \ + make pixi-add-package + + - name: stats + run: | + VERSION=$(make pixi-version) + CSV=pixi/stats.csv + TIMESTAMP=$(date +%s) + mkdir -p "pixi" + echo "tool,version,timestamp,stat,elapsed time,system,user,cpu percent,max rss,inputs,outputs" > "$CSV" + for stat in "tooling" "import" "lock-cold" "lock-warm" "install-cold" "install-warm" "update-cold" "update-warm" "add-package"; do + echo "pixi,$VERSION,$TIMESTAMP,$stat,$(cat timings/$stat.txt | tr -d '%')" >> "$CSV" + done + csv2md "$CSV" >> $GITHUB_STEP_SUMMARY + + - uses: actions/upload-artifact@v4 + if: github.ref == 'refs/heads/main' + with: + name: pixi-stats + path: pixi/stats.csv + retention-days: 10 gather: runs-on: ubuntu-22.04 - # needs: [poetry, pdm, pdm-uv, pipenv, pip-tools, uv, pixi] - needs: [poetry, pdm, pdm-uv, pip-tools, uv] + needs: [poetry, pdm, pdm-uv, pip-tools, uv, pixi] if: github.ref == 'refs/heads/main' steps: - uses: actions/download-artifact@v4 diff --git a/Makefile b/Makefile index af4daffd..7dc57a02 100644 --- a/Makefile +++ b/Makefile @@ -175,6 +175,7 @@ pixi-import: cd pixi; $(PIXI_PATH) add --pypi $$(sed -e 's/#.*//' -e '/^$$/ d' < ../requirements.txt) --frozen pixi-clean-cache: pip-clean $(PIXI_PATH) clean cache --yes + rm -rf ~/.cache/uv pixi-clean-venv: cd pixi; rm -rf .pixi/envs pixi-clean-lock: diff --git a/pixi/pixi.toml b/pixi/pixi.toml deleted file mode 100644 index a6619a05..00000000 --- a/pixi/pixi.toml +++ /dev/null @@ -1,11 +0,0 @@ -[workspace] -authors = ["Your Name "] -channels = ["conda-forge"] -name = "pixi" -platforms = ["linux-64"] -version = "0.1.0" - -[tasks] - -[dependencies] -python = "==3.11" diff --git a/pixi/pyproject.toml b/pixi/pyproject.toml new file mode 100644 index 00000000..32e0906e --- /dev/null +++ b/pixi/pyproject.toml @@ -0,0 +1,9 @@ +[project] +dependencies = [] +name = "pixi" +requires-python = "~= 3.11.0" +version = "0.1.0" + +[tool.pixi.workspace] +channels = ["conda-forge"] +platforms = ["linux-64"]