From 813d40446749845781db7a13fe008bfe5482e4a3 Mon Sep 17 00:00:00 2001
From: jurgenhaas <juergen@paragon-es.de>
Date: Fri, 7 Apr 2017 10:03:30 +0200
Subject: [PATCH] Rework OCI installation for various PHP versions

---
 tasks/oci-5.3.yml | 74 +++++++++++++++++++++++++++++++++++++++++++++++
 tasks/oci-5.5.yml |  4 +++
 tasks/oci-7.yml   | 63 ++++++++++++++++++++++++++++++++++++++++
 tasks/oci.yml     | 61 --------------------------------------
 tasks/php.yml     | 13 ++-------
 5 files changed, 143 insertions(+), 72 deletions(-)
 create mode 100644 tasks/oci-5.3.yml
 create mode 100644 tasks/oci-5.5.yml
 create mode 100644 tasks/oci-7.yml
 delete mode 100644 tasks/oci.yml

diff --git a/tasks/oci-5.3.yml b/tasks/oci-5.3.yml
new file mode 100644
index 0000000..968a312
--- /dev/null
+++ b/tasks/oci-5.3.yml
@@ -0,0 +1,74 @@
+---
+# file: roles/php/tasks/oci-5.3.yml
+#
+# @see OCI8 Install: https://help.ubuntu.com/community/PHPOracle
+# Better:
+# @see PDO_OCI Install: https://drupal.org/comment/5572626#comment-5572626
+
+- name: "PHP | Check OCI Requirement"
+  stat:
+    path: '/usr/lib/php5/20090626/pdo_oci.so'
+  register: oci_file
+
+- block:
+
+  - name: "PHP | OCI | Enable OCI for PHP"
+    copy:
+      content: 'extension={{ item }}.so'
+      dest: '/etc/{{ php_base_dir }}/{{ php_conf_dir }}/{{ item }}.ini'
+      owner: 'root'
+      group: 'root'
+      mode: '644'
+    with_items:
+      - 'oci8'
+      - 'pdo_oci'
+
+  - name: "PHP | OCI | Remove possible components in /tmp"
+    file:
+      path: '/tmp/{{ item }}'
+      state: 'absent'
+    with_items:
+      - 'instantclient_11_2'
+      - 'oracle_x64_11_2_0_3_0_oci8_so'
+      - 'oracle_x64_11_2_0_3_0_pdo_oci_so'
+
+  - name: "PHP | OCI | Make available Oracle InstantClient"
+    command: scp -r {{ repository }}{{ item }} /tmp/
+    become: no
+    with_items:
+      - 'instantclient_11_2'
+      - 'oracle_x64_11_2_0_3_0_oci8_so'
+      - 'oracle_x64_11_2_0_3_0_pdo_oci_so'
+
+  - name: "PHP | OCI | Remove /usr/local/lib/instantclient_11_2"
+    file:
+      path: '/usr/local/lib/instantclient_11_2'
+      state: 'absent'
+
+  - name: "PHP | OCI | Move Oracle InstantClient to /usr/local/lib"
+    command: mv /tmp/instantclient_11_2 /usr/local/lib/
+
+  - name: "PHP | OCI | Move oci8 to /usr/lib/php5"
+    command: mv /tmp/oracle_x64_11_2_0_3_0_oci8_so /usr/lib/php5/20090626/oci8.so
+
+  - name: "PHP | OCI | Move pdo_oci to /usr/lib/php5"
+    command: mv /tmp/oracle_x64_11_2_0_3_0_pdo_oci_so /usr/lib/php5/20090626/pdo_oci.so
+
+  - name: "PHP | OCI | Change ownership for Oracle InstantClient"
+    file:
+      path: '{{ item }}'
+      owner: 'root'
+      group: 'root'
+      recurse: yes
+    with_items:
+      - '/usr/local/lib/instantclient_11_2'
+      - '/usr/lib/php5/20090626/oci8.so'
+      - '/usr/lib/php5/20090626/pdo_oci.so'
+
+  - name: "PHP | OCI | Make available libclntsh.so"
+    file:
+      src: '/usr/local/lib/instantclient_11_2/libclntsh.so.11.1'
+      dest: '/usr/local/lib/instantclient_11_2/libclntsh.so'
+      state: 'link'
+
+  when: not oci_file.stat.exists
diff --git a/tasks/oci-5.5.yml b/tasks/oci-5.5.yml
new file mode 100644
index 0000000..61ead19
--- /dev/null
+++ b/tasks/oci-5.5.yml
@@ -0,0 +1,4 @@
+---
+# file: roles/php/tasks/oci-5.5.yml
+
+- debug: msg="OCI8 for PHP 5.5 not implemented ywt"
diff --git a/tasks/oci-7.yml b/tasks/oci-7.yml
new file mode 100644
index 0000000..0aa8835
--- /dev/null
+++ b/tasks/oci-7.yml
@@ -0,0 +1,63 @@
+---
+# file: roles/php/tasks/oci-7.yml
+
+- name: "Check OCI Requirement"
+  stat:
+    path: '/usr/lib/php/20151012/oci.so'
+  register: oci_file
+
+- block:
+
+  - name: "Enable OCI for PHP"
+    copy:
+      content: 'extension={{ item }}.so'
+      dest: '/etc/{{ php_base_dir }}/{{ php_conf_dir }}/{{ item }}.ini'
+      owner: 'root'
+      group: 'root'
+      mode: '644'
+    with_items:
+      - 'oci8'
+
+  - name: "Remove possible components in /tmp"
+    file:
+      path: '/tmp/{{ item }}'
+      state: 'absent'
+    with_items:
+      - 'instantclient_11_2'
+      - 'oracle_x64_11_2_0_3_0_oci8_so_php_7'
+
+  - name: "Make available Oracle InstantClient"
+    command: scp -r {{ repository }}{{ item }} /tmp/
+    become: no
+    with_items:
+      - 'instantclient_11_2'
+      - 'oracle_x64_11_2_0_3_0_oci8_so_php_7'
+
+  - name: "Remove /usr/local/lib/instantclient_11_2"
+    file:
+      path: '/usr/local/lib/instantclient_11_2'
+      state: 'absent'
+
+  - name: "Move Oracle InstantClient to /usr/local/lib"
+    command: mv /tmp/instantclient_11_2 /usr/local/lib/
+
+  - name: "Move oci8 to /usr/lib/php"
+    command: mv /tmp/oracle_x64_11_2_0_3_0_oci8_so_php_7 /usr/lib/php/20151012/oci8.so
+
+  - name: "Change ownership for Oracle InstantClient"
+    file:
+      path: '{{ item }}'
+      owner: 'root'
+      group: 'root'
+      recurse: yes
+    with_items:
+      - '/usr/local/lib/instantclient_11_2'
+      - '/usr/lib/php/20151012/oci8.so'
+
+  - name: "Make available libclntsh.so"
+    file:
+      src: '/usr/local/lib/instantclient_11_2/libclntsh.so.11.1'
+      dest: '/usr/local/lib/instantclient_11_2/libclntsh.so'
+      state: 'link'
+
+  when: not oci_file.stat.exists
diff --git a/tasks/oci.yml b/tasks/oci.yml
deleted file mode 100644
index 171aa52..0000000
--- a/tasks/oci.yml
+++ /dev/null
@@ -1,61 +0,0 @@
----
-# file: roles/php/tasks/oci.yml
-#
-# @see OCI8 Install: https://help.ubuntu.com/community/PHPOracle
-# Better:
-# @see PDO_OCI Install: https://drupal.org/comment/5572626#comment-5572626
-
-- name: "PHP | OCI | Enable OCI for PHP"
-  copy:
-    content='extension={{ item }}.so'
-    dest=/etc/{{ php_base_dir }}/{{ php_conf_dir }}/{{ item }}.ini
-    owner=root
-    group=root
-    mode='644'
-  with_items:
-    - oci8
-    - pdo_oci
-
-- name: "PHP | OCI | Remove possible components in /tmp"
-  command: rm -Rf /tmp/{{ item }}
-  with_items:
-    - instantclient_11_2
-    - oracle_x64_11_2_0_3_0_oci8_so
-    - oracle_x64_11_2_0_3_0_pdo_oci_so
-
-- name: "PHP | OCI | Make available Oracle InstantClient"
-  command: scp -r {{ repository }}{{ item }} /tmp/
-  become: no
-  with_items:
-    - instantclient_11_2
-    - oracle_x64_11_2_0_3_0_oci8_so
-    - oracle_x64_11_2_0_3_0_pdo_oci_so
-
-- name: "PHP | OCI | Remove /usr/local/lib/instantclient_11_2"
-  command: rm -Rf /usr/local/lib/instantclient_11_2
-
-- name: "PHP | OCI | Move Oracle InstantClient to /usr/local/lib"
-  command: mv /tmp/instantclient_11_2 /usr/local/lib/
-
-- name: "PHP | OCI | Move oci8 to /usr/lib/php5"
-  command: mv /tmp/oracle_x64_11_2_0_3_0_oci8_so /usr/lib/php5/20090626/oci8.so
-
-- name: "PHP | OCI | Move pdo_oci to /usr/lib/php5"
-  command: mv /tmp/oracle_x64_11_2_0_3_0_pdo_oci_so /usr/lib/php5/20090626/pdo_oci.so
-
-- name: "PHP | OCI | Change ownership for Oracle InstantClient"
-  file:
-    path="{{ item }}"
-    owner="root"
-    group="root"
-    recurse=yes
-  with_items:
-    - /usr/local/lib/instantclient_11_2
-    - /usr/lib/php5/20090626/oci8.so
-    - /usr/lib/php5/20090626/pdo_oci.so
-
-- name: "PHP | OCI | Make available libclntsh.so"
-  file:
-    src=/usr/local/lib/instantclient_11_2/libclntsh.so.11.1
-    dest=/usr/local/lib/instantclient_11_2/libclntsh.so
-    state=link
diff --git a/tasks/php.yml b/tasks/php.yml
index 568adb4..5f4b50e 100644
--- a/tasks/php.yml
+++ b/tasks/php.yml
@@ -114,17 +114,8 @@
     owner=www-data
     group=www-data
 
-- name: "PHP | Check OCI Requirement"
-  shell: ls /usr/lib/php5/20090626/pdo_oci.so
-  register: oci_available
-  when: php_needs_oci8
-  ignore_errors: yes
-  changed_when: oci_available.stdout != '/usr/lib/php5/20090626/pdo_oci.so'
-  notify:
-    - "Apache | Restart Apache"
-
-- include: oci.yml
-  when: repository is defined and php_needs_oci8 and oci_available.stdout != '/usr/lib/php5/20090626/pdo_oci.so'
+- include: oci-{{ php_version|default('5.5') }}.yml
+  when: repository is defined and php_needs_oci8
 
 - name: "PHP | Ensure ImageMagick config directory"
   file:
-- 
GitLab