view INSTALL @ 826:4aa33c408776

Remove TODO windows gracefully handles the case where the data directory is not accessible.
author Andre Heinecke <andre.heinecke@intevation.de>
date Mon, 21 Jul 2014 18:53:13 +0200
parents b8bc812e41ee
children 8081ed84589d
line wrap: on
line source
Installation Instructions
*************************

For Debian based GNU / Linux
============================
Tested development platform: Ubuntu 13.10.

The following commands build qt5 and polarssl which are dependencies of the Software.
For build dependencies please refer to the Qt documentation 
( qtbase/src/plugins/platforms/xcb/README ).
Polarssl needs cmake and build-essentials.

    export YOURPREFIX=<Prefix of your choice (default /usr)>
    export PATH=$YOURPREFIX/bin:$PATH

    curl https://download.qt-project.org/official_releases/qt/5.3/5.3.1/single/qt-everywhere-opensource-src-5.3.1.tar.xz.mirrorlist | grep SHA-256

29d2ab3b1aef87e2dd806b278802e357274016475a513341348040468bf233ac

    http://qt-mirror.dannhauer.de/official_releases/qt/5.3/5.3.1/single/qt-everywhere-opensource-src-5.3.1.tar.xz

    sha256sum qt-everywhere-opensource-src-5.3.1.tar.xz

    tar -xf qt-everywhere-opensource-src-5.3.1.tar.xz

    cd qt-everywhere-opensource-src-5.3.1/qtbase

build dependencies have to to be installed at this point,
see ../qtbase/src/plugins/platforms/xcb/README

    ./configure --prefix=$YOURPREFIX \
    -opensource \
    -release  -nomake tests  -nomake examples  -confirm-license \
    -static -no-cups -no-nis -no-icu -fontconfig \
    -no-directfb -no-opengl -no-kms -no-eglfs -no-egl -no-openssl -no-glib \
    -system-libpng -qpa xcb -xcb -no-nis -no-libjpeg -no-gif && \
    nice make -j8 && \
    make install

    cd .. && \
    cd qttools/src/designer/src/uitools && \
    qmake && \
    nice make -j8 && \
    make install

    cd ../../../linguist && \
    qmake && \
    nice make -j8 &&\
    make install

    curl -O https://polarssl.org/download/polarssl-1.3.8-gpl.tgz
    318171db41335cacbb5b0047c94f1faf91442ab70a223b5223436703c9406ff1 polarssl-1.3.8-gpl.tgz

    tar -xf polarssl-1.3.8-gpl.tgz
    cd polarssl-1.3.8
    mkdir build
    cd build
    cmake .. -DCMAKE_C_FLAGS=-fpic -DCMAKE_INSTALL_PREFIX=$YOURPREFIX
    make && make test && make install

To compile the software you can use plain cmake. An out of source build is
highly suggested. For build options see CMakeList.txt

    hg clone https://wald.intevation.org/hg/trustbridge/
    cd trustbridge
    mkdir build-linux
    cd build-linux
    cmake .. -DCMAKE_PREFIX_PATH=$YOURPREFIX


Hiawatha (for Downloader unit test)
===================================
Hiawatha is used in the downloader unit tests to provide a testbench
for the ssl connection. To build it you may need libxslt-dev as additional
dependency.

    wget https://www.hiawatha-webserver.org/files/hiawatha-9.5.tar.gz
    sha256sum hiawatha-9.5.tar.gz

c181011db1af187006190fc186689a0707a6f1e7b524c2a4347840e8fdf68b4f  hiawatha-9.5.tar.gz

    tar -xf hiawatha-9.5.tar.gz
    cp polarssl-1.3.7-gpl.tgz hiawatha-9.5/polarssl/polarssl.tgz
    cd hiawatha-9.5/polarssl
    sed -i 's/wget.*//' upgrade
    ./upgrade 1.3.7
    cd ..
    mkdir build
    cd build
    cmake .. -DCMAKE_INSTALL_PREFIX=$YOURPREFIX
    make && make install

Osslsigncode (for binverify unit test)
======================================
Osslsigncode is used to create PKCS#7 embedded signatures for Windows Authenticode
it is needed for the Windows part of the binverify unit test on the build system.

Currently (23.06.2014) there is no released version with the OpenSSL exception
available so we need to use the git version.

    git clone git://git.code.sf.net/p/osslsigncode/osslsigncode osslsigncode
    cd osslsigncode
    git checkout 03848a9c60f957bf13bab39512d8fcfb4cb1fc98
    ./autogen.sh
    ./configure --prefix=$YOURPREFIX
    make && make install

    # for a windows binary (optional)
    OPENSSL_CFLAGS=-I$MXETARGET/include OPENSSL_LIBS="-L$MXETARGET/lib -lcrypto -lz -lgdi32" ./configure --without-curl --host=i686-w64-mingw32 --prefix=$MXETARGET

For Microsoft Windows
=====================
The Windows variant can be cross compiled on Debian based GNU / Linux systems.
The minimum requirement is Debian stable.
Tested development platform: Ubuntu 13.10.

Dependencies on the Host system:
    git autoconf automake bash bison bzip2 \
    cmake flex gettext git g++ intltool \
    libffi-dev libtool libltdl-dev libssl-dev \
    libxml-parser-perl make openssl patch perl \
    pkg-config scons sed unzip wget xz-utils autopoint \
    gperf

Build the windows binaries:
    MXEPATH=$YOURPREFIX/win
    git clone https://github.com/mxe/mxe.git $MXEPATH
    cd $MXEPATH
    echo "MXE_TARGETS := i686-w64-mingw32.static" > settings.mk
    make polarssl
    make qtbase

Workaround Qt CMake Bugs:
    find $MXEPATH/usr/i686-w64-mingw32.static/qt5/lib/cmake -name \*.cmake | \
        xargs sed -i 's/\/\([a-z]*\)\.lib/\/lib\1\.a/g'
    sed -i 's/^_qt5gui_find_extra_libs.*//' \
        $MXEPATH/usr/i686-w64-mingw32.static/qt5/lib/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake

Make an NSS build available in the MXE prefix:
    # TODO -> Document how to build NSS,..
    cp -r <magic nss folder> $MXEPATH/usr/i686-w64-mingw32.static/

Compile the software:
    cd trustbridge
    mkdir build-windows
    cd build-windows
    MXETARGET=$MXEPATH/usr/i686-w64-mingw32.static/
    cmake .. \
        -DCMAKE_PREFIX_PATH="$MXETARGET/qt5;$MXETARGET;" \
        -DNSS_INCLUDEDIR="/nss-3.12.7/include;/nss-3.12.7/public/nss" \
        -DNSS_LIBDIR="/nss-3.12.7/lib" \
        -DCMAKE_TOOLCHAIN_FILE="$MXETARGET/share/cmake/mxe-conf.cmake" \
        -DCMAKE_VERBOSE_MAKEFILE=True

http://wald.intevation.org/projects/trustbridge/