[Aboriginal] Unable to use gcc inside chroot of latest aboriginal.

Rob Landley rob at landley.net
Sun Jan 10 17:00:26 PST 2016

On 01/09/2016 02:54 PM, KARBOWSKI Piotr wrote:
> Hi,
> It seems that something is kind of broken with the GCC when used in
> chroot.

There's a more/chroot-splice.sh script that sets up a chroot, which
works fine for me here? (It requires a control image to mount on /mnt,
but you can feed it an empty directory.)

> When I combine the root-filesystem with native-compiller and
> chroot there, the gcc runs cc, which then fails to run 'rawcc'.

How are you combining the two?

> Appending the /usr/*-unknown-linux/bin/ to $PATH does make gcc no longer
> crash like that, but I think it was not intendent to require altering
> $PATH.

It wasn't. You should be able to basically:

  mkdir out
  cp -a dir1/. out
  cp -a dir2/. out
  chroot out

(Without the /. cp has an annoying habit of creating out/dir1 or
out/dir2 but that's a cp issue inherent to posix...)

What chroot-splice.sh does is actually:

  # Copy root filesystem and native compiler
  cp -lan "build/root-filesystem-$1/." "$CHROOT" || exit 1
  cp -lan "build/native-compiler-$1/." "$CHROOT" || exit 1

The -l hardlinks the original files rather than creating a new copy.

The sbin/init.sh script under qemu (from
sources/root-filesystem/sbin/init.sh) does:

  [ -b /dev/[hsv]da ] &&
    mkdir -p /usr/overlay && mount /dev/[hsv]da /usr/overlay

and then:

  # Call overlay/init if available
  [ -e /usr/overlay/init ] && . /usr/overlay/init

Which comes from sources/toys/hdainit.sh and starts with:

  # splice hda into /
  cp -rFs /usr/overlay/. /

So chroot_splice.sh is doing cp -ln (hardlink, no overwrite) and that's
doing cp -Fs (delete destination file first (if any), symlink).

The only conflicting file between the two should be /bin/sh by the way.
(Switching from hush to bash 2.05b.)



More information about the Aboriginal mailing list