From e4d74825f3ec1d95eb79a01eb109a4ce863609c6 Mon Sep 17 00:00:00 2001 From: BenWeber42 Date: Tue, 9 Feb 2021 19:05:06 +0100 Subject: Fixed uninstall rm parent folder race condition (#21424) --- lib/spack/spack/directory_layout.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'lib') diff --git a/lib/spack/spack/directory_layout.py b/lib/spack/spack/directory_layout.py index f5b2922273..145421130a 100644 --- a/lib/spack/spack/directory_layout.py +++ b/lib/spack/spack/directory_layout.py @@ -7,6 +7,7 @@ import os import shutil import glob import tempfile +import errno from contextlib import contextmanager import ruamel.yaml as yaml @@ -119,9 +120,17 @@ class DirectoryLayout(object): path = os.path.dirname(path) while path != self.root: if os.path.isdir(path): - if os.listdir(path): - return - os.rmdir(path) + try: + os.rmdir(path) + except OSError as e: + if e.errno == errno.ENOENT: + # already deleted, continue with parent + pass + elif e.errno == errno.ENOTEMPTY: + # directory wasn't empty, done + return + else: + raise e path = os.path.dirname(path) -- cgit v1.2.3-60-g2f50