From a220858dec323caedf4167f4eb2a8147f501285e Mon Sep 17 00:00:00 2001 From: Brett Date: Sat, 21 Oct 2023 16:55:46 -0700 Subject: [PATCH] Fix issue where engines would not be reported unless a system engine was installed --- src/api_server.py | 10 ++++++---- src/engines/base_engine.py | 4 ++-- src/engines/downloaders/blender_downloader.py | 2 +- src/engines/downloaders/ffmpeg_downloader.py | 2 +- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/api_server.py b/src/api_server.py index 19e77cd..9489fea 100755 --- a/src/api_server.py +++ b/src/api_server.py @@ -535,13 +535,15 @@ def renderer_info(): renderer_data = {} for engine_name in RenderWorkerFactory.supported_renderers(): engine = RenderWorkerFactory.class_for_name(engine_name).engine - if engine.default_renderer_path(): - # Get all installed versions of engine + # Get all installed versions of engine + installed_versions = EngineManager.all_versions_for_engine(engine_name) + if installed_versions: + install_path = installed_versions[0]['path'] renderer_data[engine_name] = {'is_available': RenderQueue.is_available_for_job(engine.name()), - 'versions': EngineManager.all_versions_for_engine(engine_name), + 'versions': installed_versions, 'supported_extensions': engine.supported_extensions, - 'supported_export_formats': engine().get_output_formats()} + 'supported_export_formats': engine(install_path).get_output_formats()} return renderer_data diff --git a/src/engines/base_engine.py b/src/engines/base_engine.py index 9d31b98..1e668a8 100644 --- a/src/engines/base_engine.py +++ b/src/engines/base_engine.py @@ -24,9 +24,9 @@ class BaseRenderEngine(object): @classmethod def default_renderer_path(cls): path = None - try: + try: # Linux and macOS path = subprocess.check_output(['which', cls.name()], timeout=SUBPROCESS_TIMEOUT).decode('utf-8').strip() - except subprocess.CalledProcessError: + except (subprocess.CalledProcessError, FileNotFoundError): for p in cls.install_paths: if os.path.exists(p): path = p diff --git a/src/engines/downloaders/blender_downloader.py b/src/engines/downloaders/blender_downloader.py index 3899077..beda93a 100644 --- a/src/engines/downloaders/blender_downloader.py +++ b/src/engines/downloaders/blender_downloader.py @@ -53,7 +53,7 @@ class BlenderDownloader: versions_data = [x for x in versions_data if x['cpu'] == cpu] for v in versions_data: - v['url'] = os.path.join(base_url, v['file']) + v['url'] = base_url + '/' + v['file'] versions_data = sorted(versions_data, key=lambda x: x['version'], reverse=True) return versions_data diff --git a/src/engines/downloaders/ffmpeg_downloader.py b/src/engines/downloaders/ffmpeg_downloader.py index a5ecb66..32aa4d4 100644 --- a/src/engines/downloaders/ffmpeg_downloader.py +++ b/src/engines/downloaders/ffmpeg_downloader.py @@ -87,7 +87,7 @@ class FFMPEGDownloader: release_dir = 'releases' if version == cls.get_linux_versions()[0] else 'old-releases' remote_url = os.path.join(cls.linux_url, release_dir, f'ffmpeg-{version}-{cpu}-static.tar.xz') elif system_os == 'windows': - remote_url = os.path.join(cls.windows_download_url, version, f'ffmpeg-{version}-full_build.zip') + remote_url = f"{cls.windows_download_url.strip('/')}/{version}/ffmpeg-{version}-full_build.zip" # Download and extract try: