DBD-Oracle icon indicating copy to clipboard operation
DBD-Oracle copied to clipboard

Build Fails on ARM64 Linux

Open theory opened this issue 3 months ago • 0 comments

Copied from RT

I’ve been updating Sqitch to support ARM, but DBD::Oracle fails to compile. Here are the steps I took in a Dockerfile:

FROM debian:bullseye-slim AS ora-build

WORKDIR /work

# https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html

ENV BASEURI=https://download.oracle.com/otn_software/linux/instantclient/instantclient
ENV ORACLE_HOME /work/instantclient
ENV LD_LIBRARY_PATH /work/instantclient
ENV PERL5LIB /work/tmp/lib/perl5

RUN mkdir -p /usr/share/man/man1 /usr/share/man/man7 \
# Install dependencies, including latest platform-specific instantclient.
&& apt-get -qq update \
&& apt-get -qq install build-essential libarchive-tools curl libaio-dev \
&& case "$(arch)" in aarch64) export ORAPLAT=-arm64 ;; x86_64) export ORAPLAT=x64 ;; esac \
&& curl "${BASEURI}-basic-linux${ORAPLAT}.zip" -o instantclient-basic.zip \
&& curl "${BASEURI}-sqlplus-linux${ORAPLAT}.zip" -o instantclient-sqlplus.zip \
&& curl "${BASEURI}-sdk-linux${ORAPLAT}.zip" -o instantclient-sdk.zip \
&& mkdir instantclient \
&& bsdtar -C instantclient --strip-components 1 -zxf instantclient-basic.zip \
&& bsdtar -C instantclient --strip-components 1 -zxf instantclient-sqlplus.zip \
# Copy basic and SQL*Plus for installation below.
&& cp -rf instantclient instantclient.install \
&& bsdtar -C instantclient --strip-components 1 -zxf instantclient-sdk.zip \
# Install DBI in its own directory, then install DBD::Oracle.
&& curl https://cpanmin.us > cpanm && chmod +x cpanm \
&& ./cpanm install -l tmp --quiet --notest DBI \
&& ./cpanm install -l local --verbose --notest --no-man-pages DBD::Oracle \

Here’s how I run it on ARM on my M1 Mac:

docker buildx build --platform linux/arm64 .

Here's the output from building DBD::Oracle:

25.99 Running Makefile.PL
25.99 Configuring DBD-Oracle-1.83 ... Using DBI 1.643 (for perl 5.032001 on aarch64-linux-gnu-thread-multi) installed in /work/tmp/lib/perl5/aarch64-linux-gnu-thread-multi/auto/DBI/
26.07 Configuring DBD::Oracle for perl 5.032001 on linux (aarch64-linux-gnu-thread-multi)
26.07  26.07 If you encounter any problem, a collection of troubleshooting
26.07 guides are available under lib/DBD/Oracle/Troubleshooting.
26.07 'DBD::Oracle::Troubleshooting' is the general troubleshooting
26.07 guide, while platform-specific troubleshooting hints
26.07 live in their labelled sub-document (e.g., Win32
26.07 hints are gathered in 'lib/DBD/Oracle/Troubleshooting/Win32.pod').
26.07  26.07 Installing on a linux, Ver#4.19
26.07 Using Oracle in /work/instantclient
26.08 DEFINE _SQLPLUS_RELEASE = "1919000000" (CHAR)
26.08 Oracle Version 19.19.0.0 (19.19)
26.08 Looks like an Instant Client installation, okay
26.08 Your LD_LIBRARY_PATH env var is set to '/work/instantclient'
26.08 Oracle sysliblist:  -Wl,--no-as-needed -lnnz12 -lons -lclntshcore -lipc1 -lmql1
26.09 Found header files in /work/instantclient/sdk/include.
26.09  26.09 client_version=19.19
26.09  26.09  26.09 DEFINE= -Wall -Wno-comment -DUTF8_SUPPORT -DORA_OCI_VERSION=\"19.19.0.0\" -DORA_OCI_102 -DORA_OCI_112
26.09  26.09  26.09 Checking for functioning wait.ph
26.10  26.10  26.10 System: perl5.032001 linux localhost 4.19.0 #1 smp debian 4.19.0 aarch64 gnulinux  26.10 Compiler:   aarch64-linux-gnu-gcc -O2 -g -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
26.10 Linker:     /usr/bin/ld
26.10 Sysliblist:  -Wl,--no-as-needed -lnnz12 -lons -lclntshcore -lipc1 -lmql1
26.10 Linking with -lclntsh.
26.10  26.10 WARNING: Your GNU C compiler is very old. Please upgrade.
26.11 Checking if your kit is complete...
26.11 Looks good
26.12 Warning (mostly harmless): No library found for -lnnz12
26.12 Warning (mostly harmless): No library found for -lons
26.12 Warning (mostly harmless): No library found for -lipc1
26.12 Warning (mostly harmless): No library found for -lmql1
26.13 LD_RUN_PATH=/work/instantclient
26.13 Using DBD::Oracle 1.83.
26.13 Using DBD::Oracle 1.83.
26.14 Using DBI 1.643 (for perl 5.032001 on aarch64-linux-gnu-thread-multi) installed in /work/tmp/lib/perl5/aarch64-linux-gnu-thread-multi/auto/DBI/
26.14 Generating a Unix-style Makefile
26.14 Writing Makefile for DBD::Oracle
26.15 Writing MYMETA.yml and MYMETA.json
26.15  26.15 Checking dependencies from MYMETA.json ...
26.16 Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.44)
26.16 Checking if you have DBI 1.623 ... Yes (1.643)
26.17 OK
26.17 Building DBD-Oracle-1.83 ... cp lib/DBD/Oracle/Troubleshooting/Macos.pod blib/lib/DBD/Oracle/Troubleshooting/Macos.pod
26.27 cp Oracle.h blib/arch/auto/DBD/Oracle/Oracle.h
26.27 cp mk.pm blib/arch/auto/DBD/Oracle/mk.pm
26.27 cp lib/DBD/Oracle/Troubleshooting/Hpux.pod blib/lib/DBD/Oracle/Troubleshooting/Hpux.pod
26.27 cp lib/DBD/Oracle.pm blib/lib/DBD/Oracle.pm
26.27 cp lib/DBD/Oracle/GetInfo.pm blib/lib/DBD/Oracle/GetInfo.pm
26.27 cp ocitrace.h blib/arch/auto/DBD/Oracle/ocitrace.h
26.27 cp lib/DBD/Oracle/Troubleshooting/Win32.pod blib/lib/DBD/Oracle/Troubleshooting/Win32.pod
26.27 cp lib/DBD/Oracle/Object.pm blib/lib/DBD/Oracle/Object.pm
26.27 cp lib/DBD/Oracle/Troubleshooting/Sun.pod blib/lib/DBD/Oracle/Troubleshooting/Sun.pod
26.27 cp lib/DBD/Oracle/Troubleshooting/Aix.pod blib/lib/DBD/Oracle/Troubleshooting/Aix.pod
26.27 cp lib/DBD/Oracle/Troubleshooting/Vms.pod blib/lib/DBD/Oracle/Troubleshooting/Vms.pod
26.27 cp lib/DBD/Oracle/Troubleshooting.pod blib/lib/DBD/Oracle/Troubleshooting.pod
26.27 cp dbdimp.h blib/arch/auto/DBD/Oracle/dbdimp.h
26.27 cp lib/DBD/Oracle/Troubleshooting/Cygwin.pod blib/lib/DBD/Oracle/Troubleshooting/Cygwin.pod
26.27 cp lib/DBD/Oracle/Troubleshooting/Linux.pod blib/lib/DBD/Oracle/Troubleshooting/Linux.pod
26.27 cp lib/DBD/Oracle/Troubleshooting/Win64.pod blib/lib/DBD/Oracle/Troubleshooting/Win64.pod
26.27 Running Mkbootstrap for Oracle ()
26.28 chmod 644 "Oracle.bs"
26.28 "/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- Oracle.bs blib/arch/auto/DBD/Oracle/Oracle.bs 644
26.29 "/usr/bin/perl" -p -e "s/~DRIVER~/Oracle/g" /work/tmp/lib/perl5/aarch64-linux-gnu-thread-multi/auto/DBI/Driver.xst > Oracle.xsi
26.29 "/usr/bin/perl" "/usr/share/perl/5.32/ExtUtils/xsubpp"  -typemap '/usr/share/perl/5.32/ExtUtils/typemap' -typemap '/root/.cpanm/work/1695590795.4308/DBD-Oracle-1.83/typemap'  Oracle.xs > Oracle.xsc
26.34 mv Oracle.xsc Oracle.c
26.34 aarch64-linux-gnu-gcc -c  -I/work/instantclient/sdk/include -I/work/tmp/lib/perl5/aarch64-linux-gnu-thread-multi/auto/DBI -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g   -DVERSION=\"1.83\" -DXS_VERSION=\"1.83\" -fPIC "-I/usr/lib/aarch64-linux-gnu/perl/5.32/CORE"  -Wall -Wno-comment -DUTF8_SUPPORT -DORA_OCI_VERSION=\"19.19.0.0\" -DORA_OCI_102 -DORA_OCI_112 Oracle.c
26.49 In file included from dbdimp.h:445,
26.49                  from Oracle.h:52,
26.49                  from Oracle.xs:1:
26.49 Oracle.xs: In function 'XS_DBD__Oracle__db_ora_db_startup':
26.49 Oracle.xs:330:82: warning: macro expands to multiple statements [-Wmultistatement-macros]
26.49   330 |  if (admhp) OCIHandleFree_log_stat(imp_dbh, (dvoid*)admhp, (ub4)OCI_HTYPE_ADMIN, status);
26.49       |                                                                                  ^~~~~~
26.49 ocitrace.h:411:2: note: in definition of macro 'OCIHandleFree_log_stat'
26.49   411 |  stat=OCIHandleFree( (hp), (t));    \
26.49       |  ^~~~
26.49 Oracle.xs:330:2: note: some parts of macro expansion are not guarded by this 'if' clause
26.49   330 |  if (admhp) OCIHandleFree_log_stat(imp_dbh, (dvoid*)admhp, (ub4)OCI_HTYPE_ADMIN, status);
26.49       |  ^~
26.95 aarch64-linux-gnu-gcc -c  -I/work/instantclient/sdk/include -I/work/tmp/lib/perl5/aarch64-linux-gnu-thread-multi/auto/DBI -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g   -DVERSION=\"1.83\" -DXS_VERSION=\"1.83\" -fPIC "-I/usr/lib/aarch64-linux-gnu/perl/5.32/CORE"  -Wall -Wno-comment -DUTF8_SUPPORT -DORA_OCI_VERSION=\"19.19.0.0\" -DORA_OCI_102 -DORA_OCI_112 dbdimp.c
27.09 In file included from dbdimp.h:445,
27.09                  from Oracle.h:52,
27.09                  from dbdimp.c:21:
27.09 dbdimp.c: In function 'ora_db_login6':
27.09 dbdimp.c:923:57: warning: macro expands to multiple statements [-Wmultistatement-macros]
27.09   923 |        (ub4) OCI_ATTR_CONNECTION_CLASS, imp_dbh->errhp, status);
27.09       |                                                         ^~~~~~
27.09 ocitrace.h:325:2: note: in definition of macro 'OCIAttrSet_log_stat'
27.09   325 |  stat=OCIAttrSet(th,ht,ah,s1,a,eh);    \
27.09       |  ^~~~
27.09 dbdimp.c:920:4: note: some parts of macro expansion are not guarded by this 'if' clause
27.09   920 |    if (imp_dbh->pool_class) /*pool_class may or may not be used */
27.09       |    ^~
27.10 dbdimp.c: In function 'ora_bind_ph':
27.10 dbdimp.c:3401:4: warning: increment of a boolean expression [-Wbool-operation]
27.10  3401 |    ++imp_sth->has_inout_params;
27.10       |    ^~
27.11 In file included from dbdimp.h:445,
27.11                  from Oracle.h:52,
27.11                  from dbdimp.c:21:
27.11 dbdimp.c: In function 'ora_free_phs_contents':
27.11 ocitrace.h:380:2: warning: macro expands to multiple statements [-Wmultistatement-macros]
27.11   380 |  if (DBD_OCI_TRACEON(impxxh)) PerlIO_printf(DBD_OCI_TRACEFP(impxxh), \
27.11       |  ^~
27.11 ocitrace.h:380:2: note: in definition of macro 'OCIDescriptorFree_log'
27.11   380 |  if (DBD_OCI_TRACEON(impxxh)) PerlIO_printf(DBD_OCI_TRACEFP(impxxh), \
27.11       |  ^~
27.11 dbdimp.c:4394:2: note: some parts of macro expansion are not guarded by this 'if' clause
27.11  4394 |  if (phs->desc_h)
27.11       |  ^~
27.12 dbdimp.c: In function 'dump_env_to_trace':
27.12 dbdimp.c:4764:29: warning: comparison between pointer and zero character constant [-Wpointer-compare]
27.12  4764 |  } while ((char*)environ[i] != '\0');
27.12       |                             ^~
27.12 dbdimp.c:4764:11: note: did you mean to dereference the pointer?
27.12  4764 |  } while ((char*)environ[i] != '\0');
27.12       |           ^
28.10 aarch64-linux-gnu-gcc -c  -I/work/instantclient/sdk/include -I/work/tmp/lib/perl5/aarch64-linux-gnu-thread-multi/auto/DBI -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g   -DVERSION=\"1.83\" -DXS_VERSION=\"1.83\" -fPIC "-I/usr/lib/aarch64-linux-gnu/perl/5.32/CORE"  -Wall -Wno-comment -DUTF8_SUPPORT -DORA_OCI_VERSION=\"19.19.0.0\" -DORA_OCI_102 -DORA_OCI_112 oci8.c
28.23 oci8.c:18: warning: "sv_set_undef" redefined
28.23    18 | #define sv_set_undef(sv) if (SvROK(sv)) sv_unref(sv); else SvOK_off(sv)
28.23       |  28.23 In file included from /usr/lib/aarch64-linux-gnu/perl/5.32/CORE/perl.h:5606,
28.23                  from /work/tmp/lib/perl5/aarch64-linux-gnu-thread-multi/auto/DBI/DBIXS.h:23,
28.23                  from Oracle.h:50,
28.23                  from oci8.c:12:
28.23 /usr/lib/aarch64-linux-gnu/perl/5.32/CORE/embed.h:652: note: this is the location of the previous definition
28.23   652 | #define sv_set_undef(a)  Perl_sv_set_undef(aTHX_ a)
28.23       |  28.25 In file included from dbdimp.h:445,
28.25                  from Oracle.h:52,
28.25                  from oci8.c:12:
28.25 oci8.c: In function 'init_lob_refetch':
28.25 ocitrace.h:380:2: warning: macro expands to multiple statements [-Wmultistatement-macros]
28.25   380 |  if (DBD_OCI_TRACEON(impxxh)) PerlIO_printf(DBD_OCI_TRACEFP(impxxh), \
28.25       |  ^~
28.25 ocitrace.h:380:2: note: in definition of macro 'OCIDescriptorFree_log'
28.25   380 |  if (DBD_OCI_TRACEON(impxxh)) PerlIO_printf(DBD_OCI_TRACEFP(impxxh), \
28.25       |  ^~
28.25 oci8.c:4570:2: note: some parts of macro expansion are not guarded by this 'if' clause
28.25  4570 |  if (colhd)
28.25       |  ^~
28.26 In file included from dbdimp.h:445,
28.26                  from Oracle.h:52,
28.26                  from oci8.c:12:
28.26 oci8.c: In function 'ora_free_lob_refetch':
28.26 ocitrace.h:380:2: warning: macro expands to multiple statements [-Wmultistatement-macros]
28.26   380 |  if (DBD_OCI_TRACEON(impxxh)) PerlIO_printf(DBD_OCI_TRACEFP(impxxh), \
28.26       |  ^~
28.26 ocitrace.h:380:2: note: in definition of macro 'OCIDescriptorFree_log'
28.26   380 |  if (DBD_OCI_TRACEON(impxxh)) PerlIO_printf(DBD_OCI_TRACEFP(impxxh), \
28.26       |  ^~
28.26 oci8.c:4910:2: note: some parts of macro expansion are not guarded by this 'if' clause
28.26  4910 |  if (lr->rowid)
28.26       |  ^~
28.46 oci8.c: In function 'get_attr_val':
28.46 oci8.c:2337:25: warning: '%02d' directive writing between 2 and 3 bytes into a region of size 2 [-Wformat-overflow=]
28.46  2337 |     sprintf(s_tz_hour," %02d",tz_hour);
28.46       |                         ^~~~
28.46 oci8.c:2337:23: note: directive argument in the range [0, 255]
28.46  2337 |     sprintf(s_tz_hour," %02d",tz_hour);
28.46       |                       ^~~~~~~
28.46 oci8.c:2337:5: note: 'sprintf' output between 4 and 5 bytes into a destination of size 3
28.46  2337 |     sprintf(s_tz_hour," %02d",tz_hour);
28.46       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28.46 oci8.c:2340:23: warning: '%02d' directive writing between 2 and 3 bytes into a region of size 2 [-Wformat-overflow=]
28.46  2340 |    sprintf(s_tz_min,":%02d", tz_minute);
28.46       |                       ^~~~
28.46 oci8.c:2340:21: note: directive argument in the range [0, 255]
28.46  2340 |    sprintf(s_tz_min,":%02d", tz_minute);
28.46       |                     ^~~~~~~
28.46 oci8.c:2340:4: note: 'sprintf' output between 4 and 5 bytes into a destination of size 3
28.46  2340 |    sprintf(s_tz_min,":%02d", tz_minute);
28.46       |    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28.95 oci8.c: In function 'init_lob_refetch':
28.95 oci8.c:4463:3: warning: 'strncpy' specified bound depends on the length of the source argument [-Wstringop-overflow=]
28.95  4463 |   strncpy(syn_name,tablename,strlen(tablename));
28.95       |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
29.08 rm -f blib/arch/auto/DBD/Oracle/Oracle.so
29.08 LD_RUN_PATH="/work/instantclient" aarch64-linux-gnu-gcc  -shared -L/usr/local/lib -fstack-protector-strong  Oracle.o dbdimp.o oci8.o  -o blib/arch/auto/DBD/Oracle/Oracle.so  \
29.08    -L/work/instantclient -Wl,-rpath,/work/instantclient -lclntsh -Wl,--no-as-needed -lclntshcore   \
29.08    29.09 /usr/bin/ld: cannot find -lclntshcore
29.10 collect2: error: ld returned 1 exit status
29.10 make: *** [Makefile:514: blib/arch/auto/DBD/Oracle/Oracle.so] Error 1
29.10 ! Installing DBD::Oracle failed. See /root/.cpanm/work/1695590795.4308/build.log for details. Retry with --force to force install it.
29.10 FAIL

Odd that it can’t find lclntshcore, because it works fine on amd64:

docker buildx build --platform linux/amd64 .

The output shows lots of warnings, too, but works:

#8 135.3 Running Makefile.PL
#8 135.3 Configuring DBD-Oracle-1.83 ... Using DBI 1.643 (for perl 5.032001 on x86_64-linux-gnu-thread-multi) installed in /work/tmp/lib/perl5/x86_64-linux-gnu-thread-multi/auto/DBI/
#8 135.9 Configuring DBD::Oracle for perl 5.032001 on linux (x86_64-linux-gnu-thread-multi)
#8 135.9  #8 135.9 If you encounter any problem, a collection of troubleshooting
#8 135.9 guides are available under lib/DBD/Oracle/Troubleshooting.
#8 135.9 'DBD::Oracle::Troubleshooting' is the general troubleshooting
#8 135.9 guide, while platform-specific troubleshooting hints
#8 135.9 live in their labelled sub-document (e.g., Win32
#8 135.9 hints are gathered in 'lib/DBD/Oracle/Troubleshooting/Win32.pod').
#8 135.9  #8 135.9 Installing on a linux, Ver#4.19
#8 135.9 Using Oracle in /work/instantclient
#8 136.0 DEFINE _SQLPLUS_RELEASE = "2111000000" (CHAR)
#8 136.0 Oracle Version 21.11.0.0 (21.11)
#8 136.0 Looks like an Instant Client installation, okay
#8 136.0 Your LD_LIBRARY_PATH env var is set to '/work/instantclient'
#8 136.0 Oracle sysliblist:  -Wl,--no-as-needed -lnnz12 -lons -lclntshcore -lipc1 -lmql1
#8 136.0 Found header files in /work/instantclient/sdk/include.
#8 136.0  #8 136.0 client_version=21.11
#8 136.0  #8 136.0  #8 136.0 DEFINE= -Wall -Wno-comment -DUTF8_SUPPORT -DORA_OCI_VERSION=\"21.11.0.0\" -DORA_OCI_102 -DORA_OCI_112
#8 136.0  #8 136.0  #8 136.0 Checking for functioning wait.ph
#8 136.1  #8 136.1  #8 136.1 System: perl5.032001 linux localhost 4.19.0 #1 smp debian 4.19.0 x86_64 gnulinux  #8 136.1 Compiler:   x86_64-linux-gnu-gcc -O2 -g -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
#8 136.1 Linker:     /usr/bin/ld
#8 136.1 Sysliblist:  -Wl,--no-as-needed -lnnz12 -lons -lclntshcore -lipc1 -lmql1
#8 136.1 Linking with -lclntsh.
#8 136.1  #8 136.1 WARNING: Your GNU C compiler is very old. Please upgrade.
#8 136.1 Checking if your kit is complete...
#8 136.1 Looks good
#8 136.3 Warning (mostly harmless): No library found for -lnnz12
#8 136.3 Warning (mostly harmless): No library found for -lons
#8 136.3 Warning (mostly harmless): No library found for -lipc1
#8 136.3 Warning (mostly harmless): No library found for -lmql1
#8 136.3 LD_RUN_PATH=/work/instantclient
#8 136.3 Using DBD::Oracle 1.83.
#8 136.3 Using DBD::Oracle 1.83.
#8 136.4 Using DBI 1.643 (for perl 5.032001 on x86_64-linux-gnu-thread-multi) installed in /work/tmp/lib/perl5/x86_64-linux-gnu-thread-multi/auto/DBI/
#8 136.4 Generating a Unix-style Makefile
#8 136.4 Writing Makefile for DBD::Oracle
#8 136.5 Writing MYMETA.yml and MYMETA.json
#8 136.5  #8 136.5 Checking dependencies from MYMETA.json ...
#8 136.5 Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.44)
#8 136.5 Checking if you have DBI 1.623 ... Yes (1.643)
#8 136.6 OK
#8 136.6 Building DBD-Oracle-1.83 ... cp lib/DBD/Oracle/Troubleshooting/Win64.pod blib/lib/DBD/Oracle/Troubleshooting/Win64.pod
#8 138.4 cp lib/DBD/Oracle/Troubleshooting/Cygwin.pod blib/lib/DBD/Oracle/Troubleshooting/Cygwin.pod
#8 138.4 cp lib/DBD/Oracle/Troubleshooting/Linux.pod blib/lib/DBD/Oracle/Troubleshooting/Linux.pod
#8 138.4 cp dbdimp.h blib/arch/auto/DBD/Oracle/dbdimp.h
#8 138.4 cp lib/DBD/Oracle/Troubleshooting/Macos.pod blib/lib/DBD/Oracle/Troubleshooting/Macos.pod
#8 138.4 cp lib/DBD/Oracle.pm blib/lib/DBD/Oracle.pm
#8 138.4 cp lib/DBD/Oracle/Troubleshooting/Sun.pod blib/lib/DBD/Oracle/Troubleshooting/Sun.pod
#8 138.4 cp Oracle.h blib/arch/auto/DBD/Oracle/Oracle.h
#8 138.4 cp ocitrace.h blib/arch/auto/DBD/Oracle/ocitrace.h
#8 138.4 cp lib/DBD/Oracle/Troubleshooting/Hpux.pod blib/lib/DBD/Oracle/Troubleshooting/Hpux.pod
#8 138.4 cp mk.pm blib/arch/auto/DBD/Oracle/mk.pm
#8 138.4 cp lib/DBD/Oracle/Troubleshooting.pod blib/lib/DBD/Oracle/Troubleshooting.pod
#8 138.4 cp lib/DBD/Oracle/GetInfo.pm blib/lib/DBD/Oracle/GetInfo.pm
#8 138.4 cp lib/DBD/Oracle/Object.pm blib/lib/DBD/Oracle/Object.pm
#8 138.4 cp lib/DBD/Oracle/Troubleshooting/Win32.pod blib/lib/DBD/Oracle/Troubleshooting/Win32.pod
#8 138.4 cp lib/DBD/Oracle/Troubleshooting/Vms.pod blib/lib/DBD/Oracle/Troubleshooting/Vms.pod
#8 138.4 cp lib/DBD/Oracle/Troubleshooting/Aix.pod blib/lib/DBD/Oracle/Troubleshooting/Aix.pod
#8 138.4 Running Mkbootstrap for Oracle ()
#8 138.6 chmod 644 "Oracle.bs"
#8 138.6 "/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- Oracle.bs blib/arch/auto/DBD/Oracle/Oracle.bs 644
#8 138.7 "/usr/bin/perl" -p -e "s/~DRIVER~/Oracle/g" /work/tmp/lib/perl5/x86_64-linux-gnu-thread-multi/auto/DBI/Driver.xst > Oracle.xsi
#8 138.8 "/usr/bin/perl" "/usr/share/perl/5.32/ExtUtils/xsubpp"  -typemap '/usr/share/perl/5.32/ExtUtils/typemap' -typemap '/root/.cpanm/work/1695593689.11579/DBD-Oracle-1.83/typemap'  Oracle.xs > Oracle.xsc
#8 139.3 mv Oracle.xsc Oracle.c
#8 139.3 x86_64-linux-gnu-gcc -c  -I/work/instantclient/sdk/include -I/work/tmp/lib/perl5/x86_64-linux-gnu-thread-multi/auto/DBI -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g   -DVERSION=\"1.83\" -DXS_VERSION=\"1.83\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.32/CORE"  -Wall -Wno-comment -DUTF8_SUPPORT -DORA_OCI_VERSION=\"21.11.0.0\" -DORA_OCI_102 -DORA_OCI_112 Oracle.c
#8 140.5 In file included from dbdimp.h:445,
#8 140.5                  from Oracle.h:52,
#8 140.5                  from Oracle.xs:1:
#8 140.5 Oracle.xs: In function 'XS_DBD__Oracle__db_ora_db_startup':
#8 140.5 Oracle.xs:330:82: warning: macro expands to multiple statements [-Wmultistatement-macros]
#8 140.5   330 |  if (admhp) OCIHandleFree_log_stat(imp_dbh, (dvoid*)admhp, (ub4)OCI_HTYPE_ADMIN, status);
#8 140.5       |                                                                                  ^~~~~~
#8 140.5 ocitrace.h:411:2: note: in definition of macro 'OCIHandleFree_log_stat'
#8 140.5   411 |  stat=OCIHandleFree( (hp), (t));    \
#8 140.5       |  ^~~~
#8 140.5 Oracle.xs:330:2: note: some parts of macro expansion are not guarded by this 'if' clause
#8 140.5   330 |  if (admhp) OCIHandleFree_log_stat(imp_dbh, (dvoid*)admhp, (ub4)OCI_HTYPE_ADMIN, status);
#8 140.5       |  ^~
#8 144.4 x86_64-linux-gnu-gcc -c  -I/work/instantclient/sdk/include -I/work/tmp/lib/perl5/x86_64-linux-gnu-thread-multi/auto/DBI -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g   -DVERSION=\"1.83\" -DXS_VERSION=\"1.83\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.32/CORE"  -Wall -Wno-comment -DUTF8_SUPPORT -DORA_OCI_VERSION=\"21.11.0.0\" -DORA_OCI_102 -DORA_OCI_112 dbdimp.c
#8 145.5 In file included from dbdimp.h:445,
#8 145.5                  from Oracle.h:52,
#8 145.5                  from dbdimp.c:21:
#8 145.5 dbdimp.c: In function 'ora_db_login6':
#8 145.5 dbdimp.c:923:57: warning: macro expands to multiple statements [-Wmultistatement-macros]
#8 145.5   923 |        (ub4) OCI_ATTR_CONNECTION_CLASS, imp_dbh->errhp, status);
#8 145.5       |                                                         ^~~~~~
#8 145.5 ocitrace.h:325:2: note: in definition of macro 'OCIAttrSet_log_stat'
#8 145.5   325 |  stat=OCIAttrSet(th,ht,ah,s1,a,eh);    \
#8 145.5       |  ^~~~
#8 145.5 dbdimp.c:920:4: note: some parts of macro expansion are not guarded by this 'if' clause
#8 145.5   920 |    if (imp_dbh->pool_class) /*pool_class may or may not be used */
#8 145.5       |    ^~
#8 145.6 dbdimp.c: In function 'ora_bind_ph':
#8 145.6 dbdimp.c:3401:4: warning: increment of a boolean expression [-Wbool-operation]
#8 145.6  3401 |    ++imp_sth->has_inout_params;
#8 145.6       |    ^~
#8 145.7 In file included from dbdimp.h:445,
#8 145.7                  from Oracle.h:52,
#8 145.7                  from dbdimp.c:21:
#8 145.7 dbdimp.c: In function 'ora_free_phs_contents':
#8 145.7 ocitrace.h:380:2: warning: macro expands to multiple statements [-Wmultistatement-macros]
#8 145.7   380 |  if (DBD_OCI_TRACEON(impxxh)) PerlIO_printf(DBD_OCI_TRACEFP(impxxh), \
#8 145.7       |  ^~
#8 145.7 ocitrace.h:380:2: note: in definition of macro 'OCIDescriptorFree_log'
#8 145.7   380 |  if (DBD_OCI_TRACEON(impxxh)) PerlIO_printf(DBD_OCI_TRACEFP(impxxh), \
#8 145.7       |  ^~
#8 145.7 dbdimp.c:4394:2: note: some parts of macro expansion are not guarded by this 'if' clause
#8 145.7  4394 |  if (phs->desc_h)
#8 145.7       |  ^~
#8 145.7 dbdimp.c: In function 'dump_env_to_trace':
#8 145.7 dbdimp.c:4764:29: warning: comparison between pointer and zero character constant [-Wpointer-compare]
#8 145.7  4764 |  } while ((char*)environ[i] != '\0');
#8 145.7       |                             ^~
#8 145.7 dbdimp.c:4764:11: note: did you mean to dereference the pointer?
#8 145.7  4764 |  } while ((char*)environ[i] != '\0');
#8 145.7       |           ^
#8 152.6 x86_64-linux-gnu-gcc -c  -I/work/instantclient/sdk/include -I/work/tmp/lib/perl5/x86_64-linux-gnu-thread-multi/auto/DBI -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g   -DVERSION=\"1.83\" -DXS_VERSION=\"1.83\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.32/CORE"  -Wall -Wno-comment -DUTF8_SUPPORT -DORA_OCI_VERSION=\"21.11.0.0\" -DORA_OCI_102 -DORA_OCI_112 oci8.c
#8 153.7 oci8.c:18: warning: "sv_set_undef" redefined
#8 153.7    18 | #define sv_set_undef(sv) if (SvROK(sv)) sv_unref(sv); else SvOK_off(sv)
#8 153.7       |  #8 153.7 In file included from /usr/lib/x86_64-linux-gnu/perl/5.32/CORE/perl.h:5606,
#8 153.7                  from /work/tmp/lib/perl5/x86_64-linux-gnu-thread-multi/auto/DBI/DBIXS.h:23,
#8 153.7                  from Oracle.h:50,
#8 153.7                  from oci8.c:12:
#8 153.7 /usr/lib/x86_64-linux-gnu/perl/5.32/CORE/embed.h:652: note: this is the location of the previous definition
#8 153.7   652 | #define sv_set_undef(a)  Perl_sv_set_undef(aTHX_ a)
#8 153.7       |  #8 153.9 In file included from dbdimp.h:445,
#8 153.9                  from Oracle.h:52,
#8 153.9                  from oci8.c:12:
#8 153.9 oci8.c: In function 'init_lob_refetch':
#8 153.9 ocitrace.h:380:2: warning: macro expands to multiple statements [-Wmultistatement-macros]
#8 153.9   380 |  if (DBD_OCI_TRACEON(impxxh)) PerlIO_printf(DBD_OCI_TRACEFP(impxxh), \
#8 153.9       |  ^~
#8 153.9 ocitrace.h:380:2: note: in definition of macro 'OCIDescriptorFree_log'
#8 153.9   380 |  if (DBD_OCI_TRACEON(impxxh)) PerlIO_printf(DBD_OCI_TRACEFP(impxxh), \
#8 153.9       |  ^~
#8 153.9 oci8.c:4570:2: note: some parts of macro expansion are not guarded by this 'if' clause
#8 153.9  4570 |  if (colhd)
#8 153.9       |  ^~
#8 154.0 In file included from dbdimp.h:445,
#8 154.0                  from Oracle.h:52,
#8 154.0                  from oci8.c:12:
#8 154.0 oci8.c: In function 'ora_free_lob_refetch':
#8 154.0 ocitrace.h:380:2: warning: macro expands to multiple statements [-Wmultistatement-macros]
#8 154.0   380 |  if (DBD_OCI_TRACEON(impxxh)) PerlIO_printf(DBD_OCI_TRACEFP(impxxh), \
#8 154.0       |  ^~
#8 154.0 ocitrace.h:380:2: note: in definition of macro 'OCIDescriptorFree_log'
#8 154.0   380 |  if (DBD_OCI_TRACEON(impxxh)) PerlIO_printf(DBD_OCI_TRACEFP(impxxh), \
#8 154.0       |  ^~
#8 154.0 oci8.c:4910:2: note: some parts of macro expansion are not guarded by this 'if' clause
#8 154.0  4910 |  if (lr->rowid)
#8 154.0       |  ^~
#8 156.0 oci8.c: In function 'get_attr_val':
#8 156.0 oci8.c:2337:25: warning: '%02d' directive writing between 2 and 4 bytes into a region of size 2 [-Wformat-overflow=]
#8 156.0  2337 |     sprintf(s_tz_hour," %02d",tz_hour);
#8 156.0       |                         ^~~~
#8 156.0 oci8.c:2337:23: note: directive argument in the range [-128, 127]
#8 156.0  2337 |     sprintf(s_tz_hour," %02d",tz_hour);
#8 156.0       |                       ^~~~~~~
#8 156.0 oci8.c:2337:5: note: 'sprintf' output between 4 and 6 bytes into a destination of size 3
#8 156.0  2337 |     sprintf(s_tz_hour," %02d",tz_hour);
#8 156.0       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#8 156.0 oci8.c:2335:25: warning: '%03d' directive writing 3 bytes into a region of size 2 [-Wformat-overflow=]
#8 156.0  2335 |     sprintf(s_tz_hour," %03d",tz_hour);
#8 156.0       |                         ^~~~
#8 156.0 oci8.c:2335:23: note: directive argument in the range [-9, -1]
#8 156.0  2335 |     sprintf(s_tz_hour," %03d",tz_hour);
#8 156.0       |                       ^~~~~~~
#8 156.0 oci8.c:2335:5: note: 'sprintf' output 5 bytes into a destination of size 3
#8 156.0  2335 |     sprintf(s_tz_hour," %03d",tz_hour);
#8 156.0       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#8 156.0 oci8.c:2340:23: warning: '%02d' directive writing between 2 and 4 bytes into a region of size 2 [-Wformat-overflow=]
#8 156.0  2340 |    sprintf(s_tz_min,":%02d", tz_minute);
#8 156.0       |                       ^~~~
#8 156.0 oci8.c:2340:21: note: directive argument in the range [-128, 127]
#8 156.0  2340 |    sprintf(s_tz_min,":%02d", tz_minute);
#8 156.0       |                     ^~~~~~~
#8 156.0 oci8.c:2340:4: note: 'sprintf' output between 4 and 6 bytes into a destination of size 3
#8 156.0  2340 |    sprintf(s_tz_min,":%02d", tz_minute);
#8 156.0       |    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#8 159.1 oci8.c: In function 'init_lob_refetch':
#8 159.1 oci8.c:4463:3: warning: 'strncpy' specified bound depends on the length of the source argument [-Wstringop-overflow=]
#8 159.1  4463 |   strncpy(syn_name,tablename,strlen(tablename));
#8 159.1       |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#8 159.9 rm -f blib/arch/auto/DBD/Oracle/Oracle.so
#8 159.9 LD_RUN_PATH="/work/instantclient" x86_64-linux-gnu-gcc  -shared -L/usr/local/lib -fstack-protector-strong  Oracle.o dbdimp.o oci8.o  -o blib/arch/auto/DBD/Oracle/Oracle.so  \
#8 159.9    -L/work/instantclient -Wl,-rpath,/work/instantclient -lclntsh -Wl,--no-as-needed -lclntshcore   \
#8 159.9    #8 160.3 chmod 755 blib/arch/auto/DBD/Oracle/Oracle.so
#8 160.5 "/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- Oracle.bs blib/arch/auto/DBD/Oracle/Oracle.bs 644
#8 161.0 Files found in blib/arch: installing files in blib/lib into architecture dependent library tree
#8 161.2 Installing /work/local/lib/perl5/x86_64-linux-gnu-thread-multi/auto/DBD/Oracle/ocitrace.h
#8 161.2 Installing /work/local/lib/perl5/x86_64-linux-gnu-thread-multi/auto/DBD/Oracle/mk.pm
#8 161.2 Installing /work/local/lib/perl5/x86_64-linux-gnu-thread-multi/auto/DBD/Oracle/Oracle.so
#8 161.2 Installing /work/local/lib/perl5/x86_64-linux-gnu-thread-multi/auto/DBD/Oracle/dbdimp.h
#8 161.2 Installing /work/local/lib/perl5/x86_64-linux-gnu-thread-multi/auto/DBD/Oracle/Oracle.h
#8 161.2 Installing /work/local/lib/perl5/x86_64-linux-gnu-thread-multi/DBD/Oracle.pm
#8 161.2 Installing /work/local/lib/perl5/x86_64-linux-gnu-thread-multi/DBD/Oracle/GetInfo.pm
#8 161.2 Installing /work/local/lib/perl5/x86_64-linux-gnu-thread-multi/DBD/Oracle/Troubleshooting.pod
#8 161.2 Installing /work/local/lib/perl5/x86_64-linux-gnu-thread-multi/DBD/Oracle/Object.pm
#8 161.2 Installing /work/local/lib/perl5/x86_64-linux-gnu-thread-multi/DBD/Oracle/Troubleshooting/Linux.pod
#8 161.2 Installing /work/local/lib/perl5/x86_64-linux-gnu-thread-multi/DBD/Oracle/Troubleshooting/Win64.pod
#8 161.2 Installing /work/local/lib/perl5/x86_64-linux-gnu-thread-multi/DBD/Oracle/Troubleshooting/Hpux.pod
#8 161.2 Installing /work/local/lib/perl5/x86_64-linux-gnu-thread-multi/DBD/Oracle/Troubleshooting/Aix.pod
#8 161.2 Installing /work/local/lib/perl5/x86_64-linux-gnu-thread-multi/DBD/Oracle/Troubleshooting/Sun.pod
#8 161.2 Installing /work/local/lib/perl5/x86_64-linux-gnu-thread-multi/DBD/Oracle/Troubleshooting/Cygwin.pod
#8 161.2 Installing /work/local/lib/perl5/x86_64-linux-gnu-thread-multi/DBD/Oracle/Troubleshooting/Macos.pod
#8 161.2 Installing /work/local/lib/perl5/x86_64-linux-gnu-thread-multi/DBD/Oracle/Troubleshooting/Win32.pod
#8 161.2 Installing /work/local/lib/perl5/x86_64-linux-gnu-thread-multi/DBD/Oracle/Troubleshooting/Vms.pod
#8 161.3 Appending installation info to /work/local/lib/perl5/x86_64-linux-gnu-thread-multi/perllocal.pod
#8 161.6 OK
#8 161.6 Successfully installed DBD-Oracle-1.83

Maybe lclntshcore is missing, or perhaps a symlink is missing?

https://stackoverflow.com/a/71035762/79202

theory avatar Oct 06 '25 18:10 theory