72 lines
2.2 KiB
Plaintext
72 lines
2.2 KiB
Plaintext
{% from "blender/map.jinja" import blender with context %}
|
|
|
|
# 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: |
|
|
curl -sSL -A "Mozilla/5.0 (X11; Linux x86_64; rv:120.0) Gecko/20100101 Firefox/120.0" \
|
|
-o /var/tmp/blender-{{ blender.version }}-linux-x64.tar.xz \
|
|
{{ blender.download_url }}
|
|
- creates: /var/tmp/blender-{{ blender.version }}-linux-x64.tar.xz
|
|
- unless:
|
|
- test -d {{ blender.archive_dir }}
|
|
- require:
|
|
- pkg: blender_prereqs
|
|
|
|
# 3. Extract tarball
|
|
blender_extract_tarball:
|
|
archive.extracted:
|
|
- name: {{ blender.archive_dir }}
|
|
- source: /var/tmp/blender-{{ blender.version }}-linux-x64.tar.xz
|
|
- enforce_ownership_on: {{ blender.archive_dir }}
|
|
- options: '--strip-components=1'
|
|
- if_missing: {{ blender.archive_dir }}/blender
|
|
- require:
|
|
- cmd: blender_download_tarball
|
|
- pkg: blender_prereqs
|
|
|
|
# 4. Maintain generic symlink pointing to active version
|
|
blender_opt_symlink:
|
|
file.symlink:
|
|
- name: {{ blender.symlink_dir }}
|
|
- target: {{ blender.archive_dir }}
|
|
- force: True
|
|
- require:
|
|
- archive: blender_extract_tarball
|
|
|
|
# 5. Create CLI launcher symlink
|
|
blender_bin_symlink:
|
|
file.symlink:
|
|
- name: {{ blender.bin_dir }}/blender
|
|
- target: {{ blender.symlink_dir }}/blender
|
|
- force: True
|
|
- require:
|
|
- file: blender_opt_symlink
|
|
|
|
# 6. Deploy desktop menu shortcut
|
|
blender_desktop_entry:
|
|
file.managed:
|
|
- name: {{ blender.desktop_dir }}/blender.desktop
|
|
- source: salt://blender/templates/blender.desktop.jinja
|
|
- template: jinja
|
|
- mode: '0644'
|
|
- user: root
|
|
- group: root
|
|
- context:
|
|
version: "{{ blender.version }}"
|
|
exec_path: "{{ blender.symlink_dir }}/blender %f"
|
|
icon_path: "{{ blender.symlink_dir }}/blender.svg"
|
|
- require:
|
|
- file: blender_opt_symlink
|
|
|
|
# 7. Clean up downloaded archive
|
|
blender_cleanup_tarball:
|
|
file.absent:
|
|
- name: /var/tmp/blender-{{ blender.version }}-linux-x64.tar.xz
|
|
- require:
|
|
- archive: blender_extract_tarball |