-
-
Notifications
You must be signed in to change notification settings - Fork 747
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update Orquesta to v1.6.0 #6050
Conversation
Make sure lines with markers are considered as unique requirements and can be duplicated
…he python version
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I like unpinning much better.
Yeah, I tried to go with updating But went alternative way by unpinning the
I'm getting what I want during the build stage:
Now the only blocker is 🔴
I'm guessing something is outdated related to the build env for EL7 that doesn't quite work with dependency markers. |
Figured it out in StackStorm/st2-packages#728, - which is RFR now (this PR relies on that st2-packages branch). |
@@ -31,7 +31,7 @@ mongoengine | |||
# networkx version is constrained in orquesta. | |||
networkx | |||
orjson | |||
orquesta @ git+https://github.com/StackStorm/orquesta.git@v1.5.0 | |||
orquesta @ git+https://github.com/StackStorm/orquesta.git@v1.6.0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just to play a bit with pants.
@cognifloyd For ./pants generate-lockfiles --resolve=st2
I've got the following error:
ERROR: Cannot install networkx and orquesta==1.6.0 because these package versions have conflicting dependencies.
ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/user_guide/#fixing-conflicting-dependencies
The conflict is caused by:
The user requested networkx
orquesta 1.6.0 depends on networkx<3 and >=2.6
To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip attempt to solve the dependency conflict
the dependency conflict made no sense to me
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If I remove networkx
from requirements-pants.txt
I'm getting the following during the pants lock generation:
ERROR: Could not find a version that satisfies the requirement networkx<3,>=2.6 (from orquesta)
ERROR: No matching distribution found for networkx<3,>=2.6
weird 🤔
# networkx v2.6 does not support Python3.6. Update networkx to match orquesta | ||
networkx>=2.5.1,<2.6 | ||
# required by orquesta (networkx<2.6 for py3.6, networkx<3 for py3.8) | ||
networkx<3 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@armab what happens if you change networkx here to match orquesta, e.g. >=2.6 & < 3
and then re-generate the requirements files
and then re-generate pants.
Wondering if that is why it complains that it can't rectifiy.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Though also orquesta looks a bit more complicated...
requirements.txt:networkx>=2.5.1,<2.6; python_version < '3.7'
requirements.txt:networkx>=2.6,<3; python_version >= '3.7'
So we have different dependencies for different python versions, I wonder if the pants generate lockfiles copes with that?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@amanda11 Yeah, I tried that in my first approach. See the build failures here: #6050 (comment)
Outside of issues in st2
with fixate-requirements script not allowing duplicate records of networkx
, I've found later that pip under EL7 didn't work as expected with the environment markers during the s2-packages
build: #6050 (comment)
After all the tries in st2-packages
and st2
the current approach is the way of less resistance and at least I got the packages build working (with additional #6050 (comment) fix)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I wonder if the pants generate lockfiles copes with that?
On the pants lockfile side, I saw
Line 134 in 8f6cb46
"requires_python": ">=3.6", |
so technically it may support things, but I experienced issues with pip too, so 🤷♂️
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
pants does not support using the legacy resolver. I'm not sure why the legacy resolver is required in this case, as it seems clear to me. I'll have to play with it, hopefully this week.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@cognifloyd Thanks for looking into it 👍 Can't wait and I'm looking forward to merge this PR so I can continue updating the dependencies for the v3.8.1
patch.
Some context on the issue with dependencies.
For some unknown reason, the new pip resolver went into an infinite loop resolving the dependencies: https://app.circleci.com/pipelines/github/StackStorm/st2/4158/workflows/11838dac-5adc-4554-9a87-f7bf506bedb6/jobs/15940?invite=true#step-109-978547_123 and couldn't process that networkx
with conditional python_version
env markers failing the EL7 build:
[package: st2] [18:59:15] ERROR: Cannot install orquesta==1.6.0 and st2==3.9.dev0 because these package versions have conflicting dependencies.
[package: st2] [18:59:15]
[package: st2] [18:59:15] The conflict is caused by:
[package: st2] [18:59:15] st2 3.9.dev0 depends on networkx
[package: st2] [18:59:15] orquesta 1.6.0 depends on networkx<3 and >=2.6
In this ^^ case orquesta 1.6.0 depends on networkx<3 and >=2.6
is a wrong condition chosen, as EL7
runs on py3.6 and should choose a different networkx for dependency. So that might be a bug in pip.
I've tried to use the latest pip version available for py3.6, but it didn't help.
From the pip changelog there might be a relevant fix to try: (When checking for conflicts in the build environment, correctly skip requirements containing markers that do not match the current environment.) available in pip 22.1
, but we can't use it because py3.6 support was dropped in pip 22.0
.
For pants
build, something pip buggy is happening as well, but more 👀 would be appreciated.
My thinking that's the worst case, for the upcoming st2 v3.8.1
patch we'll live with it and take what worked in this PR for st2-packages
. The new pants build system is not going to go live for this patch anyway.
In st2 v3.9.0
we can drop python 3.6, switch to a new pip dependency resolver, latest pip and remove python env markers alltogether. That'll be quite an exercism that should potentially fix some bugs and technical debt 😈
Update Orquesta to v1.6.0 to be included in the next st2 release.
Orquesta v1.6.0 comes with some updated dependencies.