Skip to content

Conversation

jblomer
Copy link
Contributor

@jblomer jblomer commented Sep 8, 2025

Add new TFile and RRawFile plugins that use libcurl for the HTTP transfers. This can eventually replace the Davix dependency and also the older TWebFile and TS3WebFile. The curl library gives access to a modern HTTP implementation (e.g., h2), and it works on Linux, macOS, and Windows with their respective native SSL stacks.

@bellenot: on Windows, we may need to build libcurl ourselves. As far as I understand, Windows ships the curl command line library but not the library.

The current implementation does HEAD and (multi-)range GET queries, which provides the basics for efficient use of HTTP in ROOT. It can be enabled with -Dcurl=on. If davix is available alongside the curl plugins, the curl plugins replace the davix plugins if Curl.ReplaceDavix: yes is set in the rootrc file.

Authentication can relatively easily be added, since S3 (AWSv4 signatures), bearer token authentication and X.509 client certificates are already supported by libcurl.

Metalink support can in principle be added if still needed. It requires XML parsing of the metalink snippet.

Write support (POST, PUT) requests can in principle be added if still needed, but require a closer look.

See also root-project/root-ci-images#73

@bellenot
Copy link
Member

bellenot commented Sep 8, 2025

@jblomer I'll check

Enable on all platforms except
  - mac13: libcurl is built without the 'threadsafe' option, hence
disabling it there. Newer versions of macOS have that feature enabled.
  - Ubuntu 22: libcurl version too old (7.81 vs. 7.84)
Copy link

github-actions bot commented Sep 8, 2025

Test Results

     8 files       8 suites   1d 14h 22m 36s ⏱️
 3 630 tests  3 630 ✅ 0 💤 0 ❌
28 751 runs  28 751 ✅ 0 💤 0 ❌

Results for commit 11c23f0.

♻️ This comment has been updated with latest results.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants