-
Notifications
You must be signed in to change notification settings - Fork 97
standard build using GNU autotools #31
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
base: master
Are you sure you want to change the base?
Conversation
- the tests have been using an installed sickle version, which was in PATH, not the built ones
- I added these tests just out of curiosity to try to integrate valgrind into the test suite - also fixes the only detected leaks which are rather trivial and would have been non-problematic anyway (just to make the tests pass)
... this should be done by the devs to assure configure will check everything
- the included, outdated kseq.h is removed - instead configure checks for htslib via pkg-config - htslib includes the latest version of kseq.h, latest htslib is 1.2.1 as of this writing - the __KS* and __KSEQ* imports have changed a bit, they are modified to work with the latest kseq.h/htslib version without throwing compiler warnings
|
Out of curiosity, what benefits does GNU autotools produce for something as simple and small as sickle? |
|
What you get for free with a build tool like GNU autotools is the generated Also, GNU autotools automatically picks these up and passes them through. If you care just a little bit about performance, you should set your machine-specific compiler optimization flags in The benefits above are customization oriented, but there is more: If you think bigger, what you sooner or later want in any project is some sort of test suite, like I started to prepare in this PR. This can go from really dumb stuff, like I did, with the program runs successfully for simple input data, to the valgrind checks I included to make sure there are no memory leaks, up to really useful regression testing for all the issues that have been reported, like the test in #33 does for #32. You can integrate these tests manually, however, it is much easier with a build tool like autotools, because all the infrastructure is already provided to automatically run the tests, provide a log, etc. Another benefit I can think of right now, which might come in handy in the near future, is handling optional features, like parallelism. I just see the pthreads branch (don't know what it's actually for), but pthreads is one way to parallelise. You may also do this with OpenMP or MPI, if suitable for the algorithm. Letting the user choose which one via With such things in mind for the future of a software project that is small at the moment, it is now, since there is not much complexity in building it, relatively easy to port the build from a standalone In conclusion, yes, at the moment the benefits are comparatively small, but thinking ahead, it might just be worth it. |
With this PR sickle can now be built, tested and deployed using standard GNU autotools.
Run
./bootstrapto generateconfigureand others and then the following will install sickle into/usr/bin/sickle:I have also added two tests to what I could make of the files you had in the
testdirectory.You can still create a standard release tarball using
make dist.If you have questions about GNU autotools, just let me know. The required autoconf version could maybe be lowered in
configure.ac, try testing it if you have an older one.