diff --git a/src/libstore/db.cc b/src/libstore/db.cc index c3cdd3232..657f6b7b4 100644 --- a/src/libstore/db.cc +++ b/src/libstore/db.cc @@ -142,6 +142,15 @@ Database::~Database() void openEnv(DbEnv * & env, const string & path, u_int32_t flags) { + try { + createDirs(path); + } catch (SysError & e) { + if (e.errNo == EPERM || e.errNo == EACCES) + throw DbNoPermission(format("cannot create the Nix database in `%1%'") % path); + else + throw; + } + try { env->open(path.c_str(), DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL | DB_INIT_TXN |