variant symlinks (was Re: Anybody working on removing sendmail from base?)

Mike Porter mupi at
Fri Oct 3 13:36:28 PDT 2003

Hash: SHA1

On Friday 03 October 2003 12:07 am, Matthew Dillon wrote:
> ::While I personally don't have a huge need to have 47 copies of the same
> ::software :-) something I do like the idea of is a variant symlink for
> :: /tmp like:

Nobody is suggesting 47 copies of the same software, just 47 versions of a 
program....seriously, I don't think anybody is really expecting that we would 
have that many different versions (although the possibility DOES exist, and a 
developer/porter *might*, so as to be able to compare results with different 
compilers)  In general, the idea is to make it possible to have the system's 
compiler unaffected by changes that a user makes (such as installing a newer 
gcc; this is possible under FBSD, but care must be taken to ensure that the 
'default' make (used for buildworld/buildkernel) uses the correct version.  

One interesting variation, in the case where a port requires a specifc version 
of gcc to work properly (say for some reason MyPort works fine with gcc 3.2, 
but chokes on 3.4, and the only installed versions are the 'system' compiler 
(2.95.4?) and 3.4 (this is what I assume the 'normal' case will be for people 
having multiple compilers installed: a 'system' version, and the latest 
[stable] version.  The ports system could grab 3.2, install it, build the 
port, then remove 3.2, all without the user having to do anything, and 
without affecting any other processes that might be using 3.4 (although 
hopefully, unless you have a very big system, you don't have more than one 
user trying to compile things at once....)  

The only missing ingredient here is logic for the port to know, for example, 
if MyPort is being installed as a dependancy of SomePort, then 3.2 should 
stick around until the end of the build process, in case there are other 
dependencies requireing it.  Either that or the ports system is going to have 
to look at the dependencies list, not just for the primary package, but for 
all packages, to determine which compiler(s) are needed.  this way, we'd know 
if 3.2 is needed for anything else and could safely delete it once complete 
to save disk space.

Another interesting use for variant symlinks is the ability to store multiple 
versions of the source tree (e.g., -STABLE and -CURRENT, or -STABLE and 
- -SECURITY, to borrow terms from FBSD, if we ever get to the point where we 
have different branches)  As far as the source tree is concerned, it is still 
in /usr/src,  but in 'reality' it could be in /usr/src/current .  


Version: GnuPG v1.2.1 (FreeBSD)


More information about the Kernel mailing list