nix-channel: Add option to force fetching of manifests
This commit is contained in:
		
							parent
							
								
									b14717ab90
								
							
						
					
					
						commit
						c845c0ccad
					
				
					 2 changed files with 19 additions and 0 deletions
				
			
		|  | @ -364,6 +364,18 @@ build-use-chroot = /dev /proc /bin</programlisting> | ||||||
|   </varlistentry> |   </varlistentry> | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |   <varlistentry><term><literal>force-manifest</literal></term> | ||||||
|  | 
 | ||||||
|  |     <listitem><para>If this option is set to <literal>false</literal> | ||||||
|  |     (default) and a Nix channel provides both a manifest and a binary | ||||||
|  |     cache, only the binary cache will be used.  If set to | ||||||
|  |     <literal>true</literal>, the manifest will be fetched as well. | ||||||
|  |     This is useful if you want to use binary patches (which are | ||||||
|  |     currently not supported by binary caches).</para></listitem> | ||||||
|  | 
 | ||||||
|  |   </varlistentry> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|   <varlistentry><term><literal>system</literal></term> |   <varlistentry><term><literal>system</literal></term> | ||||||
| 
 | 
 | ||||||
|     <listitem><para>This option specifies the canonical Nix system |     <listitem><para>This option specifies the canonical Nix system | ||||||
|  |  | ||||||
|  | @ -6,6 +6,8 @@ use File::Path qw(mkpath); | ||||||
| use Nix::Config; | use Nix::Config; | ||||||
| use Nix::Manifest; | use Nix::Manifest; | ||||||
| 
 | 
 | ||||||
|  | Nix::Config::readConfig; | ||||||
|  | 
 | ||||||
| my $manifestDir = $Nix::Config::manifestDir; | my $manifestDir = $Nix::Config::manifestDir; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @ -102,10 +104,15 @@ sub update { | ||||||
|         # Check if the channel advertises a binary cache. |         # Check if the channel advertises a binary cache. | ||||||
|         my $binaryCacheURL = `$Nix::Config::curl --silent '$url'/binary-cache-url`; |         my $binaryCacheURL = `$Nix::Config::curl --silent '$url'/binary-cache-url`; | ||||||
|         my $extraAttrs = ""; |         my $extraAttrs = ""; | ||||||
|  |         my $getManifest = ($Nix::Config::config{"force-manifest"} // "false") eq "true"; | ||||||
|         if ($? == 0 && $binaryCacheURL ne "") { |         if ($? == 0 && $binaryCacheURL ne "") { | ||||||
|             $extraAttrs .= "binaryCacheURL = \"$binaryCacheURL\"; "; |             $extraAttrs .= "binaryCacheURL = \"$binaryCacheURL\"; "; | ||||||
|             deleteOldManifests($origUrl, undef); |             deleteOldManifests($origUrl, undef); | ||||||
|         } else { |         } else { | ||||||
|  |             $getManifest = 1; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         if ($getManifest) { | ||||||
|             # No binary cache, so pull the channel manifest. |             # No binary cache, so pull the channel manifest. | ||||||
|             mkdir $manifestDir, 0755 unless -e $manifestDir; |             mkdir $manifestDir, 0755 unless -e $manifestDir; | ||||||
|             die "$0: you do not have write permission to `$manifestDir'!\n" unless -W $manifestDir; |             die "$0: you do not have write permission to `$manifestDir'!\n" unless -W $manifestDir; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue