Browse Source

[update] Fix updating via symlinks (closes #23991)

Sergey M․ 5 years ago
parent
commit
bfe2b8cf2a
2 changed files with 5 additions and 1 deletions
  1. 1 0
      youtube_dl/compat.py
  2. 4 1
      youtube_dl/update.py

+ 1 - 0
youtube_dl/compat.py

@@ -3009,6 +3009,7 @@ __all__ = [
     'compat_os_name',
     'compat_os_name',
     'compat_parse_qs',
     'compat_parse_qs',
     'compat_print',
     'compat_print',
+    'compat_realpath',
     'compat_setenv',
     'compat_setenv',
     'compat_shlex_quote',
     'compat_shlex_quote',
     'compat_shlex_split',
     'compat_shlex_split',

+ 4 - 1
youtube_dl/update.py

@@ -9,6 +9,7 @@ import subprocess
 import sys
 import sys
 from zipimport import zipimporter
 from zipimport import zipimporter
 
 
+from .compat import compat_realpath
 from .utils import encode_compat_str
 from .utils import encode_compat_str
 
 
 from .version import __version__
 from .version import __version__
@@ -84,7 +85,9 @@ def update_self(to_screen, verbose, opener):
     print_notes(to_screen, versions_info['versions'])
     print_notes(to_screen, versions_info['versions'])
 
 
     # sys.executable is set to the full pathname of the exe-file for py2exe
     # sys.executable is set to the full pathname of the exe-file for py2exe
-    filename = sys.executable if hasattr(sys, 'frozen') else sys.argv[0]
+    # though symlinks are not followed so that we need to do this manually
+    # with help of realpath
+    filename = compat_realpath(sys.executable if hasattr(sys, 'frozen') else sys.argv[0])
 
 
     if not os.access(filename, os.W_OK):
     if not os.access(filename, os.W_OK):
         to_screen('ERROR: no write permissions on %s' % filename)
         to_screen('ERROR: no write permissions on %s' % filename)