[Pdns-dev] building pdns-recursor 3.1.1 on OpenBSD 3.9

Matthijs Mohlmann matthijs at cacholong.nl
Tue Jun 6 18:04:18 CEST 2006


Eric Sproul wrote:
> Hi,
> I asked about this on IRC yesterday, but then my connection was 
> interrupted so I might have missed a response.  I'm trying to build the 
> latest pdns-recursor (3.1.1) on OpenBSD 3.9, and getting nowhere.  I 
> would like to run pdns, but I think there may be a required header that 
> OpenBSD lacks, namely ucontext.h.  I googled a bit yesterday and it 
> seems that OpenBSD and MacOS X are the two platforms that do not include 
> this thing, and pdns needs it.  The FAQ entry about OpenBSD refers to 
> problems that are several years old, so I had hoped I could get it to 
> build.
> 
> I get the following result, culminating in the error about ucontext. 
> Hopefully I haven't missed something obvious in my build environment.  :)
> 
> Any advice or assistance would be appreciated.  If I can't make this 
> work, that's OK.  I'd just prefer to use pdns if possible.
> Thanks,
> Eric
> 
> 
> :~$ uname -srmv
> OpenBSD 3.9 GENERIC.MP#598 i386
> 
> :~$ gcc --version
> gcc (GCC) 3.3.5 (propolice)
> 
> :pdns-recursor-3.1.1$ CXXFLAGS=-I/home/esproul/src/boost_1_33_1 gmake
> g++ -I/home/esproul/src/boost_1_33_1 -Wall -O3  -MM -MG *.cc *.hh > dep
> g++: ahuexception.hh: linker input file unused because linking not done
> g++: arguments.hh: linker input file unused because linking not done
> g++: base64.hh: linker input file unused because linking not done
> g++: dns.hh: linker input file unused because linking not done
> g++: dnsparser.hh: linker input file unused because linking not done
> g++: dnsrecords.hh: linker input file unused because linking not done
> g++: dnswriter.hh: linker input file unused because linking not done
> g++: iputils.hh: linker input file unused because linking not done
> g++: lock.hh: linker input file unused because linking not done
> g++: logger.hh: linker input file unused because linking not done
> g++: lwres.hh: linker input file unused because linking not done
> g++: misc.hh: linker input file unused because linking not done
> g++: mplexer.hh: linker input file unused because linking not done
> g++: mtasker.hh: linker input file unused because linking not done
> g++: ntservice.hh: linker input file unused because linking not done
> g++: qtype.hh: linker input file unused because linking not done
> g++: rcpgenerator.hh: linker input file unused because linking not done
> g++: rec_channel.hh: linker input file unused because linking not done
> g++: recursor_cache.hh: linker input file unused because linking not done
> g++: recursorservice.hh: linker input file unused because linking not done
> g++: singleton.hh: linker input file unused because linking not done
> g++: sstuff.hh: linker input file unused because linking not done
> g++: syncres.hh: linker input file unused because linking not done
> g++: utility.hh: linker input file unused because linking not done
> g++: win32_mtasker.hh: linker input file unused because linking not done
> g++: zoneparser-tng.hh: linker input file unused because linking not done
> 
> PLEASE READ: If you get an error mentioning #include 
> <boost/something.hpp>, please read README
> PLEASE READ: for an easy fix!
> 
> g++ -I/home/esproul/src/boost_1_33_1 -Wall -O3    -c -o syncres.o 
> syncres.cc
> In file included from syncres.hh:4,
>                  from syncres.cc:20:
> dns.hh:179:1: warning: "LITTLE_ENDIAN" redefined
> In file included from /usr/include/machine/endian.h:68,
>                  from /usr/include/sys/types.h:45,
>                  from /usr/include/sys/param.h:56,
>                  from /usr/include/arpa/inet.h:64,
>                  from utility.hh:42,
>                  from syncres.cc:19:
> /usr/include/sys/endian.h:46:1: warning: this is the location of the 
> previous definition
> In file included from syncres.hh:4,
>                  from syncres.cc:20:
> dns.hh:180:1: warning: "BIG_ENDIAN" redefined
> In file included from /usr/include/machine/endian.h:68,
>                  from /usr/include/sys/types.h:45,
>                  from /usr/include/sys/param.h:56,
>                  from /usr/include/arpa/inet.h:64,
>                  from utility.hh:42,
>                  from syncres.cc:19:
> /usr/include/sys/endian.h:47:1: warning: this is the location of the 
> previous definition
> In file included from syncres.hh:4,
>                  from syncres.cc:20:
> dns.hh:181:1: warning: "PDP_ENDIAN" redefined
> In file included from /usr/include/machine/endian.h:68,
>                  from /usr/include/sys/types.h:45,
>                  from /usr/include/sys/param.h:56,
>                  from /usr/include/arpa/inet.h:64,
>                  from utility.hh:42,
>                  from syncres.cc:19:
> /usr/include/sys/endian.h:48:1: warning: this is the location of the 
> previous definition
> In file included from syncres.hh:4,
>                  from syncres.cc:20:
> dns.hh:188:1: warning: "BYTE_ORDER" redefined
> In file included from /usr/include/machine/endian.h:68,
>                  from /usr/include/sys/types.h:45,
>                  from /usr/include/sys/param.h:56,
>                  from /usr/include/arpa/inet.h:64,
>                  from utility.hh:42,
>                  from syncres.cc:19:
> /usr/include/sys/endian.h:49:1: warning: this is the location of the 
> previous definition
> In file included from syncres.hh:20,
>                  from syncres.cc:20:
> mtasker.hh:27:22: ucontext.h: No such file or directory
> gmake: *** [syncres.o] Error 1

Hi,

As far as I know, OpenBSD and FreeBSD 4.x still have not implemented the 
functions swapcontext and getcontext in libc. These functions are 
required for mtasker. Same goes for a few other architectures on the 
Linux platform.

Regards,

Matthijs Mohlmann




More information about the Pdns-dev mailing list