From e31dcd85b45537544a264d227a79b522356c44b1 Mon Sep 17 00:00:00 2001 From: guihkx <626206+guihkx@users.noreply.github.com> Date: Sun, 21 May 2023 07:14:15 -0300 Subject: [PATCH] linux: add truststore as a dependency Because Linux distributions don't have an 'universal' path for the system certificate store, bundling libssl built on distro A might not work on distro B, because distros tend to change path to the certificate store at build time. This means that creating a PyInstaller package on Ubuntu will include the libssl built there, and if you try to run this package on a different distro (e.g. Arch Linux), any attempt to create an SSL connection will fail, because Arch Linux has a different path for the certificate store than Ubuntu. This issue is usually worked around by bundling certificates with the app (usually using certifi), and then pointing the SSL_CERT_FILE environment to it. However, truststore seems to be a better alternative, since it tries to use the certificate store from the system instead. The list of benefits are listed on the project's page on GitHub: https://github.com/sethmlarson/truststore --- main.py | 4 ++++ requirements.txt | 1 + 2 files changed, 5 insertions(+) diff --git a/main.py b/main.py index be2b2f6..78b379a 100644 --- a/main.py +++ b/main.py @@ -21,6 +21,10 @@ if __name__ == "__main__": if sys.platform == "win32": import win32gui + if sys.platform == "linux" and sys.version_info >= (3, 10): + import truststore + truststore.inject_into_ssl() + from translate import _ from twitch import Twitch from settings import Settings diff --git a/requirements.txt b/requirements.txt index 92bf9a9..1ea5c54 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,3 +7,4 @@ PyGObject; sys_platform == "linux" # required for better system tray support on # undetected-chromedriver # this is installed only on windows pywin32; sys_platform == "win32" +truststore; sys_platform == "linux" and python_version >= "3.10"