-
Notifications
You must be signed in to change notification settings - Fork 64
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
Please avoid bundling libraries #742
Comments
I appreciate the argument from Debian and Fedora. However, our bundling strategy has served us very well in the past. Because we bundle everything except libcairo, users usually can compile GenomeTools out of the box with If you want to, you can compile GenomeTools with linking against shared libraries by using Bundling the necessary libraries also makes it possible for us to cross-compile GenomeTools for many platforms, because we simply cross-compile all dependencies with it. So I don't see us dropping bundled libraries anytime soon. Sorry. |
I completely agree with @gordon. This is a compromise we are making for our users' convenience. IMHO allowing people with no access to proper package management to build and run a version at all outweighs the indeed very legitimate disadvantages you mention. Please also notice that we usually do not introduce patches to the bundled code or require GenomeTools to be built using the code copies. However, now that you mention it I (as the maintainer of the GenomeTools Debian package) will make sure that the embedded code copies disappear from Debian's source packages. The embedded source files are all DFSG free, so it's merely a question of cleanliness I guess. I will exclude Thanks for having such a watchful eye on the code though, much appreciated :) |
That's a red herring. You don't need root to do that. If you did, you couldn't install genometools either.
Interesting, however, that option is not documented.
It also exposes them to the risk of running outdated versions of said libraries. In effect you shift the burden of making sure the libraries are up to date from distribution maintainers to the genometools maintainers. I feel that users should opt-in to that, not opt-out.
A cursory look over the commits touching src/external says otherwise. |
Maybe the notion of absolutely needing root was misleading here. The reality is that many typical GenomeTools users work in environments where they are not their own system administrators. That means, to install new software, there are usually two options:
Of course the second option is always available as long as a compiler toolchain is available on the target system, which is a reasonable expectation IMHO.
From my experience it would be a major obstacle for our user base if we required this kind of build process from source, and the support requests we've had over the years seem to confirm that building from source is usually one of the main sources of problems.
Indeed it isn't. Thanks for pointing this out, will add a note to the
As I said, this is not the case when GenomeTools is part of a distribution. In this case it uses the shared libraries provided by the distribution, which can be updated separately.
See above. Do not get me wrong -- I understand your concerns and they bother me too. For Debian I went into quite a bit of additional work to allow the use of shared libraries, not only to comply with their policy but also to ensure the viability of GenomeTools in a more organized software environment such as Debian's. But scientific software also exists to serve a specific purpose, and this means one has to consider and address the user's computing reality by balancing ease of packaging versus ease of installation by end users. I think that documenting that the option of using shared libraries exists is a step in the right direction. The point is that packagers are (at least expected to be) more knowledgeable about how dependencies should be organized, and it's reasonable to shift the burden of getting this right to them than to the end users.
Are you proposing to use a separate
That's why I said 'usually', not 'absolutely' ;) |
Addresses genometools#742.
Yes.
So again this is creating more work for you that could have been better spent developing genometools or fixing the issues in the libraries upstream. |
well, if anyone has the time and energy to prepare something like docker packages with genometools we could get rid of the external libraries. But as @satta said: we not only have to think about the work for us, but the user base. |
@satta: The Debian package uses the bundled libraries header files, I'm working on a patch to address this. |
Excellent, thanks for your work on this :) Looking forward to your patch. |
While working on that I realized that you don't only embed the libraries, but also build them using your own Makefile and just link them together. I'm somewhat surprised that this approach works on that scale. |
Yep. That approach started out when substantially less external code was used and indeed grew over time. |
It proves the capabilities of our powerful build system 😄 As argued in #748 (comment) this allows to build statically linked binaries quite easily. The classic paper Recursive Make Considered Harmful argues why it it is better to define all dependencies in a single makefile. |
Err, no. Any decent build system allows the creation of statically linked binaries, no need to either bundle libraries nor, if you must do that, side-step the build system of said libraries. That paper speaks about dependencies within a project. Also, it is about speed, and "classic" is a euphemism for "18 years old". |
Hi, I am occasionally contributing packages into Gentoo Linux. I agree with others that you should not bundle copies of 3rd-party's code but cleanly reluy on that. Would you make the package cleaner it could be added to major distro's easily. Exactly due to the above issues it won't happen so quickly. We (maintainers) need to tag packages with a I hit this thread because the *.so library does not have a version number. That blocks installation of this pakcage on Gentoo at the moment completely.
|
The build packaging system is suboptimal. Hand-edit the Makefile to force use of shared libs from system-wide. This brings us to a non-functional package because two lua-based packages are not yet in the tree. genometools/genometools#742 genometools/genometools#748 Package-Manager: Portage-2.3.27, Repoman-2.3.9
Getting rid of |
genometools bundles quite a number of libraries:
teythoon@europa /tmp/genometools-1.5.8 % ls -1 src/external
bzip2-1.0.6/
cgilua-5.1.3/
expat-2.0.1/
lpeg-0.10.2/
lua-5.1.5/
luafilesystem-1.5.0/
md5-1.1.2/
samtools-0.1.18/
sqlite-3.8.7.1/
tre/
zlib-1.2.8/
This is generally frowned upon. See the Debian policy [0] or the Fedora equivalent [1]. The latter gives quite a number of reasons why this is considered bad practice. In short, it creates more work for both the genometools maintainers and all packagers.
0: https://www.debian.org/doc/debian-policy/ch-source.html#s-embeddedfiles
1: https://fedoraproject.org/wiki/Archive:Bundled_Library_Packaging_Draft#Why_no_Bundled_Libraries
The text was updated successfully, but these errors were encountered: