[poky] [RFC: enhance toolchain bootstrap process: v3: 0/7] enhance the toolchain bootstrap process

Richard Purdie richard.purdie at linuxfoundation.org
Mon Jan 24 08:04:05 PST 2011


Hi Dexuan,

On Tue, 2011-01-18 at 21:57 +0800, Dexuan Cui wrote:
> Hi Richard and all,
> 
> The patch set enhances the toolchain bootstrap process by installing a separate sysroot for each step of the process.
> The purpose is to avoid file overwriting in the current global sysroot, namely, to fix Bug 239: http://bugzilla.pokylinux.org/show_bug.cgi?id=239
> 
> 
> The basic idea is straightforward:
> 1) For gcc-cross-initial and -intermediate, by changing MULTIMACH_TARGET_SYS to install the files into new locations;
> 2) Fix the build of eglibc-initial, eglibc by using the appropriate compilers, libs, headers;
> 3) Also make proper changes for the crosssdk/nativesdk version.
> 
> I've split all the changes into small git commits and each commit should be basically self-explanatory. :-)

I've had a look through this and experimented a little with the code and
I've some feedback:

  sstate.bbclass: allow each step of toolchain bootstrap processes to do populate_sysroot independently
  cross.bbclass: make MULTIMACH_TARGET_SYS adjustable for bindir, libdir, libexecdir

These two are fine.

  gcc-cross-initial, gcc-crosssdk-initial: change CROSS_TARGET_SYS_DIR and insall into new locations

This change is ok but its incomplete. Why? If I apply this change and
try a build, things won't work as it needs bits from later commits. To
illustrate this and some other details, take a look at:

http://git.pokylinux.org/cgit.cgi/poky-contrib/commit/?h=rpurdie/tt-bootstrap&id=5512f876b103987b74722a7788a1ebe797852bbe

Here I've updated glibc and eglibc to use the new locations so the
change will allow a build to succeed in its own right. Notice that I've
simplified the variables quite a bit too.

There is also a subsequent commit on the branch to enable this change
for gcc-cross-intermediate.

  eglibc-initial, eglibc-initial-nativesdk: install into individual sysroots
  gcc-cross-intermediate, gcc-crosssdk-intermediate: change CROSS_TARGET_SYS_DIR and insall into new locations
  cross.bbclass: modify sysroot_stage_all to allow gcc-{cross,crossdk}-intermediate to populate the libgcc_s.so* files
  eglibc, eglibc-nativesdk: fix the build due to changes to eglibc-initial and gcc-cross-intermediate

These other changes need separating out more cleanly. For example,
adding a patch to gcc should be a separate commit, the update to use a
new sysroot directory should probably be one commit so builds work
before and after it.

I'm also wondering if there isn't a neater way to handle the target
sysroot problem instead of the prefixes you're using. I'll send an
update as and when I've experimented a little to determine if this is
possible.

Cheers,

Richard






More information about the poky mailing list