diff options
author | Shea Levy <shea@shealevy.com> | 2014-12-29T12·18-0500 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2014-12-29T13·40+0100 |
commit | 3d97b8d1e77f133eb725665752a6ec909a7584b2 (patch) | |
tree | 960a059e1c31ec96fe5250af009edcd7123560ef /src/libstore | |
parent | bd0f362d2fad1dd5f28e762011888b5eabd21280 (diff) |
LocalStore initialization: Don't die if build-users-group doesn't exist
See NixOS/nixpkgs@9245516
Diffstat (limited to 'src/libstore')
-rw-r--r-- | src/libstore/local-store.cc | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/src/libstore/local-store.cc b/src/libstore/local-store.cc index 3ad80bc4e6f4..1b3538316cb3 100644 --- a/src/libstore/local-store.cc +++ b/src/libstore/local-store.cc @@ -258,18 +258,19 @@ LocalStore::LocalStore(bool reserveSpace) struct group * gr = getgrnam(settings.buildUsersGroup.c_str()); 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); - - struct stat st; - if (stat(settings.nixStore.c_str(), &st)) - throw SysError(format("getting attributes of path ‘%1%’") % settings.nixStore); - - if (st.st_uid != 0 || st.st_gid != gr->gr_gid || (st.st_mode & ~S_IFMT) != 01775) { - 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); + else { + struct stat st; + if (stat(settings.nixStore.c_str(), &st)) + throw SysError(format("getting attributes of path ‘%1%’") % settings.nixStore); + + if (st.st_uid != 0 || st.st_gid != gr->gr_gid || (st.st_mode & ~S_IFMT) != 01775) { + 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); + } } } |