diff --git a/blender/init.sls b/blender/init.sls index cd61d38..5d66ac5 100644 --- a/blender/init.sls +++ b/blender/init.sls @@ -1,6 +1,11 @@ {% from "blender/map.jinja" import blender with context %} -# 1. Download tarball via system curl to preserve User-Agent across redirects +# 1. Install prerequisites self-contained inside the formula +blender_prereqs: + pkg.installed: + - pkgs: {{ blender.pkgs | json }} + +# 2. Download tarball via system curl (preserves User-Agent across CDN redirects) blender_download_tarball: cmd.run: - name: | @@ -10,8 +15,10 @@ blender_download_tarball: - creates: /var/tmp/blender-{{ blender.version }}-linux-x64.tar.xz - unless: - test -d {{ blender.archive_dir }} + - require: + - pkg: blender_prereqs -# 2. Extract from local file system +# 3. Extract tarball blender_extract_tarball: archive.extracted: - name: {{ blender.archive_dir }} @@ -21,8 +28,9 @@ blender_extract_tarball: - if_missing: {{ blender.archive_dir }}/blender - require: - cmd: blender_download_tarball + - pkg: blender_prereqs -# 3. Maintain generic symlink pointing to active version +# 4. Maintain generic symlink pointing to active version blender_opt_symlink: file.symlink: - name: {{ blender.symlink_dir }} @@ -31,7 +39,7 @@ blender_opt_symlink: - require: - archive: blender_extract_tarball -# 4. Create CLI launcher symlink +# 5. Create CLI launcher symlink blender_bin_symlink: file.symlink: - name: {{ blender.bin_dir }}/blender @@ -40,7 +48,7 @@ blender_bin_symlink: - require: - file: blender_opt_symlink -# 5. Deploy desktop menu shortcut +# 6. Deploy desktop menu shortcut blender_desktop_entry: file.managed: - name: {{ blender.desktop_dir }}/blender.desktop @@ -56,7 +64,7 @@ blender_desktop_entry: - require: - file: blender_opt_symlink -# 6. Clean up cached tarball after extraction +# 7. Clean up downloaded archive blender_cleanup_tarball: file.absent: - name: /var/tmp/blender-{{ blender.version }}-linux-x64.tar.xz diff --git a/blender/map.jinja b/blender/map.jinja index 7678796..cfe0c96 100644 --- a/blender/map.jinja +++ b/blender/map.jinja @@ -1,15 +1,18 @@ {% set default_version = '4.2.0' %} -{# Extract major.minor (e.g., '4.2.0' -> '4.2') #} {% set version_parts = default_version.split('.') %} {% set default_major = version_parts[0] ~ '.' ~ version_parts[1] %} +{# Map distro-specific package names using grains #} +{% set xz_pkg = 'xz-utils' if grains['os_family'] == 'Debian' else 'xz' %} + {% set defaults = { 'version': default_version, 'install_root': '/opt', 'bin_dir': '/usr/local/bin', 'desktop_dir': '/usr/share/applications', - 'download_url_base': 'https://download.blender.org/release' + 'download_url_base': 'https://download.blender.org/release', + 'pkgs': [xz_pkg, 'tar', 'curl'] } %} {# Merge pillar data under the 'blender' key over defaults #}