Installation from source :

run the script installDavix.sh in order to get a compiled version of davix

configure ROOT with the options --with-davix-incdir and --with-davix-libdir indicating the davix directory created by installDavix.sh, davix should be displayed in the list of "enabled modules" at the end of the configuration step

compile

Have fun

Use Davix

Using Davix is completely transparent once installed and configure, Just proceed like with any other TFile plugin

TFile* f = TFile::Open("http://root.cern.ch/files/h1big.root")

Debug I/O With Davix

- For ROOT's logging, increasing the gDebug variable level

gDebug = 2

- For Davix's internal logging, use the Davix.Debug parameter, can be used independently of gDebug.

To display only Davix's logging infomation, set gDebug to 0 and Davix.Debug to 1-4, with 4 being most verbose.

In code:

gEnv->SetValue("Davix.Debug", 4);

In system.rootrc:

Davix.Debug: 4

Limitations

Please note that for the moment, it's not possible to use TDavixFile directly with pre-signed S3 URLs. This is because by default, TFile issues a stat request towards the endpoint, which is translated into a HEAD. The problem is, an S3 URL can only be signed for a single HTTP verb - either HEAD or GET, and obviously for reading a file, we have to sign it with GET.

This makes the initial HEAD request that TFile issues to fail, thinking that there's no permission to read the file.

This does not preclude TDavixFile from using federated S3 URLs, however, as long as the dav:// or davs:// URL scheme is used to talk to the federator.