Various shell files contain a mix between obsolete `` and modern $(); It would be nice to convert to using $() everywhere. Signed-off-by: Mao Zhongyi <maozhongyi@cmss.chinamobile.com> Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Tested-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Thomas Huth <thuth@redhat.com>
		
			
				
	
	
		
			124 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			124 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/sh
 | 
						|
#
 | 
						|
# Simple wrapper for debootstrap, run in the docker build context
 | 
						|
#
 | 
						|
FAKEROOT=$(which fakeroot 2> /dev/null)
 | 
						|
# debootstrap < 1.0.67 generates empty sources.list, see Debian#732255
 | 
						|
MIN_DEBOOTSTRAP_VERSION=1.0.67
 | 
						|
 | 
						|
exit_and_skip()
 | 
						|
{
 | 
						|
    exit 3
 | 
						|
}
 | 
						|
 | 
						|
#
 | 
						|
# fakeroot is needed to run the bootstrap stage
 | 
						|
#
 | 
						|
if [ -z $FAKEROOT ]; then
 | 
						|
    echo "Please install fakeroot to enable bootstraping" >&2
 | 
						|
    exit_and_skip
 | 
						|
 | 
						|
fi
 | 
						|
 | 
						|
if [ -z "${DEB_ARCH}" ]; then
 | 
						|
    echo "Please set DEB_ARCH to choose an architecture (e.g. armhf)" >&2
 | 
						|
    exit_and_skip
 | 
						|
 | 
						|
fi
 | 
						|
 | 
						|
if [ -z "${DEB_TYPE}" ]; then
 | 
						|
    echo "Please set DEB_TYPE to a Debian archive name (e.g. testing)" >&2
 | 
						|
    exit_and_skip
 | 
						|
 | 
						|
fi
 | 
						|
 | 
						|
# The following allow finer grain control over the defaults
 | 
						|
if [ -z "${DEB_VARIANT}" ]; then
 | 
						|
    DEB_VARIANT=buildd
 | 
						|
fi
 | 
						|
 | 
						|
if [ -z "${DEB_URL}" ]; then
 | 
						|
    DEB_URL="http://httpredir.debian.org/debian"
 | 
						|
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
 | 
						|
    NEED_DEBOOTSTRAP=false
 | 
						|
    DEBOOTSTRAP=$(which debootstrap 2> /dev/null)
 | 
						|
    if [ -z $DEBOOTSTRAP ]; then
 | 
						|
        echo "No debootstrap installed, attempting to install from SCM"
 | 
						|
        NEED_DEBOOTSTRAP=true
 | 
						|
    else
 | 
						|
        INSTALLED_VERSION=$(${DEBOOTSTRAP} --version | sed 's/debootstrap \([0-9\.]*\)[^0-9\.]*.*/\1/')
 | 
						|
        if ! (echo "${MIN_DEBOOTSTRAP_VERSION}" ; echo "${INSTALLED_VERSION}") \
 | 
						|
                | sort -t . -n -k 1,1 -k 2,2 -k 3,3 -C ; then
 | 
						|
            echo "debootstrap too old, attempting to install from SCM"
 | 
						|
            NEED_DEBOOTSTRAP=true
 | 
						|
        fi
 | 
						|
    fi
 | 
						|
    if $NEED_DEBOOTSTRAP; then
 | 
						|
        DEBOOTSTRAP_SOURCE=https://salsa.debian.org/installer-team/debootstrap.git
 | 
						|
        git clone ${DEBOOTSTRAP_SOURCE} ./debootstrap.git
 | 
						|
        export DEBOOTSTRAP_DIR=./debootstrap.git
 | 
						|
        DEBOOTSTRAP=./debootstrap.git/debootstrap
 | 
						|
        (cd "${DEBOOTSTRAP_DIR}" && "${FAKEROOT}" make )
 | 
						|
    fi
 | 
						|
else
 | 
						|
    DEBOOTSTRAP=${DEBOOTSTRAP_DIR}/debootstrap
 | 
						|
    if [ ! -f $DEBOOTSTRAP ]; then
 | 
						|
        echo "Couldn't find script at ${DEBOOTSTRAP}" >&2
 | 
						|
        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" >&2
 | 
						|
   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" >&2
 | 
						|
        exit_and_skip
 | 
						|
    fi
 | 
						|
fi
 | 
						|
 | 
						|
echo "Building a rootfs using ${FAKEROOT} and ${DEBOOTSTRAP} ${DEB_ARCH}/${DEB_TYPE}"
 | 
						|
 | 
						|
${FAKEROOT} ${DEBOOTSTRAP} --variant=$DEB_VARIANT --foreign --arch=$DEB_ARCH $DEB_TYPE . $DEB_URL || exit 1
 | 
						|
exit 0
 |