Sort substituters by priority

Fixes #1438.
This commit is contained in:
Eelco Dolstra 2017-07-04 16:34:53 +02:00
parent b7203e853e
commit 42c5774e78
No known key found for this signature in database
GPG key ID: 8170B4726D7198DE
3 changed files with 11 additions and 0 deletions

View file

@ -123,6 +123,8 @@ public:
std::shared_ptr<std::string> getBuildLog(const Path & path) override; std::shared_ptr<std::string> getBuildLog(const Path & path) override;
int getPriority() override { return priority; }
}; };
} }

View file

@ -812,6 +812,10 @@ std::list<ref<Store>> getDefaultSubstituters()
for (auto uri : settings.extraSubstituters.get()) for (auto uri : settings.extraSubstituters.get())
addStore(uri); addStore(uri);
stores.sort([](ref<Store> & a, ref<Store> & b) {
return a->getPriority() < b->getPriority();
});
return stores; return stores;
} ()); } ());

View file

@ -590,6 +590,11 @@ public:
a notion of connection. Otherwise this is a no-op. */ a notion of connection. Otherwise this is a no-op. */
virtual void connect() { }; virtual void connect() { };
/* Get the priority of the store, used to order substituters. In
particular, binary caches can specify a priority field in their
"nix-cache-info" file. Lower value means higher priority. */
virtual int getPriority() { return 0; }
protected: protected:
Stats stats; Stats stats;