cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

debian-bootstrap.pre (3436B)


      1#!/bin/sh
      2#
      3# Simple wrapper for debootstrap, run in the docker build context
      4#
      5FAKEROOT=$(which fakeroot 2> /dev/null)
      6# debootstrap < 1.0.67 generates empty sources.list, see Debian#732255
      7MIN_DEBOOTSTRAP_VERSION=1.0.67
      8
      9exit_and_skip()
     10{
     11    exit 3
     12}
     13
     14#
     15# fakeroot is needed to run the bootstrap stage
     16#
     17if [ -z $FAKEROOT ]; then
     18    echo "Please install fakeroot to enable bootstraping" >&2
     19    exit_and_skip
     20
     21fi
     22
     23if [ -z "${DEB_ARCH}" ]; then
     24    echo "Please set DEB_ARCH to choose an architecture (e.g. armhf)" >&2
     25    exit_and_skip
     26
     27fi
     28
     29if [ -z "${DEB_TYPE}" ]; then
     30    echo "Please set DEB_TYPE to a Debian archive name (e.g. testing)" >&2
     31    exit_and_skip
     32
     33fi
     34
     35# The following allow finer grain control over the defaults
     36if [ -z "${DEB_VARIANT}" ]; then
     37    DEB_VARIANT=buildd
     38fi
     39
     40if [ -z "${DEB_URL}" ]; then
     41    DEB_URL="http://httpredir.debian.org/debian"
     42fi
     43
     44# We check in order for
     45#
     46#  - DEBOOTSTRAP_DIR pointing at a development checkout
     47#  - PATH for the debootstrap script (installed)
     48#
     49# If neither option works then we checkout debootstrap from its
     50# upstream SCM and run it from there.
     51#
     52
     53if [ -z $DEBOOTSTRAP_DIR ]; then
     54    NEED_DEBOOTSTRAP=false
     55    DEBOOTSTRAP=$(which debootstrap 2> /dev/null)
     56    if [ -z $DEBOOTSTRAP ]; then
     57        echo "No debootstrap installed, attempting to install from SCM"
     58        NEED_DEBOOTSTRAP=true
     59    else
     60        INSTALLED_VERSION=$(${DEBOOTSTRAP} --version | sed 's/debootstrap \([0-9\.]*\)[^0-9\.]*.*/\1/')
     61        if ! (echo "${MIN_DEBOOTSTRAP_VERSION}" ; echo "${INSTALLED_VERSION}") \
     62                | sort -t . -n -k 1,1 -k 2,2 -k 3,3 -C ; then
     63            echo "debootstrap too old, attempting to install from SCM"
     64            NEED_DEBOOTSTRAP=true
     65        fi
     66    fi
     67    if $NEED_DEBOOTSTRAP; then
     68        DEBOOTSTRAP_SOURCE=https://salsa.debian.org/installer-team/debootstrap.git
     69        git clone ${DEBOOTSTRAP_SOURCE} ./debootstrap.git
     70        export DEBOOTSTRAP_DIR=./debootstrap.git
     71        DEBOOTSTRAP=./debootstrap.git/debootstrap
     72        (cd "${DEBOOTSTRAP_DIR}" && "${FAKEROOT}" make )
     73    fi
     74else
     75    DEBOOTSTRAP=${DEBOOTSTRAP_DIR}/debootstrap
     76    if [ ! -f $DEBOOTSTRAP ]; then
     77        echo "Couldn't find script at ${DEBOOTSTRAP}" >&2
     78        exit_and_skip
     79    fi
     80fi
     81
     82#
     83# Add optional args
     84#
     85if [ -n "${DEB_KEYRING}" ]; then
     86    DEBOOTSTRAP="${DEBOOTSTRAP} --keyring=${DEB_KEYRING}"
     87fi
     88
     89#
     90# Finally check to see if any qemu's are installed
     91#
     92BINFMT_DIR=/proc/sys/fs/binfmt_misc
     93if [ ! -e $BINFMT_DIR ]; then
     94   echo "binfmt_misc needs enabling for a QEMU bootstrap to work" >&2
     95   exit_and_skip
     96else
     97    # DEB_ARCH and QEMU arch names are not totally aligned
     98    case "${DEB_ARCH}" in
     99        amd64)
    100            QEMU=qemu-i386
    101            ;;
    102        armel|armhf)
    103            QEMU=qemu-arm
    104            ;;
    105        arm64)
    106            QEMU=qemu-aarch64
    107            ;;
    108        powerpc)
    109            QEMU=qemu-ppc
    110            ;;
    111        ppc64el)
    112            QEMU=qemu-ppc64le
    113            ;;
    114        s390)
    115            QEMU=qemu-s390x
    116            ;;
    117        *)
    118            QEMU=qemu-${DEB_ARCH}
    119        ;;
    120    esac
    121    if [ ! -e "${BINFMT_DIR}/$QEMU" ]; then
    122        echo "No binfmt_misc rule to run $QEMU, can't bootstrap" >&2
    123        exit_and_skip
    124    fi
    125fi
    126
    127echo "Building a rootfs using ${FAKEROOT} and ${DEBOOTSTRAP} ${DEB_ARCH}/${DEB_TYPE}"
    128
    129${FAKEROOT} ${DEBOOTSTRAP} --variant=$DEB_VARIANT --foreign --arch=$DEB_ARCH $DEB_TYPE . $DEB_URL || exit 1
    130exit 0