-
Notifications
You must be signed in to change notification settings - Fork 1.8k
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
Adds opentdf-client versions 1.4.0 and 1.5.0 #18896
Merged
conan-center-bot
merged 23 commits into
conan-io:master
from
patmantru:opentdf-client-version-1.5.0
Aug 17, 2023
Merged
Changes from 2 commits
Commits
Show all changes
23 commits
Select commit
Hold shift + click to select a range
a30a8ed
Adds versions 1.4.0 and 1.5.0
91a29d5
Need magic_enum for 1.4.0 also
abbaa72
Merge branch 'master' into opentdf-client-version-1.5.0
AbrilRBS 1b9cb5a
Update to new release content
449351b
Merge branch 'opentdf-client-version-1.5.0' of github.com:patmantru/c…
fd6ce0e
Merge branch 'master' into opentdf-client-version-1.5.0
patmantru 628a83e
Update to newest release tag content
e890d3f
Merge branch 'master' into opentdf-client-version-1.5.0
patmantru 80a3261
Merge branch 'opentdf-client-version-1.5.0' of github.com:patmantru/c…
82c2a3f
Merge branch 'master' into opentdf-client-version-1.5.0
AbrilRBS 32082cd
Change OpenSSL version references to ranges per CCI requirements
d27b840
fix typo
122bfa5
Try different range spec for 1.1.x
fd21b7f
Try another range spec for openssl 1.1.x
50342a7
Another try at version ranges
813e0df
Still another try at ranges for openssl 1.1.x
56cfc6d
Pick a version range that is also compatible with jwt-cpp
edce36d
openssl/[>=3.1 <3.2] range is not compatible with jwt-cpp. Use fixed…
e7593af
One more try with newer jwt-cpp and ranges
667d4c6
Avoid jwt-cpp complaint about OpenSSL 1.1.1u
1b273e1
Override 3.1.1 for openssl to avoid jwt-cpp complaint
ebb08c7
jwt-cpp requires are broken forr 0.5.0 and 0.6.0, avoid
61d8cf7
opentdf-client: update openssl version ranges
jcar87 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,8 @@ | ||
versions: | ||
"1.5.0": | ||
folder: all | ||
"1.4.0": | ||
folder: all | ||
"1.3.10": | ||
folder: all | ||
"1.3.9": | ||
|
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.
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.
Hi @patmantru, thanks a lot for the contribution. One comment: we are now accepting version ranges for openssl to avoid overrides: https://github.com/conan-io/conan-center-index/blob/master/docs/adding_packages/dependencies.md#version-ranges
So maybe you can use one for both those requires.
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.
Thanks for the suggestion, but it's not going to work in this case. Our code requires the OpenSSL 1.x interface for 1.4.0-and-older versions. The changes to support OpenSSL 3.x were introduced in our version 1.5.0. I need to leave that check as-is.
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.
Hi @patmantru, I may have not explained it properly, I mean that you can use separate version ranges for each
Version(self.version)
so that you avoid the need of doing overrides in other libraries that may be required in the same graph. Something similar to this: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.
OK, I understand now. The issue I have (especially for the 1.1.x stuff) is that I don't want someone to accidentally pull in a random version that we don't know anything about. Case in point, there are vulnerabilities in the 1.1.1[a-z] earlier versions that are fixed in later ones, so I'd rather go with a fixed version. Unless there's a strict CCI requirement that I change this, I'd really prefer to leave it as-is. Having a repeatable build (identical binaries every time you build it) is much more important to me for this package.
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.
@czoido any additional feedback?
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 have been building this using a local recipe, and it works fine using pinned versions. Now that I am specifying a version range...the opentdf-client version 1.5.0 that includes the OpenSSL 3.1.1 upgrade changes fails because jwt-cpp disallows it. Going back to pinned versions to see if that works.
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.
@jcar87 After 12 (!!!) attempts and the better part of 2 full work days, I have this PR building.
Notes:
jwt-cpp
has its requirement for OpenSSL set as the range[>1.1.1c, <1.1.1u]
(note the less-than on the upper limit) which means any range spec that pulls in something newer than1.1.1t
will fail. Theopentdf-client
package uses OpenSSL 1.1.1 for releases up through 1.4.0. Since the current 1.x version is1.1.1u
, setting a range spec of[>1.1.1q <1.2]
will pick1.1.1u
, which will failjwt-cpp
's range check. As a concession to your request, even though it is actually propagating the problem, I've added[>1.1.1q <1.1.1u]
as the range foropentdf-client
1.4.0 and older, just so I can say I did my best here.Similarly, specifying an OpenSSL 3.1.x version range for my release 1.5.0 recipe will fail, because it's ALSO not within
jwt-cpp
's[>1.1.1c, <1.1.1u]
range check.The ONLY WAY TO GET MY RELEASE 1.5.0 RECIPE FOR TO BUILD CLEANLY given the
jwt-cpp
recipe, is to pin the OpenSSL version as3.1.1
, which overrides thejwt-cpp
range check. This is evident from looking at the 11 previous build attempts that all failed for one range-check reason or another.I think I've done more than my share of attempting to comply with your request to use version ranges for OpenSSL. I've proven that it is not possible in this situation given all the constraints. All I wanted to do was to publish our release 1.4.0 and 1.5.0 recipe updates. That was supposed to be a couple of new SHA256 lines, and bumping some requirement versions. Now this has dragged on for weeks, and it's still not in.
Please approve this so it can be merged and I can move on to more important things...like upgrading the recipe to be conan 2.x compliant.
Thanks-
Pat
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.
Absolutely agreed, this is important, and possible with Conan Center and where we are headed. I think we have a disagreement as to where this version pinning should be happening. We want to make sure that it is consumers that are able to do version pinning. This is the purpose of lockfiles. This is a good summary of recommendations, that places the responsibility on consumers to be aware and known their entire dependency tree - we give them the options to both pin the version and update to a newer one if necessary, provided the newer one is known to be compatible (as is the case with the OpenSSL 3.x series).
on the one hand, you have hopes that CCI would be like Pypi/Cargo/npm, but on the other hand these tools and repositories use version ranges by default, which you are arguing against - Some example
boto3
, the top most downloaded package in PyPI - notice how each of them uses a version range, as we are advocating to use in Conan Center for OpenSSL.^
notation here is also exactly equivalent as what we are doing for OpenSSL.In all these cases, it means that users doing
pip install
,npm install
or cargo builds would get a combination of versions today, and will very likely get a completely different one if they run the same commands 2 weeks from now. In all of these cases there are well described mechanisms to lock the version resolver to specific versions:The practices that we are proposing for Conan Center are in line with widely adopted practices elsewhere. Conan is no differente: https://docs.conan.io/2.0/tutorial/versioning/lockfiles.html
This is categorically untrue.
The "some packages" is for packages that have known compatibility promises. For libraries that don't, we won't be using them. Widely adopted practice elsewhere.
While there are some differences, Cargo explains this better than I can: https://doc.rust-lang.org/cargo/faq.html#why-do-binaries-have-cargolock-in-version-control-but-not-libraries
We want the end consumers to be in control - they depend on OpenSSL, they should control which version, provided all the libraries they are using are compatible.
The PR is still open and subject to change. The advise is, and always has been for Conan Center, to avoid consuming recipes and binaries from Conan Center in a fully unconstrained manner. The advice (especially with Conan 2.0) would be to use lockfiles, and only update the lockfiles when you need to update your dependencies - then you can inspect and solve conflicts if needed or fix compatibility issues. It shouldn't happen "from under you" - this is in line with the recommendations for python packages, npm, cargo, and so on.
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.
Thanks for reporting this.
openssl/[>1.1.1c, <1.1.1u]
is not accepted range in Conan Center. We have discovered there is a bug with the bump dependencies automerge - and the team is working to fix this. I have opened a PR to address this: #19220I apologise you experienced this issues, I can understand this has been frustating.
Unfortunately this is a side effect of the
openssl/[>1.1.1c, <1.1.1u]
dependency in thejwt-cpp
recipe - this is malformed and should have not been merged. The team is looking into this to avoid this in the future. in Conan 2.0 this is interpreted asopenssl/[>1.1.1c]
, hence why it works when you pin to 3.1.1: in Conan 1 it does an override, and in Conan 2.0 it just matches the range.Please note that this silent overrides (as experienced in Conan 1.x) are no longer a thing in Conan 2.0: if
jwt-cpp
were only compatible with OpenSSL 1.x andopentdf-client
is only compatible with OpenSSL 3.x onwards (or in the case where both depend on a specific version), I'm fairly certain this would result in a conflict immediately, and there is no override. Version ranges avoid the conflicts when things are known to be compatible.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.
We are fixing this issue here: #19220 and will make sure
opentdf-client
is relaunched and merged today!