---
- name: Include OS-specific variables.
  include_vars: "{{ ansible_os_family }}.yml"

- name: Define php_xhprof_module_path.
  set_fact:
    php_xhprof_module_path: "{{ __php_xhprof_module_path }}"
  when: php_xhprof_module_path is not defined

- name: Define php_xhprof_config_filename.
  set_fact:
    php_xhprof_config_filename: "{{ __php_xhprof_config_filename }}"
  when: php_xhprof_config_filename is not defined

# Setup/install tasks.
- name: Ensure dependencies for installing XHProf are present.
  package: "name={{ item }} state=installed"
  with_items:
    - make
    - gcc
    - unzip
    - graphviz

- name: Download and untar XHProf.
  unarchive:
    src: "{{ xhprof_download_url }}"
    dest: "{{ workspace }}"
    copy: no
    creates: "{{ workspace }}/{{ xhprof_download_folder_name }}"

- name: Build XHProf.
  shell: >
    {{ item }}
    chdir={{ workspace }}/{{ xhprof_download_folder_name }}/extension
    creates={{ workspace }}/{{ xhprof_download_folder_name }}/extension/modules/xhprof.so
  with_items:
    - phpize
    - ./configure
    - make
  notify: restart webserver

- name: Ensure XHProf module path exists.
  file:
    path: "{{ php_xhprof_module_path }}"
    state: directory
    owner: root
    group: root
    mode: 0755

- name: Move XHProf module into place.
  shell: >
    cp {{ workspace }}/{{ xhprof_download_folder_name }}/extension/modules/xhprof.so {{ php_xhprof_module_path }}/xhprof.so
    creates={{ php_xhprof_module_path }}/xhprof.so
  notify: restart webserver

- name: Move XHProf PHP library into place.
  shell: >
    cp -r {{ workspace }}/{{ xhprof_download_folder_name }}/xhprof_lib {{ php_xhprof_lib_dir }}
    creates={{ php_xhprof_lib_dir }}/utils/xhprof_lib.php

- name: Move XHProf UI into place.
  shell: >
    cp -r {{ workspace }}/{{ xhprof_download_folder_name }}/xhprof_html {{ php_xhprof_html_dir }}
    creates={{ php_xhprof_html_dir }}/index.php

- include: configure.yml

- name: Ensure XHProf output directory exists.
  file:
    path: "{{ xhprof_output_dir }}"
    state: directory
    mode: 0777
