summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
Diffstat (limited to 'bin')
-rwxr-xr-xbin/spack23
1 files changed, 23 insertions, 0 deletions
diff --git a/bin/spack b/bin/spack
index a4c442227d..dffcbd2026 100755
--- a/bin/spack
+++ b/bin/spack
@@ -28,6 +28,7 @@ exit 1
from __future__ import print_function
import os
+import os.path
import sys
min_python3 = (3, 5)
@@ -70,6 +71,28 @@ if "ruamel.yaml" in sys.modules:
if "ruamel" in sys.modules:
del sys.modules["ruamel"]
+# The following code is here to avoid failures when updating
+# the develop version, due to spurious argparse.pyc files remaining
+# in the libs/spack/external directory, see:
+# https://github.com/spack/spack/pull/25376
+# TODO: Remove in v0.18.0 or later
+try:
+ import argparse
+except ImportError:
+ argparse_pyc = os.path.join(spack_external_libs, 'argparse.pyc')
+ if not os.path.exists(argparse_pyc):
+ raise
+ try:
+ os.remove(argparse_pyc)
+ import argparse # noqa
+ except Exception:
+ msg = ('The file\n\n\t{0}\n\nis corrupted and cannot be deleted by Spack. '
+ 'Either delete it manually or ask some administrator to '
+ 'delete it for you.')
+ print(msg.format(argparse_pyc))
+ sys.exit(1)
+
+
import spack.main # noqa
# Once we've set up the system path, run the spack main method