[Bug 265943] editors/libreoffice: upgrading via portmaster leads to conflict with existing installed port

From: <bugzilla-noreply_at_freebsd.org>
Date: Fri, 19 Aug 2022 14:56:17 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=265943

Stefan Eßer <se@FreeBSD.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|New                         |In Progress

--- Comment #4 from Stefan Eßer <se@FreeBSD.org> ---
(In reply to Martin Birgmeier from comment #3)

This is a common issue if a port has a run dependency that is required to stage
or package the port, but which is not declared as a build dependency.

Portmaster is more strict than poudriere with regard to different types of
dependencies. When building with poudriere, all RUN_DEPENDS are installed into
the build jail before a port build starts.

Portmaster builds and installs BUILD_DEPENDS and LIB_DEPENDS before working on
the respective port that declares these dependencies, but installs RUN_DEPENDS
only after completing the port build.

The basic ports system does not perform the same kind of dependency checking as
either portmaster or poudriere does. It just recurses into dependent ports for
each target before invoking the target on the port itself - thus is recursively
calls "make install" on all dependencies (including RUN_DEPENDS) before
installing the port itself. The reason is simply that make works on sub-goals
before main-goals, and the installation of dependencies is a sub-goal that has
to be completed before the main-goal may be attempted. (If the order was
reversed and the installation of the port succeeded but the installation of a
RUN_DEPENDS port failed thereafter, calling "make install" would find the port
being installed and would not make another attempt to install the run
dependencies).

You can use "portmaster -t" to force portmaster to provide RUN_DEPENDS before
building a port, but that can result in much overhead and can cause dependency
loops.

If a RUN_DEPENDS target is required before a port can be staged or packaged,
then it actually is a build dependency and should be declared as such.

-- 
You are receiving this mail because:
You are the assignee for the bug.