forked from lix-project/lix
LocalStore initialization: Don't die if build-users-group doesn't exist
See NixOS/nixpkgs@9245516
This commit is contained in:
parent
bd0f362d2f
commit
3d97b8d1e7
|
@ -258,18 +258,19 @@ LocalStore::LocalStore(bool reserveSpace)
|
||||||
|
|
||||||
struct group * gr = getgrnam(settings.buildUsersGroup.c_str());
|
struct group * gr = getgrnam(settings.buildUsersGroup.c_str());
|
||||||
if (!gr)
|
if (!gr)
|
||||||
throw Error(format("the group ‘%1%’ specified in ‘build-users-group’ does not exist")
|
printMsg(lvlError, format("warning: the group ‘%1%’ specified in ‘build-users-group’ does not exist")
|
||||||
% settings.buildUsersGroup);
|
% settings.buildUsersGroup);
|
||||||
|
else {
|
||||||
|
struct stat st;
|
||||||
|
if (stat(settings.nixStore.c_str(), &st))
|
||||||
|
throw SysError(format("getting attributes of path ‘%1%’") % settings.nixStore);
|
||||||
|
|
||||||
struct stat st;
|
if (st.st_uid != 0 || st.st_gid != gr->gr_gid || (st.st_mode & ~S_IFMT) != 01775) {
|
||||||
if (stat(settings.nixStore.c_str(), &st))
|
if (chown(settings.nixStore.c_str(), 0, gr->gr_gid) == -1)
|
||||||
throw SysError(format("getting attributes of path ‘%1%’") % settings.nixStore);
|
throw SysError(format("changing ownership of path ‘%1%’") % settings.nixStore);
|
||||||
|
if (chmod(settings.nixStore.c_str(), 01775) == -1)
|
||||||
if (st.st_uid != 0 || st.st_gid != gr->gr_gid || (st.st_mode & ~S_IFMT) != 01775) {
|
throw SysError(format("changing permissions on path ‘%1%’") % settings.nixStore);
|
||||||
if (chown(settings.nixStore.c_str(), 0, gr->gr_gid) == -1)
|
}
|
||||||
throw SysError(format("changing ownership of path ‘%1%’") % settings.nixStore);
|
|
||||||
if (chmod(settings.nixStore.c_str(), 01775) == -1)
|
|
||||||
throw SysError(format("changing permissions on path ‘%1%’") % settings.nixStore);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue