Commit graph

3 commits

Author SHA1 Message Date
Ole-Morten Duesund
ac5a49ef62 conandeps: add progress output, silence Conan's SyntaxWarnings, allow Python 3.12+
- Progress lines on stderr for each of the three graph resolutions (with
  package/missing counts and timing) so a slow remote no longer looks like
  a hang; -q suppresses them. stdout remains the clean report.
- --verbose now streams Conan's output live via a tee instead of dumping it
  at the end.
- Filter SyntaxWarning/DeprecationWarning before importing conans: Conan 1.x
  modules trip the stricter escape-sequence checks of recent Pythons and
  printed a screenful of noise on 3.14.
- Drop the <3.12 requires-python ceiling. Conan 1.66 falls back to importlib
  where imp is missing; verified working on 3.14. Fix the Containerfile and
  docs that claimed otherwise.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EYNdaGDrpaqDyT8QtrTQbM
2026-08-25 15:07:07 +02:00
Ole-Morten Duesund
45d800bacd Make conandeps installable with uv
Add a hatchling build backend, a `conandeps` console script and a uv.lock
so `uv tool install .` (or from a git URL) yields a `conandeps` command in
an isolated venv. Add PEP 723 inline metadata to conandeps.py so the single
file also works standalone via `uv run conandeps.py`.

Pin requires-python to <3.12: Conan 1.x imports the removed `imp` module
(the Containerfile comment wrongly blamed distutils). Add uv to the dev
image so both install paths are verified inside the container.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EYNdaGDrpaqDyT8QtrTQbM
2026-08-25 14:51:38 +02:00
Ole-Morten Duesund
a11e9fb34e Add conandeps: dependency, binary-availability and override report for Conan 1.66
conandeps.py lists direct and indirect dependencies of a conanfile.py,
checks whether Release/Debug/RelWithDebInfo binaries exist on a remote for
the exact profile, and reports explicit (override=True) and implicit
requirement overrides both as a list and on the edges of the dependency
tree. Text output by default, optional self-contained HTML via --html.

The graph is built once per build type through Conan's own info API and
each node's binary status is read back, so package_id modes and options
are honoured like a real install. Overrides are parsed from Conan's WARN
output since 1.x does not record them on the graph.

Development runs inside a pinned podman container (Containerfile, dev.sh)
with Conan 1.66 on Python 3.11. Tests start a throw-away conan_server and
verify missing-binary and override detection end to end.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EYNdaGDrpaqDyT8QtrTQbM
2026-08-25 14:48:28 +02:00