From owner-freebsd-ports Wed Apr 19 05:54:00 1995 Return-Path: ports-owner Received: (from majordom@localhost) by freefall.cdrom.com (8.6.10/8.6.6) id FAA18357 for ports-outgoing; Wed, 19 Apr 1995 05:54:00 -0700 Received: from licorice.larc.nasa.gov (licorice.larc.nasa.gov [128.155.2.31]) by freefall.cdrom.com (8.6.10/8.6.6) with ESMTP id FAA18351 for ; Wed, 19 Apr 1995 05:53:57 -0700 Received: by licorice.larc.nasa.gov (8.6.11/server2.4) id IAA12736; Wed, 19 Apr 1995 08:54:05 -0400 Message-Id: <199504191254.IAA12736@licorice.larc.nasa.gov> Date: Wed, 19 Apr 1995 08:54:05 -0400 From: Travis L Priest To: asami@cs.berkeley.edu Cc: ports@FreeBSD.org Subject: Re: Ports hackers wanted! (fwd) In-Reply-To: <199504191150.EAA09504@silvia.HIP.Berkeley.EDU> References: <199504181945.UAA16150@nietzsche> <199504191150.EAA09504@silvia.HIP.Berkeley.EDU> Sender: ports-owner@FreeBSD.org Precedence: bulk Wed, Satoshi Asami wrote: > * In light of this, I would like to see our X-packages go into a seperate > * /usr/local/X11 tree. I don't want to reinstall all X-packages when > * I upgrade my /usr/X11R6 tree, everytime a new XFree86. > > I'd love to see this too, but how is it going to work? Binaries are > okay, but what's going to happen if your port has a library that it > wants to install? Or a header file? Let's take xpm for example. On my FreeBSD system, I've built it into /usr/local/xpm-3.4c (with bin, lib, and man subdirs) and linked it into /usr/local/{bin,lib,man}. Now I want to build fvwm-1.24r, which uses the xpm libraries (among others). In the Imakefile, I made the following changes: CDEBUGFLAGS = -L/usr/local/lib (and this stuff in configure.h) #define FVWMDIR "/usr/local/fvwm-1.24r/bin" #define FVWM_ICONDIR "/usr/local/fvwm-1.24r/bitmaps" #define FVWMRC "/usr/local/fvwm-1.24r/lib/system.fvwmrc" #define COMPILER CC=gcc -I/usr/local/include That's it. The build goes cleanly and installs just like xpm. If I have other things installed, like libtiff and libjpeg, a -L/usr/local/lib and -I/usr/local/include takes care of those, too. Some Imakefiles aren't quite as nice as fvwm's, and I have to do something like the following (which works about 70% of the time): LOCALROOT = /usr/local/pkg-rev BINDIR = $(LOCALROOT)/bin MANPATH = $(LOCALROOT)/man XAPPLOADDIR= ($LOCALROOT)/lib/app-defaults MKDIRHIER = $(PROJECTROOT)/bin/mkdirhier [content deleted for brevity] > > Adding a "required" environment variable to the user's space is a > bad idea, IMHO. XAPPLRESDIR should be left to the user in case she > wants to put her own stuff in a different place. We leave XENVIRONMENT to the user for this purpose, and set XAPPLERESDIR system wide to point to /usr/local/lib/app-defaults for local app-defaults files. We're about to leap from R5 to R6 on our systems, and I'm willing to bet all of our X clients (lots) will continue to work until we can rebuild them (may have to link /usr/local/X11R5 -> /usr/local/X11R6 so that libs can be found). Think of FreeBSD and /usr/X11R6 as a 'vendor supplied OS,' and the ports as 'gifts' that someone can install locally. If you upgrade the OS from SNAP to SNAP, the 'gifts' still work barring incompatible library changes. Travis