diff options
| author | Luke Hoersten <[email protected]> | 2026-07-28 21:11:08 -0500 |
|---|---|---|
| committer | Luke Hoersten <[email protected]> | 2026-07-28 21:11:08 -0500 |
| commit | 207bff9cb9773e3e0ef7fe7114e4b1aa70ffd4b6 (patch) | |
| tree | cc38ab4e2cb82ecdc9a8e4d03b3afbe2f6af6be0 /mattertimectl/build/tasks | |
| parent | a55c5e9d35530d03fa8c52ceef5d2457827f0851 (diff) | |
- Rename role dir and all vars from mattertimesync to mattertimectl
- Rename the server subrole to controller
- Build via cargo instead of npm; run the binary directly (no node)
- Default fabricLabel to "Matter Time Controller"
Diffstat (limited to 'mattertimectl/build/tasks')
| -rw-r--r-- | mattertimectl/build/tasks/main.yaml | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/mattertimectl/build/tasks/main.yaml b/mattertimectl/build/tasks/main.yaml new file mode 100644 index 0000000..d5721d7 --- /dev/null +++ b/mattertimectl/build/tasks/main.yaml @@ -0,0 +1,71 @@ +--- + +- name: ensure build work dir exists + become: yes + file: + path: "{{build_work_dir}}" + state: "directory" + owner: "{{ansible_user}}" + group: "{{ansible_user}}" + mode: "0755" + +- name: check if mattertimectl build exists + stat: + path: "{{mattertimectl_srv_dir}}/mattertimectl-{{mattertimectl_version}}.tar.gz" + register: build_file + +# NOTE: rustup is used only because rs-matter requires a newer rustc than +# Ubuntu 24.04's apt ships (apt rustc is 1.75; rs-matter needs >= 1.87). Once +# the build host runs an Ubuntu whose apt rustc/cargo are new enough, drop +# rustup and the toolchain tasks below and just `apt install rustc cargo`. +- name: install rustup + become: yes + apt: + name: "rustup" + state: "present" + +- name: install a current stable rust toolchain + command: "rustup toolchain install stable" + environment: + CARGO_HOME: "{{mattertimectl_cargo_home}}" + RUSTUP_HOME: "{{mattertimectl_rustup_home}}" + when: not build_file.stat.exists + +- name: unarchive mattertimectl source + unarchive: + remote_src: yes + src: "{{mattertimectl_tar}}" + dest: "{{build_work_dir}}/" + creates: "{{mattertimectl_build_dir}}" + +- name: build mattertimectl release binary + # rustup run stable dispatches cargo through the toolchain regardless of + # the apt rustup package's proxy layout or the configured default. + command: "rustup run stable cargo build --release" + args: + chdir: "{{mattertimectl_build_dir}}" + creates: "{{mattertimectl_cargo_target_dir}}/release/mattertimectl" + environment: + CARGO_HOME: "{{mattertimectl_cargo_home}}" + RUSTUP_HOME: "{{mattertimectl_rustup_home}}" + CARGO_TARGET_DIR: "{{mattertimectl_cargo_target_dir}}" + when: not build_file.stat.exists + +- name: create build server dir + become: yes + file: + path: "{{mattertimectl_srv_dir}}" + mode: "0755" + state: "directory" + +- name: create gz archive of mattertimectl binary + become: yes + archive: + path: "{{mattertimectl_cargo_target_dir}}/release/mattertimectl" + dest: "{{mattertimectl_srv_dir}}/mattertimectl-{{mattertimectl_version}}.tar.gz" + format: "gz" + # force a real tar for the single-file binary; the module otherwise gzips + # a lone file into a bare .gz that the server's unarchive can't extract. + # The tar preserves the executable bit the target relies on. + force_archive: true + when: not build_file.stat.exists |
