-
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
adding rapidjson/20200410 #1464
Conversation
recipes/rapidjson/config.yml
Outdated
versions: | ||
"1.1.0": | ||
folder: "1.1.x" | ||
"20200410": | ||
folder: "all" |
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 am mixing tagged release with using master, it's been 4 years since the last release and 500+ commits.
is this the correct approach? It's 99% copy paste however.
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.
related Tencent/rapidjson#1006
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.
Yeah there's a ton of issues asking for one lol
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 don't like mixing at all.
How much work would it be to backport this one bug 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 don't either...
A lot. I couldn't find an issue, and I'm not sure what code was broken in the first place. Updated my local copy to master and the crash went away. The issue and commit might have been written in chinses making it harder to track down.
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 don't know when the next tag of rapidjson will happen
I reached out to find out, it will be very unlikely that there will ever be a new release.
we don't know if any of those 500+ commits has broken the API
There's a few API changes, I needed to modify my code
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 can not mix numeric release versions and a date version. ref So we are stuck taking something that respects semVer...
After more digging into this project there is a v1.2 target which was presented
Since this is a "future release" could we then use 1.2.0-cci.20200410
There was concerns about "guessing" the next release number but this is the official word from the main developer done here just after this comment
Would 1.2.0-cci.20200410
be a suitable compromise?
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.
It would be somewhat okay-ish for me in this case, but I don't think that it is a solution that scales for all projects which might be in a similar situation.
While it looks pretty safe for rapidjson that the next version is 1.2, plans can change at any time and we can't really de-publish any version.
What if rapidjson (or any other recipe/project in a similar situation) decides that next version is actually named 1.1.1
after we published 1.2.0-cci.something
? People using version ranges would then get an older AND unofficial version rather than the latest official version.
I think that this is much, much worse than consciously breaking the semantic meaning of semver for an unofficial version, which should probably only be explicitly used anyway.
If we use 1.1.0-cci.20200410
the people using version ranges won't get this unofficial release automatically, but rather the official release 1.1.0
, which might be favourable.
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.
What about a separate projects?
- rapidjson/1.1.0
- rapidjson-master/20200410
There's no mixing and everything follows the current model, with a slight twist.
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.
Is using build identifiers out of the question?
something like: rapidjson/1.1.0+cci20200410
All green in build 1 (
|
recipes/rapidjson/config.yml
Outdated
@@ -1,3 +1,5 @@ | |||
versions: | |||
"1.1.0": | |||
folder: "1.1.x" | |||
"20200410": |
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.
"20200410": | |
"1.1.0-next.0": |
Adding a -identifier
states in semver that it is a pre-release
next
because it should communicate that it is the next version after 1.1.0
Adding a dot-separated pre-release identifier starting counting at 0
for the case that we need newer 1.1.0-next versions based on different project revisions for the case that the project still won't make a new release
<valid semver> ::= <version core> "-" <pre-release>
<pre-release> ::= <dot-separated pre-release identifiers>
<dot-separated pre-release identifiers> ::= <pre-release identifier>
| <pre-release identifier> "." <dot-separated pre-release identifiers>
<pre-release identifier> ::= <alphanumeric identifier>
| <numeric identifier>
…emVer syntax the semantics are "latest upstream tagged release" -cci. "commit date" Co-Authored-By: Anonymous Maarten <[email protected]> Co-Authored-By: Michael "Croydon" Keck <[email protected]>
All green in build 2 (
|
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 understand we need (and we can) provide a version on our own, and these libraries that are waiting for a new release so long could benefit from the flexibility that Conan Center provides.
Some comments:
- it cannot be a prerelease according to SemVer, as it would be previous to the released one, so the syntax
1.1.0-
won't work. - probably we cannot assume that this commit will be before any
1.1.1
orx.y.z
release. The author can decide to create a tag from a previous commit.
There is a common problem here: how to "tag" versions from commits in the repo, we need some consistency here. What are we doing on other recipes? Just the date?
Yeah this is a complicated topic.
Just the date. However, to my knowledge, there is no recipe that mixes tagged releases and commit/date versioning. So this will be an exception by all means. When Tencent acquired the RapidJSON library they needed to change the licensing under their own name. The consequence of this is any release would be their responsibility as such they are very admit on never making a release. I have come around to the idea of using the pre-release semantics because it is "less then" the official tagged release which preceded it. Which shows it should not be weighted as highly as the official version. There was a lot of great comments in the first bubble. One which stood out was with a number and date it's impossible to know the order. |
We have been discussing this internally and here is the rationale about the different possibilities for the versioning issue:
Proposals:
We like Please share your thoughts about this and let's get it documented in the wiki for other contributors! Thanks 😄 Other funny alternatives 🤣
|
Would absolutely be perfect As my next commit message xD 🤣 I am a huge fan of I'll fix this shortly. |
ERROR: rapidjson/cci.20200410: Error in source() method, line 21
version = tools.Version(self.version)
ConanException: Invalid version 'cci.20200410' The only issue with the new version is that is can not be parsed by the tool |
All green in build 3 (
|
|
Specify library name and version: rapidjson/20200410
conan-center hook activated.
There's a bug in 1.1.0 that has been fixed by upstream regarding patternProperties not correctly validating more than once when they contain properties.