Browse Source

ignore lib/bin symlinking errors

Nick Sweeting 1 year ago
parent
commit
de09867f87
2 changed files with 22 additions and 12 deletions
  1. 10 5
      archivebox/abx/archivebox/base_binary.py
  2. 12 7
      archivebox/plugins_extractor/chrome/apps.py

+ 10 - 5
archivebox/abx/archivebox/base_binary.py

@@ -60,11 +60,16 @@ class BaseBinary(BaseHook, Binary):
         if not (binary.abspath and binary.abspath.exists()):
             return
         
-        bin_dir.mkdir(parents=True, exist_ok=True)
-        symlink = bin_dir / binary.name
-        symlink.unlink(missing_ok=True)
-        symlink.symlink_to(binary.abspath)
-        symlink.chmod(0o777)   # make sure its executable by everyone
+        try:
+            bin_dir.mkdir(parents=True, exist_ok=True)
+            symlink = bin_dir / binary.name
+            symlink.unlink(missing_ok=True)
+            symlink.symlink_to(binary.abspath)
+            symlink.chmod(0o777)   # make sure its executable by everyone
+        except Exception as err:
+            # print(f'[red]:warning: Failed to symlink {symlink} -> {binary.abspath}[/red] {err}')
+            # not actually needed, we can just run without it
+            pass
         
     @validate_call
     def load(self, fresh=False, **kwargs) -> Self:

+ 12 - 7
archivebox/plugins_extractor/chrome/apps.py

@@ -221,13 +221,18 @@ class ChromeBinary(BaseBinary):
         bin_dir.mkdir(parents=True, exist_ok=True)
         symlink = bin_dir / binary.name
         
-        if platform.system().lower() == 'darwin':
-            # if on macOS, browser binary is inside a .app, so we need to create a tiny bash script instead of a symlink
-            create_macos_app_symlink(binary.abspath, symlink)
-        else:
-            # otherwise on linux we can symlink directly to binary executable
-            symlink.unlink(missing_ok=True)
-            symlink.symlink_to(binary.abspath)
+        try:
+            if platform.system().lower() == 'darwin':
+                # if on macOS, browser binary is inside a .app, so we need to create a tiny bash script instead of a symlink
+                create_macos_app_symlink(binary.abspath, symlink)
+            else:
+                # otherwise on linux we can symlink directly to binary executable
+                symlink.unlink(missing_ok=True)
+                symlink.symlink_to(binary.abspath)
+        except Exception as err:
+            # print(f'[red]:warning: Failed to symlink {symlink} -> {binary.abspath}[/red] {err}')
+            # not actually needed, we can just run without it
+            pass
 
     @staticmethod            
     def chrome_cleanup_lockfile():