diff options
| author | Efraim Flashner <efraim@flashner.co.il> | 2025-06-29 10:21:12 +0300 |
|---|---|---|
| committer | Efraim Flashner <efraim@flashner.co.il> | 2025-07-28 13:57:53 +0300 |
| commit | cc588d8eb6a5e05bc8c9d41855685a1d8ce70187 (patch) | |
| tree | 8f1091354927a109b82ba558dd7637061479b787 /nix | |
| parent | cf6868187a68feea41b3cde9bd37670df7192fed (diff) | |
guix gc: Adjust size suffix based on the amount of data.
* guix/ui.scm (number->size): New procedure.
* guix/scripts/gc.scm (guix-gc)[actions]: Display the amount of
collected-garbage using more specific units.
[ensure-free-space]: Display the size using an appropriate size unit.
* nix/libstore/gc.cc (deletePathRecursive, removeUnusedLinks): Same.
* nix/libstore/optimise-store.cc (showBytes): Move function ...
* nix/libstore/misc.cc: ... to here. Expand to adjust the output based
on the amount of bytes received.
Change-Id: Idceb1a13f8e45f959d327f53d1a8accb29d2678b
Diffstat (limited to 'nix')
| -rw-r--r-- | nix/libstore/gc.cc | 7 | ||||
| -rw-r--r-- | nix/libstore/misc.cc | 21 | ||||
| -rw-r--r-- | nix/libstore/misc.hh | 1 | ||||
| -rw-r--r-- | nix/libstore/optimise-store.cc | 6 |
4 files changed, 26 insertions, 9 deletions
diff --git a/nix/libstore/gc.cc b/nix/libstore/gc.cc index 1766a684122..08638b51153 100644 --- a/nix/libstore/gc.cc +++ b/nix/libstore/gc.cc @@ -433,8 +433,7 @@ void LocalStore::deletePathRecursive(GCState & state, const Path & path) printMsg(lvlInfo, format("[%1%%%] deleting '%2%'") % percentage % path); } else { auto freed = state.results.bytesFreed + state.bytesInvalidated; - freed /= 1024ULL * 1024ULL; - printMsg(lvlInfo, format("[%1% MiB] deleting '%2%'") % freed % path); + printMsg(lvlInfo, format("[%1%] deleting '%2%'") % showBytes(freed) % path); } state.results.paths.insert(path); @@ -629,9 +628,9 @@ void LocalStore::removeUnusedLinks(const GCState & state) if (stat(linksDir.c_str(), &st) == -1) throw SysError(format("statting `%1%'") % linksDir); long long overhead = st.st_size; + long long freedbytes = (unsharedSize - actualSize - overhead); - printMsg(lvlInfo, format("note: currently hard linking saves %.2f MiB") - % ((unsharedSize - actualSize - overhead) / (1024.0 * 1024.0))); + printMsg(lvlInfo, format("note: currently hard linking saves %1%") % showBytes(freedbytes)); } diff --git a/nix/libstore/misc.cc b/nix/libstore/misc.cc index bc5dec88bf2..e9904f3c4f4 100644 --- a/nix/libstore/misc.cc +++ b/nix/libstore/misc.cc @@ -1,4 +1,5 @@ #include "misc.hh" +#include <math.h> #include "store-api.hh" #include "local-store.hh" #include "globals.hh" @@ -94,5 +95,25 @@ Paths topoSortPaths(StoreAPI & store, const PathSet & paths) return sorted; } +/* Max of LLONG_MAX is 8 EiB */ +string showBytes(long long bytes) +{ + if (llabs(bytes > exp2l(60))) { + return (format("%7.2f EiB") % (bytes / exp2l(60))).str(); + } else if (llabs(bytes > exp2l(50))) { + return (format("%7.2f PiB") % (bytes / exp2l(50))).str(); + } else if (llabs(bytes > exp2l(40))) { + return (format("%7.2f TiB") % (bytes / exp2l(40))).str(); + } else if (llabs(bytes > exp2l(30))) { + return (format("%7.2f GiB") % (bytes / exp2l(30))).str(); + } else if (llabs(bytes > exp2l(20))) { + return (format("%7.2f MiB") % (bytes / exp2l(20))).str(); + } else if (llabs(bytes > exp2l(10))) { + return (format("%7.2f KiB") % (bytes / exp2l(10))).str(); + } else { + return (format("%4f bytes") % bytes).str(); + } +} + } diff --git a/nix/libstore/misc.hh b/nix/libstore/misc.hh index f70cda9fd0c..1d36ccf9dce 100644 --- a/nix/libstore/misc.hh +++ b/nix/libstore/misc.hh @@ -25,5 +25,6 @@ bool willBuildLocally(const Derivation & drv); bool substitutesAllowed(const Derivation & drv); +string showBytes(long long bytes); } diff --git a/nix/libstore/optimise-store.cc b/nix/libstore/optimise-store.cc index 8d5bf28da9d..e17d9160d6c 100644 --- a/nix/libstore/optimise-store.cc +++ b/nix/libstore/optimise-store.cc @@ -1,5 +1,6 @@ #include "config.h" +#include "misc.hh" #include "util.hh" #include "local-store.hh" #include "globals.hh" @@ -252,11 +253,6 @@ void LocalStore::optimiseStore(OptimiseStats & stats) } } -static string showBytes(unsigned long long bytes) -{ - return (format("%.2f MiB") % (bytes / (1024.0 * 1024.0))).str(); -} - void LocalStore::optimiseStore() { OptimiseStats stats; |
