summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTodd Gamblin <tgamblin@llnl.gov>2016-04-06 16:03:11 -0700
committerTodd Gamblin <tgamblin@llnl.gov>2016-04-06 16:03:11 -0700
commitfeee268970affe5db73af4554e43dcd0d078cbad (patch)
tree5618d8f4d7f263f6a4e7628d75575cd05428f8dd
parentcac819766e014085b3ceeb55f7b49a1fe891b51c (diff)
parent400166398239be0880c025672dd3e5eb6c8bac7f (diff)
downloadspack-feee268970affe5db73af4554e43dcd0d078cbad.tar.gz
spack-feee268970affe5db73af4554e43dcd0d078cbad.tar.bz2
spack-feee268970affe5db73af4554e43dcd0d078cbad.tar.xz
spack-feee268970affe5db73af4554e43dcd0d078cbad.zip
Merge pull request #754 from epfl-scitas/fixes/issue_216
fix : module files are deleted on uninstall (fixes #216)
-rw-r--r--lib/spack/spack/cmd/module.py10
-rw-r--r--lib/spack/spack/modules.py6
-rw-r--r--lib/spack/spack/test/mock_database.py4
3 files changed, 10 insertions, 10 deletions
diff --git a/lib/spack/spack/cmd/module.py b/lib/spack/spack/cmd/module.py
index 315d9fc926..a67f5c0c13 100644
--- a/lib/spack/spack/cmd/module.py
+++ b/lib/spack/spack/cmd/module.py
@@ -22,21 +22,16 @@
# along with this program; if not, write to the Free Software Foundation,
# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
-import sys
import os
import shutil
-import argparse
+import sys
import llnl.util.tty as tty
-from llnl.util.lang import partition_list
-from llnl.util.filesystem import mkdirp
-
import spack.cmd
+from llnl.util.filesystem import mkdirp
from spack.modules import module_types
from spack.util.string import *
-from spack.spec import Spec
-
description ="Manipulate modules and dotkits."
@@ -98,7 +93,6 @@ def module_refresh():
cls(spec).write()
-
def module(parser, args):
if args.module_command == 'refresh':
module_refresh()
diff --git a/lib/spack/spack/modules.py b/lib/spack/spack/modules.py
index d797af287d..61624fbd70 100644
--- a/lib/spack/spack/modules.py
+++ b/lib/spack/spack/modules.py
@@ -211,7 +211,11 @@ class EnvModule(object):
def remove(self):
mod_file = self.file_name
if os.path.exists(mod_file):
- shutil.rmtree(mod_file, ignore_errors=True)
+ try:
+ os.remove(mod_file) # Remove the module file
+ os.removedirs(os.path.dirname(mod_file)) # Remove all the empty directories from the leaf up
+ except OSError:
+ pass # removedirs throws OSError on first non-empty directory found
class Dotkit(EnvModule):
diff --git a/lib/spack/spack/test/mock_database.py b/lib/spack/spack/test/mock_database.py
index 6fd05439bf..82ba59fc48 100644
--- a/lib/spack/spack/test/mock_database.py
+++ b/lib/spack/spack/test/mock_database.py
@@ -17,7 +17,7 @@ class MockDatabase(MockPackagesTest):
def _mock_remove(self, spec):
specs = spack.installed_db.query(spec)
- assert(len(specs) == 1)
+ assert len(specs) == 1
spec = specs[0]
spec.package.do_uninstall(spec)
@@ -71,6 +71,8 @@ class MockDatabase(MockPackagesTest):
self._mock_install('mpileaks ^zmpi')
def tearDown(self):
+ for spec in spack.installed_db.query():
+ spec.package.do_uninstall(spec)
super(MockDatabase, self).tearDown()
shutil.rmtree(self.install_path)
spack.install_path = self.spack_install_path