* Package flag "keep" that prevents a package from being removed from
a user environment by an install or upgrade action.  This is
  particularly useful if you have a version installed that you don't
  want to upgrade (e.g., because the newer versions are broken).
  Example:
    $ nix-env -u zapping --dry-run
    (dry run; not doing anything)
    upgrading `zapping-0.9.6' to `zapping-0.10cvs6'
    $ nix-env --set-flag keep true zapping
    $ nix-env -u zapping --dry-run
    (dry run; not doing anything)
  However, "-e" will still uninstall the package.  (Maybe we should
  require the keep flag to be explicitly set to false before it can be
  uninstalled.)
			
			
This commit is contained in:
		
							parent
							
								
									a46db5d013
								
							
						
					
					
						commit
						89c1d2b202
					
				
					 2 changed files with 8 additions and 3 deletions
				
			
		| 
						 | 
					@ -72,8 +72,8 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <listitem><para>TODO: <command>nix-env</command>
 | 
					  <listitem><para>TODO: <command>nix-env</command>
 | 
				
			||||||
  <option>--set-flag</option>.  Specific flags:
 | 
					  <option>--set-flag</option>.  Specific flags:
 | 
				
			||||||
  <literal>active</literal>,
 | 
					  <literal>active</literal>, <literal>priority</literal>,
 | 
				
			||||||
  <literal>priority</literal>.</para></listitem>
 | 
					  <literal>keep</literal>.</para></listitem>
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <listitem><para><command>nix-env -q</command> now has a flag
 | 
					  <listitem><para><command>nix-env -q</command> now has a flag
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -482,8 +482,10 @@ static void installDerivations(Globals & globals,
 | 
				
			||||||
         i != installedElems.end(); ++i)
 | 
					         i != installedElems.end(); ++i)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        DrvName drvName(i->name);
 | 
					        DrvName drvName(i->name);
 | 
				
			||||||
 | 
					        MetaInfo meta = i->queryMetaInfo(globals.state);
 | 
				
			||||||
        if (!globals.preserveInstalled &&
 | 
					        if (!globals.preserveInstalled &&
 | 
				
			||||||
            newNames.find(drvName.name) != newNames.end())
 | 
					            newNames.find(drvName.name) != newNames.end() &&
 | 
				
			||||||
 | 
					            meta["keep"] == "true")
 | 
				
			||||||
            printMsg(lvlInfo,
 | 
					            printMsg(lvlInfo,
 | 
				
			||||||
                format("replacing old `%1%'") % i->name);
 | 
					                format("replacing old `%1%'") % i->name);
 | 
				
			||||||
        else
 | 
					        else
 | 
				
			||||||
| 
						 | 
					@ -543,6 +545,9 @@ static void upgradeDerivations(Globals & globals,
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        DrvName drvName(i->name);
 | 
					        DrvName drvName(i->name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        MetaInfo meta = i->queryMetaInfo(globals.state);
 | 
				
			||||||
 | 
					        if (meta["keep"] == "true") continue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /* Find the derivation in the input Nix expression with the
 | 
					        /* Find the derivation in the input Nix expression with the
 | 
				
			||||||
           same name and satisfying the version constraints specified
 | 
					           same name and satisfying the version constraints specified
 | 
				
			||||||
           by upgradeType.  If there are multiple matches, take the
 | 
					           by upgradeType.  If there are multiple matches, take the
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue