Skip to content

Dpms 1.1.3

Latest

Choose a tag to compare

@discoveryos discoveryos released this 17 Aug 11:10
182687b
  1. Sudo/Privilege Enforcement

    • Expanded NEEDS_ROOT_OPS to cover all
      mutating ops (install, uninstall,
      remove, upgrade, dist-upgrade,
      reinstall, purge, autoremove, reset,
      sync)
    • Made _escalate_if_needed hard-refuse (
      exit 1) when no escalator available
      instead of continuing unprivileged
    • Verified needs_privileges() coverage
      for every operation
    1. Progress Bar
    • Rewrote Progress class in
      dpms_progress.py — self-drawn bar with
      TTY inline redraw and non-TTY fallback
      (one line per 25% + final done line)
    • Fixed download_file callback contract (
      _on_chunk(delta, size) — 2 args)
    • Updated dpms_parallel.py docstrings
    1. Bug Fixes in dpms_core.py
    • Arch guard bypass — local-file/URL
      installs now check architecture, not
      just repo path
    • Source-tree dump guard —
      _STANDARD_INSTALL_DIRS set rejects non-
      standard tarball layouts (prevented
      atk-style incident)
    • Symlink-parent escape guard —
      _check_symlink_parent() +
      created_links tracking prevents writes
      through previously-created absolute
      symlinks
    • _install_from_archive delegation — was
      a weaker duplicate bypassing all
      safety; now delegates to
      install_package
    • Downgrade arch filter — skips foreign-
      arch candidates instead of accepting
      any
    • FilterError wrapping — tarfile filter
      errors now raise ArchiveError
    • Partial archive cleanup — failed
      downloads remove temp files from ~/
      dpms_temp
  2. Interactive Prompt Fixes

    • purge_package — added noconfirm
      parameter to skip confirmation
    • clean_orphaned — added noconfirm
      parameter to skip confirmation
    • --uninstall non-installed — early exit
      with clean error instead of going to
      interactive solver
    • --search --regex — errors cleanly when
      no search term provided instead of
      launching interactive TUI
  3. Performance Optimizations (~63%
    faster startup)

    • Deferred dlr.http (~110ms compiled C
      module) — lazy import in
      _stream_download and
      _fetch_content_length
    • Lazy proxy imports in main() — 13
      subcommand-only modules (dpms_commit,
      dpms_logs, dpms_search, dpms_systemd,
      dpms_utils, dpms_plugins, dpms_signing,
      dpms_groups, dpms_portcommit,
      dpms_config_preserve, dpms_cache,
      CommitPolicy, confirm_delete,
      ProgressStages) via _LazyModule/
      _LazyCallable proxies
    • Deferred rich.progress in dpms_core —
      BarColumn, Progress, TextColumn,
      TimeRemainingColumn only imported
      inside compress functions
    • Deferred hooks_mod, CustomProgress,
      confirm_delete — only imported inside
      install/uninstall/purge/clean functions
    • Result: warm --list dropped from ~1.
      88s → ~0.7s