#4256 NORM Never A: Killjoy, stable builds
Zarro Boogs per Child
bugtracker at laptop.org
Wed Oct 17 10:34:38 EDT 2007
#4256: Killjoy, stable builds
---------------------+------------------------------------------------------
Reporter: marco | Owner: kimquirk
Type: defect | Status: new
Priority: normal | Milestone: Never Assigned
Component: distro | Version:
Resolution: | Keywords:
Verified: 0 |
---------------------+------------------------------------------------------
Comment(by dcbw):
Adding my comments from an email thread to this bug.
> Marco is 100% correct. If you do not build all the packages in the
> _same_ _stable_ environment, you are simply asking for a big gun to
> shoot you right in the face, and you deserve it.
>
> It's Just That Simple.
>
> It doesn't really matter where that environment is, even if you're
> cross-compiling, just as long as it's a buildroot pulling packages from
> _one_ consistent repo, using a consistent toolchain, on the same
> platform, every time. Anything more than quick testing packages built
> on personal machines is assured doomage.
You will often get into the situation where you have installed a
development package on your machine that is not installed on the XOs or in
the minimal koji buildroots, and if your package depends on the thing dev
package you installed, you won't be prompted to add that dev package as a
BuildRequires. Then everyone else who doesn't have your exact environment
cannot build or likely install your package.
Another situation is for packages like gstreamer that use the configure
script to dynamically determine the features they will build. If you have
installed a library that the configure script recognizes, it will turn
that feature on and build the package with that dependency. Then, when
other people go to install the package, it will either not install, or
they will get runtime errors about symbols not being found. You found
this out when we removed GL from the builds a year ago, and Etoys stopped
launching. That's the _exact_ same error that people will encounter. In
the case of gstreamer, it would manifest itself in a plugin failing to
load, and requiring _somebody_ to go track down that error, likely
spending a few wasted hours going WTF??? before figuring out the problem.
Different compiler flags on different people's environments make stuff
completely unreproducible. Other times, if you build with a different
compiler version (even a .x.1 off) or a different glibc version or a
different linker version, then stuff just randomly fails and you cannot
figure out why.
Dependencies won't get found. If, for example, the Collabora guys build a
package that has a new feature or changes a symbol, you must install that
package into your private buildroot to be able to use that feature. You
quickly start down the chain of unmanagable build dependencies on random
people's platforms and the matrix starts scaling out horribly.
There was a time years and years ago when Red Hat did not build packages
in a build system. RH quickly figured out why this was a bad idea.
Jonathan Blandford (Desktop Team Manager) says, simply: "Shit didn't work,
and people couldn't figure out why." That's just what happens.
Seriously. Just Don't Do This. Have _one_ buildsystem that everyone
pushes packages through to ensure consistency of the generated code,
consistency of the dependency set, consistency of the runtime environment,
and consistency of the product overall. I cannot stress this enough.
--
Ticket URL: <https://dev.laptop.org/ticket/4256#comment:10>
One Laptop Per Child <https://dev.laptop.org>
OLPC bug tracking system
More information about the Bugs
mailing list