Hi,
I'm a long-time Gentoo user and embedded Linux developer. Over that
past year I have been playing with various build systems for creating
complete root file-systems for embedded Linux devices (mostly arm
based). I have tried OpenEmbedded, buildroot a few RPM based systems
and have even tried Portage. Portage is by far the most promising
option as the use of use flags allow the high levels of granularity
you need for embedded targets. I've tried portage several times,
without much success. I'm hoping Paludis might be more suited and
wanted your thoughts.
I suspect the problems I've had with portage lie more in the package
tree & ebuilds than portage itself (in which case Paludis wont help?).
Anyway, what I want is the ability to define my target's profile &
configuration (make.conf) and simply do an "emerge system" to build
everything. I have my requirements below:
* In addition to the "host" root files system hierarchy, I foresee 2 others:
- A toolchain hierarchy, including build-time dependency
packages (a.k.a. portage SYSROOT)
- A target hierarchy, where packages are installed (a.k.a. portage ROOT)
* Ability to only include files required at run-time in the target
hierarchy, i.e. no .a or .h files
* Possibly a 3rd hierarchy, if required, for configuration & profile
(a.k.a. PORTAGE_CONFIGROOT)
* Ability to take a totally empty toolchain & target hierarchy and do
an "emerge system" to generate a toolchain & bootable root filesystem
image.
* Separate build system from distribution, so people can use
Fedora/Debian/Cygwin/Whatever, install the build system and use it to
make target root filesystems.
* Ability to use 3rd party toolchains. I've not really thought about
how this could be done too much, perhaps using ASSUME_PROVIDED type
defines for gcc/libc.
I think this could have lots of other uses. E.g. someone running
fedora could install Gentoo onto a spare partition just by installing
the build system rpm and running it to populate the Gentoo partition.
I guess it's a kinda stage0 install, eliminating the need for catalyst
and stage tarballs.
Portage is quite close to being able to do all these things, but not
quite there. There seems to be lots of small niggly problems. E.g.
Portage seems to get confused between DEPENDS and RDEPENDS. Currently,
if portage installs a package (like baselayout) which DEPENDS on
another package (like zlib), it will emerge zlib into the target
hierarchy, try to build baselayout and fail because it can't find the
zlib includes (because, correctly, it only looks in the toolchain
hierarchy). You therefore have to manually emerge zlib into the
SYSROOT and then try again, and do the same for every build-time
dependency. There are other use flags like "bootstrap" which seem to
be used by Catalyst to fix circular dependencies. I'm (reasonably)
sure these circular dependencies can be fixed by proper use of
RDEPENDS and DEPENDS, but haven't looked too closely so am probably
wrong. :-) I once had a bug where a build-time dependency was ~ masked
on my host architecture which stopped a package being emerged for the
target architecture.
Anyway, how well do you think these requirements fit with Paludis?
Cheers,
Tom
_______________________________________________
paludis-user mailing list
[email protected]
http://lists.pioto.org/mailman/listinfo/paludis-user