Jonathon McKitrick wrote:
> I've volunteered to do this port, with the expectation that it's within my
> ability. I'm just a bit over my head, but that's how I'll learn, right?
> I've gotten the -current version to build and install, but I've found 2
> problems so far: gkrellm loads and cannot resolve the symbol _flockfile.
The "flockfile" is a POSIX libc call that supports the locking
of a particular file descriptor, e.g.:
It's basically used to allow a thread to say "I own this file". I'm
very surprised that, if it can't resolve that, it doesn't also complain
about "funlockfile". Most likely, something is not protected by a
"#if _SGI_REENTRANT_FUNCTIONS" that should be; look for the use of
flockfile in the source code, or that feature test macro in the new
FreeBSD header files. If FreeBSD defines it, but doesn't expose
"flockfile", "ftrylockfile", and "funlockfile", it's wrong. Most
likely, it's just the source code you are trying to compile is buggy.
> Also, a build of xmms (which uses threads) fails in configure because it
> cannot find pthreads support.
Again, you are going to have to look at the code you are compiling;
specifically, you will need to track down the feature-test code that
looks for the pthreads support, and see why the existance of libc_r
is insufficient to find the code.
Usually, I see this problem with autoconf code that was written to
only run under "bash", and which can't run correctly under a
standard Bourne shell. Usually, it's a result of compound "test"
statements (in my experience).
> I'd like to solve this myself, but I need a little push in the right
> direction. Could someone give me a hint? Is it simply a matter of
> undefining functions that are not present in -stable?
The libc_r functions are actually SGI functions, so it's probably
buggy code that someone forgot to put feature tests around when
submitting a patch. The other is likely whatever it's using to
check if threads exists is buggy.
Good luck in your task; normally, I don't run -current (it will not
run on most of my hardware), but you will definitely need to have a
-current box available for reference for this, I think, unless you
go into the bowels of xmms (the gkrellm problem should be easy to
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message