Commit 56d2c4aa authored by tguinot's avatar tguinot Committed by jvoisin
Browse files

Add which pathfinding for executables

parent 12f23e01
......@@ -41,6 +41,12 @@ Nautilus, the default file manager of GNOME.
Please note that mat2 requires at least Python3.5.
# Requirements setup on macOS (OS X) using [Homebrew](
brew install exiftool cairo pygobject3 poppler gdk-pixbuf librsvg ffmpeg
# Running the test suite
......@@ -22,10 +22,9 @@ CalledProcessError = subprocess.CalledProcessError
def _get_bwrap_path() -> str:
bwrap_path = '/usr/bin/bwrap'
if os.path.isfile(bwrap_path):
if os.access(bwrap_path, os.X_OK):
return bwrap_path
which_path = shutil.which('bwrap')
if which_path:
return which_path
raise RuntimeError("Unable to find bwrap") # pragma: no cover
......@@ -2,6 +2,7 @@ import functools
import json
import logging
import os
import shutil
import subprocess
from typing import Dict, Union, Set
......@@ -71,14 +72,12 @@ class ExiftoolParser(abstract.AbstractParser):
def _get_exiftool_path() -> str: # pragma: no cover
possible_pathes = {
'/usr/bin/exiftool', # debian/fedora
'/usr/bin/vendor_perl/exiftool', # archlinux
which_path = shutil.which('exiftool')
if which_path:
return which_path
for possible_path in possible_pathes:
if os.path.isfile(possible_path):
if os.access(possible_path, os.X_OK):
return possible_path
# Exiftool on Arch Linux has a weird path
if os.access('/usr/bin/vendor_perl/exiftool', os.X_OK):
return '/usr/bin/vendor_perl/exiftool'
raise RuntimeError("Unable to find exiftool")
import subprocess
import functools
import os
import shutil
import logging
from typing import Dict, Union
......@@ -137,9 +137,8 @@ class MP4Parser(AbstractFFmpegParser):
def _get_ffmpeg_path() -> str: # pragma: no cover
ffmpeg_path = '/usr/bin/ffmpeg'
if os.path.isfile(ffmpeg_path):
if os.access(ffmpeg_path, os.X_OK):
return ffmpeg_path
which_path = shutil.which('ffmpeg')
if which_path:
return which_path
raise RuntimeError("Unable to find ffmpeg")
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment