From: Rob Landley <rob@landley.net>
To: Bill Gatliff <bgat@billgatliff.com>
Cc: linux-embedded@vger.kernel.org
Subject: Re: cross-compiling alternatives (was Re: [PATCH 0/1] Embedded Maintainer(s)...)
Date: Fri, 13 Jun 2008 13:01:36 -0500 [thread overview]
Message-ID: <200806131301.36729.rob@landley.net> (raw)
In-Reply-To: <48515978.8040603@billgatliff.com>
[-- Attachment #1: Type: text/plain, Size: 3389 bytes --]
On Thursday 12 June 2008 12:14:32 Bill Gatliff wrote:
> Paul Mundt wrote:
> > Yes, that's the easy case. It's things like perl that are the corner
> > cases, and my objection comes from the fact that people think we ought to
> > not have the kernel depend on perl rather than just fixing the package
> > itself. Autoconf/libtool damage is an entirely different problem :-)
>
> At first glance, it seems like checkincludes.pl could be duplicated by
> egrep | uniq | wc vs. egrep | wc. Not quite sure what checkversion.pl is
> trying to do.
There's a difference between "this is a development tool used while modifying
source code" and "this is needed to build".
There are situations where it's ok to have a dependency on X11/qt/gtk, such
as "make xconfig". This is _not_ the same as adding such dependency to "make
modules".
So far, none of the perl dependencies prevent you from building the kernel on
a system that didn't have perl (or didn't have the right version of perl).
> So maybe we could _reduce_ dependency on perl, if there's any advantage to
> gain by doing so. But the kernel build machinery isn't dependent on very
> many other systems (just tcl, bash and gcc-core),
There's no tcl dependency in the build. (Yes, I actually know this.)
Part of my FWL work involves getting the system to rebuild itself under
itself. (The packages you need to make a minimal self-bootstrapping system
are gcc, binutils, make, bash, uClibc, linux, and busybox/toybox). I'm seven
commands away from doing this.
I know this because I made a horrible little wrapper (attached, it really is
sad) which touched a file with the name it was called as and then exec()ed
the actual executable out of another directory. Then I populated a directory
with symlinks to every executable in $PATH (for i in `echo $PATH |
sed 's/:/ /g'`;do for j in `ls $i`; do ln -s $i/$j $j; done; done), and
another directory of similar symlinks to my wrapper. I then ran my build
with that wrapper directory at the start of $PATH and let the wrapper
populate a directory with all the executables that actually got called during
the build. Then I filled up a directory with those executables, tried to run
the build, and figured out why it broke. (The above approach won't find
calls to /bin/bash and a few other things, but it's a good start.)
Most of the point of my ./host-tools.sh wrapper in the FWL build is to
populate a directory with the command line utilities mini-native will have in
it (specifically the busybox/toybox versions, not the ones in the host
system), and set $PATH equal to that directory and only that directory. This
way I know the system will build under itself because that's how it's
building in the first place.
Currently, I need to grab the following out of the host system:
for i in ar as nm cc gcc make ld bzip2 find install od sort diff wget
do
[ ! -f "${HOSTTOOLS}/$i" ] && (ln -s `which $i` "${HOSTTOOLS}/$i" || dienow)
done
The first seven are the needed bits of the host toolchain (you'd think "strip"
would be in there, but it turns out those packages only ever use
$TARGET-strip). The last seven are the ones that are either missing or had
various bugs in the version of busybox I'm using that prevented the build
from working right.
Rob
--
"One of my most productive days was throwing away 1000 lines of code."
- Ken Thompson.
[-- Attachment #2: wrappy.c --]
[-- Type: text/x-csrc, Size: 909 bytes --]
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <fcntl.h>
char blah[65536];
#define ROOTPATH "/home/landley/firmware/firmware"
int main(int argc, char *argv[], char *env[])
{
char *p, *p2;
int i, fd;
p2 = strrchr(*argv, '/');
if (!p2) p2=*argv;
else p2++;
p=blah + sprintf(blah, "%s ",p2);
for (i=1; i<argc; i++) {
p += sprintf(p, "\"%s\" ",argv[i]);
}
p[-1]='\n';
// Log the command line
fd=open(ROOTPATH "/loggy.txt",O_WRONLY|O_CREAT|O_APPEND,0777);
write(fd, blah, strlen(blah));
close(fd);
// Touch the file that got used.
sprintf(blah,ROOTPATH "/used/%s", p2);
close(open(blah, O_WRONLY|O_CREAT, 0777));
// Hand off control to the real executable
sprintf(blah, ROOTPATH "/handoff/%s", p2);
execve(blah, argv, env);
// Should never happen, means handoff dir is set up wrong.
dprintf(2,"Didn't find %s\n", *argv);
exit(1);
}
next prev parent reply other threads:[~2008-06-13 18:01 UTC|newest]
Thread overview: 204+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-04-30 17:42 [PATCH 0/1] Embedded Maintainer(s), linux-embedded@vger list David Woodhouse
2008-04-30 17:44 ` [PATCH 1/1] " David Woodhouse
2008-05-01 9:55 ` Bart Van Assche
2008-05-01 10:05 ` David Woodhouse
2008-05-01 11:12 ` Bart Van Assche
2008-04-30 18:22 ` [PATCH 0/1] " Andi Kleen
2008-04-30 19:11 ` David Woodhouse
[not found] ` <1209582709.25560.441.camel-ZP4jZrcIevRpWr+L1FloEB2eb7JE58TQ@public.gmane.org>
2008-05-28 21:52 ` Rob Landley
2008-06-09 21:27 ` Leon Woestenberg
2008-06-10 3:53 ` Rob Landley
2008-06-10 4:30 ` Sam Ravnborg
2008-06-10 6:55 ` Rob Landley
2008-06-10 7:54 ` Sam Ravnborg
2008-06-10 9:09 ` Wolfgang Denk
2008-06-10 13:12 ` Jamie Lokier
2008-06-10 13:25 ` Will Newton
2008-06-10 13:33 ` David Woodhouse
2008-06-10 13:47 ` Will Newton
2008-06-10 13:53 ` David Woodhouse
2008-06-10 14:00 ` Grant Likely
2008-06-10 14:01 ` Wolfgang Denk
2008-06-10 14:29 ` Jamie Lokier
2008-06-11 5:34 ` Rob Landley
2008-06-10 13:49 ` Wolfgang Denk
2008-06-11 5:25 ` Rob Landley
2008-06-12 18:18 ` Enrico Weigelt
2008-06-12 18:55 ` Wolfgang Denk
2008-06-12 20:55 ` Enrico Weigelt
2008-06-15 21:48 ` Rob Landley
2008-06-17 14:11 ` Enrico Weigelt
2008-06-10 13:47 ` Wolfgang Denk
2008-06-10 10:20 ` Jamie Lokier
2008-06-10 10:36 ` Adrian Bunk
2008-06-10 10:50 ` Sam Ravnborg
2008-06-11 5:28 ` Paul Mundt
2008-06-10 17:36 ` Tim Bird
2008-06-11 3:35 ` Rob Landley
2008-06-11 5:47 ` Greg Ungerer
2008-06-12 0:41 ` Rob Landley
2008-06-12 7:55 ` Jamie Lokier
2008-06-12 15:23 ` cross-compiling alternatives (was Re: [PATCH 0/1] Embedded Maintainer(s)...) Tim Bird
2008-06-12 15:50 ` David Woodhouse
2008-06-12 16:05 ` Mike Frysinger
2008-06-12 16:08 ` David Woodhouse
2008-06-12 16:15 ` Mike Frysinger
2008-06-12 16:12 ` Robert P. J. Day
2008-06-13 0:25 ` Rob Landley
2008-06-13 1:22 ` Bill Gatliff
2008-06-13 6:55 ` Alexander Neundorf
2008-06-13 15:06 ` Enrico Weigelt
2008-06-13 7:04 ` David Woodhouse
2008-06-13 15:02 ` linux-embedded-owner
2008-06-13 17:00 ` David Woodhouse
2008-06-13 17:12 ` Bill Traynor
2008-06-13 18:44 ` Tim Bird
2008-06-13 18:55 ` Sam Ravnborg
2008-06-13 19:00 ` Bill Traynor
2008-06-13 19:43 ` Johannes Stezenbach
2008-06-13 17:30 ` Makefile debugger linux-embedded-owner
2008-06-13 8:50 ` cross-compiling alternatives Bernd Petrovitsch
2008-06-13 9:11 ` Alexander Neundorf
2008-06-13 14:51 ` cross-compiling alternatives (was Re: [PATCH 0/1] Embedded Maintainer(s)...) Enrico Weigelt
2008-06-16 7:58 ` Alexander Neundorf
2008-06-16 16:00 ` Enrico Weigelt
2008-06-16 17:38 ` Adrian Bunk
2008-06-17 13:57 ` Enrico Weigelt
2008-06-13 11:14 ` Geert Uytterhoeven
2008-06-13 11:22 ` Bart Van Assche
2008-06-12 18:29 ` Josh Boyer
2008-06-12 19:02 ` Mike Frysinger
2008-06-13 13:29 ` Josh Boyer
2008-06-13 13:59 ` Josh Boyer
2008-06-12 16:08 ` Paul Mundt
2008-06-12 16:28 ` Bill Gatliff
2008-06-12 16:31 ` Paul Mundt
2008-06-12 16:38 ` Mike Frysinger
2008-06-12 18:50 ` Bernhard Fischer
2008-06-12 17:14 ` Bill Gatliff
2008-06-12 17:22 ` Mike Frysinger
2008-06-12 17:23 ` Sam Ravnborg
2008-06-13 18:01 ` Rob Landley [this message]
2008-06-12 16:37 ` David Woodhouse
2008-06-12 17:01 ` Adrian Bunk
2008-06-12 17:19 ` Bill Gatliff
2008-06-12 17:17 ` Bill Gatliff
2008-06-13 11:15 ` Geert Uytterhoeven
2008-06-13 11:17 ` David Woodhouse
2008-06-12 18:34 ` Enrico Weigelt
2008-06-12 19:00 ` Bill Gatliff
2008-06-15 21:51 ` Rob Landley
2008-06-12 18:30 ` Enrico Weigelt
2008-06-12 18:57 ` Wolfgang Denk
2008-06-12 16:23 ` Tim Bird
2008-06-12 18:37 ` Enrico Weigelt
2008-06-13 18:45 ` Robert Schwebel
2008-06-15 23:12 ` Enrico Weigelt
2008-06-16 8:02 ` Alexander Neundorf
2008-06-16 8:28 ` cross-compiling alternatives Bernd Petrovitsch
2008-06-16 9:25 ` Alexander Neundorf
2008-06-13 1:25 ` cross-compiling alternatives (was Re: [PATCH 0/1] Embedded Maintainer(s)...) Rob Landley
2008-06-13 1:28 ` Robert P. J. Day
2008-06-13 1:29 ` Mike Frysinger
2008-06-13 6:30 ` Alexander Neundorf
2008-06-13 18:51 ` Robert Schwebel
2008-06-13 22:25 ` Jamie Lokier
2008-06-13 23:19 ` Robert Schwebel
2008-06-14 0:07 ` Jamie Lokier
2008-06-14 11:26 ` Robert Schwebel
2008-06-16 11:39 ` Jamie Lokier
2008-06-16 12:06 ` Alexander Neundorf
2008-06-16 13:32 ` Jamie Lokier
2008-06-16 16:28 ` Bernhard Fischer
2008-06-16 22:28 ` Jamie Lokier
2008-06-16 22:44 ` Adrian Bunk
2008-06-16 5:11 ` Enrico Weigelt
2008-06-16 11:33 ` Jamie Lokier
2008-06-16 8:33 ` cross-compiling alternatives Bernd Petrovitsch
2008-06-16 11:17 ` Jamie Lokier
2008-06-16 11:43 ` Bernd Petrovitsch
2008-06-16 7:55 ` cross-compiling alternatives (was Re: [PATCH 0/1] Embedded Maintainer(s)...) Alexander Neundorf
2008-06-16 15:15 ` Enrico Weigelt
2008-06-17 6:27 ` Alexander Neundorf
2008-06-17 13:46 ` Enrico Weigelt
2008-06-17 14:22 ` Alexander Neundorf
2008-06-16 4:57 ` Enrico Weigelt
2008-06-16 11:44 ` Jamie Lokier
2008-06-16 4:31 ` Enrico Weigelt
2008-06-16 8:13 ` Alexander Neundorf
2008-06-16 8:21 ` cross-compiling alternatives Bernd Petrovitsch
2008-06-13 3:11 ` cross-compiling alternatives (was Re: [PATCH 0/1] Embedded Maintainer(s)...) Sam Ravnborg
2008-06-13 18:47 ` Robert Schwebel
2008-06-13 6:43 ` Alexander Neundorf
2008-06-13 8:38 ` Bernd Petrovitsch
2008-06-13 9:06 ` Alexander Neundorf
2008-06-13 9:12 ` David Woodhouse
2008-06-13 9:32 ` Alexander Neundorf
2008-06-13 15:28 ` Enrico Weigelt
2008-06-14 0:31 ` Jamie Lokier
2008-06-16 4:23 ` Enrico Weigelt
2008-06-16 10:49 ` Jamie Lokier
2008-06-16 11:09 ` David Woodhouse
2008-06-16 11:52 ` Jamie Lokier
2008-06-16 11:59 ` David Woodhouse
2008-06-16 16:43 ` Bernhard Fischer
2008-06-13 10:03 ` cross-compiling alternatives Bernd Petrovitsch
2008-06-13 11:24 ` Alexander Neundorf
2008-06-13 13:17 ` Jamie Lokier
2008-06-13 13:28 ` Bernd Petrovitsch
2008-06-13 13:40 ` Alexander Neundorf
2008-06-13 13:56 ` Matthieu CASTET
2008-06-13 14:41 ` Enrico Weigelt
2008-06-13 14:49 ` Jamie Lokier
2008-06-13 14:51 ` Enrico Weigelt
2008-06-13 14:55 ` Enrico Weigelt
2008-06-13 15:16 ` Enrico Weigelt
2008-06-13 18:45 ` Bernd Petrovitsch
2008-06-13 19:10 ` Robert Schwebel
2008-06-16 4:08 ` Enrico Weigelt
2008-06-16 7:31 ` Peter Korsgaard
2008-06-16 14:33 ` Enrico Weigelt
2008-06-16 16:45 ` Bernhard Fischer
2008-06-13 19:14 ` cross-compiling alternatives (was Re: [PATCH 0/1] Embedded Maintainer(s)...) Rob Landley
2008-06-13 15:25 ` Enrico Weigelt
2008-06-12 18:25 ` [PATCH 0/1] Embedded Maintainer(s), linux-embedded@vger list Enrico Weigelt
2008-06-12 21:11 ` David VomLehn
2008-06-12 21:42 ` James Chapman
2008-06-12 21:46 ` Mike Frysinger
2008-06-12 21:53 ` Tim Bird
2008-06-12 21:56 ` Mike Frysinger
2008-06-13 8:39 ` James Chapman
2008-06-13 9:02 ` Daniel THOMPSON
2008-06-13 11:28 ` James Chapman
2008-06-12 22:02 ` Jim Freeman
2008-06-13 13:14 ` Samuel Robb
2008-06-13 14:36 ` Enrico Weigelt
2008-06-13 14:26 ` Enrico Weigelt
2008-06-13 22:24 ` David VomLehn
2008-06-15 15:39 ` Leon Woestenberg
2008-06-15 21:43 ` Rob Landley
2008-06-23 17:22 ` Denys Vlasenko
2008-06-23 18:57 ` Sam Ravnborg
2008-06-23 19:12 ` Denys Vlasenko
2008-06-23 19:33 ` Sam Ravnborg
[not found] ` <48190B5F.9010505@am.sony.com>
[not found] ` <20080501095822.GL20451@one.firstfloor.org>
2008-05-01 10:02 ` David Woodhouse
2008-05-01 10:41 ` Andi Kleen
2008-05-02 15:00 ` Pekka Enberg
2008-05-02 20:01 ` Eduard - Gabriel Munteanu
2008-05-02 20:14 ` Andrew Morton
2008-05-02 20:33 ` Eduard - Gabriel Munteanu
2008-05-02 20:53 ` Andrew Morton
2008-05-03 22:24 ` Randy Dunlap
2008-05-05 1:52 ` Andrew Morton
2008-06-23 17:28 ` Denys Vlasenko
2008-06-23 17:45 ` Adrian Bunk
2008-06-23 18:19 ` Denys Vlasenko
2008-06-23 19:05 ` Tim Bird
2008-06-25 9:50 ` James Chapman
2008-06-25 15:41 ` Adrian Bunk
2008-04-30 18:26 ` Josh Boyer
2008-04-30 18:43 ` David Woodhouse
2008-04-30 18:45 ` Josh Boyer
2008-04-30 23:34 ` Adrian Bunk
2008-05-01 7:04 ` David Woodhouse
2008-05-02 11:58 ` Kristoffer Ericson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200806131301.36729.rob@landley.net \
--to=rob@landley.net \
--cc=bgat@billgatliff.com \
--cc=linux-embedded@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.