nix-collect-garbage: Call collectGarbage() internally

This commit is contained in:
Eelco Dolstra 2015-05-21 15:21:38 +02:00
parent 4441e4cc13
commit 13493ef97c
4 changed files with 41 additions and 24 deletions

View file

@ -342,4 +342,19 @@ RunPager::~RunPager()
}
string showBytes(unsigned long long bytes)
{
return (format("%.2f MiB") % (bytes / (1024.0 * 1024.0))).str();
}
PrintFreed::~PrintFreed()
{
if (show)
std::cout << format("%1% store paths deleted, %2% freed\n")
% results.paths.size()
% showBytes(results.bytesFreed);
}
}

View file

@ -83,4 +83,21 @@ private:
extern volatile ::sig_atomic_t blockInt;
/* GC helpers. */
string showBytes(unsigned long long bytes);
class GCResults;
struct PrintFreed
{
bool show;
const GCResults & results;
PrintFreed(bool show, const GCResults & results)
: show(show), results(results) { }
~PrintFreed();
};
}

View file

@ -1,3 +1,4 @@
#include "store-api.hh"
#include "hash.hh"
#include "shared.hh"
#include "globals.hh"
@ -87,7 +88,13 @@ int main(int argc, char * * argv)
if (removeOld) removeOldGenerations(profilesDir);
// Run the actual garbage collector.
if (!dryRun) runProgramSimple(settings.nixBinDir + "/nix-store", Strings{"--gc"});
if (!dryRun) {
store = openStore(false);
GCOptions options;
options.action = GCOptions::gcDeleteDead;
GCResults results;
PrintFreed freed(true, results);
store->collectGarbage(options, results);
}
});
}

View file

@ -625,28 +625,6 @@ static void opCheckValidity(Strings opFlags, Strings opArgs)
}
static string showBytes(unsigned long long bytes)
{
return (format("%.2f MiB") % (bytes / (1024.0 * 1024.0))).str();
}
struct PrintFreed
{
bool show;
const GCResults & results;
PrintFreed(bool show, const GCResults & results)
: show(show), results(results) { }
~PrintFreed()
{
if (show)
cout << format("%1% store paths deleted, %2% freed\n")
% results.paths.size()
% showBytes(results.bytesFreed);
}
};
static void opGC(Strings opFlags, Strings opArgs)
{
bool printRoots = false;