Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 10 Sep 2018 14:10:15 +0200
From:      Stefan Esser <se@freebsd.org>
To:        Matthias Fechner <idefix@fechner.net>, freebsd-ports@freebsd.org
Subject:   Re: RUN_DEPENDS and portmaster
Message-ID:  <7ccc8168-fa3b-9872-dc5a-13a9b394d5c2@freebsd.org>
In-Reply-To: <03c14234-538d-fd9f-0c33-22825f3ea91d@fechner.net>
References:  <03c14234-538d-fd9f-0c33-22825f3ea91d@fechner.net>

next in thread | previous in thread | raw e-mail | index | archive | help
Am 10.09.18 um 06:54 schrieb Matthias Fechner:
> Dear all,
> 
> I have a questions reagarding the RUN_DEPENDS and at which step
> dependencies should be installed.
> I'm the maintainer of gitlab-ce port and I added a feature that checks
> in the install target:
> do-install:
>         (cd ${WRKSRC} && ${RM} Gemfile.lock && bundle install --local)
>         ${FIND} ${WRKSRC} -name '*.orig' -delete
> ...
> 
> that all gems available in the system do match the version required by
> the Gemfile.
> Poudriere works fine with this, but portmaster fails.
> Regarding the documentation RUN_DEPENDS packages should be installed
> before the install is happening.

Hi Matthias,

this is the description of the sequence of actions performed by the
ports framework alone.

INSTALLS_DEPENDS covers the case of dependencies that are required
to be available when a port is being installed.

Portmaster installs RUN_DEPENDS only after the port that depends on
them, since it is assumed, that they are actually only required to
execute it after it has been completely installed.

The reason is, that portmaster is typically used to upgrade multiple
ports in such a way, that all BUILD_DEPENDS are up to date (not only
available) when some some dependent port is compiled.

In case that some upgraded port actually is a build dependency of
some other port, it will need to have its run dependencies installed
and upgraded, and portmaster will assure this is the case.

The sequence of upgrade actions was chosen to follow this scheme to
prevent dependency loops (which typically will consist of a mix of
build and run dependencies).

> Is this install related to the do-install target or the installation
> of the package itself?

I have re-implemented portmaster and have been using my version to
maintain my ports since May. Due to several bad design decisions (or
rather the lack of thorough design) of the FLAVOR feature, it took me
quite some effort and time to get performance of that version to an
acceptable level.

Currently I'm building and installing ports in the same order as the
current official portmaster version, but that could easily be changed.

I have considered following the same concept as synth does (i.e. build
ports in a clean environment), at least as an option. But I have not
started to implement such a feature, yet.

> Is this maybe a problem with portmaster as poudiere handles this correctly?

This is a design decision in portmaster that has existed for at least
a decade.

Use INSTALL_DEPENDS if you depend on a port being available and upgraded
before your port's do-install is invoked.

Changing the current portmaster version in ports is no option, since it
does not offer to recursively upgrade or install any other port while
working on some port and it cannot easily be made to support such a
sequence of actions.

Regards, STefan



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?7ccc8168-fa3b-9872-dc5a-13a9b394d5c2>