.. _compiling: Compiling ========= Install build dependencies -------------------------- SL6/CentOS7 ~~~~~~~~~~~ :: sudo yum install openssl-devel libxml2-devel gsoap-devel \ doxygen cmake abi-compliance-checker Ubuntu ~~~~~~ :: sudo apt-get install abi-compliance-checker cmake debhelper doxygen \ gsoap libgridsite-dev libssl-dev libxml2-dev pkg-config How to build ------------ Here is how to do a simple build of davix - have a look at the next section if you need to tweak some configuration option in cmake. :: git clone https://github.com/cern-fts/davix.git cd davix git submodule update --recursive --init mkdir build && cd build cmake .. make Build options ------------- Unit tests ~~~~~~~~~~ You can run the tests with ``make test``. Functional tests ~~~~~~~~~~~~~~~~ Running functional tests requires authentication credentials, so they are not enabled by default. As a first step, add ``-DFUNCTIONAL_TESTS=TRUE`` to cmake. You will see that davix no longer compiles - it expects to find the file ``credentials/creds.cmake``. This is the file which orchestrates which functional tests are run. Here is an example - this is the file which runs our nightly build functional tests. Passwords were removed for obvious reasons. :: ### tests using a proxy test_with_proxy("davs://dpmhead-rc.cern.ch/dpm/cern.ch/home/dteam/davix-tests") test_with_proxy("davs://prometheus.desy.de/VOs/dteam/davix-tests") ### AWS S3 set(accesskey xxx) set(secretkey xxx) set(url https://some-bucket.s3.amazonaws.com/davix-tests) set(alt https://s3-ap-southeast-2.amazonaws.com/some-bucket/davix-tests) set(region ap-southeast-2) # test v2 test_s3(${accesskey} ${secretkey} ${url} "" noalt) test_s3(${accesskey} ${secretkey} ${alt} "" alt) # test v4 test_s3(${accesskey} ${secretkey} ${url} ${region} noalt) test_s3(${accesskey} ${secretkey} ${alt} ${region} alt) ### CERN ceph set(accesskey xxx) set(secretkey xxx) set(url s3s://some-bucket.cs3.cern.ch/davix-tests) test_s3(${accesskey} ${secretkey} ${url} "" noalt) ### Azure set(azurekey xxx) set(url https://some-user.blob.core.windows.net/some-bucket/davix-tests) test_azure(${azurekey} ${url}) Since this file contains sensitive information, access to it should be restricted and it should *never* be committed to the source repository. The ``test_with_proxy`` function uses the default grid-style proxy, ``/tmp/x509_u$uid``. It should be generated beforehand. To run the tests automatically, use the script under ``test/run-tests.sh``. This script further expects the existence of ``credentials/obtain-proxy.sh``, which is run to generate a proxy without any user intervention. Here is an example: :: #!/usr/bin/env bash echo "certificate_password_goes_here" | voms-proxy-init --cert $PWD/credentials/cert.p12 -pwstdin --voms dteam Using ``test/run-tests.sh``, you can run automatic functional tests in jenkins, for example. Generating the documentation ---------------------------- We use doxygen for the API documentation and sphinx for this how-to guide. Run ``make doc`` to generate both.