Solution: add a CI build run with GCC's Address Sanitizer enabled.
This compiler flag will make the unit test programs abort if it
detects errors such as out-of-bound memory access or use-after-free.
Solution: use packages on Ubuntu and brews on OSX. The packages and
the brews are always kept up to date, so it's no use to rebuild the
libsodium stable branch manually everytime.
Solution: Use travis to deploy these artifacts automatically.
The deployment is triggered by tagging on the zeromq/libzmq repository.
Of the many builds travis is checking only the default one with
libsodium and drafts disabled is used for deployment.
For now the results of `make distcheck` are deployed as well as their
md5 and sha1 hash sums. Further changes may upload a generated
Changelog as well.
Solution: run make dist-check, which will run additional tests,
including making sure that the library is installable and the
distributable tarball is buildable, along with the usual make and
make check.
Solution: simply run make VERBOSE=1 check instead of manually
checking for return value and cat'ing the log file. With VERBOSE, on
error the log file will be automatically printed.
Solution: establish a matrix of CI options. On one axis we have the
build system (autotools, cmake, android) and on the other axis we
have the encryption options (tweetnacl, libsodium or none).
Solution: checkout stable branch instead.
Several warnings are printed when building from the master branch,
and developers recommend using the stable branch instead.
Currently, a test fails on Travis-CI but that can not be reproduced locally.
Without the contents of the test-suite.log, this is difficult to analyze.
Solution: print test-suite.log if "make check" fails
This is based on the following answer on SO:
http://stackoverflow.com/a/32597140