Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 18 Feb 2024 19:21:40 -0800
From:      Mark Millard <marklmi@yahoo.com>
To:        Aryeh Friedman <aryehfriedman@gmail.com>
Cc:        Miroslav Lachman <000.fbsd@quip.cz>, FreeBSD Mailing List <freebsd-ports@freebsd.org>
Subject:   Re: FreeBSD ports community is broken [port building configuration notes]
Message-ID:  <64A10094-BC24-4A1D-AD7E-904C0BE7D886@yahoo.com>
In-Reply-To: <CAGBxaXmw9BkQdTQQ%2BpE%2BuABuX%2BXXgJC3GqXzOEhehz7m9=TBhw@mail.gmail.com>
References:  <87B38D6C-1D83-4158-B03B-F4C8EA396DD1.ref@yahoo.com> <87B38D6C-1D83-4158-B03B-F4C8EA396DD1@yahoo.com> <f6e730bf-3d4e-4318-b49a-7100f38fc3ed@quip.cz> <A4AA312D-F160-402F-853B-E59800EB4FB0@yahoo.com> <CAGBxaXmw9BkQdTQQ%2BpE%2BuABuX%2BXXgJC3GqXzOEhehz7m9=TBhw@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Feb 18, 2024, at 17:23, Aryeh Friedman <aryehfriedman@gmail.com> =
wrote:

> On Sun, Feb 18, 2024 at 3:21=E2=80=AFPM Mark Millard =
<marklmi@yahoo.com> wrote:
>>=20
>> I fully agree that poudriere's systematic behavior
>> rebuilds more than the likes of portmaster [but fails
>> less often].
>>=20
>>=20
>> As stands there are tradeoffs between use of portmaster
>> (and the like) vs. use of poudriere (/synth?). No one
>> has produced an alternative that avoids the tradeoffs
>> as far as I know. So one picks between the tradeoffs
>> by the choice of which way to build.
>=20
> The reason why no alternative has been produced yet is make it self is
> broken at the theoretical level.  Instead of doing a blond DFS it
> should build the entire DAG and then topolocgically walk it.    See
> Recursive Make Considered Harmful by P. Miller --
> https://accu.org/journals/overload/14/71/miller_2004/ (republished).
> While the DAG for the entire ports system (and for each port) is too
> big the DAG of what ports to do in what order is not and can easily be
> extracted from the ports make file.   So there is really no excuse for
> excessive building (just a question of converting it all to DAG --
> devel/cook does this and likely can be shoe horned into being a hybrid
> of allowing each port to use make recursively but at the top levle
> using a DAG).

FYI:

poudriere uses a prioritized topological sort of the package =
dependencies
made up front during the bulk build. There are files with the content
during the bulk run:

${MASTER_DATADIR}/pkg_deps is used to produce a temporary:

${MASTER_DATADIR}/pkg_deps.ptsort which is, in turn, used to produce:

${MASTER_DATADIR}/pkg_deps.priority which is used, in turn, to set up
the priority hash that is used.

There are checks for having cycles (that would invalidate the DAG
status).


Side note: devel/cook disapepared upstream some time ago and expired in
the ports tree and was removed at the end of 2023.


=3D=3D=3D
Mark Millard
marklmi at yahoo.com




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?64A10094-BC24-4A1D-AD7E-904C0BE7D886>