Re: Re: status of Knoppix as build platform

Nate Riffe <[email protected]>
Newsgroups gmane.linux.bbc.devel
Message-ID <[email protected]>
Just now Bill Immerman made 15 LEDs in my apartment flash with this:
> Nate asked:
> 
> > If you could provide the error messages from the
> > end of that build, it would help a lot.
> 
> OK: here is everything after the function that produced the error (there 
> were a raft of warnings regarding the evils of defeating types with 
> pointers earlier that I assume are not significant to the build):
> 
> gcc -c -Os -I//tmp/build/include -L//tmp/build/lib -DNDEBUG -g -O3 -Wall 
> -Wstrict-prototypes -I. -I./Include -DHAVE_CONFIG_H  -o Python/pythonrun.o 
> [error messages from gcc]

I've submitted this as a bug against the python package.  It looks
like maybe some header files are not present in Knoppix or perhaps the
configure script for python is not finding everything it needs.  At
any rate, let's move discussion of this particular bug to the bug
tracking system.

> I mistakenly said:
> 
> >> meaning that it got through a lot of core
> >> packages, including glibc, gcc, perl, and the kernel.
> 
> and Nate corrected:
> 
> >No.  gcc, glibc, XFree86, and perl are the big major-headache packages
> >that have succeeded by the time you get to python.  The kernel is near
> >the end, and furthermore, it's pretty easy to make it do what we need
> >it to do.
> 
> Thanks...I misunderstood because I got an "[install] complete for 
> linux-image" and saw a bzImage under 
> gar/kernel/linux-image/work/i386/linux-2.4.22/arch/i386/boot. Is the kernel 
> itself under "gar/kernel/linux"? What is linux-image?

Sorry, you're right, kernel/linux-image is built as a dependency of
meta/bbc-contents before python.  I think this is because we need
System.map for something.  The kernel that's actually used on the ISO
is built later, as a dependency of meta/lnx.img.

> I did a "cvs up; make garchive" on the machine exporting the garchive just 
> before using it, hoping that the build machine would then only have to 
> read, not write the garchive. Would the filesystem differences matter for 
> read-only access?

Yes, that should work just fine.  It's when you use make to update
things across an NFS mount that you can run into trouble.

> Reminds me, though: the documentation identifies the possibility to
> export a garchive via a web server, but I assume that is just to
> make the sources available within a network, since I haven't seen a
> way to specify that the lnx-bbc build could use an http url as a
> garchive source. I guess this is because in general the build may
> need to update the garchive? Would there be any easy way to allow
> the build to use an http-served garchive as a read-only cache of
> sources, just for cases like this?

Well, the default GARCHIVEROOT is /var/www/garchive.  If you build
your garchive in that directory, and you're running apache with
DocumentRoot set to /var/www (the default for Debian's apache
package), then your garchive is on the web.  If it's a server on a
local network, then just add http://<your-server's-name>/garchive/ to
the end of FILE_SITES in gar.conf.mk so that it is preferred over
sites that are out on the Internet.  If your DocumentRoot is
different, adjust GARCHIVEROOT to suit.

> One more question: in the recent STABLE and HEAD gar, is there a
> safe procedure when a build blows up on a package, or when a package
> maintainer wants to test a new package, to incrementally build
> without first doing a "make super-clean"?

If you're building a package and it fails before it installs anything,
then you can safely clean, modify, and rebuild the failed package over
and over and over until it works.  You just need to make sure you're
building it for the correct DESTIMG.  The LNX-BBC is made up of four
DESTIMGs, and at build time there is a fifth which is not included on
the disc.  The main one on the LNX-BBC is "singularity", so if you
just want some piece of software to be included in your LNX-BBC,
you'll need to run "make DESTIMG=singularity install" rather than just
"make install".  The other three on-disc DESTIMGs are related to
bootstrapping, and the one at runtime is for BUILDDEPs.

If you're running "make DESTIMG=singularity install" in packages in
order to have them included on a custom LNX-BBC ISO, note that it's
best to do this before you start the normal ISO build.

If you don't, then what happens is the singularity filesystem image
will not contain your package and at the very least you'll have to
rebuild meta/singularity to produce an updated singularity filesystem
image.  Chances are if you have to rebuild meta/singularity, you'll
have to rebuild meta/lnx-bbc and either meta/i386-livecd or
meta/ppc-livecd, because the filesystem image that these packages
produce (the actual ISO image) contains the singularity filesystem
image and will need to be rebuilt to contain the updated one.  The
easiest way to do all this updating is to run "make clean" in the meta
category and then "make build" in meta/lnx-bbc, but really you should
just avoid the trouble by building your customizations first and then
building in meta/lnx-bbc.

> I would assume that if ALL dependencies were encoded in gar, that
> doing a "make clean" in the package's directory, followed by a "make
> build" in lnx-bbc would suffice, but I was warned a long time ago
> that the build system wasn't really intended to safely build this
> way.

If it's just one package, then yes, you can do that.  But if you have
a package that is failing because one of its dependencies is messed
up, there's no general way around having to make super-clean other
than manually reverting the DESTDIR to it's pre-installation state
(i.e. removing files that the broken dependency installed).

> Has the situation changed at all? Do package maintainers build
> a full bbc from scratch every time they want to test their portion
> of the build? I'm sure that's ok for you who can build in an hour,
> but my system takes WAY longer than that :-(.

It depends on what the "portion" is.  If the "portion" is just one
package and it's failing before it installs anything, then there's
generally no need to make super-clean.  If the "portion" is a large
set of interdependent pacakges, then it's make super-clean every time.
However, in that case, I'd recommend building just that part while
you're working on it, and not a whole ISO.

-Nate

-- 
--< ((\))< >----< [email protected] >----< http://www.movealong.org/ >--
pub  1024D/05A058E0 2002-03-07 Nate Riffe (06-Mar-2002) <[email protected]>
     Key fingerprint = 0DAC F5CB D182 3165 D757  C466 CD42 12A8 05A0 58E0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.