Re: GAR for embedded systems

Nate Riffe <[email protected]> Sun, 31 Oct 2004 11:11:49 -0500
Newsgroups gmane.linux.bbc.devel
Message-ID <[email protected]>
I cannot believe Grant Likely said this on the ENTARNET:
> Great!  GAR seems to be exactly what I need.  In fact, my embedded
> platform should turn out to be simpler than the LNX-BBC because I
> don't need both an initrd and a secondary image mounted by it.
> 
> I'm having some difficulty understanding just how the LNX-BBC build is
> set up.  I've been looking through the documentation but I have not
> been able to get an understanding of what the dependancies are between
> each of stages (build, main, singularity) and what is contained in
> each of them.

In meta/lnx-bbc, run "make showdeps".  The output should be quite
informative.  GAR has a few very useful diagnostic targets like that.
One thing to note when looking at the output of make showdeps is that
packages are built exactly once for each image (as controlled by the
DESTIMG variable) in which they are depended upon, even though some of
the entries in that tree appear many, many times.

> I believe that the singularity is the basic image.  If I go into the
> meta/singularity directory can I configure it to build just a rootfs
> image using my own toolchain?  I'd like to stick with my crosstool
> generated toolchain.  I think what I need to do is create my own
> target directory under meta/ for my embedded target and then depend on
> each of the packages that I want installed.  Is this correct?

There is package called meta/bbc-contents.  This is where the contents
of singularity are depended upon.  In the Makefile file for
meta/singularity, there is this line:

singularity_DEPENDS = $(if $(LNX_FLAVOR),meta/$(LNX_FLAVOR)-contents,)

The meta/lnx-bbc package sets LNX_FLAVOR to "bbc" in the environment.

> Also, how to I specify which target (i386 or PPC) when building the LNX-BBC?

[inkblot@goose:~/research/meta/lnx-bbc]$ make valueof-GARCH
i686
[inkblot@goose:~/research/meta/lnx-bbc]$ make DESTIMG=singularity valueof-GARCH
i386
[inkblot@goose:~/research/meta/lnx-bbc]$ make DESTIMG=build valueof-GARCH
i686
[inkblot@goose:~/research/meta/lnx-bbc]$ make DESTIMG=lnximg valueof-GARCH
i386
[inkblot@goose:~/research/meta/lnx-bbc]$ make DESTIMG=rootbin valueof-GARCH
i386
[inkblot@goose:~/research/meta/lnx-bbc]$ singularity_GARCH=ppc make valueof-GARCH
i686
[inkblot@goose:~/research/meta/lnx-bbc]$ singularity_GARCH=ppc make DESTIMG=singularity valueof-GARCH
ppc
[inkblot@goose:~/research/meta/lnx-bbc]$ singularity_GARCH=ppc make DESTIMG=build valueof-GARCH
i686
[inkblot@goose:~/research/meta/lnx-bbc]$ singularity_GARCH=ppc make DESTIMG=lnximg valueof-GARCH
ppc
[inkblot@goose:~/research/meta/lnx-bbc]$ singularity_GARCH=ppc make DESTIMG=rootbin valueof-GARCH
ppc

It's in the description (meta/singularity/singularity.conf.mk) for the
singularity image.  The lnximg and rootbin images are boot-time images
which delegate some of their configuration to the values for
singularity.  This is not very well documented because even though GAR
is capable of running a complete cross-build of an entire suite of
software, the LNX-BBC source tree cannot actually cross-compile due to
the shortcomings of some of the third party source code that it
builds.  In particular XFree86, perl, and python are big
troublemakers.

Also, I would recommend taking this thread to the GAR mailing list,
[email protected].  I and several other of the LNX-BBC developers are
subscribed there.

-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