Library and App releases

There are three different “packaging targets”:

  1. a source package of the SeqAn library (-DSEQAN_BUILD_SYSTEM=SEQAN_RELEASE_LIBRARY)
  2. a package containing all apps (-DSEQAN_BUILD_SYSTEM=SEQAN_RELEASE_APPS)
  3. a package containing a single SeqAn app (-DSEQAN_BUILD_SYSTEM=APP:$appname)

We assume that you have read Installing SeqAn and have cloned or unzipped the full SeqAn sources to ~/devel/seqan (not the “library sources” described in other places).

The instructions for all packaging targets are the same (replace $pack_target with the above string):

~ # mkdir -p ~/devel/seqan-build/deploy
~ # cd ~/devel/seqan-build/deploy
deploy # cmake ../../seqan -DSEQAN_BUILD_SYSTEM=$pack_target -DSEQAN_STATIC_APPS=1 -DSEQAN_ARCH_SSE4=1
deploy # make package

On Windows, replace the last command with

deploy # cmake --build . --target PACKAGE

Depending on the platform this might create a ZIP-file, a tarball and/or a platform specific installer.

Official Packages

We provide (1) a source package of SeqAn library; and for each official application (3) single binary packages for different operating systems and architectures.

Note

Especially when creating packages, make sure that the cmake generator and/or compiler are the ones you want!

GNU/Linux, macOS & BSD

  • The binary packages should be built on the oldest supported kernel and with the oldest supported GCC compiler.
  • The CMake version on the building system should be at least 3.1.
  • Builds should be static (-DSEQAN_STATIC_APPS=1).
  • There should be a 32Bit package, built on a 32Bit system or cross-compiled (-DCMAKE_CXX_FLAGS="-m32").
  • There should be a 64Bit package.
  • There should be an optimized 64Bit build (-DSEQAN_ARCH_SSE4=1).
  • For applications where it makes sense, a further optimized build can be provided (-DSEQAN_ARCH_AVX2=1)

Windows

  • The binary packages should be built with the latest Intel C++ Compiler for performance and compatibility reasons (see here).
  • There should be a 32Bit package, built on a 32Bit system or cross-compiled (see here).
  • There should be a 64Bit package.

Downstream Packaging

These are some guidelines for creating SeqAn packages for operating system specific packaging systems, like apt (Debian/Ubuntu) or rpm (Fedora/RedHat/CentOS/SUSE).

Library Package

We recommend that downstream package maintainers provide one package named seqan that contains only the header-library and the api-docs and that is built from our library packages available here: http://packages.seqan.de

They have the advantage of not requiring any build steps, simply copy the include and share directories to the desired locations.

Application Package(s)

Beyond that package maintainers have the choice to create either a single package called seqan-apps that contains all the applications or a seperate package per application (with the respective name of that app). Based on the above instructions this should be fairly easy to accomplish.