aboutsummaryrefslogtreecommitdiff
path: root/src/nix.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/nix.cc')
-rw-r--r--src/nix.cc11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/nix.cc b/src/nix.cc
index a8d2d7880..973c36727 100644
--- a/src/nix.cc
+++ b/src/nix.cc
@@ -332,6 +332,11 @@ build:
if (!WIFEXITED(status) || WEXITSTATUS(status) != 0)
throw Error("unable to build package");
+
+ /* Remove write permission from the build directory. */
+ int res = system(("chmod -R -w " + path).c_str()); // !!! escaping
+ if (WEXITSTATUS(res) != 0)
+ throw Error("cannot remove write permission from " + path);
} catch (exception &) {
system(("rm -rf " + path).c_str());
@@ -411,10 +416,10 @@ void delPkg(string hash)
string path;
checkHash(hash);
if (queryDB(dbInstPkgs, hash, path)) {
- int res = system(("rm -rf " + path).c_str()); // !!! escaping
- delDB(dbInstPkgs, hash); // not a bug
+ int res = system(("chmod -R +w " + path + " && rm -rf " + path).c_str()); // !!! escaping
+ delDB(dbInstPkgs, hash); // not a bug ???
if (WEXITSTATUS(res) != 0)
- throw Error("cannot delete " + path);
+ cerr << "errors deleting " + path + ", ignoring" << endl;
}
}