mirror of
				https://github.com/qemu/qemu.git
				synced 2025-10-31 20:44:16 +00:00 
			
		
		
		
	 4c5aeb1238
			
		
	
	
		4c5aeb1238
		
	
	
	
	
		
			
			For installing stuff from sid or ports you may need to manually
specify the location of the keyring. You can even import keys into
your personal keyring and point it there, e.g.:
  gpg --keyserver keyring.debian.org --recv-keys 84C573CD4E1AFD6C
  make docker-binfmt-image-debian-sid-hppa DEB_TYPE=sid DEB_ARCH=hppa \
      DEB_URL=http://ftp.ports.debian.org/debian-ports/ \
      EXECUTABLE=./hppa-linux-user/qemu-hppa V=1 \
      DEB_KEYRING=${HOME}/.gnupg/pubring.kbx
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20200724064509.331-12-alex.bennee@linaro.org>
		
	
			
		
			
				
	
	
		
			131 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			131 lines
		
	
	
		
			3.4 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
 | |
| 
 | |
| #
 | |
| # Add optional args
 | |
| #
 | |
| if [ -n "${DEB_KEYRING}" ]; then
 | |
|     DEBOOTSTRAP="${DEBOOTSTRAP} --keyring=${DEB_KEYRING}"
 | |
| 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
 |