remove BUILD_DEPENDS automatically after install

Mel Flynn mel.flynn+fbsd.ports at
Tue Nov 17 04:48:55 UTC 2009

On Mon, 16 Nov 2009 15:58:23 -0800, Doug Barton <dougb at> wrote:
> Sandra Kachelmann wrote:
>> (portmaster author cc:ed)
>> On Mon, Nov 16, 2009 at 1:06 AM, Erik Trulsson <ertr1013 at>
>> wrote:
>>> On Sun, Nov 15, 2009 at 11:44:04PM +0100, Sandra Kachelmann wrote:
>>>> Is there a reason why BUILD_DEPENDS aren't being removed after a port
>>>> has been installed and if no other installed port depends on it?
>>> How do you know that the user does not want that port installed?
>>> And what if the user will install 20 other ports afterwards - all of
>>> which
>>> is that same port as a BUILD_DEPENDS - should that port be
>>> installed/deinstalled each and every time?
>> It would be nice if this was configurable. Maybe it could be even
>> integrated into portupgrade or portmaster. If such a port is installed
>> directly it could get a package entry DIRECT_INSTALLED=yes in
>> /var/db/pkg/.. or something (there is probably a better way to do
>> this).
> I have a new feature in the svn version of portmaster called
> --packages-build that for any given run creates an internal list of
> dependencies that are only ever listed as build deps (never run deps)
> and installs packages for them but builds everything else. This
> feature was created at the request of one of companies that sponsored
> the package installation code. Currently it does not pkg_delete those
> packages when it's done, but I could easily add that.


> Actually I suppose it would not be too hard to extend that "list of
> build only deps" idea to a general feature which deletes them when
> done. Something like --delete-build-only maybe? This would be limited
> to the subset of the list of build-only deps that portmaster actually
> installed. Just because something is build-only for a given run of
> portmaster doesn't mean that it isn't a run dep for something else if
> it is already installed.

I think this can be handled better with a "--finish-cmd". After portmaster
is done with everything, exec the finish command. A port build server can
then pkg_delete -a and see what's still left in $PREFIX, while a casual
user can run pkg_cutleaves -xRg to add the newly installed leafs to the
exclude file and remove the build dependencies and their dependencies.

>>> (Personally I would be *very* annoyed if, for example, libtool or
>>> automake/autoconf would be reinstalled every time I installed a port
>>> which
>>> had one of them as a build-time dependency.  
> Well then don't use the option. :)  Options are generally good things.

With libtool there is a gotcha though. If you change CC/CXX, libtool has
to be rebuilt, so the package may not be valid.


More information about the freebsd-ports mailing list