about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2012-03-13T16·07+0100
committerEelco Dolstra <e.dolstra@tudelft.nl>2012-03-13T16·07+0100
commitbd50c01972718167cf86d20dcd9c928b4c3cfbd8 (patch)
treef87b9dc31dc188d8f56e08ea0abf26a3ac7258e8
parentb461721f17d7104c7ef08a0840d80685b9ae853e (diff)
Ensure that Perl processes delete their entry in the temproots directory
By moving the destructor object to libstore.so, it's also run when
download-using-manifests and nix-prefetch-url exit.  This prevents
them from cluttering /nix/var/nix/temproots with stale files.
-rw-r--r--src/libmain/shared.cc10
-rw-r--r--src/libmain/shared.hh5
-rw-r--r--src/libstore/gc.cc12
-rw-r--r--src/nix-worker/nix-worker.cc2
4 files changed, 12 insertions, 17 deletions
diff --git a/src/libmain/shared.cc b/src/libmain/shared.cc
index 99ac198ca356..d39816586404 100644
--- a/src/libmain/shared.cc
+++ b/src/libmain/shared.cc
@@ -90,12 +90,6 @@ static void setLogType(string lt)
 }
 
 
-RemoveTempRoots::~RemoveTempRoots()
-{
-    removeTempRoots();
-}
-
-
 static bool showTrace = false;
 
 
@@ -217,10 +211,6 @@ static void initAndRun(int argc, char * * argv)
     verbosityDelta += queryIntSetting("verbosity", lvlInfo);
     verbosity = (Verbosity) (verbosityDelta < 0 ? 0 : verbosityDelta);
     
-    /* Automatically clean up the temporary roots file when we
-       exit. */
-    RemoveTempRoots removeTempRoots __attribute__((unused));
-
     run(remaining);
 
     /* Close the Nix database. */
diff --git a/src/libmain/shared.hh b/src/libmain/shared.hh
index 43725e07fdd9..d198df70d150 100644
--- a/src/libmain/shared.hh
+++ b/src/libmain/shared.hh
@@ -48,11 +48,6 @@ extern bool setuidMode;
 
 extern volatile ::sig_atomic_t blockInt;
 
-struct RemoveTempRoots 
-{
-    ~RemoveTempRoots();    
-};
-
 /* Exit code of the program. */
 extern int exitCode;
 
diff --git a/src/libstore/gc.cc b/src/libstore/gc.cc
index e27c63de26ae..95c7154110b3 100644
--- a/src/libstore/gc.cc
+++ b/src/libstore/gc.cc
@@ -214,6 +214,18 @@ void removeTempRoots()
 }
 
 
+/* Automatically clean up the temporary roots file when we exit. */
+struct RemoveTempRoots 
+{
+    ~RemoveTempRoots()
+    {
+        removeTempRoots();
+    }
+};
+
+static RemoveTempRoots autoRemoveTempRoots __attribute__((unused));
+
+
 typedef boost::shared_ptr<AutoCloseFD> FDPtr;
 typedef list<FDPtr> FDs;
 
diff --git a/src/nix-worker/nix-worker.cc b/src/nix-worker/nix-worker.cc
index 7ca54dee99be..f5201ab6a561 100644
--- a/src/nix-worker/nix-worker.cc
+++ b/src/nix-worker/nix-worker.cc
@@ -584,8 +584,6 @@ static void performOp(unsigned int clientVersion,
 
 static void processConnection()
 {
-    RemoveTempRoots removeTempRoots __attribute__((unused));
-
     canSendStderr = false;
     myPid = getpid();    
     writeToStderr = tunnelStderr;