PREFIX "cleverness"

Mike mike.patterson at
Thu Sep 2 11:11:26 PDT 2004

On Thu, 2004-09-02 at 11:59, Oliver Eikemeier wrote:

> make PREFIX='/usr/local/${PORTNAME}' install

I'd thought of that, but I wasn't certain if there was an automated way
to do this (via make.conf).

> You need to build a link farm from LOCALBASE to the files installed by 
> your port, since other ports expect them to be there.  Another 
> consequence is that new CONFLICTS checking routines are required.
> Your degree of insanity depends on just what you are trying to 
> accomplish. If you want to do this `just because it can be done' -  yes. 
> If you believe it will better separate the packing lists of ports - 
> maybe. If you attempt to pkgsrcify the FreeBSD ports collection - who 
> knows.

To better explain, at my place of work (and I should have posted with my
work address, since that's also my subscribed address) we use a locally
built system called xhier for shipping packages and binaries and config
files and such around. has papers from a
presentation made at LISA '91 for the morbidly curious.  It's an old
paper, but it's an old system.  Basically the intention was (and is) to
provide some level of homogenity across multiple platforms.  I could go
on, but I won't since it'd start to get off-topic.

One of the conventions used is packages are installed under
/software/packagename (where packagename may - and ought to - include a
version number).  Programs can be configured to appear in default paths
or not.  Links are made as required into system locations.  There's a
utility called showpath that can be used to set paths programatically. 
Packages are built on a single machine (architecture master or
archmaster) and then distributed out to clients.

Practically, this can eliminate the idea of package conflicts altogether
(so I'm not so concerned about that) because it just doesn't put the
conflicting packages into the default path - only one package can be the
default version of a given application at any time.  (So gcc-3 can point
to gcc-3.3, but gcc 3.2 and 3.4 can be installed as well.  You just need
to tell your Makefiles where to look instead.)

Currently there's some interest in using FreeBSD machines in our
department, but one of the sticking points is (as it is with any new OS
or architecture) "can xhier work on it".  I've set up several projects
that have long been sorely needed on a FreeBSD machine on the "it's
easier to beg forgiveness than to ask permission" premise, but those
projects have now attracted attention so I'd like to head off complaints
about FreeBSD lacking xhier before they even come up.

Conventionally packages are built on the archmasters by hand:
"./configure --prefix=/software/packagename" usually does the trick. 
However, I'd like to take advantage of the ports system if I can.  The
systems for configuring and patching and such are already there, after
all; it will save some steps, and plus I'd be able to push it even
more:  "Look, I xhiered this package in 10 minutes on FreeBSD, it took
you a full day for Solaris."

What I'd envisioned was building the ports on the archmaster and then
using xhier to ship them to client machines, same way we do with other
arches (but maybe even better if I could do "make package" and ship the
package tarball across to be installed with pkgadd).

Or maybe I'm making too much work for myself, I don't know.  But I was
curious as to how workable such a scheme would be.  From yours and
Sergey's responses, I'm still unsure so I guess I'll have to try :-) -
but if you have any more comments based on what I've said I'd be glad to
hear them.


More information about the freebsd-ports mailing list