On 13/04/10 5:33 PM, Neil Williams wrote:
Most of these are generic tools just compiled for a particular architecture. Can't the host tools be used to perform these activities (ehco, mv, cp, etc).On Tue, 13 Apr 2010 09:13:19 +1000 Brendan Simon <Brendan@BrendanSimon.com> wrote: Sure. Avoiding perl, python, etc is probably a good idea, especially for very thin systems.Emdebian certainly doesn't want to encourage maintainer scripts using perl or python because Crush won't support either interpreter. Even if you allow perl or python, how much can the interpreter really do without forking some compiled executables or the interpreter itself calling internal compiled code? Why do python2.6 and perl both have buildd logs - because each interpreter contains lots of compiled executables. But some embedded systems are quite fat (have lots of memory and storage -- e.g. routers, firewalls, etc), and are quite suitable for grip packages. Does this mean using the host system tools and/or the host system "environment" ??The other solution is a prefix - replace the interpreter location with one outside the foreign environment. The problem then is just when and how do you decide which queries and instructions need to get information from which environment? Could easily end up configuring the foreign system to work like the desktop that created it instead of the embedded device it needs to be at boot. Why not ??No maintainer scripts can be safely allowed to run until after first boot - it doesn't matter how they are written. Couldn't the 'first boot' be mocked on the host system somehow ?? I'm not talking about processor/system emulation (e.g. qemu). Phew. Does this also solve the 'first boot' issue above ?? No, not necessarily busybox, but that is a valid option. For a networking device, things like a shell interpreter, an snmp agent, an ssh server, a web server, etc. e.g. A 'fat' networking device may have: libc6, bash, coreutils, net-snmp, openssh-server, openssl, apache. e.g. A 'thin' networking device may have: uclibc, busybox, net-snmp, dropbear, appweb. The approach with the Crush experiments is to allow this kind of config by providing dumb replacements for the executables/scripts called BY maintainer scripts. i.e. adduser, dpkg-divert, update-alternatives, install-info - these are simple no-op shell code that accepts any and all arguments, never returns anything other than zero and never outputs or modifies anything. What these scripts would have achieved is then left to the developer to engineer - *without* the packages getting in the way or undoing your config later. This way, we don't mind if maintainers use Debian-specific tools to do the real work within maintainer scripts because we can replace the tools with no-ops and our own changes are untouched. What we don't want is more maintainers using perl or python maintainer scripts that do all the work themselves. Not only is that duplication of effort in Debian but it also complicates pre-seeded configurations. See my other email. |