Hi Nedd,
That's a very good suggestion - I'll start signing on to IRC as well.
I'm sure I could learn quite a bit from the rest of the g.e. developers,
and hopefully my work could be of benefit to others as well.
cheers,
~/Chris
Ned Ludd wrote:
On Wed, 2007-03-14 at 19:23 +0100, Christopher Friedt wrote:
I may have already mentioned this once, but I don't see any harm in
doing it again.
Have any of you used Kuroo ? This is a similar idea - although not
nearly as far along - for managing embedded system builds with portage.
Are there any developer libraries for interfacing with Portage that are
fairly available - [Java, C, C#, ... I've really never used python]
********
As an gentoo user & embedded developer, I can see the massive benefits
to both general purpose package management, as well as build automation
for embedded systems, through the use of portage & emerge.
Portage has a major advantage and should really be asserting itself more
in the world of embedded package management. The crossdev utility is by
far an excellent piece of work - I use it for practically every
toolchain now.
However, there are a few questions that I've been asked several times -
(mostly by my boss), such as -
i) why not just use OpenWRT, which will generage a filesystem image,
download your sources, _and_ build a kernel automatically...
ii) why not use that thing from openembedded.org ? ... same idea as above...
Why not? because I think that portage is clearly better, the source is
more current, dependencies are better resolved, more flexible, etc.
What appears to be a constant theme, in terms of what the 'competition'
has on gentoo-embedded, is an easy-to-use build system.
The good news is, I've actually done some extensive work on this!
I've been working on a _single_bash_script_ that is exceeding 2000+
lines of code. What it does, is interactively help the user set up a
buildroot and manage portage overlays for different targets. That is, a
stage1 filesystem, a local portage tree, a cross-toolchain, etc.
The reasons for this are:
1) portability across linux vendors (i.e. the developer does not need to
run gentoo natively, only needs to chroot to get the advantages of portage)
2) separability from the main os - none of the host
/etc/portage/package.* files are not adjusted - so there is practically
nothing changed at all on the host machine except for the addition of a
new buildroot directory.
3) extensibility - I'm seriously considering developing user interfaces,
libraries, etc, all to make this _more_developer_friendly_ ... even a
context free grammar for all possible buildroot / configuration
operations. Likely any extensions to this will be done either in C
(libs), Java, or C# ... maybe even an extension of some kind for
Eclipse. This could be somewhat similar to Kuroo
4) enables embedded developers to simply manage their embedded devices
using a portage overlay, in a very portable way.
5) easy generation of a root filesystem
By basically mounting or systematically copying/destroying key portage /
crossdev / configuration files to the chroot upon chroot (mount -n -o
bind, etc). This (will / has) enabled the same buildroot to be used for
_several_ configurations (portage overlays), targets (with versioned
toolchains), as well as developer and stable profiles. I'm working in a
way to automate compressed configuration backups as well, organized by
date. Hopefully, this will all be SVN friendly too - except for device
nodes of course :P
The user is interactively prompted to select a target / toolchain, etc,
these are all selected based on __tested__ compilations on each
architecture using crossdev - a sort of build matrix like that from Dan
Kegel.
There is a list of toolchains for each architecture that were cleanly
built using crossdev. I've only done a fraction of the build automations
for X86, and it took something like 2 days.
What's really interesting about this script, is that i've made the
script copy itself to the chroot, upon every chroot, but with a
different name. So when the program chroots, it actually calls itself
upon transition with
LIST=of \
ENVIRONMENT=variables \
chroot ${DIR} ${PROG2_NAME}
which allows for a somewhat 'seamless' routine carryover - that is if
the program needs to install a toolchain, it will pass certain
environment variables once it moves to the chroot, etc.
I think that this could be a pretty good addition to the embedded
development utilities for gentoo.
Please inform me if you have any interest in this project at all, I
would be very happy to have any assistance or input.
~/Chris
Your project seems very similar to that of the former GNAP (sadly the
old GNAP developer is no longer with us)
http://www.gentoo.org/proj/en/base/embedded/gnap.xml
Anyway your goals are inline with ours for the most part.. So you may
want to consider becoming an embedded developer for gentoo. If that is
something that interests you come join us on irc in #gentoo-embedded on
irc.gentoo.org (point at this thread and work with us for better
integration) with portage/gentoo itself.
--
[email protected] mailing list