Skip to content

Build Fails on ARM64 Linux #197

@theory

Description

@theory

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions