Hi Daniel, Thanks for the help
Sort of.
The internal library seems to be compiled and linked each my module is
compiled - this happens 2x, for %build and for %install of the RPM
This doesn't seem to be a problem when the %build stage is executed:
Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.EOkbPI
...
+ make all quiet=verbose 'skip_modules=mysql jabber cpl-c avp_radius
auth_radius group_radius uri_radius pa postgres osp tlsops unixodbc dbtext'
cfg-target=//etc/kamailio/
...
gcc -fPIC -DPIC -g -funroll-loops -Wcast-align -m64 -minline-all-stringops
-falign-loops -ftree-vectorize -fno-strict-overflow -mtune=opteron -Wall
-DNAME='"kamailio"' -DVERSION='"4.2.4"'
-DARCH='"x86_64"' -DOS='linux_'
-DOS_QUOTED='"linux"' -DCOMPILER='"gcc 4.4.7"'
-D__CPU_x86_64 -D__OS_linux
-DSER_VER=4002004 -DCFG_DIR='"/usr/local/etc/kamailio/"' -DPKG_MALLOC
-DSHM_MEM -DSHM_MMAP -DDNS_IP_HACK -DUSE_MCAST -DUSE_TCP -DDISABLE_NAGLE
-DHAVE_RESOLV_RES -DUSE_DNS_CACHE -DUSE_DNS_FAILOVER -DUSE_DST_BLACKLIST
-DUSE_NAPTR -DWITH_XAVP -DF_MALLOC -DDBG_F_MALLOC -DMEM_JOIN_FREE -DUSE_TLS
-DTLS_HOOKS -DUSE_CORE_STATS -DSTATISTICS -DMALLOC_STATS -DWITH_AS_SUPPORT
-DFAST_LOCK -DADAPTIVE_WAIT -DADAPTIVE_WAIT_LOOPS=1024 -DCC_GCC_LIKE_ASM
-DHAVE_GETHOSTBYNAME2 -DHAVE_UNION_SEMUN -DHAVE_SCHED_YIELD
-DHAVE_MSG_NOSIGNAL -DHAVE_MSGHDR_MSG_CONTROL -DHAVE_ALLOCA_H -DHAVE_TIMEGM
-DHAVE_SCHED_SETSCHEDULER -DUSE_RAW_SOCKS -DHAVE_EPOLL -DHAVE_SIGIO_RT
-DSIGINFO64_WORKARROUND -DUSE_FUTEX -DHAVE_SELECT -DKAMAILIO_MOD_INTERFACE
-DRTC_COMMON_TRACE -DMOD_NAME='"db_arl"' -c db_arl_mod.c -o
db_arl_mod.o
-MMD -MP
Makefile.defs defs skipped
make[2]: `libsrdb2.so.1.0' is up to date.
Makefile.defs defs skipped
make[2]: `libsrdb1.so.1.0' is up to date.
Makefile.defs defs skipped
make[2]: `librtctrace.so.1.0' is up to date.
COL_LOCAL_BUILDS_ROOT=/home/pshea/_localbuilds/
Compiling db_arl_base.cpp
g++ -fPIC -DPIC -g -funroll-loops -Wcast-align -m64 -minline-all-stringops
-falign-loops -ftree-vectorize -fno-strict-overflow -mtune=opteron -Wall
-Wno-write-strings -Wno-deprecated -Wno-unused-function -Wno-sign-compare
-Wno-strict-aliasing -I
/home/pshea/_localbuilds//ExternalLibs/boost/V1.60.0_27/ -I ./jsoncpp-dist/
-fPIC -DPIC -g -funroll-loops -Wcast-align -m64 -minline-all-stringops
-falign-loops -ftree-vectorize -fno-strict-overflow -mtune=opteron -Wall
-DNAME='"kamailio"' -DVERSION='"4.2.4"'
-DARCH='"x86_64"' -DOS='linux_'
-DOS_QUOTED='"linux"' -DCOMPILER='"gcc 4.4.7"'
-D__CPU_x86_64 -D__OS_linux
-DSER_VER=4002004 -DCFG_DIR='"/usr/local/etc/kamailio/"' -DPKG_MALLOC
-DSHM_MEM -DSHM_MMAP -DDNS_IP_HACK -DUSE_MCAST -DUSE_TCP -DDISABLE_NAGLE
-DHAVE_RESOLV_RES -DUSE_DNS_CACHE -DUSE_DNS_FAILOVER -DUSE_DST_BLACKLIST
-DUSE_NAPTR -DWITH_XAVP -DF_MALLOC -DDBG_F_MALLOC -DMEM_JOIN_FREE -DUSE_TLS
-DTLS_HOOKS -DUSE_CORE_STATS -DSTATISTICS -DMALLOC_STATS -DWITH_AS_SUPPORT
-DFAST_LOCK -DADAPTIVE_WAIT -DADAPTIVE_WAIT_LOOPS=1024 -DCC_GCC_LIKE_ASM
-DHAVE_GETHOSTBYNAME2 -DHAVE_UNION_SEMUN -DHAVE_SCHED_YIELD
-DHAVE_MSG_NOSIGNAL -DHAVE_MSGHDR_MSG_CONTROL -DHAVE_ALLOCA_H -DHAVE_TIMEGM
-DHAVE_SCHED_SETSCHEDULER -DUSE_RAW_SOCKS -DHAVE_EPOLL -DHAVE_SIGIO_RT
-DSIGINFO64_WORKARROUND -DUSE_FUTEX -DHAVE_SELECT -DKAMAILIO_MOD_INTERFACE
-DRTC_COMMON_TRACE -DMOD_NAME='"db_arl"' -c db_arl_base.cpp -o
db_arl_base.o
db_arl_base.cpp: In function 'std::string convert_value(int, const
db_val_t*)':
db_arl_base.cpp:789: warning: enumeration value 'DB1_UNKNOWN' not handled
in switch
COL_LOCAL_BUILDS_ROOT=/home/pshea/_localbuilds/
Compiling jsoncpp-dist/jsoncpp.cpp
g++ -fPIC -DPIC -g -funroll-loops -Wcast-align -m64 -minline-all-stringops
-falign-loops -ftree-vectorize -fno-strict-overflow -mtune=opteron -Wall
-Wno-write-strings -Wno-deprecated -Wno-unused-function -Wno-sign-compare
-Wno-strict-aliasing -I
/home/pshea/_localbuilds//ExternalLibs/boost/V1.60.0_27/ -I ./jsoncpp-dist/
-fPIC -DPIC -g -funroll-loops -Wcast-align -m64 -minline-all-stringops
-falign-loops -ftree-vectorize -fno-strict-overflow -mtune=opteron -Wall
-DNAME='"kamailio"' -DVERSION='"4.2.4"'
-DARCH='"x86_64"' -DOS='linux_'
-DOS_QUOTED='"linux"' -DCOMPILER='"gcc 4.4.7"'
-D__CPU_x86_64 -D__OS_linux
-DSER_VER=4002004 -DCFG_DIR='"/usr/local/etc/kamailio/"' -DPKG_MALLOC
-DSHM_MEM -DSHM_MMAP -DDNS_IP_HACK -DUSE_MCAST -DUSE_TCP -DDISABLE_NAGLE
-DHAVE_RESOLV_RES -DUSE_DNS_CACHE -DUSE_DNS_FAILOVER -DUSE_DST_BLACKLIST
-DUSE_NAPTR -DWITH_XAVP -DF_MALLOC -DDBG_F_MALLOC -DMEM_JOIN_FREE -DUSE_TLS
-DTLS_HOOKS -DUSE_CORE_STATS -DSTATISTICS -DMALLOC_STATS -DWITH_AS_SUPPORT
-DFAST_LOCK -DADAPTIVE_WAIT -DADAPTIVE_WAIT_LOOPS=1024 -DCC_GCC_LIKE_ASM
-DHAVE_GETHOSTBYNAME2 -DHAVE_UNION_SEMUN -DHAVE_SCHED_YIELD
-DHAVE_MSG_NOSIGNAL -DHAVE_MSGHDR_MSG_CONTROL -DHAVE_ALLOCA_H -DHAVE_TIMEGM
-DHAVE_SCHED_SETSCHEDULER -DUSE_RAW_SOCKS -DHAVE_EPOLL -DHAVE_SIGIO_RT
-DSIGINFO64_WORKARROUND -DUSE_FUTEX -DHAVE_SELECT -DKAMAILIO_MOD_INTERFACE
-DRTC_COMMON_TRACE -DMOD_NAME='"db_arl"' -c jsoncpp-dist/jsoncpp.cpp -o
jsoncpp.o
g++ -shared -m64 -Wl,-O2 -Wl,-E db_arl_mod.o db_arl_base.o jsoncpp.o
-lcurl -pthread -L../../lib/srdb2/ -lsrdb2 -L../../lib/srdb1/
-lsrdb1 * -L../../lib/rtctrace/
-lrtctrace* -Wl,-rpath,/tmp/kamailio/BUILD/kamailio-4.2.4/lib/srdb2
-Wl,-rpath,/tmp/kamailio/BUILD/kamailio-4.2.4/lib/srdb1
-Wl,-rpath,/tmp/kamailio/BUILD/kamailio-4.2.4/lib/rtctrace -o db_arl.so
However, during the %install stage - this does seem to cause a problem.
There are different options passed to make, in this case, and I am trying
to figure out how this causes a problem.
In this case, you'll see that the internal library is NOT "up to date" so
make attempts to *rebuild* it. In the link line, you'll see the objects
from the LIBS in my custom module.
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.AkEuuP
...
+ make install quiet=verbose 'skip_modules=mysql jabber cpl-c avp_radius
auth_radius group_radius uri_radius pa postgres osp tlsops unixodbc
dbtext' *basedir=/tmp/kamailio/BUILDROOT/kamailio-4.2.4-0.x86_64
prefix=/usr cfg-prefix=/tmp/kamailio/BUILDROOT/kamailio-4.2.4-0.x86_64*
cfg-target=//etc/kamailio/
...
Makefile.defs defs skipped
make[2]: `libsrdb2.so.1.0' is up to date.
Makefile.defs defs skipped
make[2]: `libsrdb1.so.1.0' is up to date.
Makefile.defs defs skipped
Makefile.defs defs skipped
*/opt/rh/devtoolset-4/root/usr/bin/g++ -fPIC -DPIC -g -funroll-loops
-Wcast-align -m64 -minline-all-stringops -falign-loops -ftree-vectorize
-fno-strict-overflow -mtune=opteron -Wall
-I/home/pshea/_localbuilds//RTC/Common/2.0.0_247//Applications_rhel6_x64_dts4_pic/include
-DNAME='"kamailio"' -DVERSION='"4.2.4"'
-DARCH='"x86_64"' -DOS='linux_'
-DOS_QUOTED='"linux"' -DCOMPILER='"gcc 4.4.7"'
-D__CPU_x86_64 -D__OS_linux
-DSER_VER=4002004 -DCFG_DIR='"/usr/local/etc/kamailio/"' -DPKG_MALLOC
-DSHM_MEM -DSHM_MMAP -DDNS_IP_HACK -DUSE_MCAST -DUSE_TCP -DDISABLE_NAGLE
-DHAVE_RESOLV_RES -DUSE_DNS_CACHE -DUSE_DNS_FAILOVER -DUSE_DST_BLACKLIST
-DUSE_NAPTR -DWITH_XAVP -DF_MALLOC -DDBG_F_MALLOC -DMEM_JOIN_FREE -DUSE_TLS
-DTLS_HOOKS -DUSE_CORE_STATS -DSTATISTICS -DMALLOC_STATS -DWITH_AS_SUPPORT
-DFAST_LOCK -DADAPTIVE_WAIT -DADAPTIVE_WAIT_LOOPS=1024 -DCC_GCC_LIKE_ASM
-DHAVE_GETHOSTBYNAME2 -DHAVE_UNION_SEMUN -DHAVE_SCHED_YIELD
-DHAVE_MSG_NOSIGNAL -DHAVE_MSGHDR_MSG_CONTROL -DHAVE_ALLOCA_H -DHAVE_TIMEGM
-DHAVE_SCHED_SETSCHEDULER -DUSE_RAW_SOCKS -DHAVE_EPOLL -DHAVE_SIGIO_RT
-DSIGINFO64_WORKARROUND -DUSE_FUTEX -DHAVE_SELECT -std=c++0x
-I/home/pshea/_localbuilds//RTC/Common/2.0.0_247//Applications_rhel6_x64_dts4_pic/include
-c rtctrace.c -o rtctrace.o -MMD -MP*
*/opt/rh/devtoolset-4/root/usr/bin/g++ -shared -m64 -Wl,-O2 -Wl,-E
-Wl,-soname,librtctrace.so.1 rtctrace.o db_arl_base.o jsoncpp.o -lcurl
-pthread
-L/home/pshea/_localbuilds//RTC/Common/2.0.0_247//Applications_rhel6_x64_dts4_pic/lib
-lrtccommon
-L/home/pshea/_localbuilds//ExternalLibs/boost/V1.60.0_22/Server_Linux26_x64_dts4_pic/lib
-lboost_system -lboost_thread -lpthread -o librtctrace.so.1.0*
*g++: error: db_arl_base.o: No such file or directory*
*g++: error: jsoncpp.o: No such file or directory*
make[2]: *** [librtctrace.so.1.0] Error 1
make[1]: *** [../../lib/rtctrace/librtctrace.so] Error 2
make: *** [install-modules] Error 1
error: Bad exit status from /var/tmp/rpm-tmp.AkEuuP (%install)
On Wed, Jan 11, 2017 at 8:36 AM, Daniel-Constantin Mierla <miconda(a)gmail.com
wrote:
Hello,
to be sure I understand properly the issue: you say that the value of the
LIBS from Makefile of the module is inherited when compiling the internal
library?
Cheers,
Daniel
On 11/01/2017 04:21, Patrick wrote:
I added a C++ module to kamalio at some point, and now I am trying to
integrate that module with another C++ internal library, but I'm getting
all sorts of headaches when trying to compile.
The latest problem is during the "make install" part of the build - it
seems like the objects from the module are "infecting" the link line of the
internal library it's dependent on.
Here is the Makefile for the module. At the time, the only way I figured
to link in the C++ object was adding them to the LIBS. Now, i think this
interferes with the 'make install' dependencies.
Any thoughs on how to do this properly would be great!
Thanks
*Module Makefile*
#
# db_cassandra module makefile
#
#
# WARNING: do not run this directly, it should be run by the master
Makefile
include ../../Makefile.defs
CXX=g++
LD=g++
auto_gen=
NAME=db_arl.so
ifeq ($(CROSS_COMPILE),)
CURL_BUILDER=$(shell \
if pkg-config --exists libcurl; then \
echo 'pkg-config libcurl'; \
else \
which curl-config; \
fi)
endif
DEFS+=-DKAMAILIO_MOD_INTERFACE -DRTC_COMMON_TRACE
*LIBS += db_arl_base.o jsoncpp.o* -lcurl -pthread
CXXFLAGS=$(CFLAGS:-Wno-deprecated option=)
CXXFLAGS+= -Wno-write-strings -Wno-deprecated -Wno-unused-function
-Wno-sign-compare -Wno-strict-aliasing
CXXFLAGS+= -I ${COL_LOCAL_BUILDS_ROOT}/ExternalLibs/boost/V1.60.0_27/
CXXFLAGS+= -I ./jsoncpp-dist/
SERLIBPATH=../../lib
SER_LIBS+=$(SERLIBPATH)/srdb2/srdb2
SER_LIBS+=$(SERLIBPATH)/srdb1/srdb1
*SER_LIBS+=$(SERLIBPATH)/rtctrace/rtctrace*
include ../../Makefile.modules
jsoncpp.o: jsoncpp-dist/jsoncpp.cpp
@echo COL_LOCAL_BUILDS_ROOT=${COL_LOCAL_BUILDS_ROOT}
@echo "Compiling $<"
$(CXX) $(CXXFLAGS) $(CFLAGS) $(C_DEFS) $(DEFS) -c $< -o $@
db_arl_base.o: db_arl_base.cpp db_arl_base.h
@echo COL_LOCAL_BUILDS_ROOT=${COL_LOCAL_BUILDS_ROOT}
@echo "Compiling $<"
$(CXX) $(CXXFLAGS) $(CFLAGS) $(C_DEFS) $(DEFS) -c $< -o $@
db_arl.so: db_arl_base.o jsoncpp.o
During 'make install' the objects in *red* have no business in the link
line for the internal library
/opt/rh/devtoolset-4/root/usr/bin/g++ -fPIC -DPIC -g -funroll-loops
-Wcast-align -m64 -minline-all-stringops -falign-loops -ftree-vectorize
-fno-strict-overflow -mtune=opteron -Wall -I/home/pshea/_localbuilds/
RTC/Common/2.0.0_247//Applications_rhel6_x64_dts4_pic/include
-DNAME='"kamailio"' -DVERSION='"4.2.4"'
-DARCH='"x86_64"' -DOS='linux_'
-DOS_QUOTED='"linux"' -DCOMPILER='"gcc 4.4.7"'
-D__CPU_x86_64 -D__OS_linux
-DSER_VER=4002004 -DCFG_DIR='"/usr/local/etc/kamailio/"' -DPKG_MALLOC
-DSHM_MEM -DSHM_MMAP -DDNS_IP_HACK -DUSE_MCAST -DUSE_TCP -DDISABLE_NAGLE
-DHAVE_RESOLV_RES -DUSE_DNS_CACHE -DUSE_DNS_FAILOVER -DUSE_DST_BLACKLIST
-DUSE_NAPTR -DWITH_XAVP -DF_MALLOC -DDBG_F_MALLOC -DMEM_JOIN_FREE -DUSE_TLS
-DTLS_HOOKS -DUSE_CORE_STATS -DSTATISTICS -DMALLOC_STATS -DWITH_AS_SUPPORT
-DFAST_LOCK -DADAPTIVE_WAIT -DADAPTIVE_WAIT_LOOPS=1024 -DCC_GCC_LIKE_ASM
-DHAVE_GETHOSTBYNAME2 -DHAVE_UNION_SEMUN -DHAVE_SCHED_YIELD
-DHAVE_MSG_NOSIGNAL -DHAVE_MSGHDR_MSG_CONTROL -DHAVE_ALLOCA_H -DHAVE_TIMEGM
-DHAVE_SCHED_SETSCHEDULER -DUSE_RAW_SOCKS -DHAVE_EPOLL -DHAVE_SIGIO_RT
-DSIGINFO64_WORKARROUND -DUSE_FUTEX -DHAVE_SELECT -std=c++0x
-I/home/pshea/_localbuilds/RTC/Common/2.0.0_247//
Applications_rhel6_x64_dts4_pic/include -c rtctrace.c -o rtctrace.o -MMD
-MP
/opt/rh/devtoolset-4/root/usr/bin/g++ -shared -m64 -Wl,-O2 -Wl,-E
-Wl,-soname,librtctrace.so.1 rtctrace.o * db_arl_base.o jsoncpp.o*
-lcurl -pthread -L/home/pshea/_localbuilds/RTC/Common/2.0.0_247//
Applications_rhel6_x64_dts4_pic/lib -lrtccommon
-L/home/pshea/_localbuilds/ExternalLibs/boost/V1.60.0_22/
Server_Linux26_x64_dts4_pic/lib -lboost_system -lboost_thread -lpthread
-o librtctrace.so.1.0
*g++: error: db_arl_base.o: No such file or directory*
*g++: error: jsoncpp.o: No such file or directory*
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing
listsr-users@lists.sip-router.orghttp://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
--
Daniel-Constantin
Mierlawww.twitter.com/miconda --
www.linkedin.com/in/miconda
Kamailio World Conference - May 8-10, 2017 -
www.kamailioworld.com
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
sr-users(a)lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users