.. sidebar:: ToC .. contents:: .. _infra-manage-deploy: Library and App releases ======================== There are three different "packaging targets": #. a source package of the SeqAn library (``-DSEQAN_BUILD_SYSTEM=SEQAN_RELEASE_LIBRARY``) #. a package containing all apps (``-DSEQAN_BUILD_SYSTEM=SEQAN_RELEASE_APPS``) #. a package containing a single SeqAn app (``-DSEQAN_BUILD_SYSTEM=APP:$appname``) We assume that you have read :ref:`infra-use-install` 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): .. code-block:: console ~ # 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 .. code-block:: console 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.12. * 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 :ref:`here `). * There should be a 32Bit package, built on a 32Bit system or cross-compiled (see :ref:`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: https://github.com/seqan/seqan/releases 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 separate package per application (with the respective name of that app). Based on the above instructions this should be fairly easy to accomplish.