From 73b6214a13339f11dbc33b0e068c13499f139b6f Mon Sep 17 00:00:00 2001
From: alalazo <massimiliano.culpo@googlemail.com>
Date: Tue, 22 Mar 2016 15:23:46 +0100
Subject: [PATCH] module files : proper cleanup on uninstall fixes #216

Conflicts:
	lib/spack/spack/test/database.py
---
 lib/spack/spack/cmd/module.py | 10 ++--------
 lib/spack/spack/modules.py    |  6 +++++-
 2 files changed, 7 insertions(+), 9 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 @@ def use_name(self):
     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):
-- 
GitLab