[main] Rewrite rootcp in C++
This Pull request:
Depends on #20531.
Replaces rootcp.py with a native version in C++.
Like for rootls and rootbrowse, this makes rootcp available even without python and, as a bonus, makes the tool significantly faster (the python version takes about 500ms just to start).
The behaviour should be the same as the python version and it has the benefit of not crashing when trying to copy RNTuples (although RNTuple is not handled yet).
The new rootcp has been currently mostly tested with our own roottest suite, but probably we want some more thorough testing before merging, especially if rootcp is used in experiments workflows.
Other significant changes
- Some code was put in common between
rootlsandrootcp(will also be useful forrootmvand likelyrootmkdir): this is the code that basically converts a path like"file.root:a/b/*"to a tree of objects and directories.
Checklist:
- [x] tested changes locally
- [ ] updated the docs (if necessary)
Test Results
20 files 20 suites 3d 11h 50m 42s ⏱️ 3 791 tests 3 791 ✅ 0 💤 0 ❌ 73 967 runs 73 967 ✅ 0 💤 0 ❌
Results for commit d0257673.
:recycle: This comment has been updated with latest results.