[csw-maintainers] automated catalog promotion for packages

Geoff Davis gadavis at opencsw.org
Fri Nov 11 18:10:10 CET 2011


On 11/10/2011 7:25 PM, Ben Walton wrote:
> Hi All,
>
> At this point, we have automated all of the tasks required for
> automated package publishing to the point where our previous
> mechanisms stopped.  It's now time to start looking at the last piece:
> Package promotion from unstable.
>
> This is by no means a trivial task, so lets hash out the rules that we
> expect from the system.  For the sake of discussion, we'll assume that
> things must bake in unstable for X amount of time.  We'd talked about
> a 2 week duration but that isn't set in stone.  As it doesn't matter
> for this purpose, let's ignore it for now.
>
> I'm going to sketch out the basics of how I see this working.  Then we
> can start picking it apart and finding the edge cases that will make
> it challenging to implement.
>
> Do we agree that all package removals should be done manually or does
> anyone think this should be done automatically too?
>
> 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.
>
> 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.
> 2. A bug against another package in the same 'bundle.'
> 3. A subsequent update of the same package.
> 4. A bug against a dependency if it has a ticking promotion clock too.
>
> 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 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.
>
> 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?
>
> 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.
>
> We could choose to ignore dependencies, but I'm not sure that's a good
> idea.
>
> 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.
>
> 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.
>
> 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.)
>
> 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.
>
> I'm probably missing a bunch of important stuff here...
>
> Thoughts and comments?
>
> Thanks
> -Ben
>
>
> --
> Ben Walton
> Systems Programmer - CHASS
> University of Toronto
> C:416.407.5610 | W:416.978.4302
>
> _______________________________________________
> maintainers mailing list
> maintainers at lists.opencsw.org
> https://lists.opencsw.org/mailman/listinfo/maintainers
> .:: This mailing list's archive is public. ::.
While I can't speak for all of the arcanery behind our bug filing 
process, I'd like to point out the case where someone files a bug 
requesting an upgrade of a package. Those types of bugs should not 
normally block promotion of a previous version of a package. I guess it 
should block if it's a security consideration or something like that, 
but a request to go to Cfengine 3 should not block a Cfengine 2 package 
for example.


More information about the maintainers mailing list