3 # Copyright (c) 2018, The OpenThread Authors.
6 # Redistribution and use in source and binary forms, with or without
7 # modification, are permitted provided that the following conditions are met:
8 # 1. Redistributions of source code must retain the above copyright
9 # notice, this list of conditions and the following disclaimer.
10 # 2. Redistributions in binary form must reproduce the above copyright
11 # notice, this list of conditions and the following disclaimer in the
12 # documentation and/or other materials provided with the distribution.
13 # 3. Neither the name of the copyright holder nor the
14 # names of its contributors may be used to endorse or promote products
15 # derived from this software without specific prior written permission.
17 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18 # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20 # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
21 # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24 # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25 # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 # POSSIBILITY OF SUCH DAMAGE.
33 TOOLS_HOME=$HOME/.cache/tools
37 IMAGE_NAME=$(basename "${IMAGE_URL}" .zip)
38 STAGE_DIR=/tmp/raspbian
40 IMAGE_FILE="$TOOLS_HOME"/images/"$IMAGE_NAME".img
42 [ -d "$STAGE_DIR" ] || mkdir -p "$STAGE_DIR"
43 cp -v "$IMAGE_FILE" "$STAGE_DIR"/raspbian.img
45 python3 -m git_archive_all "$STAGE_DIR"/repo.tar.gz
47 cat >"$STAGE_DIR"/check.sh <<EOF
51 export DEBIAN_FRONTEND=noninteractive
54 echo "127.0.0.1 \$(hostname)" >> /etc/hosts
55 chown -R pi:pi /home/pi/repo
57 echo 1 | sudo tee /proc/sys/net/ipv6/conf/all/disable_ipv6
59 apt-get install -y --no-install-recommends git
60 su -m -c 'script/bootstrap' pi
61 su -m -c 'NETWORK_MANAGER=0 script/setup' pi
65 cd docker-rpi-emu/scripts \
66 && sudo mkdir -p "$IMAGE_DIR" \
67 && sudo ./mount.sh "$STAGE_DIR"/raspbian.img "$IMAGE_DIR" \
68 && sudo mount --bind /dev/pts "$IMAGE_DIR"/dev/pts \
69 && sudo mkdir -p "$IMAGE_DIR"/home/pi/repo \
70 && sudo tar xzf "$STAGE_DIR"/repo.tar.gz --strip-components 1 -C "$IMAGE_DIR"/home/pi/repo \
71 && sudo cp -v "$STAGE_DIR"/check.sh "$IMAGE_DIR"/home/pi/check.sh \
72 && sudo ./qemu-setup.sh "$IMAGE_DIR" \
73 && sudo chroot "$IMAGE_DIR" /bin/bash /home/pi/check.sh
74 sudo umount -lf "$IMAGE_DIR"/dev/pts || true
75 sudo ./qemu-cleanup.sh "$IMAGE_DIR" || true
76 sudo umount -lf "$IMAGE_DIR"/dev || true
77 sudo ./unmount.sh "$IMAGE_DIR"