From 3d07ab8c060c983541bcbeee00e0ce0fc422eaef Mon Sep 17 00:00:00 2001 From: Julien Langlois Date: Fri, 13 Sep 2024 11:10:49 -0700 Subject: [PATCH 1/3] WIP --- python/shotgun_desktop/upgrade_startup.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/python/shotgun_desktop/upgrade_startup.py b/python/shotgun_desktop/upgrade_startup.py index 3124aae8..b086096f 100644 --- a/python/shotgun_desktop/upgrade_startup.py +++ b/python/shotgun_desktop/upgrade_startup.py @@ -8,6 +8,7 @@ # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights # not expressly granted therein are reserved by Shotgun Software Inc. +import distutils.version import sys import os from shotgun_desktop.location import write_location, get_startup_descriptor @@ -134,6 +135,18 @@ def upgrade_startup(splash, sgtk, app_bootstrap): ) return False + if distutils.version.LooseVersion( + latest_descriptor.version + ) <= distutils.version.LooseVersion( + current_desc.get_version() + ): + logger.warning( + "Ignore app_store version %s since current version is newer %s", + latest_descriptor.version, + current_desc.get_version(), + ) + return False + try: # Download the update latest_descriptor.download_local() From 5330439d7974145d655eaa6876437ec371f57198 Mon Sep 17 00:00:00 2001 From: Julien Langlois Date: Wed, 18 Sep 2024 14:29:09 -0700 Subject: [PATCH 2/3] Finalize the change --- python/shotgun_desktop/upgrade_startup.py | 37 +++++++++++++++-------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/python/shotgun_desktop/upgrade_startup.py b/python/shotgun_desktop/upgrade_startup.py index b086096f..2dc5375c 100644 --- a/python/shotgun_desktop/upgrade_startup.py +++ b/python/shotgun_desktop/upgrade_startup.py @@ -8,7 +8,6 @@ # agreement to the Shotgun Pipeline Toolkit Source Code License. All rights # not expressly granted therein are reserved by Shotgun Software Inc. -import distutils.version import sys import os from shotgun_desktop.location import write_location, get_startup_descriptor @@ -57,6 +56,30 @@ def _out_of_date_check(latest_descriptor, current_desc): % current_desc.get_version(), ) return False + + # Test if app_store version is lower than the current version + try: + import packaging.version + + current_version = packaging.version.parse(current_desc.get_version()) + app_store_version = packaging.version.parse(latest_descriptor.get_version()) + except ImportError: + logger.exception("Could not import packaging module") + except packaging.version.InvalidVersion: + logger.warning( + "Could not parse version(s) %s/%s", + current_desc.get_version(), + latest_descriptor.get_version(), + ) + else: + if current_version > app_store_version: + logger.warning( + "Ignore app_store version %s since current version is newer %s", + latest_descriptor.version, + current_desc.get_version(), + ) + return False + return latest_descriptor.get_version() != current_desc.get_version() @@ -135,18 +158,6 @@ def upgrade_startup(splash, sgtk, app_bootstrap): ) return False - if distutils.version.LooseVersion( - latest_descriptor.version - ) <= distutils.version.LooseVersion( - current_desc.get_version() - ): - logger.warning( - "Ignore app_store version %s since current version is newer %s", - latest_descriptor.version, - current_desc.get_version(), - ) - return False - try: # Download the update latest_descriptor.download_local() From dfb910b8edbc4baf8b4efd26aa19c1e3835055e2 Mon Sep 17 00:00:00 2001 From: Julien Langlois Date: Mon, 23 Sep 2024 15:47:02 -0700 Subject: [PATCH 3/3] Add environment variable to override the behavior --- python/shotgun_desktop/upgrade_startup.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/python/shotgun_desktop/upgrade_startup.py b/python/shotgun_desktop/upgrade_startup.py index 2dc5375c..a1a725d5 100644 --- a/python/shotgun_desktop/upgrade_startup.py +++ b/python/shotgun_desktop/upgrade_startup.py @@ -72,7 +72,11 @@ def _out_of_date_check(latest_descriptor, current_desc): latest_descriptor.get_version(), ) else: - if current_version > app_store_version: + if current_version <= app_store_version: + pass + elif os.environ.get("SGTK_STARTUP_ALLOW_OLDER_VERSION"): + pass + else: logger.warning( "Ignore app_store version %s since current version is newer %s", latest_descriptor.version,