Re: git: de7c5ca4a2d4 - main - devel/py-wheel044: "temporarily" add
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 14 Apr 2025 05:27:18 UTC
On Sun, Apr 13, 2025 at 7:37 PM Colin Percival <cperciva@tarsnap.com> wrote: > > I believe the problem comes with the following commit which adds a > dependency on this (8b5ae17d2f43388fade30e266615a9e34bf06abd). I found a mistake in my testcase. Now I can reproduce the problem with both your commit and main's tip. I will look into this today, but my understanding of Python build machinery is lacking, so I can't promise anything. > All I'm asking is that > # cd /usr/ports/foo/bar && make > on a clean system should succeed. It is a pretty high expectation for an arbitrary port in our tree. Here's why: - Upstream may introduce circular dependencies that we'll have to somehow untangle (glib case, but luckily rare) - A tree of transitive build dependencies may contain conflicting packages (py-wheel problem we're facing now). For example, dep1 requires gcc11 while dep2 requires gcc12. Luckily, our gcc ports are arranged in a such way that they are coinstallable, but this is not always the case and requires additional work. - That dependency tree is ever-changing as ports get updated, DEFAULT_OPTIONS changed, etc. The larger it gets, the harder it is to track install conflicts. - Feature autoactivation may kick in in an unclean build environments > No. Release building happens in a clean jail. There's no host contamination. It is not about simply running the whole process in prison != 0. This by itself does not buy anything, of course. The idea behind Poudriere is that each port builds in a separate jail, which means that only build dependencies of this port would get installed. To the contrary, running "make all install" for a port would install all transitive build dependencies, which brings us to the problem described above. > And the code is in src/release. Anything which breaks release building is > also going to break ports for plenty of regular users. Yes, plenty of regular users that build on host, not Poudriere users. Right now each Ports committer is obliged to verify that his submission builds in Poudriere. There is no such requirement for the build-on-host tools like portmaster, portupgrade and plain make. If you think this should be changed you should approach portmgr@ so that this decision would be codified somewhere. I wouldn't be happy about it, but will obey.