Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 25 Oct 2002 23:32:04 -0700
From:      Adam Weinberger <adamw@FreeBSD.ORG>
To:        Chip Wiegand <chip@wiegand.org>
Cc:        questions@FreeBSD.ORG
Subject:   Re: eterm build error
Message-ID:  <20021026063204.GC80277@vectors.cx>
In-Reply-To: <20021025231741.492263e1.chip@wiegand.org>
References:  <3DBA277A.30801@wiegand.org> <20021026060416.GA80277@vectors.cx> <20021025231741.492263e1.chip@wiegand.org>

next in thread | previous in thread | raw e-mail | index | archive | help
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

>> (10.25.2002 @ 2317 PST): Chip Wiegand said, in 2.4K: <<
> Adam Weinberger wrote this stuff on Fri, 25 Oct 2002 23:04:16 -0700:
> > In x11/eterm/Makefile, libast needs to bump the major revision. Change
> > the part of LIB_DEPENDS that says "ast.1" to "ast.2" and redo your
> > portinstall.
> > 
> > - -Adam
>  
> Thanks Adam, 
> that worked. How do you learn about something like that?

Simple answer: read the porter's handbook.
http://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/index.html

More explanatory answer:
Hopefully it'll help explain a good ports diagnostic process...

- From the log you gave, installing eterm made you build a dependency
which was already installed. If you build x, but the ports system
installs y, then y is a dependency of x. Part of the ports build is a
list of things that are required to make the port work. The eterm
Makefile has a list of libraries that eterm needs:

LIB_DEPENDS=    Imlib2.1:${PORTSDIR}/graphics/imlib2 \
                ast.1:${PORTSDIR}/devel/libast

"ast.1" means "look for the library libast.so.2". eterm also looks for
libImlib2.so.1. Get it?

Now, your log showed that your system built libast but it was already
installed. Here's a little diagram:

Build eterm -> Port needs libast.so.1 -> It doesn't exist -> Install
libast -> It's already installed -> Barf.

So, there can only be one of two problems: either libast.so.1 DOES exist
and it's not being found (a transient linker error cuz you mucked with
/etc/make.conf or ldd), or the more likely possibility: libast.so.1
doesn't exist.

% monkey@smacky:~% pkg_info -L libast\*|grep \.so
/usr/X11R6/include/libast/socket.h
/usr/X11R6/lib/libast.so
/usr/X11R6/lib/libast.so.2

or:

% monkey@smacky:~% grep \.so /usr/ports/devel/libast/pkg-plist 
include/libast/socket.h
lib/libast.so
lib/libast.so.2

There's the problem: libast.so is up to version 2. Fix what eterm is
looking for, and it'll stop digging in the wrong holes.

Summary:
If a port tries to install a package that's already installed, it's
looking for a wrong library version number, or a file that doesn't
exist. This usually happens because something is out of date. Find what
it's looking for, and find out what it SHOULD be looking for.

- -Adam


- --
Adam Weinberger
adam@vectors.cx
adamw@FreeBSD.ORG

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.0 (FreeBSD)

iD8DBQE9ujbko8KM2ULHQ/0RAs0RAJ9dOzzMukdHxF1Odie3PwIoBIYj0wCgtsDD
sefX8FP27itsk1YXN6Ew41A=
=uslD
-----END PGP SIGNATURE-----

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?20021026063204.GC80277>