From f28935f8fe9b44ccc07cd2d68263242ee4c4d4a2 Mon Sep 17 00:00:00 2001
From: Lee Miller <lee.miller@tutanota.com>
Date: Sun, 5 May 2024 19:24:04 +0300
Subject: [PATCH] Avoid recursion when trying to build bitmsghash lib

in environments where prebuilt one is unusable and make doesn't work.
---
 src/proofofwork.py | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/src/proofofwork.py b/src/proofofwork.py
index 49e86f59..5e157db9 100644
--- a/src/proofofwork.py
+++ b/src/proofofwork.py
@@ -5,11 +5,11 @@ Proof of work calculation
 
 import ctypes
 import os
+import subprocess  # nosec B404
 import sys
 import tempfile
 import time
 from struct import pack, unpack
-from subprocess import call  # nosec B404
 
 import highlevelcrypto
 import openclpow
@@ -278,18 +278,26 @@ def buildCPoW():
     try:
         if "bsd" in sys.platform:
             # BSD make
-            call(["make", "-C", os.path.join(paths.codePath(), "bitmsghash"),
-                  '-f', 'Makefile.bsd'])  # nosec B607, B603
+            subprocess.check_call([  # nosec B607, B603
+                "make", "-C", os.path.join(paths.codePath(), "bitmsghash"),
+                '-f', 'Makefile.bsd'])
         else:
             # GNU make
-            call([  # nosec B607, B603
+            subprocess.check_call([  # nosec B607, B603
                 "make", "-C", os.path.join(paths.codePath(), "bitmsghash")])
-        if os.path.exists(os.path.join(paths.codePath(), "bitmsghash", "bitmsghash.so")):
+        if os.path.exists(
+            os.path.join(paths.codePath(), "bitmsghash", "bitmsghash.so")
+        ):
             init()
             notifyBuild(True)
         else:
             notifyBuild(True)
+    except (OSError, subprocess.CalledProcessError):
+        notifyBuild(True)
     except:  # noqa:E722
+        logger.warning(
+            'Unexpected exception rised when tried to build bitmsghash lib',
+            exc_info=True)
         notifyBuild(True)