From 07dc2e728e88ec8527c692ff3a9aff1b7f7d73d1 Mon Sep 17 00:00:00 2001 From: Max Howell Date: Sun, 7 Jan 2024 05:10:53 -0500 Subject: [PATCH] python 3.12 cannot run pip<23.1.2 (#4763) https://stackoverflow.com/questions/77364550/attributeerror-module-pkgutil-has-no-attribute-impimporter-did-you-mean --- projects/pip.pypa.io/README.md | 5 +++ projects/pip.pypa.io/package.yml | 66 ++++++++++++++++++++++---------- 2 files changed, 50 insertions(+), 21 deletions(-) create mode 100644 projects/pip.pypa.io/README.md diff --git a/projects/pip.pypa.io/README.md b/projects/pip.pypa.io/README.md new file mode 100644 index 00000000..1fad6fda --- /dev/null +++ b/projects/pip.pypa.io/README.md @@ -0,0 +1,5 @@ +# fit & finish + +* we provide all `pip3.x` (that we could build) that automatically invoke + pip via that python +* if a pkgx python is already in the environment, that python is used diff --git a/projects/pip.pypa.io/package.yml b/projects/pip.pypa.io/package.yml index 4be5737b..f042829d 100644 --- a/projects/pip.pypa.io/package.yml +++ b/projects/pip.pypa.io/package.yml @@ -12,34 +12,52 @@ dependencies: build: dependencies: + python.org: ~3.11 crates.io/semverator: ^0.4.3 script: - pkgx curl -O https://bootstrap.pypa.io/get-pip.py - # build a pip for every python - # FIXME hardcoding 3.12 sucks - # FIXME 3.7 *should* work but doesn't + - 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 - - while semverator lt $v 3.12; do + + # 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) - - rm -rf bootstrap && mkdir bootstrap - - pkgx python@$v get-pip.py --target=bootstrap - - - PYTHONPATH=$PWD/bootstrap - pkgx python@$v -m pip install . - --target={{prefix}}/py$v - | install -D $PROP {{prefix}}/bin/pip$v - sed -i s/{{v}}/$v/ {{prefix}}/bin/pip$v echo "exec pkgx python@$v \"\$d/bin/pip\" \"\$@\"" >> {{prefix}}/bin/pip$v - - - vMax=$v - done + + # FIXME hardcoded `3` + - | + install -D $PROP {{prefix}}/bin/pip3 + echo "exec pkgx python@3 \"\$d/bin/pip\" \"\$@\"" >> {{prefix}}/bin/pip3 + + - | + install -D $PROP {{prefix}}/bin/pip + echo "exec pkgx python \"\$d/bin/pip\" \"\$@\"" >> {{prefix}}/bin/pip + prop: | #!/bin/sh - d="$(cd "$(dirname "$0")"/.. && pwd)/py{{v}}" + d="$(cd "$(dirname "$0")"/.. && pwd)/libexec" export PIP_DISABLE_PIP_VERSION_CHECK=1 if [ -n "$PYTHONPATH" ]; then export PYTHONPATH="$d:$PYTHONPATH" @@ -47,14 +65,10 @@ build: export PYTHONPATH="$d" fi - # FIXME hardcoded `3` - - run: | - ln -s pip$vMax pip3 - ln -s pip$vMax pip - working-directory: - ${{prefix}}/bin + # cleanup unused files + - rm {{prefix}}/libexec/bin/pip?* - - fix-shebangs.ts {{prefix}}/py*/bin/* + - fix-shebangs.ts {{prefix}}/libexec/bin/* test: - run: pkgx +python.org~3.9 pip install findtui --target . @@ -69,6 +83,16 @@ test: - pip --version | grep {{prefix}} - pip --version | grep {{version}} + - | + 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 + provides: - bin/pip + - bin/pip3.8 + - bin/pip3.9 + - bin/pip3.10 + - bin/pip3.11 + - bin/pip3.12 #FIXME - bin/pip{{deps.python.org.version.major}}