Request for Features: Ports Re-engineering
Stephen Montgomery-Smith
stephen at math.missouri.edu
Mon Dec 17 05:48:10 PST 2007
Aryeh M. Friedman wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> 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 bsd.ports.mk because the more you add to it, the
longer things like "make index" take.)
More information about the freebsd-ports
mailing list