* Bump the Nix database schema version number; delete the substitutes
table.
This commit is contained in:
parent
59afc1a15c
commit
3757ee589f
2 changed files with 33 additions and 5 deletions
|
@ -58,6 +58,7 @@ static TableId dbDerivers = 0;
|
|||
|
||||
static void upgradeStore07();
|
||||
static void upgradeStore09();
|
||||
static void upgradeStore11();
|
||||
|
||||
|
||||
void checkStoreNotSymlink()
|
||||
|
@ -131,6 +132,8 @@ LocalStore::LocalStore(bool reserveSpace)
|
|||
upgradeStore07();
|
||||
if (curSchema == 2)
|
||||
upgradeStore09();
|
||||
if (curSchema == 3)
|
||||
upgradeStore11();
|
||||
writeFile(schemaFN, (format("%1%") % nixSchemaVersion).str());
|
||||
}
|
||||
}
|
||||
|
@ -1042,10 +1045,10 @@ static void upgradeStore09()
|
|||
{
|
||||
/* !!! we should disallow concurrent upgrades */
|
||||
|
||||
printMsg(lvlError, "upgrading Nix store to new schema (this may take a while)...");
|
||||
|
||||
if (!pathExists(nixDBPath + "/referers")) return;
|
||||
|
||||
printMsg(lvlError, "upgrading Nix store to new schema (this may take a while)...");
|
||||
|
||||
Transaction txn(nixDB);
|
||||
|
||||
std::cerr << "converting referers to referrers...";
|
||||
|
@ -1082,4 +1085,29 @@ static void upgradeStore09()
|
|||
}
|
||||
|
||||
|
||||
/* Upgrade from schema 3 (Nix 0.10) to schema 4 (Nix >= 0.11). The
|
||||
only thing to do here is to delete the substitutes table and get
|
||||
rid of invalid but substitutable references/referrers. */
|
||||
static void upgradeStore11()
|
||||
{
|
||||
if (!pathExists(nixDBPath + "/substitutes")) return;
|
||||
|
||||
printMsg(lvlError, "upgrading Nix store to new schema (this may take a while)...");
|
||||
|
||||
Transaction txn(nixDB);
|
||||
TableId dbSubstitutes = nixDB.openTable("substitutes");
|
||||
|
||||
Paths subKeys;
|
||||
nixDB.enumTable(txn, dbSubstitutes, subKeys);
|
||||
for (Paths::iterator i = subKeys.begin(); i != subKeys.end(); ++i) {
|
||||
if (!isValidPathTxn(txn, *i))
|
||||
invalidatePath(txn, *i);
|
||||
}
|
||||
|
||||
txn.commit();
|
||||
nixDB.closeTable(dbSubstitutes);
|
||||
nixDB.deleteTable("substitutes");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -13,9 +13,9 @@ class Transaction;
|
|||
|
||||
|
||||
/* Nix store and database schema version. Version 1 (or 0) was Nix <=
|
||||
0.7. Version 2 was Nix 0.8 and 0.9. Version 3 is Nix 0.10 and
|
||||
up. */
|
||||
const int nixSchemaVersion = 3;
|
||||
0.7. Version 2 was Nix 0.8 and 0.9. Version 3 is Nix 0.10.
|
||||
Version 4 is Nix 0.11. */
|
||||
const int nixSchemaVersion = 4;
|
||||
|
||||
|
||||
extern string drvsLogDir;
|
||||
|
|
Loading…
Reference in a new issue