Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 25 Jan 2020 22:04:43 +0000
From:      bugzilla-noreply@freebsd.org
To:        ruby@FreeBSD.org
Subject:   [Bug 240006] portmaster fails to build security/rubygem-acme-client: wrong order of installing requisite packages
Message-ID:  <bug-240006-21402-OE7gpCTfhh@https.bugs.freebsd.org/bugzilla/>
In-Reply-To: <bug-240006-21402@https.bugs.freebsd.org/bugzilla/>
References:  <bug-240006-21402@https.bugs.freebsd.org/bugzilla/>

next in thread | previous in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D240006

Stefan Esser <se@FreeBSD.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |Works As Intended
             Status|Open                        |Closed

--- Comment #8 from Stefan Esser <se@FreeBSD.org> ---
Sorry for the late reply - apparently I do no longer get a notification by =
mail
when a PR is assigned to me.

The information given by Walter Schwarzenfeld in Comment 7 is correct:

Some ports have dependencies that are declared as run dependencies, but whi=
ch
are in fact required to install a port. This is possible in the "plain" por=
ts
system, since it implements recursion into run dependencies before installi=
ng
the port being requested. I.e. the building and installation of run
dependencies is injected between building and installing the requested port=
. I
consider this an artefact of the implementation of the ports system in "mak=
e",
which cannot provide a different order: when the requested port has been
installed the trigger for the installation of run dependencies is lost - if=
 you
interrupt the process at that time, the requested port has been installed a=
nd
the missing run dependencies will be ignored.

Portmaster processes always just one port from begin to end, it knows to up=
date
or install build dependencies before the port needing them, run dependencies
afterwards, and it will detect missing run dependencies even if the build
process is interrupted between installation of the port and its run
dependencies.

A different treatment of run dependencies in portmaster is possible, but wi=
ll
lead to dependency cycles, since run dependencies may themselves depend on =
the
port being worked being installed. If all run dependencies were treated like
build dependencies, then these cycles will prevent building of either of th=
em.

Those ports that need run dependencies being available before the port
depending on them has been installed have to declare them as build
dependencies. If they are required for the build process to finish besides
being run dependencies, then they need to be declared as both build and run
dependencies.

That the plain ports system does not require them to be declared as build
dependencies is caused by the tool used (make) which does not support a
different order than is implemented, but that does not set a precedent for
portmaster, IMHO.

Therefore, I'm going to close this PR - the fix is in the individual port t=
hat
lacks a RUN_DEPENDS declaration.

--=20
You are receiving this mail because:
You are on the CC list for the bug.=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-240006-21402-OE7gpCTfhh>