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…
Reference in a new issue