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*
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 list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
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@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@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
Hello,
do you have your own rpm specs, or do you use an updated version (to add your mode) of some spec in kamailio repository?
Cheers, Daniel
On 11/01/2017 16:24, Patrick wrote:
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@gmail.com mailto:miconda@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 list sr-users@lists.sip-router.org <mailto:sr-users@lists.sip-router.org> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users <http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users>
-- Daniel-Constantin Mierla www.twitter.com/miconda <http://www.twitter.com/miconda> -- www.linkedin.com/in/miconda <http://www.linkedin.com/in/miconda> Kamailio World Conference - May 8-10, 2017 - www.kamailioworld.com <http://www.kamailioworld.com> _______________________________________________ SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org <mailto:sr-users@lists.sip-router.org> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users <http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users>
I use a slightly modified version of ....pkg/kamailio/rpm/kamailio.spec
By "mode" if you mean in the compile flag -DRTC_COMMON_TRACE, I update DEFS in each module that uses it the internal library DEFS+=-DKAMAILIO_MOD_INTERFACE *-DRTC_COMMON_TRACE*
If you were instead asking about including the module,m then yes - I added that to the rpm spec: %{_libdir}/kamailio/modules/db_arl.so
On Thu, Jan 12, 2017 at 5:32 AM, Daniel-Constantin Mierla <miconda@gmail.com
wrote:
Hello,
do you have your own rpm specs, or do you use an updated version (to add your mode) of some spec in kamailio repository?
Cheers, Daniel
On 11/01/2017 16:24, Patrick wrote:
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@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@lists.sip-router.org http://lists.sip-router.org/cg i-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
Oh, incomplete typing: it was supposed to be: (to add your module)
Can you paste here the content of the Makefile in your internal library?
Cheers, Daniel
On 12/01/2017 11:52, Patrick wrote:
I use a slightly modified version of ....pkg/kamailio/rpm/kamailio.spec
By "mode" if you mean in the compile flag -DRTC_COMMON_TRACE, I update DEFS in each module that uses it the internal library DEFS+=-DKAMAILIO_MOD_INTERFACE *-DRTC_COMMON_TRACE*
If you were instead asking about including the module,m then yes - I added that to the rpm spec: %{_libdir}/kamailio/modules/db_arl.so
On Thu, Jan 12, 2017 at 5:32 AM, Daniel-Constantin Mierla <miconda@gmail.com mailto:miconda@gmail.com> wrote:
Hello, do you have your own rpm specs, or do you use an updated version (to add your mode) of some spec in kamailio repository? Cheers, Daniel On 11/01/2017 16:24, Patrick wrote:
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@gmail.com <mailto:miconda@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 list sr-users@lists.sip-router.org <mailto:sr-users@lists.sip-router.org> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users <http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users>
-- Daniel-Constantin Mierla www.twitter.com/miconda <http://www.twitter.com/miconda> -- www.linkedin.com/in/miconda <http://www.linkedin.com/in/miconda> Kamailio World Conference - May 8-10, 2017 - www.kamailioworld.com <http://www.kamailioworld.com> _______________________________________________ SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org <mailto:sr-users@lists.sip-router.org> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users <http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users>
-- Daniel-Constantin Mierla www.twitter.com/miconda <http://www.twitter.com/miconda> -- www.linkedin.com/in/miconda <http://www.linkedin.com/in/miconda> Kamailio World Conference - May 8-10, 2017 - www.kamailioworld.com <http://www.kamailioworld.com>
Ahhh... looks like it was the 'LIBS+=' in the internal LIB Makefile Thanks for the help!
Pat
include ../../Makefile.defs
CC=/opt/rh/devtoolset-4/root/usr/bin/g++ CXX=/opt/rh/devtoolset-4/root/usr/bin/g++ LD=/opt/rh/devtoolset-4/root/usr/bin/g++ auto_gen= NAME:=rtctrace MAJOR_VER=1 MINOR_VER=0 BUGFIX_VER=0
BOOST_DIR = ${COL_LOCAL_BUILDS_ROOT}/ExternalLibs/boost/V1.60.0_22 RTC_COMMON_DIR = ${COL_LOCAL_BUILDS_ROOT}/RTC/Common/2.0.0_247/
C_INCLUDES+=-I${RTC_COMMON_DIR}/Applications_rhel6_x64_dts4_pic/include DEFS+=-std=c++0x -I${RTC_COMMON_DIR}/Applications_rhel6_x64_dts4_pic/include LIBS*+=*-L${RTC_COMMON_DIR}/Applications_rhel6_x64_dts4_pic/lib -lrtccommon -L${BOOST_DIR}/Server_Linux26_x64_dts4_pic/lib -lboost_system -lboost_thread -lpthread
include ../../Makefile.libs
On Thu, Jan 12, 2017 at 5:56 AM, Daniel-Constantin Mierla <miconda@gmail.com
wrote:
Oh, incomplete typing: it was supposed to be: (to add your module) Can you paste here the content of the Makefile in your internal library?
Cheers, Daniel
On 12/01/2017 11:52, Patrick wrote:
I use a slightly modified version of ....pkg/kamailio/rpm/kamailio.spec
By "mode" if you mean in the compile flag -DRTC_COMMON_TRACE, I update DEFS in each module that uses it the internal library DEFS+=-DKAMAILIO_MOD_INTERFACE *-DRTC_COMMON_TRACE*
If you were instead asking about including the module,m then yes - I added that to the rpm spec: %{_libdir}/kamailio/modules/db_arl.so
On Thu, Jan 12, 2017 at 5:32 AM, Daniel-Constantin Mierla < miconda@gmail.com> wrote:
Hello,
do you have your own rpm specs, or do you use an updated version (to add your mode) of some spec in kamailio repository?
Cheers, Daniel
On 11/01/2017 16:24, Patrick wrote:
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@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@lists.sip-router.org http://lists.sip-router.org/cg i-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
--
Daniel-Constantin Mierlawww.twitter.com/miconda -- www.linkedin.com/in/miconda Kamailio World Conference - May 8-10, 2017 - www.kamailioworld.com
Welcome!
Daniel
On 12/01/2017 12:26, Patrick wrote:
Ahhh... looks like it was the 'LIBS+=' in the internal LIB Makefile Thanks for the help!
Pat
include ../../Makefile.defs
CC=/opt/rh/devtoolset-4/root/usr/bin/g++ CXX=/opt/rh/devtoolset-4/root/usr/bin/g++ LD=/opt/rh/devtoolset-4/root/usr/bin/g++ auto_gen= NAME:=rtctrace MAJOR_VER=1 MINOR_VER=0 BUGFIX_VER=0
BOOST_DIR = ${COL_LOCAL_BUILDS_ROOT}/ExternalLibs/boost/V1.60.0_22 RTC_COMMON_DIR = ${COL_LOCAL_BUILDS_ROOT}/RTC/Common/2.0.0_247/
C_INCLUDES+=-I${RTC_COMMON_DIR}/Applications_rhel6_x64_dts4_pic/include DEFS+=-std=c++0x -I${RTC_COMMON_DIR}/Applications_rhel6_x64_dts4_pic/include LIBS*+=*-L${RTC_COMMON_DIR}/Applications_rhel6_x64_dts4_pic/lib -lrtccommon -L${BOOST_DIR}/Server_Linux26_x64_dts4_pic/lib -lboost_system -lboost_thread -lpthread
include ../../Makefile.libs
On Thu, Jan 12, 2017 at 5:56 AM, Daniel-Constantin Mierla <miconda@gmail.com mailto:miconda@gmail.com> wrote:
Oh, incomplete typing: it was supposed to be: (to add your module) Can you paste here the content of the Makefile in your internal library? Cheers, Daniel On 12/01/2017 11:52, Patrick wrote:
I use a slightly modified version of ....pkg/kamailio/rpm/kamailio.spec By "mode" if you mean in the compile flag -DRTC_COMMON_TRACE, I update DEFS in each module that uses it the internal library DEFS+=-DKAMAILIO_MOD_INTERFACE *-DRTC_COMMON_TRACE* If you were instead asking about including the module,m then yes - I added that to the rpm spec: %{_libdir}/kamailio/modules/db_arl.so On Thu, Jan 12, 2017 at 5:32 AM, Daniel-Constantin Mierla <miconda@gmail.com <mailto:miconda@gmail.com>> wrote: Hello, do you have your own rpm specs, or do you use an updated version (to add your mode) of some spec in kamailio repository? Cheers, Daniel On 11/01/2017 16:24, Patrick wrote:
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@gmail.com <mailto:miconda@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 list sr-users@lists.sip-router.org <mailto:sr-users@lists.sip-router.org> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users <http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users>
-- Daniel-Constantin Mierla www.twitter.com/miconda <http://www.twitter.com/miconda> -- www.linkedin.com/in/miconda <http://www.linkedin.com/in/miconda> Kamailio World Conference - May 8-10, 2017 - www.kamailioworld.com <http://www.kamailioworld.com> _______________________________________________ SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org <mailto:sr-users@lists.sip-router.org> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users <http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users>
-- Daniel-Constantin Mierla www.twitter.com/miconda <http://www.twitter.com/miconda> -- www.linkedin.com/in/miconda <http://www.linkedin.com/in/miconda> Kamailio World Conference - May 8-10, 2017 - www.kamailioworld.com <http://www.kamailioworld.com>
-- Daniel-Constantin Mierla www.twitter.com/miconda <http://www.twitter.com/miconda> -- www.linkedin.com/in/miconda <http://www.linkedin.com/in/miconda> Kamailio World Conference - May 8-10, 2017 - www.kamailioworld.com <http://www.kamailioworld.com>