This is the mail archive of the mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [crosstool-NG] Design discussion

On Sunday 05 April 2009 12:44:41 nyet wrote:
> Rob Landley wrote:
> > I need to
> > download the new version of crosstool-ng in the morning, fight with
> > getting it installed again, and pick up from here.
> svn update
> ./configure --local
> make
> make install
> done.

A) Your definition of "done" does not involve having actually configured or 
built a toolchain yet.  This "done" is equivalent to "I just extracted the 
tarball" in any other project.

B) What other project has both ./configure and menuconfig?  Generally, you 
have one or the other, not both.

C) I didn't check out out of svn.  (I don't want to start out with a random 
svn snapshot, because I have a knack for picking broken ones.  I want to 
first try a release version with known bugs, that presumably worked for 
somebody at some point.)

D) I was just replicating what I had last time, which was was to install it in 

E) Why isn't that the default?  (Why even _have_ --local be an option?)

F) Running ./configure with no arguments died because awk doesn't call itself 
gawk, and that's where I punted until I felt more awake.  The "fight with 
getting it installed again" was:

  1) Run ./configure, watch it die, install gawk.
  2) Run ./configure, watch it die, install bison.
  3) Run ./configure, watch it die, install flex.
  4) Run ./configure, watch it die, try to install makeinfo, realize that 
ubuntu hasn't got a package called makeinfo, install its suggestion 
of "texi2html", find out that ./configure still claims it hasn't got 
makeinfo, do "aptitude search makeinfo" and come up with nothing, think for a 
bit remember that ubuntu has a fiddly thing its shell does when you mistype a 
command to suggest some random package you could install that will give you 
an "sl" command, type makeinfo at the command line, have it suggest texinfo, 
install texinfo.
  5) Run ./configure, watch it die, install automake.
  6) Run ./configure, watch it die, install libtool.

And _then_ it tells me it wants to install in /usr/local, which I can work 
around with --prefix=`pwd` or its synonym --local, except I did `pwd`/subdir 
because I wanted to see what it was actually installing.

The first thing I'd like to say about the prerequisite packages in step F is 
that on this laptop I've already built my Firmware Linux system for armv4l, 
armv5l, armv4eb, mips, mipsel, powerpc, powerpc-440, x86, x86-64, sparc, sh4, 
m68k, and a couple of hardware variants like the wrt610n and User Mode Linux.  
I didn't need _any_ of those packages to build binutils, gcc (with g++), 
uClibc, uClibc++, busybox, make, bash, distcc, and the linux kernel.

You should never need the name "gawk", the SUSv4 name is awk:

And gawk installs such a symlink.  The FSF ./configures will detect "awk" and 
use it.  The version Ubuntu installs by default is just "awk", the version 
busybox provides is also "awk", and they work fine.

The FSF packages ship with cached lex and yacc output, same for autoconf.  It 
won't regenerate those if the host packages are there, but use the cached 
versions.  The Linux kernel also has _shipped files for the few things that 
involved yacc (mainly the menuconfig stuff), and I believe that actually 
won't regenerate those unless told to do so manually.

The "info" documentation format is obsolete.  It was the FSF's attempt to 
replace man pages 20 years ago, and it utterly failed.  There was zero uptake 
outside the FSF, partly because their interface was based on "gopher" which 
lost out to the web circa 1993.

I helped Eric Raymond debug his "doclifter" project to convert man pages to 
docbook, and along the way he was pushing docbook masters upstream into 
various packages to that the versions humans edit were docbook and the man 
pages just became a legacy output format (and you could produce HTML or PDF 
from the same source).  If you're wondering why the linux system man pages 
are all available on the web, it's because their masters are in docbook:

The point of all this is Eric talked to the FSF guys about what to do with 
the "info" pages, and they already had their own tools to migrate all the 
info stuff to docbook, and an in-house plan to do so.  (This was circa 2007 I 
think.)  The fact they haven't actually done it yet may be related to the 
fact that their most recent release of "make" was three years ago, and the 
gap before that was four years.or the gap between tar 1.13 and 1.14 being 
almost five years.  (Actual software is secondary to that lot, their 
political/religious crusade is what they really care about.)

To make a long story short (too late!), everything that uses makeinfo uses 
autoconf, and will skip it if it isn't there.

I mentioned libtool last time.  It's a package that exists to make non-elf 
libraries behave like elf libraries during the linking phase.  Linux has been 
a more or less exclusively ELF-based system since 1995, and the way it 
handles non-ELF output formats (like the kernel's bzImage or the nommu 
binflat stuff) is to first produce an ELF file and then have a conversion 
tool create the desired format from the ELF file.  (That's why the kernel 
creates "vmlinux" on the way to creating bzImage.)

So libtool literally has _nothing_ to do on any Linux system from the past 
decade.  Again, all the packages that use it are autoconfed and will skip it 
if it isn't there, which is a _good_ thing when you're cross compiling 
because libtool gets _confused_ easily by cross compiling and you have to go 
out of your way to wire around it.  One way to make cross compiling easier is 
to _uninstall_ things like libtool so they can't screw stuff up.

GPLv3 is to GPLv2 what Attack of the Clones is to The Empire Strikes Back.

For unsubscribe information see

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]