Request for Features: Ports Re-engineering

Stephen Montgomery-Smith stephen at
Mon Dec 17 05:48:10 PST 2007

Aryeh M. Friedman wrote:
> Hash: SHA1
> In order to finalize the general nature of the ports re-engineering
> effort this thread is designed to specifically explore the features
> people want to see.
> Please supply one or more of the following:
> * Up to 4 user stories of how you would like to use the ports system
> (may or may not be possible in the current one)
> * Up to 4 use cases for how you would like to interact with the ports
> system
> * Up to 4 features/requirements you think the new system should have
> * Up to 4 features/requirements that you feel *MUST* remain from the
> current system
> * Any non-functional requirements you can think of

One thing to look at is package building.  I don't know how they build 
the official packages, but my guess is that they build each one from a 
clean system.  But, for example, you have tons of little ports each 
depending on xorg-server, and to rebuild xorg-server for each little 
port must be a real burden.

On the other hand some ports really need to be built from a clean 
system.  Some of them autodetect ports that are already installed, and 
then change options appropriately.  (Maybe some of the multimedia ports 
like vlc do this.)  My guess is that this is to some extent unavoidable 
because the "configure" script in the port build process probably does 
this as well.  Anyway, perhaps this autodetecting of ports to provide 
options needs to be built into the system in a systematic manner.  Then 
robotic package builders could be trained to glean this information from 
the build tree (what you refer to as the DAG - is that "directed 
something graph"?).

I also use packages for my private system.  I have one fast computer 
where I build all my ports, and then make packages from them to 
distribute to the other computers.  But I use "pkg_create."  The 
disadvantage of this is that you don't get all the candy (e.g. the 
messages in pkg-message, etc).

I used to build my ports, then do a massive "make package" on all the 
built ports.  But "make package" is designed so that it only works 
properly if done before any other port is installed.  This is because 
you might add autodependencies to the package which were not part of the 
original build.  "make package" could actually get this dependency 
information from /var/db/pkg, but it doesn't.  (I filed a PR to effect 
this change, but no-one else felt it was important.  In particular, 
space is a premium on because the more you add to it, the 
longer things like "make index" take.)

More information about the freebsd-ports mailing list