-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
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
Finally version libjulia with a proper filename #16362
Conversation
The latter AFAIK. But then you also want |
@@ -132,6 +132,10 @@ else | |||
JULIA_COMMIT := $(JULIA_VERSION) | |||
endif | |||
|
|||
# Increase these every release when breaking ABI in a backward-incompatible way |
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.
To be more preciseI would say Increase SOMINOR with every minor release, and SOMAJOR with every major (ABI-breaking) release (and reset SOMINOR to 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.
any way of making this a little more automatic, or harder to forget?
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.
A solution I find natural, and which works well with semantic versioning, it to have SOMAJOR equal to the major Julia version, and SOMINOR to the minor version. The parallel between SOVERSION and the official version makes things clearer.
Until 1.0, SOMAJOR would be equal to 0.$minorversion
and SOMINOR to $patchversion
.
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.
that would be easy to automate, and I know there are other libraries that do that, but I think I've also read that tying API version numbers to soname ABI version numbers is actually wrong. I'm not sure what the downsides would be though.
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.
https://autotools.io/libtool/version.html and http://plan99.net/~mike/writing-shared-libraries.html discuss library version in some detail
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.
Indeed, the second link explicitly says "The software version of your library should match the interface version.". That matches the semantic versioning contract.
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 think you can make the major version a decimal like that, so I'm opting instead to set the major version number to Y
in Julia's X.Y.Z
version number. Once we hit 1.0, we'll add W
to the major soversion, where W
is the number of major releases before 1.0, so that we continue to count up with major releases.
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 think you can perfectly do that, that's even the solution required by Fedora when upstream does not set a SONAME: use SOMAJOR=0.X until upstream ships a release with SOMAJOR = 1. See https://fedoraproject.org/wiki/Packaging:Guidelines?rd=Packaging/Guidelines#Downstream_.so_name_versioning
e7c7c6f
to
a5b8735
Compare
Good points @nalimilan. I want things to be as consistent as possible, which means I would like the Pre Post I've included some recently-merged changes to |
@@ -1,2 +1,2 @@ | |||
OPENLIBM_BRANCH=v0.4.1 | |||
OPENLIBM_SHA1=3ee2a6e6a9fc68cbf2ab00f830b9059215e40b06 | |||
OPENLIBM_BRANCH=master |
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 should only be using tagged releases
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.
So what is the meaning of OPENLIBM_BRANCH
? Would OPENLIBM_TAG
be more appropriate?
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.
Possibly. I can't really read what the git externals makefile macros are doing. It's only used in one or two minor places. More saying for the sake of making release tags for packagers to be aware of as opposed to picking some random commit hash. Also note the VERSION and SONAME look out of date on master of both openlibm and openspecfun. We need a better way of enforcing that those get updated for releases.
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.
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 think I understand it. The confusing part is that with git
, a branch name and a tag name are often interchangeable. I've tagged new releases of openlibm
and openspecfun
, and pushed a new commit with those tag names in the _BRANCH
variables.
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 think the technical name would have been _TREEISH
, but branch seemed a bit clearer. the only real requirement is that the desired sha1 value will always be locatable in the history of tree-ish.
@StefanKarpinski they're just simple string interpolation macros
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.
The VERSION and soversion are still out of date on the commits you just tagged.
89c131f
to
fc345d4
Compare
All tests passing, unless I've missed something I think we're ready to merge here. |
Good candidate for squash-on-merge I think, considering the libdl test change at the very end. |
Agreed, not much use for having it split up. Ready when you are, commander. On Wed, May 18, 2016 at 12:29 PM, Tony Kelman notifications@github.com
|
Should this be a |
PS. In general, the SONAME version might be different from the Julia version. The reason is that the SONAME version indicates C ABI compatibility, whereas the Julia version indicates Julia source compatibility, and these two might not agree. |
Yeah, probably. I sent out an email to |
So far, our C ABI has followed the Julia source compatibility fairly closely, right? We haven't introduced major backwards-incompatible changes within a single major release, unless I am mistaken. (Not that this is a huge priority for us or anyone else right now, but I think we're at least pretty close to proper behavior here) |
In general, my feeling is that PRs should not be merged until the documentation is added/updated as needed. |
Agreed. PR here. |
Yep, sorry, forgot about docs on this one since I didn't realize it would be a visible change. |
@nalimilan Do you know if we should be setting
-Wl,-soname=libjulia.so
or-Wl,-soname=libjulia.so.0.1
?Closes #8038