Re: dependency loop

From: void <>
Date: Wed, 15 Mar 2023 11:23:45 UTC
On Tue, Mar 14, 2023 at 08:31:10PM -0700, Cy Schubert wrote:
>Tyically dependency loops (circular dependencies) are caused by 
>selecting port option, i.e. make config, requesting ports depend 
>on other ports, depending on others, which depend on others, 
>which depend on the port in question. 

What I'm trying to ascertain is, is the problem with a single port,
all the looping port(s), the pkg solver, the ports infrastructure 
or pilot error? Similar issues have happened in the past, yet
the options have not been modified in that time. The problem
rarely happens, but it has happened repeatedly. this is the
first time I've really tried to dig down to solve it though.

>Reset your options for all ports in the dependency chain using 
>make rmconfig.

I did this, (rm -rf the poudrierejail_options) but that wasn't 
all what was required; it still errored. I then cleared out 
all the packages in the jail, an error still happened when 
building a single port (from the initial error posted) in 
poudriere testport but this time the error was different:

[00:01:25] ===>  Building package for cairo-1.17.4_2,3
[00:01:25] pkg-static: Unable to access file /wrkdirs/usr/ports/ \
graphics/cairo/work/stage/usr/local/libdata/pkgconfig/cairo-glx.pc: \
No such file or directory
[00:01:26] *** Error code 1

I then ran poudriere options on php80 and php80-extensions then 
bulk -f portslist.txt and everything built. In all cases there is
a make.conf defined for the jail with ports options.

>Dependency loops never occur when using binary packages. 
>Users are encouraged to use binary packages rather than 
>building ports themselves.

The option to just use binaries from the pkg servers isn't
available for my contexts, and I'm sure there are others like me. 

Then there are some ports for which pre-built packages don't exist. 
And then some ports have bugs that need patches applied and may 
take a while before they appear on pkg.f.o. 
Building with poudriere-devel is the best solution for my contexts, as
it both grabs unmodified binaries from the pkg servers and builds
what ports need whatever options in a timely manner. It usually works
really well.

>Being conservative with port options, i.e. staying with the defaults, 
>will always avoid this problem.

This context is for a FAMP stack & phpbb3 & some tools like vim. There's not
a lot of options, but I do need to select some.