| #!/bin/sh |
| # |
| # Simple wrapper for debootstrap, run in the docker build context |
| # |
| FAKEROOT=`which fakeroot 2> /dev/null` |
| |
| exit_and_skip() |
| { |
| exit 3 |
| } |
| |
| # |
| # fakeroot is needed to run the bootstrap stage |
| # |
| if [ -z $FAKEROOT ]; then |
| echo "Please install fakeroot to enable bootstraping" |
| exit_and_skip |
| fi |
| |
| # We check in order for |
| # |
| # - DEBOOTSTRAP_DIR pointing at a development checkout |
| # - PATH for the debootstrap script (installed) |
| # |
| # If neither option works then we checkout debootstrap from its |
| # upstream SCM and run it from there. |
| # |
| |
| if [ -z $DEBOOTSTRAP_DIR ]; then |
| DEBOOTSTRAP=`which debootstrap 2> /dev/null` |
| if [ -z $DEBOOTSTRAP ]; then |
| echo "No debootstrap installed, attempting to install from SCM" |
| DEBOOTSTRAP_SOURCE=https://anonscm.debian.org/git/d-i/debootstrap.git |
| git clone ${DEBOOTSTRAP_SOURCE} ./debootstrap.git |
| export DEBOOTSTRAP_DIR=./debootstrap.git |
| DEBOOTSTRAP=./debootstrap.git/debootstrap |
| fi |
| else |
| DEBOOTSTRAP=${DEBOOTSTRAP_DIR}/debootstrap |
| if [ ! -f $DEBOOTSTRAP ]; then |
| echo "Couldn't find script at ${DEBOOTSTRAP}" |
| exit_and_skip |
| fi |
| fi |
| |
| # |
| # Finally check to see if any qemu's are installed |
| # |
| BINFMT_DIR=/proc/sys/fs/binfmt_misc |
| if [ ! -e $BINFMT_DIR ]; then |
| echo "binfmt_misc needs enabling for a QEMU bootstrap to work" |
| exit_and_skip |
| else |
| # DEB_ARCH and QEMU arch names are not totally aligned |
| case "${DEB_ARCH}" in |
| amd64) |
| QEMU=qemu-i386 |
| ;; |
| armel|armhf) |
| QEMU=qemu-arm |
| ;; |
| arm64) |
| QEMU=qemu-aarch64 |
| ;; |
| powerpc) |
| QEMU=qemu-ppc |
| ;; |
| ppc64el) |
| QEMU=qemu-ppc64le |
| ;; |
| s390) |
| QEMU=qemu-s390x |
| ;; |
| *) |
| QEMU=qemu-${DEB_ARCH} |
| ;; |
| esac |
| if [ ! -e "${BINFMT_DIR}/$QEMU" ]; then |
| echo "No binfmt_misc rule to run $QEMU, can't bootstrap" |
| exit_and_skip |
| fi |
| fi |
| |
| echo "Building a rootfs using ${FAKEROOT} and ${DEBOOTSTRAP} ${DEB_ARCH}/${DEB_TYPE}" |
| |
| ${FAKEROOT} ${DEBOOTSTRAP} --variant=buildd --foreign --arch=$DEB_ARCH $DEB_TYPE . http://httpredir.debian.org/debian || exit 1 |
| exit 0 |