tech-pkg archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: policy proposal: updating packages with many dependencies



* On 2025-03-19 at 15:03 GMT, Greg Troxel wrote:

Thomas Klausner <wiz%netbsd.org@localhost> writes:

On Tue, Mar 18, 2025 at 09:23:09PM +0100, Roland Illig wrote:
Am 18.03.2025 um 20:50 schrieb David Brownlee:
> If I could suggest anything extra on top it would be an automatic
> warning from pkglint on the relevant base packages :)

My preferred way would be to mark these base packages by setting a
special variable (similar to META_PACKAGE). This way, pkglint doesn't
need a hard-coded list of package paths on which to warn.

Let's paint a shed: What should we call the variable?

I'll bite on painting.


UPDATES_REQUIRE_REVIEW?

POLICY_UPDATES_REQUIRE_REVIEW

so we have a faux namespace that all variables about process start with
POLICY_.

As a connoisseur of short variable names which also help to keep indentation to a sensible length, I'd also recommend making it a variable that accepts a list of requirements.

It would be worth, for example, separating out packages that have many dependencies and have a history of breaking APIs with those that have many dependencies but for which an update would still be painful.

For example, people are suggesting that cmake should not be included in this list. One of the reasons I'm currently having to build packages from a fork is because my bulk builds can't keep up with the churn that essentially means every build needs to start again from scratch.

By my count between 2024-02-01 and 2025-01-29 cmake was updated 21 times, not including minor revision bumps. Every time this happens, around 10,000 packages (many of which are huge) need to be rebuilt.

Personally I don't see why cmake needs to be updated to the most stable release more than once or twice a year, maybe 4 at an absolute maximum for each quarterly? Certainly nowhere near 21.

So, something like UPDATE_LIMITED, which accepts a list of options that might include something like:

 abi

   Only update within stable ABI releases.  Any major update is
   forbidden without extensive bulk builds.  This could even include
   a semver tag (abi=3.x or whatever) for pkglint to verify.

 bootstrap

   Package is used by bootstrap or is a critical infrastructure package,
   and must only be updated once verified on all supported platforms.

 lts

   Similar to abi, but e.g. in my fork I've reverted haproxy back to the
   LTS release which is supported until 2029 because the bleeding edge
   releases cause regressions and there's absolutely no need to use them
   while there is such a generous LTS offering.  Again could support a
   semver tag.

 portability

   Package has shown a history of causing regressions or needs special
   handling, e.g. PLIST quirks, and committer must seek help for
   testing.  Things like ghostscript.

 quarterly

   Package is depended upon by many other packages, and thus should be
   updated at most once per quarter, pkglint can then parse doc/CHANGES*
   to issue errors.

Just some ideas, I'm sure there are others. Thank you for finally considering this.

--
Jonathan Perkin                    pkgsrc.smartos.org
Open Source Complete Cloud   www.tritondatacenter.com


Home | Main Index | Thread Index | Old Index