* 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 upgradeStore07();
 | 
				
			||||||
static void upgradeStore09();
 | 
					static void upgradeStore09();
 | 
				
			||||||
 | 
					static void upgradeStore11();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void checkStoreNotSymlink()
 | 
					void checkStoreNotSymlink()
 | 
				
			||||||
| 
						 | 
					@ -131,6 +132,8 @@ LocalStore::LocalStore(bool reserveSpace)
 | 
				
			||||||
            upgradeStore07();
 | 
					            upgradeStore07();
 | 
				
			||||||
        if (curSchema == 2)
 | 
					        if (curSchema == 2)
 | 
				
			||||||
            upgradeStore09();
 | 
					            upgradeStore09();
 | 
				
			||||||
 | 
					        if (curSchema == 3)
 | 
				
			||||||
 | 
					            upgradeStore11();
 | 
				
			||||||
        writeFile(schemaFN, (format("%1%") % nixSchemaVersion).str());
 | 
					        writeFile(schemaFN, (format("%1%") % nixSchemaVersion).str());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -1042,10 +1045,10 @@ static void upgradeStore09()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    /* !!! we should disallow concurrent upgrades */
 | 
					    /* !!! we should disallow concurrent upgrades */
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    printMsg(lvlError, "upgrading Nix store to new schema (this may take a while)...");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (!pathExists(nixDBPath + "/referers")) return;
 | 
					    if (!pathExists(nixDBPath + "/referers")) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    printMsg(lvlError, "upgrading Nix store to new schema (this may take a while)...");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Transaction txn(nixDB);
 | 
					    Transaction txn(nixDB);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    std::cerr << "converting referers to referrers...";
 | 
					    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 <=
 | 
					/* 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
 | 
					   0.7.  Version 2 was Nix 0.8 and 0.9.  Version 3 is Nix 0.10.
 | 
				
			||||||
   up. */
 | 
					   Version 4 is Nix 0.11. */
 | 
				
			||||||
const int nixSchemaVersion = 3;
 | 
					const int nixSchemaVersion = 4;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern string drvsLogDir;
 | 
					extern string drvsLogDir;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue