[sr-dev] minor issues building on NetBSD

Daniel-Constantin Mierla miconda at gmail.com
Tue Mar 17 08:30:13 CET 2020


Hello,

On 17.03.20 00:36, Greg Troxel wrote:
> I'm working on adding 5.3.3 to pkgsrc, and have run into a few minor
> things.  I'm mentioning them here in the hopes of being steered towards
> the preferred way to fix.
>
> (I hope this belongs on -dev; let me know if not.)
>
> 1) -ldl
>
> In src/Makefile.defs, I had to do:
>
>   -LD_PMUTEX_OPTS = -pthread -rdynamic -ldl -Wl,-Bsymbolic-functions
>   +LD_PMUTEX_OPTS = -pthread -rdynamic -Wl,-Bsymbolic-functions
>
> because on NetBSD there is no -ldl and dlopen is just in libc.
>
> My suggested fix is to define a LD_LIBDL per OS and use that variable
> instead when it would be needed.
we are open to adjust as needed to make it work on NetBSD, to my
knowledge most of the active developers are using Linux, so maybe some
compile switches diverted into a more Linux-specific form. You can make
a pull request with the changes you want to be applied and we can test
on linux to be sure nothing is broken.
>
> 2) lib64
>
> I did
>
>   -LIBDIR ?=
>   -ifeq ($(LIBDIR),)
>   -ARCHBSZ= $(shell echo $(ARCH) | sed -e 's/.*64.*/64b/')
>   -ifeq ($(ARCHBSZ),64b)
>   -       LIBDIR = lib64
>   -else
>   -       LIBDIR = lib
>   -endif
>   -endif
>   +LIBDIR = lib
>
> because on NetBSD native libs always go in lib, and we put emulated
> (other arch that can be run, so i386 on amd64 is considered emulated) in
> /emul/foo.  As I understand it this is true on other BSDs, Solaris, and
> probably things like AIX and IRIX.
>
> So I would suggest that this be guarded with an "if linux".  Perhaps
> there are other systems that also want lib64.

This is the default when compiling and installing from sources. Debian
packages use a different path for libs. I think there is an option to
overwrite the value from command line, if not, I am fine to add guard
condition on linux or add the option to set it from command line.


>
> 3) namespace visibility
>
> In src/lib/srdb1/db_ut.c there is some complicated namespace visibility
> macro use, to ensure strptime is vailable.   Then after setting one,
> there are others to recover from that.  On NetBSD, it didn't recover.  I
> ripped it all out and
>
> +#define _NETBSD_SOURCE
> +#include <sys/types.h>
>
> which isn't right either of course.
>
> What I'd suggest is to avoid any namespace mucking except on a
> particular system and version of that system known to need it, as mostly
> things seem to go better with no visibility definitions.
>
> I also have found problems with changing the visibility defines, running
> into a situation where one header hid something but then later when it
> shouldn't have been some other header wanted to include the first
> header, but it had already been processed. 
>
> And, the code as is doens't seem to undo the defines after including,
> even though it seems to try to.

Indeed, some of these conditions got quite complex as we developed over
the time, almost of 20 years of trying to support various versions of
OSes and libs. Likely many are no longer needed because those OSes/libs
versions are not used any more. I am suggesting the same thing here: try
to make pull requests with what you know is good for netbsd and we will
try to make it not break linux.

Cheers,
Daniel

>
>
> Thanks for any hints,
> Greg
>
> _______________________________________________
> Kamailio (SER) - Development Mailing List
> sr-dev at lists.kamailio.org
> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev

-- 
Daniel-Constantin Mierla -- www.asipto.com
www.twitter.com/miconda -- www.linkedin.com/in/miconda




More information about the sr-dev mailing list