Source: diffoscope
Version: 84
Severity: normal

Some test cases failed when running diffoscope test suite on FreeBSD. Most of 
the issues are caused by the difference between BSD Diff (`diff` on FreeBSD) 
and GNU Diff (`gdiff` on FreeBSD).

Diffoscope should use `gdiff` when available. I will make sure that `gdiff` is 
a dependency of diffoscope in FreeBSD Ports. 

A proposed patch is attached. Not sure if this implementation is clean enough 
diff --git a/diffoscope/ b/diffoscope/
index 17a5289..bf46ec6 100644
--- a/diffoscope/
+++ b/diffoscope/
@@ -31,11 +31,19 @@ from multiprocessing.dummy import Queue
 from diffoscope.tempfiles import get_temporary_directory
+from distutils.spawn import find_executable
 from .tools import tool_required
 from .config import Config
 DIFF_CHUNK = 4096
+DIFF_TOOL = 'diff'
+gdiff_path = find_executable('gdiff')
+if gdiff_path:
+    DIFF_TOOL = 'gdiff'
 logger = logging.getLogger(__name__)
 re_diff_change = re.compile(r'^([+-@]).*', re.MULTILINE)
@@ -159,9 +167,9 @@ class DiffParser(object):
         return self.skip_block
 def run_diff(fifo1, fifo2, end_nl_q1, end_nl_q2):
-    cmd = ['diff', '-aU7', fifo1, fifo2]
+    cmd = [DIFF_TOOL, '-aU7', fifo1, fifo2]
     logger.debug("Running %s", ' '.join(cmd))
Reproducible-builds mailing list

Reply via email to