Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 15 Aug 2001 09:23:09 -0500
From:      Mike Meyer <mwm@mired.org>
To:        "Karel J. Bosschaart" <karelj@wop21.wop.wtb.tue.nl>
Cc:        questions@FreeBSD.ORG
Subject:   Re: Applixware 5.0 on recent FreeBSD version
Message-ID:  <15226.34253.458785.129050@guru.mired.org>
In-Reply-To: <20010815160734.A39919@wop21.wop.wtb.tue.nl>
References:  <69300995@toto.iv> <15226.22699.145222.587526@guru.mired.org> <20010815160734.A39919@wop21.wop.wtb.tue.nl>

next in thread | previous in thread | raw e-mail | index | archive | help
Karel J. Bosschaart <karelj@wop21.wop.wtb.tue.nl> types:
> On Wed, Aug 15, 2001 at 06:10:35AM -0500, Mike Meyer wrote:
> > Karel J. Bosschaart <karelj@wop21.wop.wtb.tue.nl> types:
> > > I thought it came up in the list before but couldn't find anything in
> > > the archive. Also, I'm pretty sure I had it running a while ago on an
> > > older FreeBSD version.
> > You need to install the 3x compatability libraries. If you have source
> > installed, you can install them by going to
> > /usr/src/lib/compat/compat3x.i386 and doing "make install". If you are
> > tracking -stable, add "COMPAT3X=yes" to /etc/make.conf so they will be
> > updated with the system.
> Another poster already mentioned the same, but thank you anyway :-).

Sigh. Yeah, I just looked past the answers.

> It works fine on one machine, but on another machine it gave me trouble 
> with gtk/glib versions. Version 1.2.10 is installed (and lots of ports 
> depending on it), but Applixware expects 1.2.8. I forced Applixware to
> install anyway, but now it does not start complaining about 'Undefined
> symbol "getresuid"'. Hmmm, I guess there must be some way to work around,
> but for now I'm happy it runs on at least one machine :-).

The 1.2.8 and 1.2.10 is immaterial. What matters is what versions of
the unix libraries you had when you built the gtk/glib port. FreeBSD
put getresuid in libc_r, which applix isn't loading. So if your
FreeBSD has getresuid, the port config will find that version, try and
use it - and fail for applix. If the system doesn't have it, the port
config builds it's own in, and that works fine.

The solution I use is to compile this little C function. It returns a
failure, which causes gtk/glib to do the same thing it does if
getresuid isn't there. Others prefer C++ so they can drop the
paramenter names, but that makes the object slightly larger.

/*
 * Fail a getresuid call so that clients will use it properly.
 *
 * compile as cc -shared -fPIC -DPIC -o getresuid.so getresuid.c
 */
#include <sys/types.h>

int getresuid(uid_t *a, uid_t *b, uid_t *c) {
      return 1 ;
    }

Next install the resulting getresuid.so somewhere reasonable - like
/usr/local/lib. Then change the applix shell script to define the
environment variable LD_PRELOAD to be the name of the .so file before
it starts the applix binary.

	<mike
--
Mike Meyer <mwm@mired.org>			http://www.mired.org/home/mwm/
Independent WWW/Perforce/FreeBSD/Unix consultant, email for more information.

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?15226.34253.458785.129050>