Hi, On Thu, Apr 08, 1999 at 12:31:24PM -0400, Chuck Robey wrote: > [much whining snipped :)]
Your confusing a bunch of different issues here: 1. Poor porting. a. Ports should not leave behind old files, other than site configuration files (like samba.conf). If a port leaves any files behind after a pkg_delete then it is broken and must be fixed. b. Shared library numbers should be bumped when the interface changes. I've made a number of mistakes with this on the GNOME ports, I'll admit. 2. FreeBSD Ports infrastructure problems. a. Depending on binaries without being able to get a version number. b. Not being able to upgrade a port in place. Jacques pointed to one solution to this: using one directory in /var/db/pkg per port. 3. GNOME problems. a. GNOME has no release engineering. The libraries break APIs for every pico number bump just about. Or they fix bugs and remove workarounds at higher levels. Also ESR's $%^*@ advice of release early and release often means that they often manage three releases in a 48 hour period. b. The GNOME ports must be seen as a unity. In fact I'm currently considering installing tests to stop the base packages being built from anything other than x11/gnome. The general rule for these packages is to pkg_delete gnomelibs-x.x.x and *everything* which depends on it, and then build x11/gnome. I'm going to add messages to the ports which announce this at uninstall time. I've been thinking a lot about this and other porting problems presented by GNOME and am trying to come up with solutions. At the moment I'm more concerned with actually getting the ports compiled right. But some thoughts: 1. Use -soname for binaries. Add this to $LDFLAGS or something, to get a version number installed into a binary then create extra magic or a script to test this in the DEPENDS. I don't know if this is possible, but there must be some field available which can be got with either file(1) or objdump(1). Same idea for scripts. 2. Add a version history in files. Each time a port is upgraded, add the new PKGNAME to files/history. Recreate these from the CVS history using a very clever script. Then use this to deinstall all old versions, or for upgrading. Upgrading requires much more dynamic PLISTs. Maybe a port should check for all files in PLIST before installing and refuse to install unless they are cleaned out first. 3. Change the DEPENDS mechanism in ports to use a Makefile.depends in each subdir. The port's makefile includes this, which in term includes all those from the ports it requires. Each port can then setup the environment for ports which depend on it, and check if it is correctly installed (using the appropriate magic in bsd.port.mk). There are a lot of other things need in a perfect ports/package system... Regards, -Jeremy -- | "I could be anything I wanted to, but one things true --+-- Never gonna be as big as Jesus, never gonna hold the world in my hand | Never gonna be as big as Jesus, never gonna build a promised land | But that's, that's all right, OK with me..." -Audio Adrenaline To Unsubscribe: send mail to majord...@freebsd.org with "unsubscribe freebsd-current" in the body of the message