Fix issue where engines would not be reported unless a system engine was installed

This commit is contained in:
2023-10-21 16:55:46 -07:00
parent 9733e185a6
commit a220858dec
4 changed files with 10 additions and 8 deletions

View File

@@ -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
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

View File

@@ -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

View File

@@ -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

View File

@@ -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: