Comments on pkgsrc and DragonFly
Francois Tigeot
ftigeot at wolfpond.org
Fri Jan 7 13:14:17 PST 2011
On Fri, Jan 07, 2011 at 03:03:58PM -0500, Stephane Russell wrote:
> While porting programs to DragonFly, I had these issues (which are not
> bugs):
>
> - "BSD" is undefined in DragonFly, this isn't working:
> #if (defined(BSD) && BSD >= 199306)
Never saw this one.
All tests I encountered in third-party software were looking for full OS
names or OS-specific defines like "__FreeBSD__" or "irix"
> - In many autoconf scripts, BSD variants are grouped this way:
>
> case ${OSARCH} in
> *BSD)
>
> case "$uname" in
> *BSD*)
>
> both are excluding DragonFly, since uname -s return "DragonFly" and
These are a pain, but I don't think they are so pervasive; Darwin is
also considered as a BSD system and has the same problem here.
In all cases I've seen, it was fixed with a new test checking for the
full OS name:
case ${OSARCH} in
*BSD)
blah
+ Darwin)
+ blah
> But it does mean that choosing FreeBSD as build type won't
> necessarly mean no changes required on the autotool scripts.
>
> - Some programs are compiling successfully by defining FreeBSD as build
> type. Is DragonFly kept close as possible to FreeBSD on purpose or
> should we expect this to be a vanishing legacy?
This is a vanishing legacy.
I had to distinguish between FreeBSD and DragonFly when porting the jdk
In some cases, FreeBSD oriented code was failing and I had to use the
same #define directives as NetBSD or Linux.
Kde4 packages are also troublesome; if I remember correctly, they consider
DragonFly as FreeBSD and fail at some stage during the compilation.
> Official positions here will me help me knowing what to expect while
> porting.
When it's on a small scale, one-liner patches fit the bill and they can
be safely sent upstream:
- #ifdef __FreeBSD__
+ #if defined(__FreeBSD__) || defined(__DragonFly__)
In other cases, adding an abstraction function such as isLinuxOrBSD may
help replace a bunch of #defines.
Sometimes, the original code is really weird/non-portable and can be
safely replaced by an equivalent construct which works equally well on
all known operating systems.
This is no official position, simply my experience so far.
--
Francois Tigeot
More information about the Users
mailing list