65 lines
2.3 KiB
YAML
65 lines
2.3 KiB
YAML
# vim: set filetype=yaml.ansible :
|
|
#
|
|
## Helper: cargo_buil.yml
|
|
## Description: download source, build and install using cargo
|
|
## Variables: top level 'dict'
|
|
## source_dir: git source directory
|
|
## repo: git repository url
|
|
## depth: _int_ optional, Default 1. Git depth to clone
|
|
## force_git: _bool_ optional, default true. Force clone, overwriting existing dir
|
|
## recursive: _bool_ optional, default true. Do a recursive clone
|
|
## version: _string_ optional, default 'latest'. Version to checkout and build
|
|
## build_flags: _list[str]_ optional. If set, will append these to the build command
|
|
---
|
|
- name: Cargo source install helper
|
|
block:
|
|
- name: Fetch git repo
|
|
vars:
|
|
path: "{{ pkg.source_dir }}"
|
|
repo: "{{ pkg.git.repo }}"
|
|
depth: "{{ pkg.depth | default(1) }}"
|
|
force: "{{ pkg.force_git | default(true) }}"
|
|
recursive: "{{ pkg.recursive | default(true) }}"
|
|
version: "{{ pkg.git.version | default(omit) }}"
|
|
ansible.builtin.include_tasks: helpers/git.yml
|
|
|
|
- name: Build cargo release
|
|
ansible.builtin.command:
|
|
chdir: "{{ pkg.source_dir }}"
|
|
argv: "{{ ['cargo', 'build'] + pkg.build_flags }}"
|
|
|
|
- name: Clean existing install
|
|
vars:
|
|
files: "{{ pkg.files }}"
|
|
ansible.builtin.include_tasks: helpers/clean_install.yml
|
|
|
|
- name: Install cargo release
|
|
block:
|
|
# - name: Install files
|
|
# vars:
|
|
# source_dir: "{{ pkg.source_dir }}"
|
|
# pkg: "{{ pkg }}"
|
|
# ansible.builtin.include_tasks: helpers/install.yml
|
|
|
|
- name: Create directories
|
|
become: "{{ install_become }}"
|
|
become_user: "{{ install_become_user | default(omit) }}"
|
|
loop: "{{ pkg.files }}"
|
|
loop_control:
|
|
loop_var: file
|
|
ansible.builtin.file:
|
|
state: directory
|
|
mode: '0755'
|
|
path: "{{ [install_prefix, file.to] | path_join | dirname }}"
|
|
|
|
- name: Copy installable files
|
|
become: "{{ install_become }}"
|
|
become_user: "{{ install_become_user }}"
|
|
loop: "{{ pkg.files }}"
|
|
loop_control:
|
|
loop_var: file
|
|
ansible.builtin.copy:
|
|
dest: "{{ install_prefix }}/{{ file.to }}"
|
|
mode: "{{ file.mode | default('0644') }}"
|
|
src: "{{ pkg.source_dir }}/{{ file.from }}"
|