Browse Source

reclient_helper.py: Fix error on macOS < 14.0

The `-Y` flag was added to `df` only in the latest macOS version, so we
should guard its usage with a version check.

Change-Id: Ifafe47de5f9e86ce6a4605a1adb26994db5f33d9
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/5345461
Reviewed-by: Junji Watanabe <jwata@google.com>
Commit-Queue: Philipp Wollermann <philwo@chromium.org>
Auto-Submit: Philipp Wollermann <philwo@chromium.org>
Philipp Wollermann 1 year ago
parent
commit
19187e7927
1 changed files with 7 additions and 4 deletions
  1. 7 4
      reclient_helper.py

+ 7 - 4
reclient_helper.py

@@ -11,6 +11,7 @@ import contextlib
 import datetime
 import datetime
 import hashlib
 import hashlib
 import os
 import os
+import platform
 import shutil
 import shutil
 import socket
 import socket
 import subprocess
 import subprocess
@@ -290,16 +291,18 @@ def get_filesystem(path):
                                   text=True,
                                   text=True,
                                   stdout=subprocess.PIPE,
                                   stdout=subprocess.PIPE,
                                   stderr=subprocess.STDOUT).stdout
                                   stderr=subprocess.STDOUT).stdout
-        if sys.platform == "darwin":
+        # The -Y option was added in macOS 14.0 aka Darwin 23.0.
+        if sys.platform == "darwin" and int(
+                platform.release().split('.')[0]) >= 23:
             df = subprocess.run(["df", "-PY", path],
             df = subprocess.run(["df", "-PY", path],
                                 check=True,
                                 check=True,
                                 text=True,
                                 text=True,
                                 stdout=subprocess.PIPE,
                                 stdout=subprocess.PIPE,
                                 stderr=subprocess.STDOUT).stdout
                                 stderr=subprocess.STDOUT).stdout
             return df.splitlines()[1].split()[1]
             return df.splitlines()[1].split()[1]
-    except subprocess.CalledProcessError as e:
-        print("reclient_helper.py: Failed to get filesystem for {}: {}", path,
-              e.output)
+    except (TypeError, IndexError, subprocess.CalledProcessError) as e:
+        print("reclient_helper.py: Failed to get filesystem for {}: {}".format(
+            path, e))
     return "unknown"
     return "unknown"