[csw-maintainers] automated catalog promotion for packages
Peter FELECAN
pfelecan at opencsw.org
Fri Nov 11 14:25:44 CET 2011
Ben Walton <bwalton at opencsw.org> writes:
> Do we agree that all package removals should be done manually or does
> anyone think this should be done automatically too?
Manual process but enabled for the maintainer, i.e., a maintainer can
remove his package. There is an exception to that: see bellow where I'm
discussing a subsequent update.
> For package adds and updates we'll need to determine the point in time
> that a package (add or update) enters the unstable catalog. The
> simplistic view would use the REV= date stamp for adds/updates but
> that can be misleading as a package might sit in experimental for an
> unknown amount of time before being pushed. Thus we need to watch the
> catalog(s) and detect package entry. This is easy enough to do as we
> have machinery for this task already. The initial spotting of a new
> package should trigger a clock for this package that upon expiry will
> see it moved forward.
Clocking must depend on the entry epoch of the package and not on the
REV attribute.
> What criteria can be used to stop the clock? Some of the following
> are obvious and some are possibilities. I'm sure I'm missing items
> here too.
>
> 1. A bug against the package in question.
Yes, but only for bugs of a certain level, e.g., for major and critical
ones; however, the maintainer must have the ability to change the level
of a bug if he choose so.
> 2. A bug against another package in the same 'bundle.'
Yes.
> 3. A subsequent update of the same package.
>From my standpoint, when and update enters in the unstable catalog and
there is still a previous version of that packaged, clocking or not, the
previous package is removed automatically.
> 4. A bug against a dependency if it has a ticking promotion clock too.
I don't get that because a bug for the dependency would stop its clock,
isn't it?
> All of the bug-based items are complicated by the fact that mantis
> carries no information about which catalog the particular bug is
> relevant too. A bug could be filed against the package in the named
> release, not the version in unstable but we have no way to ascertain
> that currently.
> To handle the mantis limitations, we could either add a facility to
> the promotion tool to ignore various bug id's (a manual action) or
> look at alternate bug tracking systems.
The Mantis schemata and interface can be changed, it's a practice that
I've seen in some places; this will help to keep the current bug tracker
with minimal effort, versus changing toward an hypothetically one which
is functionally complete.
> The first item, barring the limitations, is a no brainer. A bug stops
> the clock. The question here is whether we remove this package from
> our (long lived) promotion object outright or mark it stalled? If we
> remove it outright then the third action would never occur...we'd just
> see another new package later on. If we do this, the 'override this
> bug' mechanism would need to repopulate this entry into the promotion
> object instead of just marking a bug as ignorable. Leaving the bug in
> the object but marking it stalled has impact on subsequent spottings
> of the same package.
The ignore bug mechanism must be implemented in the bug tracker, i.e.,
it's a new attribute of the bug, and must be available only to the
maintainer.
> A subsequent update of the same package could simply overwrite the
> existing entry in the current promotion tracking object. That would
> be the equivalent of saying "we assume that a new update addresses
> open bugs. it would require a new bug to stop the clock again." Does
> that seem like a valid assumption to build in?
Quite, but maybe we should add a package attribute explicating the bugs
corrected if any; many packaging systems have this very useful
information.
> I think the dependency issue will be the biggest trap here. I think
> we need to track bugs on dependencies as a broken dep could mean a
> broken app. We may want to only consider deps that also have ticking
> clocks. This would allow for the fact that the package under
> consideration was built against the dep (library, etc) that is already
> in the named release catalog. A dep that pre-exists in the promotion
> object would (assuming we keep the buildfarm very fresh) mean that the
> new package was built against the dep package that has a ticking clock
> itself.
I don't get this specific case. A dependency is a dependency and if it
has a bug, its clock is stopped, isn't it?
> We could choose to ignore dependencies, but I'm not sure that's a good
> idea.
Definitely a bad thing.
> If we decide that blocking a package based on its dependencies is the
> best action, then we have further complications. An update of the
> dependent package must also remove the block that it set on the
> original. I guess that's more of a bookkeeping issue in the data
> structure than a hard challenge but it's still something to consider.
It's just bookkeeping.
> We should also offer a mechanism for a maintainer to signal that a
> package is not suitable for promotion. That could come in the form of
> a bug filed or through a command that is run. I think filing a bug is
> more consistent (and visible) in this case.
There should be a special bug level for a better visibility of the
maintainer's intent.
> Now, if we end up with several packages in the promotion object that
> have stopped clocks, we'll want to eventually garbage collect them.
> We should be able to set quite a long expiry time on this but at some
> point, things will fall out the bottom. Do we need a way for the
> maintainer to signal that the clock should start again? I think the
> simplest way to achieve that is to have the maintainer submit the
> package again and start a new clock. (This would require a different
> REV= stamp to ensure it is detected.)
No REV stamp difference needed as the clocking is not based on that but
on the catalog entry or re-entry time. Consequently, there should be a
re-entry procedure, manual, of course.
> Now, what about different architectures and os releases? The bug
> system isn't granular enough to pick out this info so I think we need
> to stall the package in all catalogs until the normal criteria are
> met. This would have the benefit of keeping catalogs in lock step
> which I think is a good thing.
No need for this if the bug tracking system give the possibility to
signal a bug on a specific release, architecture and package revision
(which implicates the catalog).
--
Peter
More information about the maintainers
mailing list