-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathrun.sh
executable file
·46 lines (40 loc) · 1.51 KB
/
run.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
VIRTME_INTERACTIVE=""
test -t 1 && VIRTME_INTERACTIVE="-t"
[ "${VIRTME_NO_INTERACTIVE}" != 1 ] && VIRTME_INTERACTIVE="-it"
[ -z "${VIRTME_SYZKALLER_PATH}" ] && [ -d ../syzkaller ] && VIRTME_SYZKALLER_PATH="$(realpath "../syzkaller")"
# host is different if worktree are used
VIRTME_GIT_DIR="$(realpath "$(git rev-parse --git-common-dir)")"
VIRTME_REAL_DIR="$(realpath .virtme)"
HOME_DIR="$(realpath "$(dirname "${0}")/.home")"
envs=()
for env in "${!INPUT_@}"; do
envs+=(-e "${env}=${!env}")
done
ports=()
if [ -z "$(docker ps --filter "label=name=mptcp-upstream-virtme-docker" --format '{{.Ports}}')" ]; then
ports+=(-p 127.0.0.1:1234-1238:1234-1238
-p 127.0.0.1:3636-3640:3636-3640)
fi
docker run \
-v "${PWD}:${PWD}:rw" \
-v "${VIRTME_GIT_DIR}:${VIRTME_GIT_DIR}:ro" \
-v "${VIRTME_REAL_DIR}:${VIRTME_REAL_DIR}:rw" \
${VIRTME_PACKETDRILL_PATH:+-v "${VIRTME_PACKETDRILL_PATH}:/opt/packetdrill:rw"} \
-v "${HOME_DIR}:/root" \
${VIRTME_SYZKALLER_PATH:+ -v "${VIRTME_SYZKALLER_PATH}:/opt/syzkaller:rw"} \
${VIRTME_NG_PATH:+ -v "${VIRTME_NG_PATH}:/opt/virtme-ng:ro"} \
-w "${PWD}" \
-e "INPUT_PACKETDRILL_NO_SYNC=${VIRTME_PACKETDRILL_PATH:+1}" \
-e "INPUT_PACKETDRILL_NO_MORE_TOLERANCE=${VIRTME_PACKETDRILL_PATH:+1}" \
-e "INPUT_PACKETDRILL_STABLE=${VIRTME_PACKETDRILL_STABLE:-0}" \
"${envs[@]}" \
-e "VIRTME_ARCH" \
-e "COMPILER" \
"${ports[@]}" \
--privileged \
--rm \
${VIRTME_INTERACTIVE} \
"${DOCKER_VIRTME_NAME:-"mptcp/mptcp-upstream-virtme-docker:latest"}" \
"${@}"