Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Try to build the php-oci extension for the linux/arm64 platform #160

Open
stronk7 opened this issue Jan 28, 2023 · 1 comment
Open

Try to build the php-oci extension for the linux/arm64 platform #160

stronk7 opened this issue Jan 28, 2023 · 1 comment

Comments

@stronk7
Copy link
Member

stronk7 commented Jan 28, 2023

There are instaclient libraries for arm64 since some time ago:

https://www.oracle.com/database/technologies/instant-client/linux-arm-aarch64-downloads.html

Give a try to them in order to get the php-oci extension built for the php arm64 images.

@scara
Copy link
Contributor

scara commented Jan 29, 2023

Hi @stronk7,
do you mean something like below using a case statement? I can create a PR.

diff --git a/root/tmp/setup/oci8-extension.sh b/root/tmp/setup/oci8-extension.sh
index 72d4ecc..a357591 100755
--- a/root/tmp/setup/oci8-extension.sh
+++ b/root/tmp/setup/oci8-extension.sh
@@ -2,28 +2,50 @@

 set -e

-if [[ ${TARGETPLATFORM} != "linux/amd64" ]]; then
-    echo "oracle extension not available for ${TARGETPLATFORM} architecture, skipping"
-    exit 0
-fi
+case $TARGETPLATFORM in
+    "linux/amd64")
+        echo "Downloading oracle files for ${TARGETPLATFORM} architecture"
+        curl https://download.oracle.com/otn_software/linux/instantclient/219000/instantclient-basic-linux.x64-21.9.0.0.0dbru.zip \
+            -o /tmp/instantclient-basic-linux.x64-21.9.0.0.0dbru.zip
+        curl https://download.oracle.com/otn_software/linux/instantclient/219000/instantclient-sdk-linux.x64-21.9.0.0.0dbru.zip \
+            -o /tmp/instantclient-sdk-linux.x64-21.9.0.0.0dbru.zip
+        curl https://download.oracle.com/otn_software/linux/instantclient/219000/instantclient-sqlplus-linux.x64-21.9.0.0.0dbru.zip \
+            -o /tmp/instantclient-sqlplus-linux.x64-21.9.0.0.0dbru.zip

-echo "Downloading oracle files"
-curl https://download.oracle.com/otn_software/linux/instantclient/216000/instantclient-basic-linux.x64-21.6.0.0.0dbru.zip \
-    -o /tmp/instantclient-basic-linux.x64-21.6.0.0.0dbru.zip
-curl https://download.oracle.com/otn_software/linux/instantclient/216000/instantclient-sdk-linux.x64-21.6.0.0.0dbru.zip \
-    -o /tmp/instantclient-sdk-linux.x64-21.6.0.0.0dbru.zip
-curl https://download.oracle.com/otn_software/linux/instantclient/216000/instantclient-sqlplus-linux.x64-21.6.0.0.0dbru.zip \
-    -o /tmp/instantclient-sqlplus-linux.x64-21.6.0.0.0dbru.zip
+        unzip /tmp/instantclient-basic-linux.x64-21.9.0.0.0dbru.zip -d /usr/local/
+        rm /tmp/instantclient-basic-linux.x64-21.9.0.0.0dbru.zip
+        unzip /tmp/instantclient-sdk-linux.x64-21.9.0.0.0dbru.zip -d /usr/local/
+        rm /tmp/instantclient-sdk-linux.x64-21.9.0.0.0dbru.zip
+        unzip /tmp/instantclient-sqlplus-linux.x64-21.9.0.0.0dbru.zip -d /usr/local/
+        rm /tmp/instantclient-sqlplus-linux.x64-21.9.0.0.0dbru.zip

-unzip /tmp/instantclient-basic-linux.x64-21.6.0.0.0dbru.zip -d /usr/local/
-rm /tmp/instantclient-basic-linux.x64-21.6.0.0.0dbru.zip
-unzip /tmp/instantclient-sdk-linux.x64-21.6.0.0.0dbru.zip -d /usr/local/
-rm /tmp/instantclient-sdk-linux.x64-21.6.0.0.0dbru.zip
-unzip /tmp/instantclient-sqlplus-linux.x64-21.6.0.0.0dbru.zip -d /usr/local/
-rm /tmp/instantclient-sqlplus-linux.x64-21.6.0.0.0dbru.zip
+        ln -s /usr/local/instantclient_21_9 /usr/local/instantclient
+        ln -s /usr/local/instantclient/sqlplus /usr/bin/sqlplus
+        ;;
+    "linux/arm64")
+        echo "Downloading oracle files for ${TARGETPLATFORM} architecture"
+        curl https://download.oracle.com/otn_software/linux/instantclient/191000/instantclient-basic-linux.arm64-19.10.0.0.0dbru.zip \
+            -o /tmp/instantclient-basic-linux.arm64-19.10.0.0.0dbru.zip
+        curl https://download.oracle.com/otn_software/linux/instantclient/191000/instantclient-sdk-linux.arm64-19.10.0.0.0dbru.zip \
+            -o /tmp/instantclient-sdk-linux.arm64-19.10.0.0.0dbru.zip
+        curl https://download.oracle.com/otn_software/linux/instantclient/191000/instantclient-sqlplus-linux.arm64-19.10.0.0.0dbru.zip \
+            -o /tmp/instantclient-sqlplus-linux.arm64-19.10.0.0.0dbru.zip


-ln -s /usr/local/instantclient_21_6 /usr/local/instantclient
-ln -s /usr/local/instantclient/sqlplus /usr/bin/sqlplus
+        unzip /tmp/instantclient-basic-linux.arm64-19.10.0.0.0dbru.zip -d /usr/local/
+        rm /tmp/instantclient-basic-linux.arm64-19.10.0.0.0dbru.zip
+        unzip /tmp/instantclient-sdk-linux.arm64-19.10.0.0.0dbru.zip -d /usr/local/
+        rm /tmp/instantclient-sdk-linux.arm64-19.10.0.0.0dbru.zip
+        unzip /tmp/instantclient-sqlplus-linux.arm64-19.10.0.0.0dbru.zip -d /usr/local/
+        rm /tmp/instantclient-sqlplus-linux.arm64-19.10.0.0.0dbru.zip
+
+        ln -s /usr/local/instantclient_19_10 /usr/local/instantclient
+        ln -s /usr/local/instantclient/sqlplus /usr/bin/sqlplus
+        ;;
+    *)
+        echo "oracle extension not available for ${TARGETPLATFORM} architecture, skipping"
+        exit 0
+        ;;
+esac

 echo 'instantclient,/usr/local/instantclient' | pecl install oci8
 docker-php-ext-enable oci8

HTH,
Matteo

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants