From bebe6de7cdc2cca8471e3d95371ed1dce3b7153b Mon Sep 17 00:00:00 2001 From: "Kenneth Benzie (Benie)" Date: Sun, 6 Nov 2022 19:38:43 +0000 Subject: [PATCH] Set gdb config file based on installed version --- roles/gdb/tasks/Debian.yaml | 1 + roles/gdb/tasks/gdb-11.1-config.yaml | 11 ++++++++ roles/gdb/tasks/main.yaml | 39 +++++++++++++++++++--------- roles/gdb/templates/gdbinit | 2 +- 4 files changed, 40 insertions(+), 13 deletions(-) create mode 100644 roles/gdb/tasks/gdb-11.1-config.yaml diff --git a/roles/gdb/tasks/Debian.yaml b/roles/gdb/tasks/Debian.yaml index 53ad2c7..d57fcda 100644 --- a/roles/gdb/tasks/Debian.yaml +++ b/roles/gdb/tasks/Debian.yaml @@ -1,5 +1,6 @@ --- - name: install apt package + become: true apt: name: gdb state: latest diff --git a/roles/gdb/tasks/gdb-11.1-config.yaml b/roles/gdb/tasks/gdb-11.1-config.yaml new file mode 100644 index 0000000..e9e8ddb --- /dev/null +++ b/roles/gdb/tasks/gdb-11.1-config.yaml @@ -0,0 +1,11 @@ +--- +- set_fact: + gdb_config_dir: '{{ansible_env.HOME}}/.config/gdb' + +- name: create config directory + file: + path: '{{gdb_config_dir}}' + state: directory + +- set_fact: + gdb_config_file: '{{gdb_config_dir}}/gdbinit' diff --git a/roles/gdb/tasks/main.yaml b/roles/gdb/tasks/main.yaml index d21885c..2c26d55 100644 --- a/roles/gdb/tasks/main.yaml +++ b/roles/gdb/tasks/main.yaml @@ -1,19 +1,34 @@ --- -- set_fact: - config_dir: '{{ansible_env.HOME}}/.config/gdb' - state_dir: '{{ansible_env.HOME}}/.local/state/gdb' - - include_tasks: '{{ansible_os_family}}.yaml' -- name: create directory - file: - path: '{{item}}' - state: directory - with_items: - - '{{config_dir}}' - - '{{state_dir}}' +# gdb 11.1 introduced support for config files that respect the XDG base +# directory spec, handle the boths paths dependant on the gdb version install. +- name: get installed version + command: gdb --version + register: gdb_version_output + changed_when: false + +- set_fact: + gdb_version: '{{gdb_version_output.stdout | regex_search("(\d+)\.(\d+)", "\1", "\2")}}' +- set_fact: + gdb_xdg_base_dir_check: + gdb_version[0] | int > 11 or ( + gdb_version[0] | int == 11 and gdb_version[1] | int == 1 + ) + +- set_fact: + gdb_config_file: '{{ansible_env.HOME}}/.gdbinit' + gdb_state_dir: '{{ansible_env.HOME}}/.local/state/gdb' + +- when: gdb_xdg_base_dir_check + include_tasks: gdb-11.1-config.yaml - name: create config file template: src: gdbinit - dest: '{{config_dir}}/gdbinit' + dest: '{{gdb_config_file}}' + +- name: create state directory + file: + path: '{{gdb_state_dir}}' + state: directory diff --git a/roles/gdb/templates/gdbinit b/roles/gdb/templates/gdbinit index aaa3a5a..e7c6bb9 100644 --- a/roles/gdb/templates/gdbinit +++ b/roles/gdb/templates/gdbinit @@ -1,3 +1,3 @@ # Enable saving command history -set history filename {{state_dir}}/history +set history filename {{gdb_state_dir}}/history set history save on