aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2019-06-25 14:27:57 +0200
committerEelco Dolstra <edolstra@gmail.com>2019-06-25 14:27:57 +0200
commit2cc248c4fd9c64486100d8f1456428e019b345db (patch)
treec1312329a1a25e99a1865b1dd1df1f68650b99b8 /src
parenta67cf5a3585c41dd9f219a2c7aa9cf67fa69520b (diff)
parent88571219d97f2bdfdbafcff25ef6ee424b0b008f (diff)
Merge remote-tracking branch 'origin/master' into flakes
Diffstat (limited to 'src')
-rw-r--r--src/libexpr/primops/fromTOML.cc13
-rw-r--r--src/libstore/store-api.hh3
-rwxr-xr-xsrc/nix-channel/nix-channel.cc9
3 files changed, 14 insertions, 11 deletions
diff --git a/src/libexpr/primops/fromTOML.cc b/src/libexpr/primops/fromTOML.cc
index 4128de05d..a84e569e9 100644
--- a/src/libexpr/primops/fromTOML.cc
+++ b/src/libexpr/primops/fromTOML.cc
@@ -49,6 +49,19 @@ static void prim_fromTOML(EvalState & state, const Pos & pos, Value * * args, Va
visit(*(v.listElems()[i] = state.allocValue()), t2->get()[i]);
}
+ // Handle cases like 'a = [[{ a = true }]]', which IMHO should be
+ // parsed as a array containing an array containing a table,
+ // but instead are parsed as an array containing a table array
+ // containing a table.
+ else if (auto t2 = t->as_table_array()) {
+ size_t size = t2->get().size();
+
+ state.mkList(v, size);
+
+ for (size_t j = 0; j < size; ++j)
+ visit(*(v.listElems()[j] = state.allocValue()), t2->get()[j]);
+ }
+
else if (t->is_value()) {
if (auto val = t->as<int64_t>())
mkInt(v, val->get());
diff --git a/src/libstore/store-api.hh b/src/libstore/store-api.hh
index 558ea79af..e5e5c182c 100644
--- a/src/libstore/store-api.hh
+++ b/src/libstore/store-api.hh
@@ -767,8 +767,7 @@ StoreType getStoreType(const std::string & uri = settings.storeUri.get(),
const std::string & stateDir = settings.nixStateDir);
/* Return the default substituter stores, defined by the
- ‘substituters’ option and various legacy options like
- ‘binary-caches’. */
+ ‘substituters’ option and various legacy options. */
std::list<ref<Store>> getDefaultSubstituters();
diff --git a/src/nix-channel/nix-channel.cc b/src/nix-channel/nix-channel.cc
index bd1371dba..06eb3d23b 100755
--- a/src/nix-channel/nix-channel.cc
+++ b/src/nix-channel/nix-channel.cc
@@ -113,15 +113,6 @@ static void update(const StringSet & channelNames)
}
if (!unpacked) {
- // The URL doesn't unpack directly, so let's try treating it like a full channel folder with files in it
- // Check if the channel advertises a binary cache.
- DownloadRequest request(url + "/binary-cache-url");
- try {
- auto dlRes = dl->download(request);
- extraAttrs = "binaryCacheURL = \"" + *dlRes.data + "\";";
- } catch (DownloadError & e) {
- }
-
// Download the channel tarball.
try {
filename = dl->downloadCached(store, CachedDownloadRequest(url + "/nixexprs.tar.xz")).path;