diff --git a/ansible.cfg b/ansible.cfg index ba9d97d97..bc95d543a 100644 --- a/ansible.cfg +++ b/ansible.cfg @@ -26,6 +26,7 @@ become_method = sudo [hosts:aix] ansible_python_interpreter = /opt/freeware/libexec/python3 +ansible_remote_tmp = /tmp [hosts:smartos] ansible_python_interpreter = /opt/local/bin/python diff --git a/ansible/roles/baselayout/tasks/main.yml b/ansible/roles/baselayout/tasks/main.yml index 5d7945ed4..08f1d558f 100644 --- a/ansible/roles/baselayout/tasks/main.yml +++ b/ansible/roles/baselayout/tasks/main.yml @@ -177,3 +177,15 @@ - "{{ role_path }}/tasks/partials/ntp/{{ os|stripversion }}.yml" - "{{ role_path }}/tasks/partials/ntp/{{ os|match_key(ntp_service, raise_error=False) }}.yml" skip: true + + +- name: install clang + include_tasks: "{{ clang_include }}" + loop_control: + loop_var: clang_include + with_first_found: + - files: + - "{{ role_path }}/tasks/partials/clang/{{ os }}-{{ arch }}.yml" + - "{{ role_path }}/tasks/partials/clang/{{ os }}.yml" + - "{{ role_path }}/tasks/partials/clang/{{ os|stripversion }}.yml" + skip: true diff --git a/ansible/roles/baselayout/tasks/partials/clang/aix.yml b/ansible/roles/baselayout/tasks/partials/clang/aix.yml new file mode 100644 index 000000000..0dba13b34 --- /dev/null +++ b/ansible/roles/baselayout/tasks/partials/clang/aix.yml @@ -0,0 +1,46 @@ +--- +# +# Downloads and installs clang +# + +- name: Check if clang is already installed + changed_when: no + check_mode: no + command: "/opt/clang+llvm-20.1.7-powerpc64-ibm-aix-7.2/bin/clang --version" + register: clang + ignore_errors: yes + +# If we're already using the latest there is no need to do anything. +# TODO improve the error handling +- name: check existing clang version is up to date + set_fact: + update_clang: "{{ 'clang version 20.1.7' not in clang.stdout }}" + +- name: create cache directory for clang binaries + file: + path: "/var/cache/clang-binaries" + state: directory + when: update_clang == True + +- name: download clang binary + get_url: + checksum: sha256:a18aea07f5b977e64bc7fe7358e95897c7ba05fbe68eeefb1614631347be4b3a + dest: "/var/cache/clang-binaries/clang+llvm-20.1.7-powerpc64-ibm-aix-7.2.tar.xz" + url: "https://github.com/IBM/llvm-project/releases/download/llvmorg-20.1.7/clang+llvm-20.1.7-powerpc64-ibm-aix-7.2.tar.xz" + register: clang_local + when: update_clang == True + +- name: unpack clang binary + register: clang_unpacked + unarchive: + dest: "/opt/" + list_files: yes + remote_src: yes + src: "{{ clang_local.dest }}" + when: update_clang == True + + +- name: Check if we have a runnable clang + changed_when: no + check_mode: no + ansible.builtin.command: "/opt/clang+llvm-20.1.7-powerpc64-ibm-aix-7.2/bin/clang --version" diff --git a/ansible/roles/baselayout/vars/main.yml b/ansible/roles/baselayout/vars/main.yml index e142ebabb..d34cb9a4d 100644 --- a/ansible/roles/baselayout/vars/main.yml +++ b/ansible/roles/baselayout/vars/main.yml @@ -37,7 +37,7 @@ common_packages: [ # % ansible -m debug -a "var=os" HOST packages: { aix: [ - 'bash,cmake,coreutils,curl,gcc-c++,tar,unzip,git,make,sudo,python3-setuptools,python3', + 'bash,cmake,coreutils,curl,gcc-c++,tar,unzip,git,make,sudo,python3-setuptools,python3,xz', ], # Appears to be some issue with the Ansible dnf task on AIX and gcc10-c++, so handle separately. diff --git a/ansible/roles/bootstrap/tasks/partials/aix.yml b/ansible/roles/bootstrap/tasks/partials/aix.yml index 82c47565f..4debcefa4 100644 --- a/ansible/roles/bootstrap/tasks/partials/aix.yml +++ b/ansible/roles/bootstrap/tasks/partials/aix.yml @@ -16,10 +16,10 @@ size: 6G state: present -- name: Set size of /var to 2G +- name: Set size of /var to 5G aix_filesystem: filesystem: /var - size: 2G + size: 5G state: present - name: Set size of /tmp to 2G @@ -34,10 +34,10 @@ size: 50G state: present -- name: Set size of /opt to 5G +- name: Set size of /opt to 12G aix_filesystem: filesystem: /opt - size: 5G + size: 12G state: present # This is to mount the AIX file event infrastructure to get the file watcher tests passing