lightning/.github/actions/pip-wheels/action.yml

83 lines
2.4 KiB
YAML

name: Dump local wheels
description: scan local env and dump needed wheels
inputs:
torch-url:
description: path to the PyTorch downloads
required: false
default: "https://download.pytorch.org/whl/cpu/torch_stable.html"
wheel-dir:
description: local path for export wheels
required: false
default: "_pip-wheels/"
cache-key:
description: update this cache
required: false
default: "pypi_wheels"
runs:
using: "composite"
steps:
- name: install dev. env
run: pip install -r requirements/ci.txt
shell: bash
- name: Freeze local emv.
run: |
pip freeze > requirements.dump
cat requirements.dump
shell: bash
- name: Filter self pkg
run: |
import os
fp = 'requirements.dump'
with open(fp) as fopen:
lines = [ln.strip() for ln in fopen.readlines()]
# prevent collisions with version appendix
lines = [ln.split('+')[0] for ln in lines if '-e ' not in ln]
# drop sphinx theme package
lines = [ln for ln in lines if 'sphinx-theme' not in ln]
with open(fp, 'w') as fopen:
fopen.writelines([ln + os.linesep for ln in lines])
shell: python
- name: Dump wheels
run: |
# cat requirements.dump
pip wheel -r requirements.dump --prefer-binary \
--wheel-dir=.wheels \
-f ${{ inputs.torch-url }} -f ${{ inputs.wheel-dir }}
ls -lh .wheels/
shell: bash
- name: Find diff
id: wheels-diff
run: |
import os, glob
wheels = [os.path.basename(p) for p in glob.glob(".wheels/*")]
pkgs = [os.path.basename(p) for p in glob.glob("${{ inputs.wheel-dir }}/*")]
diff = [w for w in wheels if w not in pkgs]
print(diff)
with open(os.environ['GITHUB_OUTPUT'], 'a') as fh:
print(f'count-new={len(diff)}', file=fh)
shell: python
- name: Cache pull
if: ${{ steps.wheels-diff.outputs.count-new != 0 }}
uses: actions/cache/restore@v3
with:
path: ${{ inputs.wheel-dir }}
key: ${{ inputs.cache-key }}
- run: cp .wheels/* ${{ inputs.wheel-dir }}
if: ${{ steps.wheels-diff.outputs.count-new != 0 }}
shell: bash
- name: Cache push
if: ${{ steps.wheels-diff.outputs.count-new != 0 }}
uses: actions/cache/save@v3
with:
path: ${{ inputs.wheel-dir }}
key: ${{ inputs.cache-key }}