Bladeren bron

Forward installed scripts to us/bin (& uninstall)

Valentin Niess 5 jaren geleden
bovenliggende
commit
7a02dd539e
1 gewijzigde bestanden met toevoegingen van 22 en 2 verwijderingen
  1. 22 2
      python_appimage/data/sitecustomize.py

+ 22 - 2
python_appimage/data/sitecustomize.py

@@ -32,7 +32,11 @@ clean_path()
 def patch_pip_install():
     '''Change absolute shebangs to relative ones following a `pip` install
     '''
-    if ('pip' in sys.modules) and ('install' in sys.argv[1:]):
+    if not 'pip' in sys.modules:
+        return
+
+    args = sys.argv[1:]
+    if 'install' in args:
         for exe in os.listdir(sys.prefix + '/bin'):
             path = os.path.join(sys.prefix, 'bin', exe)
 
@@ -73,7 +77,23 @@ def patch_pip_install():
                     f.write(' '.join(cmd) + '\n')
                     f.write(body)
             except IOError:
-                pass
+                continue
+
+            usr_dir = os.path.join(sys.prefix, '../../usr/bin')
+            usr_exe = os.path.join(usr_dir, exe)
+            if os.path.exists(usr_exe):
+                continue
+            relpath = os.path.relpath(path, usr_dir)
+            os.symlink(relpath, usr_exe)
+
+    elif 'uninstall' in args:
+        usr_dir = os.path.join(sys.prefix, '../../usr/bin')
+        for exe in os.listdir(usr_dir):
+            path = os.path.join(usr_dir, exe)
+            if (not os.path.islink(path)) or                                   \
+               os.path.exists(os.path.realpath(path)):
+                continue
+            os.remove(path)
 
 
 atexit.register(patch_pip_install)