[haiku-development] Re: Package Building and Beta1

  • From: "Adrien Destugues" <pulkomandy@xxxxxxxxxxxxx>
  • To: haiku-development@xxxxxxxxxxxxx
  • Date: Thu, 27 Jul 2017 08:48:33 +0000

27 juillet 2017 10:27 "Axel Dörfler" <axeld@xxxxxxxxxxxxxxxx> a écrit:

I don't think it's a good idea to use to completely different repository 
sources for x86 and
x86_64. This doesn't just sound like a QA nightmare, it also produces a lot 
more duplicated work
and effort.

But it is what we have already, so that work is already done.
We should of course make both architectures converge eventually, my point is 
that we can do it after Beta1 to avoid further delays.

I think there are at least three ways in which a recipe can be broken:
1) It cannot be built.
2) It declares missing dependencies.
3) The resulting package does not work correctly or at all.

It's unfortunately more complex than that. Sometimes, a package is not broken 
by itself, but it breaks other packages.
Some cases come to mind:
- Perl was updated to 5.22 in the release branch recently. The new Perl works 
just fine, but they changed some things in regexp handling, and this result in 
automake not working, so automake needed to be updated, too.
- Python was updated. The new package works fine, but some paths have changed, 
so all python modules need to be rebuilt (using the same version of the sources)

There are several similar cases happening all the time. We have found ways to 
limit some of these problems with proper version constraints in packages, but 
we keep discovering new ones. So yes, a stable branch is needed where such 
things should not happen without us knowning (and a plan for updating affected 
packages).

To ease with getting testing populated, I would also have a repository built 
from master. It would
be great if anyone with an account at HDS could request a package from master 
to be included in
test automatically one day.

With the buildmaster triggered as a git hook, it would be possible to run it 
each time someone submits a pull request to haikuports.
It could then rebuild the modified recipe, and make the artifact (the hpkg 
files) available for testing.

I don't know if Kitchen could do a similar thing, and how we would feed it with 
the changed recipe. Deos the REST interface allow for such things?

In the end, haikuports is like any piece of software: it's not and cannot be 
always stable,
although it should always strive for it. Therefore we need at least a release 
branch.

A possible alternative would be to have testing a complete branch, that 
contains all packages, and
we have a separate list that contains the packages that should be forwarded 
to the release branch.

This is not enough, because people sometime make changes to the testing branch 
without moving to a new version of a package (only a new revision, so still 
using the same recipe file). As a result, the files needed for the release may 
not be in the testing branch anymore, and new files with the same name take 
their place. This is why we need a full, separate release branch.

Instead of a single testing branch, it is also possible to use feature branches 
(let's say, a perl-5.22 branch for handling that perl update), which gets 
merged into the release branch after they got enough testing. This avoids a 
problem where the testing branch accumulates too much changes and it becomes 
difficult to identify the one change that caused a particular regression. When 
things are split out into different branches, it is easier to do so.

-- 
Adrien.

Other related posts: