Merchlewitz has asked for the wisdom of the Perl Monks concerning the following question:

Hi all I am trying to get ora2pg working with my M1 Macbook and and am running into some snags..

One of the requirements is installing DBD::Oracle in which i run into issues with I've tried using both arm64 and intel x86(i386) `with rosetta` versions of the Oracle instant client and am not able to make any progress..

The perl Makefile.PL appears to work with no issues it's the make that seems to have the issues.

Any help is greatly appreciated!

Here's my ~/.zshrc:

export PATH=/opt/homebrew/Cellar/python@3.12/3.12.6/libexec/bin:$PATH export ORACLE_HOME=/Users/colby.merchlewitz/Downloads/instantclient_19 +_16 export DYLD_LIBRARY_PATH=/Users/colby.merchlewitz/Downloads/instantcli +ent_19_16 export C_INCLUDE_PATH=/Users/colby.merchlewitz/Downloads/instantclient +_19_16/sdk/include #export PATH=$HOME/perl5/perlbrew/bin:$PATH #source ~/perl5/perlbrew/etc/bashrc export PATH=$ORACLE_HOME:$PATH

Here's the output from the attempt:

cpan[2]> install DBD::Oracle Running install for module 'DBD::Oracle' Checksum for /Users/colby.merchlewitz/.cpan/sources/authors/id/Z/ZA/ZA +RQUON/DBD-Oracle-1.90.tar.gz ok Scanning cache /Users/colby.merchlewitz/.cpan/build for sizes ...................................................................... +......DONE 'YAML' not installed, will not store persistent state Configuring Z/ZA/ZARQUON/DBD-Oracle-1.90.tar.gz with Makefile.PL Using DBI 1.645 (for perl 5.038002 on darwin-thread-multi-2level) inst +alled in /opt/homebrew/opt/perl/lib/perl5/site_perl/5.38/darwin-threa +d-multi-2level/auto/DBI/ Configuring DBD::Oracle for perl 5.038002 on darwin (darwin-thread-mul +ti-2level) If you encounter any problem, a collection of troubleshooting guides are available under lib/DBD/Oracle/Troubleshooting. 'DBD::Oracle::Troubleshooting' is the general troubleshooting guide, while platform-specific troubleshooting hints live in their labelled sub-document (e.g., Win32 hints are gathered in 'lib/DBD/Oracle/Troubleshooting/Win32.pod'). Installing on a darwin, Ver#23.2 Using Oracle in /Users/colby.merchlewitz/Downloads/instantclient_19_16 DEFINE _SQLPLUS_RELEASE = "1916000000" (CHAR) Oracle Version 19.16.0.0 (19.16) Looks like an Instant Client installation, okay Your DYLD_LIBRARY_PATH env var is set to '/Users/colby.merchlewitz/Dow +nloads/instantclient_19_16' Oracle sysliblist: Found header files in /Users/colby.merchlewitz/Downloads/instantclient +_19_16/sdk/include. client_version=19.16 DEFINE= -Wall -Wno-comment -DUTF8_SUPPORT -DORA_OCI_VERSION=\"19.16.0. +0\" -DORA_OCI_102 -DORA_OCI_112 Checking for functioning wait.ph System: perl5.038002 darwin sonoma-arm64.local 23.2.0 darwin kernel ve +rsion 23.2.0: wed nov 15 21:54:25 pst 2023; root:xnu-10002.61.3~2rele +ase_arm64_vmapple arm64 Compiler: cc -O3 -fno-common -DPERL_DARWIN -mmacosx-version-min=14.2 + -DNO_POSIX_2008_LOCALE -fno-strict-aliasing -pipe -fstack-protector- +strong Linker: /usr/bin/ld Sysliblist: Linking with -lclntsh. Checking if your kit is complete... Looks good LD_RUN_PATH=/Users/colby.merchlewitz/Downloads/instantclient_19_16 Using DBD::Oracle 1.90. Using DBD::Oracle 1.90. Using DBI 1.645 (for perl 5.038002 on darwin-thread-multi-2level) inst +alled in /opt/homebrew/opt/perl/lib/perl5/site_perl/5.38/darwin-threa +d-multi-2level/auto/DBI/ Generating a Unix-style Makefile Writing Makefile for DBD::Oracle Writing MYMETA.yml and MYMETA.json ZARQUON/DBD-Oracle-1.90.tar.gz /opt/homebrew/Cellar/perl/5.38.2_1/bin/perl Makefile.PL -- OK Running make for Z/ZA/ZARQUON/DBD-Oracle-1.90.tar.gz cp lib/DBD/Oracle/Troubleshooting/Linux.pod blib/lib/DBD/Oracle/Troubl +eshooting/Linux.pod cp lib/DBD/Oracle/Troubleshooting.pod blib/lib/DBD/Oracle/Troubleshoot +ing.pod cp dbdimp.h blib/arch/auto/DBD/Oracle/dbdimp.h cp lib/DBD/Oracle.pm blib/lib/DBD/Oracle.pm cp lib/DBD/Oracle/Troubleshooting/Aix.pod blib/lib/DBD/Oracle/Troubles +hooting/Aix.pod cp lib/DBD/Oracle/Troubleshooting/Hpux.pod blib/lib/DBD/Oracle/Trouble +shooting/Hpux.pod cp dbivport.h blib/arch/auto/DBD/Oracle/dbivport.h cp lib/DBD/Oracle/Troubleshooting/Sun.pod blib/lib/DBD/Oracle/Troubles +hooting/Sun.pod cp lib/DBD/Oracle/GetInfo.pm blib/lib/DBD/Oracle/GetInfo.pm cp lib/DBD/Oracle/Object.pm blib/lib/DBD/Oracle/Object.pm cp ocitrace.h blib/arch/auto/DBD/Oracle/ocitrace.h cp lib/DBD/Oracle/Troubleshooting/Macos.pod blib/lib/DBD/Oracle/Troubl +eshooting/Macos.pod cp lib/DBD/Oracle/Troubleshooting/Vms.pod blib/lib/DBD/Oracle/Troubles +hooting/Vms.pod cp Oracle.h blib/arch/auto/DBD/Oracle/Oracle.h cp lib/DBD/Oracle/Troubleshooting/Win32.pod blib/lib/DBD/Oracle/Troubl +eshooting/Win32.pod cp lib/DBD/Oracle/Troubleshooting/Win64.pod blib/lib/DBD/Oracle/Troubl +eshooting/Win64.pod cp lib/DBD/Oracle/Troubleshooting/Cygwin.pod blib/lib/DBD/Oracle/Troub +leshooting/Cygwin.pod cp mk.pm blib/arch/auto/DBD/Oracle/mk.pm Running Mkbootstrap for Oracle () chmod 644 "Oracle.bs" "/opt/homebrew/Cellar/perl/5.38.2_1/bin/perl" -MExtUtils::Command::MM +-e 'cp_nonempty' -- Oracle.bs blib/arch/auto/DBD/Oracle/Oracle.bs 644 "/opt/homebrew/Cellar/perl/5.38.2_1/bin/perl" -p -e "s/~DRIVER~/Oracle +/g" /opt/homebrew/opt/perl/lib/perl5/site_perl/5.38/darwin-thread-mul +ti-2level/auto/DBI/Driver.xst > Oracle.xsi "/opt/homebrew/Cellar/perl/5.38.2_1/bin/perl" "/opt/homebrew/opt/perl/ +lib/perl5/5.38/ExtUtils/xsubpp" -typemap '/opt/homebrew/opt/perl/lib +/perl5/5.38/ExtUtils/typemap' -typemap '/Users/colby.merchlewitz/.cpa +n/build/DBD-Oracle-1.90-40/typemap' Oracle.xs > Oracle.xsc mv Oracle.xsc Oracle.c cc -c -I/Users/colby.merchlewitz/Downloads/instantclient_19_16/sdk/in +clude -I/opt/homebrew/opt/perl/lib/perl5/site_perl/5.38/darwin-thread +-multi-2level/auto/DBI -fno-common -DPERL_DARWIN -mmacosx-version-min +=14.2 -DNO_POSIX_2008_LOCALE -fno-strict-aliasing -pipe -fstack-prote +ctor-strong -Wno-error=implicit-function-declaration -O3 -DVERSION= +\"1.90\" -DXS_VERSION=\"1.90\" "-I/opt/homebrew/opt/perl/lib/perl5/5 +.38/darwin-thread-multi-2level/CORE" -Wall -Wno-comment -DUTF8_SUPPO +RT -DORA_OCI_VERSION=\"19.16.0.0\" -DORA_OCI_102 -DORA_OCI_112 Oracle +.c Oracle.xs:233:6: warning: 'Perl_dowantarray' is deprecated [-Wdeprecat +ed-declarations] if (GIMME == G_SCALAR) { /* XXX Oraperl */ ^ /opt/homebrew/opt/perl/lib/perl5/5.38/darwin-thread-multi-2level/CORE/ +op.h:182:14: note: expanded from macro 'GIMME' : dowantarray()) ^ /opt/homebrew/opt/perl/lib/perl5/5.38/darwin-thread-multi-2level/CORE/ +embed.h:217:49: note: expanded from macro 'dowantarray' # define dowantarray() Perl_dowantarray(aTHX) ^ /opt/homebrew/opt/perl/lib/perl5/5.38/darwin-thread-multi-2level/CORE/ +proto.h:1020:9: note: 'Perl_dowantarray' has been explicitly marked d +eprecated here __attribute__deprecated__ ^ /opt/homebrew/opt/perl/lib/perl5/5.38/darwin-thread-multi-2level/CORE/ +perl.h:406:60: note: expanded from macro '__attribute__deprecated__' # define __attribute__deprecated__ __attribute__((deprecated) +) ^ 1 warning generated. cc -c -I/Users/colby.merchlewitz/Downloads/instantclient_19_16/sdk/in +clude -I/opt/homebrew/opt/perl/lib/perl5/site_perl/5.38/darwin-thread +-multi-2level/auto/DBI -fno-common -DPERL_DARWIN -mmacosx-version-min +=14.2 -DNO_POSIX_2008_LOCALE -fno-strict-aliasing -pipe -fstack-prote +ctor-strong -Wno-error=implicit-function-declaration -O3 -DVERSION= +\"1.90\" -DXS_VERSION=\"1.90\" "-I/opt/homebrew/opt/perl/lib/perl5/5 +.38/darwin-thread-multi-2level/CORE" -Wall -Wno-comment -DUTF8_SUPPO +RT -DORA_OCI_VERSION=\"19.16.0.0\" -DORA_OCI_102 -DORA_OCI_112 dbdcnx +.c dbdcnx.c:294:21: error: non-void function 'find_env' should return a v +alue [-Wreturn-type] llist_drop(base); ^ dbdcnx.c:90:25: note: expanded from macro 'llist_drop' if(llist_empty(el)) return;\ ^ 1 error generated. make: *** [dbdcnx.o] Error 1 ZARQUON/DBD-Oracle-1.90.tar.gz /usr/bin/make -- NOT OK Failed during this command: ZARQUON/DBD-Oracle-1.90.tar.gz : make NO

Replies are listed 'Best First'.
Re: Issues with DBD::Oracle M1 macbook
by hv (Prior) on Sep 24, 2024 at 17:50 UTC

    Looks like there was a commit shortly after DBD::Oracle-1.90 was released to fix that problem.

    You can wait for a new release including the fix or try going for an older version of the package (since the commit message implies the error had only recently been introduced). You could also consider applying just that change to your package to see if it gets you further, or contacting the dbi-users mailing list referenced in the README to see if they have any other suggestions.

      Awesome find! I am going to try that and see what happens!