distributable: url: https://github.com/pypa/pip/archive/refs/tags/{{version.raw}}.tar.gz strip-components: 1 versions: github: pypa/pip/tags # FIXME: the major prior to 18 is 10, which is ancient and doesn't currently work ignore: ['<18'] dependencies: pkgx.sh: ^1 build: dependencies: python.org: ~3.11 crates.io/semverator: ^0.4.3 script: - pkgx curl -O https://bootstrap.pypa.io/get-pip.py - rm -rf bootstrap && mkdir bootstrap - python get-pip.py --target=bootstrap - PYTHONPATH=$PWD/bootstrap python -m pip install . --target={{prefix}}/libexec - run: # FIXME 3.7 *should* work but doesn't - v=3.7 # Python 3.12 had various breaking changes (semver is meaningless # apparently) and thus pip less than 23.1.2 will not work with it # FIXME hardcoding 3.12 sucks - | if semverator lt {{version}} 23.1.2; then vMax=3.11 else vMax=3.12 fi - while semverator lt $v $vMax; do - v=$(semverator bump $v minor | cut -d. -f1,2) - | install -D $PROP {{prefix}}/bin/pip$v echo "exec pkgx python@$v \"\$d/bin/pip\" \"\$@\"" >> {{prefix}}/bin/pip$v - done # FIXME hardcoded `3` - | install -D $PROP {{prefix}}/bin/pip3 if semverator lt {{version}} 23.1.2; then python="'python<3.12'" else python=python@3 fi echo "exec pkgx $python \"\$d/bin/pip\" \"\$@\"" >> {{prefix}}/bin/pip3 - | install -D $PROP {{prefix}}/bin/pip if semverator lt {{version}} 23.1.2; then python="'python<3.12'" else python=python fi echo "exec pkgx $python \"\$d/bin/pip\" \"\$@\"" >> {{prefix}}/bin/pip prop: | #!/bin/sh d="$(cd "$(dirname "$0")"/.. && pwd)/libexec" export PIP_DISABLE_PIP_VERSION_CHECK=1 if [ -n "$PYTHONPATH" ]; then export PYTHONPATH="$d:$PYTHONPATH" else export PYTHONPATH="$d" fi # cleanup unused files - rm {{prefix}}/libexec/bin/pip?* - fix-shebangs.ts {{prefix}}/libexec/bin/* test: - run: pkgx +python.org~3.9 pip install findtui --target . if: ~18 - run: - pip install findtui --target foo - pip3.10 install findtui --target . if: '>=19' - test -f findtui/main.py - pip --version | grep {{prefix}} - pip --version | grep {{version}} - run: | for v in 3.8 3.9 3.10 3.11; do test $(pip$v inspect | pkgx jq --raw-output .environment.python_version) = $v done if: '>=22' # inspect command introduced at v22 provides: - bin/pip - bin/pip3.8 - bin/pip3.9 - bin/pip3.10 - bin/pip3.11 #FIXME - bin/pip3.12 #FIXME - bin/pip{{deps.python.org.version.major}}