Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
We need to replace
--binary :all:
with--binary $(pipenv requirements | sed -n 's/==.*//p' | tr '\n' ',')
because otherwise pip tries to build everything from scratch (including the build system (??)).We need the new dulwich options:
because pip has changed the application of build options, so building pure python packages becomes harder. See dulwich issue 1093.
Update Pipfile.lock
Remove packages dataclasses and typing which are both built-in for python3.7.
Pipfile.lock is regenerated from scratch, updating everything!
Force protobuf python implementation
It seems that Anki 2.1.35 (the last version compatible with python3.7) is not actually compatible with the latest protobuf (possibly released after Anki 2.1.35).
See:
https://developers.google.com/protocol-buffers/docs/news/2022-05-06#python-updates
Both anki and protobuf are dev dependencies so this incompatibility only affects testing.
We will be able to remove this workaround by upgrading to python3.9 (compatible with latest Anki). (See: #183.)
Avoid pipenv process substitution in fetch_dependencies.sh
I don't fully understand why, but
pipenv run foo <(bar)
processsubstitution doesn't work in GitHub actions.
AFAICT in a "normal" environment, pipenv execs into its subcommand process (here
foo
), and the subcommand inherits all its file descriptors (including the file descriptor for<(bar)
, inherited fromfetch_dependencies.sh
.In GitHub actions, for unknown, to me, reasons, pipenv instead creates a separate child process for
foo
and does not share its file descriptors, sofoo
doesn't have access to<(bar)
.