diff options
author | L. E. Segovia <amy@centricular.com> | 2024-02-03 11:40:01 +0000 |
---|---|---|
committer | L. E. Segovia <amy@centricular.com> | 2024-02-06 11:54:39 +0000 |
commit | 30abd49b11704bac3a4a6027552280a969f5a4d0 (patch) | |
tree | 6f623dd6c15523dd319c9db49564692fe7b8268c /cerbero | |
parent | 04c4dc2b50e17a4da68c876bcfe0ac49f9651dd6 (diff) |
cerbero: Fix GNU tar --checkpoint compatibility with macOS
macOS tar cannot take --checkpoint. However, Homebrewed GNU tar can.
Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/1342>
Diffstat (limited to 'cerbero')
-rw-r--r-- | cerbero/packages/disttarball.py | 2 | ||||
-rw-r--r-- | cerbero/utils/shell.py | 5 |
2 files changed, 6 insertions, 1 deletions
diff --git a/cerbero/packages/disttarball.py b/cerbero/packages/disttarball.py index 1c2ceede..58326628 100644 --- a/cerbero/packages/disttarball.py +++ b/cerbero/packages/disttarball.py @@ -185,7 +185,7 @@ class DistTarball(PackagerBase): tar = shell.get_tar_cmd() tar_cmd = [tar, '-C', self.prefix] # --checkpoint is only supported by GNU tar - if tar == shell.TAR: + if tar == shell.HOMEBREW_TAR or (self.config.platform != Platform.DARWIN and tar == shell.TAR): tar_cmd.append('--checkpoint=.250') # ensure we provide a unique list of files to tar to avoid # it creating hard links/copies diff --git a/cerbero/utils/shell.py b/cerbero/utils/shell.py index 3f0b4e6b..5ad20ce6 100644 --- a/cerbero/utils/shell.py +++ b/cerbero/utils/shell.py @@ -44,6 +44,7 @@ from cerbero.errors import CommandError, FatalError PATCH = 'patch' TAR = 'tar' +HOMEBREW_TAR = 'gtar' TARBALL_SUFFIXES = ('tar.gz', 'tgz', 'tar.bz2', 'tbz2', 'tar.xz') SUBPROCESS_EXCEPTIONS = (FileNotFoundError, PermissionError, subprocess.CalledProcessError) @@ -685,6 +686,10 @@ def get_tar_cmd(): # https://github.com/msys2/MSYS2-packages/issues/1548 if DISTRO == Distro.MSYS2: return 'bsdtar' + # Allow using Homebrewed tar since it's GNU compatible + # (macOS uses FreeBSD tar) + elif shutil.which(HOMEBREW_TAR): + return HOMEBREW_TAR else: return TAR |