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
Debian packages for 1.5.2 #263
Comments
Thanks for handling this, having GenomeTools as a Debian package is so cool :-) |
👍 Daniel Standage likes this. |
This might take some more time. As it turns out some exported symbols have disappeared from the shared library (https://gist.github.com/satta/1ac2d6e38bd577f17d15). They were not declared as static in 1.5.1 and have -- most likely inadvertently -- been exported as public symbols. In 1.5.2 they have been removed, renamed, etc. now leading to a discrepancy involving missing symbols. This is automatically checked by the package building pipeline and leads to an error that prevents building. It is a condition which normally calls for an ABI version bump, which I would like to avoid as it will also change the package name in the Debian archive. I found out that only two of the missing symbols appeared in public
This luckily makes it quite unlikely that anything linking externally to the Gt shared lib will be broken by the 1.5.2 transition unless it uses one of these functions. It has to be noted that the first one was just renamed to Another idea would be to fix 1.5.1 first by having libtool only export those symbols which either appear in an API header or whose names end with '_p' (required by the Ruby bindings but not in any header file). I would need to discuss this issue with some knowledgeable library packagers. Sorry for the delay. |
the second one was renamed for naming convention to |
Oh, I see. Even better, so would it be enough to add another wrapper for this one too? |
I think so. And deprecate it. so we can remove it in the next bigger version? |
I think we should leave the symbol in so we do not break the ABI. The wrapper will only be added in a patch within the Debian package, so you won't have to worry about anything. No need to deprecate anything as the old function name has already been removed from the API headers. |
After getting some response from the Debian mailing lists, it seems it is okay to add the wrappers for these two functions, making them available using their old names. I'd say that if a symbol is not available through the public API headers, then users can not count on them being stable after all. |
No objections. I think it is a good idea to prevent such problems in the future. |
sounds good to me. |
I have a first version in my 'exports' branch in https://github.com/satta/genometools/tree/exports which limits the exported symbols to functions and static globals declared in the API headers (over 1000 symbols btw!). Some issues remain:
So this should get us going for now, the tests seem to pass for me. Please, please carefully review the changes and test this new slimmed-down library, especially linking from external programs. This includes the Java bindings (should best be tested by @mader). As always, I am happy to receive feedback! This has been quite a piece of work... |
So, any comments? I would really like to wrap up the new release... |
no comment ;) if @mader has nothing to say - do it! |
Looks good to me! Would it make sense to release the code that was added in the meantime as version 1.5.3 and submit that as a Debian package? Can we prevent that much work in the future, maybe with an automated test concerning exported symbols? |
Yes, a new release should be OK (there are some bugfixes, esp. #274, that I'd like to get out there too). |
I think it might make sense to have a list of exported symbols for the current release. And then check against that upon release time to make sure no symbols have been dropped accidentally and to make it explicit which symbols have been added. What do you think? Is there a way to deprecate symbols in Debian packages or is that the situation which requires a major version bump? |
Debian uses a symbols file (basically a list of symbols annotated with the version number when they were first introduced -- see http://www.debian.org/doc/manuals/maint-guide/advanced.en.html#librarysymbols) to track interface versions across releases. The package building process for a new upstream version will compile the list of symbols present in the new version and compare it to the symbols file of the previous version. If there are new symbols, they are added with the version number of the new version. If previously available symbols are now missing, one can no longer assume that anything linked to that package version will still function, so then the package ABI version number (and hence the package name) would require a bump (e.g. from libgenometools0 to libgenometools1). IMHO deprecation makes sense here only to encourage developers linking to the library to make their software no longer dependent on the deprecated symbol so it can be removed later -- something which I think must happen outside of Debian. |
Packages are ready and submitted. However, I have enabled unit tests on the latest version of the package building scripts, discovering errors and hence breaking builds on the platforms s390x, armhf and powerpc. This will keep the new version from migrating to the testing archive as these platforms have been supported before. Now there are two choices:
|
Fixed and uploaded. Packages are building now. |
The GenomeTools packages should be updated to include the new upstream version.
The text was updated successfully, but these errors were encountered: