#!/bin/sh global QEMU_IMAGE := 'linuxkit/qemu:4563d58e97958f4941fbef9e74cabc08bd402144@sha256:b2db0b13ba1cbb6b48218f088fe0a4d860e1db2c4c6381b5416536f48a612230' # if not interactive if test ! -t 0 -a -z $1 { # non interactive, tarball input docker run -i --rm $QEMU_IMAGE exit $Status } global FILE := $1 global FILE2 := $2 global CMDLINE := $3 test -z $FILE && global FILE := ""$PWD/moby"" global BASE := $[basename $FILE] global DIR := $[dirname $FILE] if test ! -f $FILE -a -f $DIR/$BASE-initrd.img -a -f $DIR/$BASE-bzImage { global FILE := "$DIR/$BASE-initrd.img" global FILE2 := "$DIR/$BASE-bzImage" } echo $FILE | grep -q '^/' || global FILE := ""$PWD/$FILE"" if test ! -z $FILE2 { echo $FILE2 | grep -q '^/' || global FILE2 := ""$PWD/$FILE2"" } if test ! -z $CMDLINE { echo $CMDLINE | grep -q '^/' || global CMDLINE := ""$PWD/$CMDLINE"" } if test -c "/dev/kvm" { global DEVKVM := '"--device=/dev/kvm'" } global BASE := $[basename $FILE] global MOUNTS := ""-v $FILE:/tmp/$BASE"" global BASE2 := $[basename $FILE2] global BASE3 := $[basename $CMDLINE] test ! -z $FILE2 && global MOUNTS := ""$MOUNTS -v $FILE2:/tmp/$BASE2"" test ! -z $CMDLINE && global MOUNTS := ""$MOUNTS -v $CMDLINE:/tmp/$BASE3"" docker run -it --rm $MOUNTS $DEVKVM $QEMU_IMAGE (CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:QEMU_IMAGE) op: Equal rhs: {(linuxkit/qemu) (Lit_Other ":") (4563d58e97958f4941fbef9e74cabc08bd402144) (Lit_Other "@") (sha256) (Lit_Other ":") (b2db0b13ba1cbb6b48218f088fe0a4d860e1db2c4c6381b5416536f48a612230) } spids: [4] ) ] spids: [4] ) (If arms: [ (if_arm cond: [ (C {(Lit_Other "[")} {(KW_Bang "!")} {(-t)} {(0)} {(-a)} {(-z)} {(DQ ($ VSub_Number "$1"))} {(Lit_Other "]")} ) ] action: [ (C {(docker)} {(run)} {(-i)} {(--rm)} {(DQ ($ VSub_Name "$QEMU_IMAGE"))}) (C {(exit)} {($ VSub_QMark "$?")}) ] spids: [-1 37] ) ] spids: [-1 61] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:FILE) op:Equal rhs:{($ VSub_Number "$1")} spids:[64])] spids: [64] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:FILE2) op:Equal rhs:{($ VSub_Number "$2")} spids:[67])] spids: [67] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:CMDLINE) op:Equal rhs:{($ VSub_Number "$3")} spids:[70])] spids: [70] ) (AndOr children: [ (C {(Lit_Other "[")} {(-z)} {(DQ ($ VSub_Name "$FILE"))} {(Lit_Other "]")}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FILE) op: Equal rhs: {(DQ ($ VSub_Name "$PWD") (/moby))} spids: [85] ) ] spids: [85] ) ] op_id: Op_DAmp ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BASE) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(basename)} {(DQ ($ VSub_Name "$FILE"))})]) left_token: spids: [93 99] ) } spids: [92] ) ] spids: [92] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:DIR) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(dirname)} {(DQ ($ VSub_Name "$FILE"))})]) left_token: spids: [102 108] ) } spids: [101] ) ] spids: [101] ) (If arms: [ (if_arm cond: [ (C {(Lit_Other "[")} {(KW_Bang "!")} {(-f)} {(DQ ($ VSub_Name "$FILE"))} {(-a)} {(-f)} {($ VSub_Name "$DIR") (/) ($ VSub_Name "$BASE") (-initrd.img)} {(-a)} {(-f)} {($ VSub_Name "$DIR") (/) ($ VSub_Name "$BASE") (-bzImage)} {(Lit_Other "]")} ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FILE) op: Equal rhs: {($ VSub_Name "$DIR") (/) ($ VSub_Name "$BASE") (-initrd.img)} spids: [145] ) ] spids: [145] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FILE2) op: Equal rhs: {($ VSub_Name "$DIR") (/) ($ VSub_Name "$BASE") (-bzImage)} spids: [152] ) ] spids: [152] ) ] spids: [-1 142] ) ] spids: [-1 158] ) (AndOr children: [ (Pipeline children: [(C {(echo)} {(DQ ($ VSub_Name "$FILE"))}) (C {(grep)} {(-q)} {(SQ <"^/">)})] negated: False ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FILE) op: Equal rhs: {(DQ ($ VSub_Name "$PWD") (/) ($ VSub_Name "$FILE"))} spids: [179] ) ] spids: [179] ) ] op_id: Op_DPipe ) (If arms: [ (if_arm cond: [ (C {(Lit_Other "[")} {(KW_Bang "!")} {(-z)} {(DQ ($ VSub_Name "$FILE2"))} {(Lit_Other "]")}) ] action: [ (AndOr children: [ (Pipeline children: [(C {(echo)} {(DQ ($ VSub_Name "$FILE2"))}) (C {(grep)} {(-q)} {(SQ <"^/">)})] negated: False ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FILE2) op: Equal rhs: {(DQ ($ VSub_Name "$PWD") (/) ($ VSub_Name "$FILE2"))} spids: [221] ) ] spids: [221] ) ] op_id: Op_DPipe ) ] spids: [-1 200] ) ] spids: [-1 228] ) (If arms: [ (if_arm cond: [ (C {(Lit_Other "[")} {(KW_Bang "!")} {(-z)} {(DQ ($ VSub_Name "$CMDLINE"))} {(Lit_Other "]")}) ] action: [ (AndOr children: [ (Pipeline children: [ (C {(echo)} {(DQ ($ VSub_Name "$CMDLINE"))}) (C {(grep)} {(-q)} {(SQ <"^/">)}) ] negated: False ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:CMDLINE) op: Equal rhs: {(DQ ($ VSub_Name "$PWD") (/) ($ VSub_Name "$CMDLINE"))} spids: [265] ) ] spids: [265] ) ] op_id: Op_DPipe ) ] spids: [-1 244] ) ] spids: [-1 272] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other "[")} {(-c)} {(DQ (/dev/kvm))} {(Lit_Other "]")}) terminator: ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:DEVKVM) op: Equal rhs: {(DQ ("--device=/dev/kvm"))} spids: [292] ) ] spids: [292] ) ] spids: [-1 289] ) ] spids: [-1 297] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BASE) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(basename)} {(DQ ($ VSub_Name "$FILE"))})]) left_token: spids: [300 306] ) } spids: [299] ) ] spids: [299] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:MOUNTS) op: Equal rhs: {(DQ ("-v ") ($ VSub_Name "$FILE") (":/tmp/") ($ VSub_Name "$BASE"))} spids: [308] ) ] spids: [308] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BASE2) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(basename)} {(DQ ($ VSub_Name "$FILE2"))})]) left_token: spids: [317 323] ) } spids: [316] ) ] spids: [316] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BASE3) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(basename)} {(DQ ($ VSub_Name "$CMDLINE"))})] ) left_token: spids: [326 332] ) } spids: [325] ) ] spids: [325] ) (AndOr children: [ (C {(Lit_Other "[")} {(KW_Bang "!")} {(-z)} {(DQ ($ VSub_Name "$FILE2"))} {(Lit_Other "]")}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:MOUNTS) op: Equal rhs: { (DQ ($ VSub_Name "$MOUNTS") (" -v ") ($ VSub_Name "$FILE2") (":/tmp/") ($ VSub_Name "$BASE2") ) } spids: [349] ) ] spids: [349] ) ] op_id: Op_DAmp ) (AndOr children: [ (C {(Lit_Other "[")} {(KW_Bang "!")} {(-z)} {(DQ ($ VSub_Name "$CMDLINE"))} {(Lit_Other "]")}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:MOUNTS) op: Equal rhs: { (DQ ($ VSub_Name "$MOUNTS") (" -v ") ($ VSub_Name "$CMDLINE") (":/tmp/") ($ VSub_Name "$BASE3") ) } spids: [372] ) ] spids: [372] ) ] op_id: Op_DAmp ) (C {(docker)} {(run)} {(-it)} {(--rm)} {($ VSub_Name "$MOUNTS")} {($ VSub_Name "$DEVKVM")} {(DQ ($ VSub_Name "$QEMU_IMAGE"))} ) ] )