### Description
The Debian package build fails for Kamailio 5.7.4 because it can't find static libssl. This happens because ``LIBSSL_STATIC_SRCPATH`` is set to the wrong location in the rules file.
### Troubleshooting
#### Reproduction
1. Run ``ln -s pkg/kamailio/deb/bookworm debian`` 2. Run ``make deb``
#### Output
``` gcc -shared -g -m64 -Wl,-O2 -Wl,-E -Wl,-z,relro -pthread -rdynamic "-ldl" -Wl,-Bsymbolic-functions tls_bio.o tls_cfg.o tls_config.o tls_ct_wrq.o tls_domain.o tls_dump_vf.o tls_init.o tls_locking.o tls_map.o tls_rand.o tls_rpc.o tls_select.o tls_server.o tls_util.o tls_verify.o tlsa_mod.o -lm /usr/lib64/libssl.a /usr/lib64/libcrypto.a -o tlsa.so /usr/bin/ld: cannot find /usr/lib64/libssl.a: No such file or directory /usr/bin/ld: cannot find /usr/lib64/libcrypto.a: No such file or directory collect2: error: ld returned 1 exit status make[5]: *** [../../Makefile.rules:191: tlsa.so] Error 1 ```
### Possible Solutions
An extremely hacky workaround is to patch the rules file to point ``LIBSSL_STATIC_SRCPATH`` to the right location:
``` sed -i -e "/LIBSSL_STATIC_SRCPATH/a export\ LIBSSL_STATIC_SRCPATH=\/usr\/lib\/$(uname -m)-linux-gnu" pkg/kamailio/deb/bookworm/rules ```
### Additional Information
* **Kamailio Version** - output of `kamailio -v`
``` version: kamailio 5.7.4 (x86_64/linux) flags: USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MMAP, PKG_MALLOC, MEM_JOIN_FREE, Q_MALLOC, F_MALLOC, TLSF_MALLOC, DBG_SR_MEMORY, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLOCKLIST, HAVE_RESOLV_RES, TLS_PTHREAD_MUTEX_SHARED ADAPTIVE_WAIT_LOOPS 1024, MAX_RECV_BUFFER_SIZE 262144, MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB poll method support: poll, epoll_lt, epoll_et, sigio_rt, select. id: unknown compiled with gcc 12.2.0 ```
* **Operating System**:
``` Distributor ID: Debian Description: Debian GNU/Linux 12 (bookworm) Release: 12 Codename: bookworm ```
``` Linux 6.5.0-14-generic #14-Ubuntu SMP PREEMPT_DYNAMIC Tue Nov 14 14:59:49 UTC 2023 x86_64 GNU/Linux ```
From https://kamailio.sipwise.com/view/kam5.7/job/kamailio57-binaries/architectur... ``` gcc -fPIC -DPIC -funroll-loops -Wcast-align -m64 -minline-all-stringops -falign-loops -ftree-vectorize -fno-strict-overflow -mtune=generic -pthread -DKSR_PTHREAD_MUTEX_SHARED -Wall -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -ffile-prefix-map=/build/kamailio-5.7.4+bpo12=. -fstack-protector-strong -Wformat -Werror=format-security -DVERSION_NODATE -DNAME='"kamailio"' -DVERSION='"5.7.4"' -DARCH='"x86_64"' -DOS='linux_' -DOS_QUOTED='"linux"' -DCOMPILER='"gcc 12.2.0"' -D__CPU_x86_64 -D__OS_linux -DVERSIONVAL=5007004 -DCFG_DIR='"/etc/kamailio/"' -DSHARE_DIR='"/usr/share/kamailio/"' -DRUN_DIR='"/var/run/kamailio/"' -DPKG_MALLOC -DSHM_MMAP -DDNS_IP_HACK -DUSE_MCAST -DUSE_TCP -DDISABLE_NAGLE -DHAVE_RESOLV_RES -DUSE_DNS_CACHE -DUSE_DNS_FAILOVER -DUSE_DST_BLOCKLIST -DUSE_NAPTR -DWITH_XAVP -DMEM_JOIN_FREE -DF_MALLOC -DQ_MALLOC -DTLSF_MALLOC -DDBG_SR_MEMORY -DUSE_TLS -DTLS_HOOKS -DUSE_CORE_STATS -DSTATISTICS -DMALLOC_STATS -DUSE_SCTP -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 -DHAVE_IP_MREQN -DUSE_RAW_SOCKS -DHAVE_EPOLL -DHAVE_SIGIO_RT -DSIGINFO64_WORKAROUND -DUSE_FUTEX -DHAVE_SELECT -DKSR_LIBSSL_STATIC -I/usr/lib/x86_64-linux-gnu/include -DMOD_NAME='"tlsa"' -c tls_bio.c -o tls_bio.o -MMD -MP ```
so it's using the proper path : ``` -DKSR_LIBSSL_STATIC -I/usr/lib/x86_64-linux-gnu/include -DMOD_NAME='"tlsa"' ```
Closed #3722 as completed.
simple test Makefile: ``` #!/usr/bin/make -f
# Uncomment this to turn on verbose mode. #export DH_VERBOSE=1
include /usr/share/dpkg/architecture.mk
# Name of libdir in the path for libraries (e.g., the multiarch triplet). export LIBDIR ?= lib/$(DEB_HOST_MULTIARCH)
all: @echo LIBDIR=$(LIBDIR) ```
```shell make echo LIBDIR=lib/x86_64-linux-gnu LIBDIR=lib/x86_64-linux-gnu ```
@linuxmaniac Right, but in ``pkg/kamailio/deb/bookworm/rules``:
``` export LIBDIR ?= lib/$(DEB_HOST_MULTIARCH) ```
Happens after:
``` export LIBSSL_STATIC_SRCPATH=/usr/$(LIBDIR) ```
So when ``LIBSSL_STATIC_SRCPATH`` is set, ``LIBDIR`` contains a value from someplace else.
@linuxmaniac I faced exactly the same situation. 5.7.2 builds fine, but 5.7.6 does not.
there is a possibility that this commit had an impact: https://github.com/kamailio/kamailio/commit/90692361c5158516bf9570dcdd139204...
Still the build is fine in a fresh controlled environment as always
https://kamailio.sipwise.com/view/kam5.7/job/kamailio57-nightly-binaries/arc...
@linuxmaniac , maybe your build environment is somehow different? try to compare the result of the two commands:
``` docker build --build-arg KAMAILIO_VERSION=5.7.3 -t kamailio-deb-573 . && \ docker run --rm kamailio-deb-573
docker build --build-arg KAMAILIO_VERSION=5.7.4 -t kamailio-deb-574 . && \ docker run --rm kamailio-deb-574 ```
**Dockerfile:** ``` FROM debian:bookworm ARG DEBIAN_FRONTEND=noninteractive ARG KAMAILIO_VERSION=5.7.3
RUN apt-get update && apt-get install -y \ build-essential autoconf bison curl debhelper \ default-libmysqlclient-dev docbook-xml dpkg-dev erlang-dev flex gcc g++ git \ libcurl4-openssl-dev libdb-dev libev-dev libevent-dev \ libexpat1-dev libfreeradius-dev libgeoip-dev \ libhiredis-dev libjansson-dev libjson-c-dev \ libldap2-dev liblua5.1-0-dev libmaxminddb-dev \ libmemcached-dev libmnl-dev libmongoc-dev \ libmono-2.0-dev libmosquitto-dev libnats-dev \ libncurses5-dev libpcre3-dev libperl-dev \ libphonenumber-dev libpq-dev librabbitmq-dev \ libradcli-dev libreadline-dev libsasl2-dev \ libsctp-dev libsecsipid-dev libsnmp-dev \ libsqlite3-dev libssl-dev libsystemd-dev \ libunistring-dev libwebsockets-dev libxml2-dev \ pkg-config python3-dev ruby-dev unixodbc-dev \ uuid-dev xsltproc git wget
RUN cd /usr/src \ && git clone https://github.com/kamailio/kamailio.git kamailio \ && cd kamailio \ && git checkout -b $KAMAILIO_VERSION tags/$KAMAILIO_VERSION \ && ln -s pkg/kamailio/deb/bookworm debian \ && make cfg \ && make -j `nproc` deb
ENTRYPOINT ["/bin/bash", "-c"] CMD ["ls -al /usr/src/*.deb"] ```
``` build-dependencies of the package being currently built. Depends: bison, debhelper (>= 9), default-libmysqlclient-dev, docbook-xml, dpkg-dev (>= 1.16.1.1), erlang-dev, flex, libcurl4-openssl-dev, libdb-dev (>= 4.6.19), libev-dev, libevent-dev, libexpat1-dev, libgeoip-dev (>= 1.4.5), libhiredis-dev (>= 0.10.0), libjansson-dev, libjson-c-dev, libldap2-dev, liblua5.1-0-dev, libmaxminddb-dev, libmemcached-dev, libmnl-dev, libmongoc-dev, libmono-2.0-dev, libmosquitto-dev, libnats-dev, libncurses-dev, libpcre3-dev, libperl-dev, libphonenumber-dev (>= 7), libpq-dev, librabbitmq-dev, libradcli-dev, libreadline-dev, libsasl2-dev, libsctp-dev, libsecsipid-dev, libsnmp-dev, libsqlite3-dev, libssl-dev, libsystemd-dev, libunistring-dev, libwebsockets-dev, libxml2-dev, openssl, pkg-config, python3, python3-dev, ruby-dev, unixodbc-dev, uuid-dev, xsltproc, zlib1g-dev ```
@linuxmaniac , setting library paths helps: ``` make deb LIBDIR=lib/x86_64-linux-gnu ```