From c4a508ab31f725545bb1faba10e21bc2a6416421 Mon Sep 17 00:00:00 2001 From: pukkandan Date: Wed, 3 Mar 2021 18:56:33 +0530 Subject: [PATCH] [update] Fix updater removing the executable bit on some UNIX distros Closes #133 --- yt_dlp/update.py | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/yt_dlp/update.py b/yt_dlp/update.py index 5ae4e5204..c773e2721 100644 --- a/yt_dlp/update.py +++ b/yt_dlp/update.py @@ -197,28 +197,18 @@ def update_self(to_screen, verbose, opener): to_screen('Visit https://github.com/yt-dlp/yt-dlp/releases/latest') return - try: - with open(filename + '.new', 'wb') as outf: - outf.write(newcontent) - except (IOError, OSError): - if verbose: - to_screen(encode_compat_str(traceback.format_exc())) - to_screen('ERROR: unable to write the new version') - return - expected_sum = get_sha256sum('zip', py_ver) - if expected_sum and calc_sha256sum(filename + '.new') != expected_sum: + if expected_sum and hashlib.sha256(newcontent).hexdigest() != expected_sum: to_screen('ERROR: unable to verify the new zip') to_screen('Visit https://github.com/yt-dlp/yt-dlp/releases/latest') - try: - os.remove(filename + '.new') - except OSError: - to_screen('ERROR: unable to remove corrupt zip') return try: - os.rename(filename + '.new', filename) - except OSError: + with open(filename, 'wb') as outf: + outf.write(newcontent) + except (IOError, OSError): + if verbose: + to_screen(encode_compat_str(traceback.format_exc())) to_screen('ERROR: unable to overwrite current version') return